diff options
author | rubidium <rubidium@openttd.org> | 2007-12-11 21:25:48 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-12-11 21:25:48 +0000 |
commit | 78ae599790c83b29fc46db0af9b068f130fc071e (patch) | |
tree | 5fc20d4a9bf4fa33d1b67ba1c06c10f70990d9bb /src | |
parent | a5bcce4fc878b678f03c7090c776d6934eb738a1 (diff) | |
download | openttd-78ae599790c83b29fc46db0af9b068f130fc071e.tar.xz |
(svn r11622) -Codechange: support the unicode version of the 'control' characters.
Diffstat (limited to 'src')
-rw-r--r-- | src/newgrf_text.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index dac8300fd..1de167266 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -207,9 +207,13 @@ char *TranslateTTDPatchCodes(const char *str) } for (;;) { - const char *tmp = str; // Used for UTF-8 decoding - - c = (byte)*str++; + if (unicode && Utf8EncodedCharLen(*str) != 0) { + c = Utf8Consume(&str); + /* 'Magic' range of control codes. */ + if (GB(c, 8, 8) == 0xE0) c = GB(c, 0, 8); + } else { + c = (byte)*str++; + } if (c == 0) break; switch (c) { @@ -290,12 +294,6 @@ char *TranslateTTDPatchCodes(const char *str) case 0xB7: d += Utf8Encode(d, SCC_PLANE); break; case 0xB8: d += Utf8Encode(d, SCC_SHIP); break; default: - if (unicode) { - d += Utf8Encode(d, Utf8Consume(&tmp)); - str = tmp; - break; - } - /* Validate any unhandled character */ if (!IsValidChar(c, CS_ALPHANUMERAL)) c = '?'; d += Utf8Encode(d, c); |