From 02d63f45e2cfdbb1321538c37499deefa9eae23a Mon Sep 17 00:00:00 2001 From: glx Date: Thu, 25 Nov 2010 15:20:10 +0000 Subject: (svn r21321) -Fix (r21298): use the correct font sizes when checking for missing glyphs --- src/strings.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/strings.cpp') diff --git a/src/strings.cpp b/src/strings.cpp index 1d5d63d69..a68144626 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1576,9 +1576,16 @@ static bool FindMissingGlyphs(const char **str) UninitFreeType(); InitFreeType(); #endif - const Sprite *question_mark = GetGlyph(FS_NORMAL, '?'); + const Sprite *question_mark[FS_END]; + FontSize size; + + for (size = FS_BEGIN; size < FS_END; size++) { + question_mark[size] = GetGlyph(size, '?'); + } + for (uint i = 0; i != 32; i++) { for (uint j = 0; j < _langtab_num[i]; j++) { + size = FS_NORMAL; const char *text = _langpack_offs[_langtab_start[i] + j]; if (str != NULL) *str = text; for (WChar c = Utf8Consume(&text); c != '\0'; c = Utf8Consume(&text)) { @@ -1589,7 +1596,11 @@ static bool FindMissingGlyphs(const char **str) text++; } else if (c == SCC_SETXY) { text += 2; - } else if (IsPrintable(c) && !IsTextDirectionChar(c) && c != '?' && GetGlyph(FS_NORMAL, c) == question_mark) { + } else if (c == SCC_TINYFONT) { + size = FS_SMALL; + } else if (c == SCC_BIGFONT) { + size = FS_LARGE; + } else if (IsPrintable(c) && !IsTextDirectionChar(c) && c != '?' && GetGlyph(size, c) == question_mark[size]) { /* The character is printable, but not in the normal font. This is the case we were testing for. */ return true; } -- cgit v1.2.3-54-g00ecf