(svn r11622) -Codechange: support the unicode version of the 'control' characters.
--- a/src/newgrf_text.cpp Tue Dec 11 20:28:53 2007 +0000
+++ b/src/newgrf_text.cpp Tue Dec 11 21:25:48 2007 +0000
@@ -207,9 +207,13 @@
}
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 @@
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);