(svn r11622) -Codechange: support the unicode version of the 'control' characters.
authorrubidium
Tue, 11 Dec 2007 21:25:48 +0000
changeset 8061 47fa9f69cea8
parent 8060 c839513049bd
child 8062 eb133d21f363
(svn r11622) -Codechange: support the unicode version of the 'control' characters.
src/newgrf_text.cpp
--- 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);