Introduce, and implement as usefully as I can in all front ends, a

new function in the drawing API which permits the display of text
from outside basic ASCII. A fallback mechanism is provided so that
puzzles can give a list of strings they'd like to display in order
of preference and the system will return the best one it can manage;
puzzles are required to cope with ASCII-only front ends.

[originally from svn r8793]
This commit is contained in:
Simon Tatham
2009-12-27 10:01:16 +00:00
parent 72922b3078
commit 9fbb365684
10 changed files with 227 additions and 18 deletions

15
osx.m
View File

@ -1344,7 +1344,8 @@ static void osx_draw_text(void *handle, int x, int y, int fonttype,
int fontsize, int align, int colour, char *text)
{
frontend *fe = (frontend *)handle;
NSString *string = [NSString stringWithCString:text];
NSString *string = [NSString stringWithCString:text
encoding:NSUTF8StringEncoding];
NSDictionary *attr;
NSFont *font;
NSSize size;
@ -1378,6 +1379,15 @@ static void osx_draw_text(void *handle, int x, int y, int fonttype,
[string drawAtPoint:point withAttributes:attr];
}
static char *osx_text_fallback(void *handle, const char *const *strings,
int nstrings)
{
/*
* We assume OS X can cope with any UTF-8 likely to be emitted
* by a puzzle.
*/
return dupstr(strings[0]);
}
struct blitter {
int w, h;
int x, y;
@ -1478,7 +1488,8 @@ const struct drawing_api osx_drawing = {
osx_blitter_save,
osx_blitter_load,
NULL, NULL, NULL, NULL, NULL, NULL, /* {begin,end}_{doc,page,puzzle} */
NULL, /* line_width */
NULL, NULL, /* line_width, line_dotted */
osx_text_fallback,
};
void deactivate_timer(frontend *fe)