summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/strings.cpp15
1 files changed, 13 insertions, 2 deletions
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;
}