changeset 8061:489d3a68495d draft

(svn r11622) -Codechange: support the unicode version of the 'control' characters.
author rubidium <rubidium@openttd.org>
date Tue, 11 Dec 2007 21:25:48 +0000
parents 652f26e6ba15
children 69762b49a06b
files src/newgrf_text.cpp
diffstat 1 files changed, 7 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_text.cpp
+++ b/src/newgrf_text.cpp
@@ -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);