summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-12-11 21:25:48 +0000
committerrubidium <rubidium@openttd.org>2007-12-11 21:25:48 +0000
commit78ae599790c83b29fc46db0af9b068f130fc071e (patch)
tree5fc20d4a9bf4fa33d1b67ba1c06c10f70990d9bb
parenta5bcce4fc878b678f03c7090c776d6934eb738a1 (diff)
downloadopenttd-78ae599790c83b29fc46db0af9b068f130fc071e.tar.xz
(svn r11622) -Codechange: support the unicode version of the 'control' characters.
-rw-r--r--src/newgrf_text.cpp16
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);