aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2012-05-20 09:57:24 +1000
committerPaul Gilbert2012-05-20 09:57:24 +1000
commit0136bf4a863073a9a47dc379e2eeb2fa74af2ec6 (patch)
treed2d0cba19b834e79d02062d3d385d34ac0b514e7 /engines
parente76a55588af1deb9a14bb8d89d4d818ea8120d96 (diff)
downloadscummvm-rg350-0136bf4a863073a9a47dc379e2eeb2fa74af2ec6.tar.gz
scummvm-rg350-0136bf4a863073a9a47dc379e2eeb2fa74af2ec6.tar.bz2
scummvm-rg350-0136bf4a863073a9a47dc379e2eeb2fa74af2ec6.zip
TONY: Fix issues with font loading and display of accented characters
Diffstat (limited to 'engines')
-rw-r--r--engines/tony/font.cpp578
-rw-r--r--engines/tony/font.h8
2 files changed, 291 insertions, 295 deletions
diff --git a/engines/tony/font.cpp b/engines/tony/font.cpp
index b0e42407cf..706aca8467 100644
--- a/engines/tony/font.cpp
+++ b/engines/tony/font.cpp
@@ -1162,297 +1162,293 @@ void RMFontCredits::Init(void) {
lTable[':'] = 5;
lTable['\''] = 5;
-
-
- // Polish characters
- //AaCcEeLlNnOoSsZzZz
- //ꣳ󌜯
-
- cTable[(byte)''] = 112;
- cTable[(byte)''] = 113;
- cTable[(byte)''] = 114;
- cTable[(byte)''] = 115;
- cTable[(byte)''] = 116;
- cTable[(byte)''] = 117;
- cTable[(byte)''] = 118;
- cTable[(byte)''] = 119;
- cTable[(byte)''] = 120;
- cTable[(byte)''] = 121;
- cTable[(byte)''] = 122;
- cTable[(byte)''] = 123;
- cTable[(byte)''] = 124;
- cTable[(byte)''] = 125;
- cTable[(byte)''] = 126;
- cTable[(byte)''] = 127;
- cTable[(byte)''] = 128;
- cTable[(byte)''] = 129;
-
- lTable[(byte)''] = 20;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 14;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 10;
-
-
-#ifdef FONT_RUSSIAN
- // Russian Characters
- // WARNING: Il russo usa molti dei caratteri ISO-Latin-1 che servono
- // per le altre traduzioni. Per compilare Tony in altre lingue,
- // commentare via queste definizioni.
-
- cTable[(byte)''] = 130;
- cTable[(byte)''] = 131;
- cTable[(byte)''] = 132;
- cTable[(byte)''] = 133;
- cTable[(byte)''] = 134;
- cTable[(byte)''] = 135;
- cTable[(byte)''] = 136;
- cTable[(byte)''] = 137;
- cTable[(byte)''] = 138;
- cTable[(byte)''] = 139;
- cTable[(byte)''] = 140;
- cTable[(byte)''] = 141;
- cTable[(byte)''] = 142;
- cTable[(byte)''] = 143;
- cTable[(byte)''] = 144;
- cTable[(byte)''] = 145;
- cTable[(byte)''] = 146;
- cTable[(byte)''] = 147;
- cTable[(byte)''] = 148;
- cTable[(byte)''] = 149;
- cTable[(byte)''] = 150;
- cTable[(byte)''] = 151;
- cTable[(byte)''] = 152;
- cTable[(byte)''] = 153;
- cTable[(byte)''] = 154;
- cTable[(byte)''] = 155;
- cTable[(byte)''] = 156;
- cTable[(byte)''] = 157;
- cTable[(byte)''] = 158;
- cTable[(byte)''] = 159;
- cTable[(byte)''] = 160;
- cTable[(byte)''] = 161;
- cTable[(byte)''] = 162;
-
- cTable[(byte)''] = 163;
- cTable[(byte)''] = 164;
- cTable[(byte)''] = 165;
- cTable[(byte)''] = 166;
- cTable[(byte)''] = 167;
- cTable[(byte)''] = 168;
- cTable[(byte)''] = 169;
- cTable[(byte)''] = 170;
- cTable[(byte)''] = 171;
- cTable[(byte)''] = 172;
- cTable[(byte)''] = 173;
- cTable[(byte)''] = 174;
- cTable[(byte)''] = 175;
- cTable[(byte)''] = 176;
- cTable[(byte)''] = 177;
- cTable[(byte)''] = 178;
- cTable[(byte)''] = 179;
- cTable[(byte)''] = 180;
- cTable[(byte)''] = 181;
- cTable[(byte)''] = 182;
- cTable[(byte)''] = 183;
- cTable[(byte)''] = 184;
- cTable[(byte)''] = 185;
- cTable[(byte)''] = 186;
- cTable[(byte)''] = 187;
- cTable[(byte)''] = 188;
- cTable[(byte)''] = 189;
- cTable[(byte)''] = 190;
- cTable[(byte)''] = 191;
- cTable[(byte)''] = 192;
- cTable[(byte)''] = 193;
- cTable[(byte)''] = 194;
- cTable[(byte)''] = 195;
-
- lTable[(byte)''] = 20;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 14;
- lTable[(byte)''] = 22;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 20;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 22;
- lTable[(byte)''] = 18;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 14;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 14;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 14;
- lTable[(byte)''] = 23;
- lTable[(byte)''] = 23;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 20;
- lTable[(byte)''] = 15;
-
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 14;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 11;
-
-#endif // FONT_RUSSIAN
-
-#ifdef FONT_CZECH
-
- cTable[(byte)''] = 196;
- cTable[(byte)''] = 197;
- cTable[(byte)''] = 198;
- cTable[(byte)''] = 199;
- cTable[(byte)''] = 200;
- cTable[(byte)''] = 201;
- cTable[(byte)''] = 202;
- cTable[(byte)''] = 203;
- cTable[(byte)''] = 204;
- cTable[(byte)''] = 205;
- cTable[(byte)''] = 206;
- cTable[(byte)''] = 207;
- cTable[(byte)''] = 208;
- cTable[(byte)''] = 209;
- cTable[(byte)''] = 210;
-
- cTable[(byte)''] = 211;
- cTable[(byte)''] = 212;
- cTable[(byte)''] = 213;
- cTable[(byte)''] = 214;
- cTable[(byte)''] = 215;
- cTable[(byte)''] = 216;
- cTable[(byte)''] = 217;
- cTable[(byte)''] = 218;
- cTable[(byte)''] = 219;
- cTable[(byte)''] = 220;
- cTable[(byte)''] = 221;
- cTable[(byte)''] = 222;
- cTable[(byte)''] = 223;
- cTable[(byte)''] = 224;
- cTable[(byte)''] = 225;
-
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 14;
- lTable[(byte)''] = 20;
- lTable[(byte)''] = 7;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 20;
- lTable[(byte)''] = 19;
- lTable[(byte)''] = 16;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 13;
- lTable[(byte)''] = 13;
-
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 6;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 15;
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 10;
-
-#endif // FONT_CZECH
-
-#ifdef FONT_FRENCH
-
- cTable[(byte)''] = 226;
- cTable[(byte)''] = 227;
- cTable[(byte)''] = 228;
- cTable[(byte)''] = 229;
- cTable[(byte)''] = 230;
- cTable[(byte)''] = 231;
- cTable[(byte)''] = 232;
- cTable[(byte)''] = 233;
-
- lTable[(byte)''] = 12;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 6;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 10;
- lTable[(byte)''] = 11;
- lTable[(byte)''] = 11;
-
-#endif // FONT_FRENCH
-
-#ifdef FONT_GERMAN
- cTable[(byte)''] = 234;
- // 'SS' = 235
-
- // old chars overrides
- cTable[(byte)''] = cTable[(byte)''] = 55;
- cTable[(byte)''] = cTable[(byte)''] = 67;
- cTable[(byte)''] = cTable[(byte)''] = 71;
-
- lTable[(byte)''] = 11;
-
-#endif // FONT_GERMAN
+ if (_vm->getLanguage() == Common::PL_POL) {
+ // Polish characters
+ //AaCcEeLlNnOoSsZzZz
+ //ꣳ󌜯
+
+ cTable[(byte)''] = 112;
+ cTable[(byte)''] = 113;
+ cTable[(byte)''] = 114;
+ cTable[(byte)''] = 115;
+ cTable[(byte)''] = 116;
+ cTable[(byte)''] = 117;
+ cTable[(byte)''] = 118;
+ cTable[(byte)''] = 119;
+ cTable[(byte)''] = 120;
+ cTable[(byte)''] = 121;
+ cTable[(byte)''] = 122;
+ cTable[(byte)''] = 123;
+ cTable[(byte)''] = 124;
+ cTable[(byte)''] = 125;
+ cTable[(byte)''] = 126;
+ cTable[(byte)''] = 127;
+ cTable[(byte)''] = 128;
+ cTable[(byte)''] = 129;
+
+ lTable[(byte)''] = 20;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 14;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 10;
+
+ } else if (_vm->getLanguage() == Common::RU_RUS) {
+
+ // Russian Characters
+ // WARNING: Il russo usa molti dei caratteri ISO-Latin-1 che servono
+ // per le altre traduzioni. Per compilare Tony in altre lingue,
+ // commentare via queste definizioni.
+
+ cTable[(byte)''] = 130;
+ cTable[(byte)''] = 131;
+ cTable[(byte)''] = 132;
+ cTable[(byte)''] = 133;
+ cTable[(byte)''] = 134;
+ cTable[(byte)''] = 135;
+ cTable[(byte)''] = 136;
+ cTable[(byte)''] = 137;
+ cTable[(byte)''] = 138;
+ cTable[(byte)''] = 139;
+ cTable[(byte)''] = 140;
+ cTable[(byte)''] = 141;
+ cTable[(byte)''] = 142;
+ cTable[(byte)''] = 143;
+ cTable[(byte)''] = 144;
+ cTable[(byte)''] = 145;
+ cTable[(byte)''] = 146;
+ cTable[(byte)''] = 147;
+ cTable[(byte)''] = 148;
+ cTable[(byte)''] = 149;
+ cTable[(byte)''] = 150;
+ cTable[(byte)''] = 151;
+ cTable[(byte)''] = 152;
+ cTable[(byte)''] = 153;
+ cTable[(byte)''] = 154;
+ cTable[(byte)''] = 155;
+ cTable[(byte)''] = 156;
+ cTable[(byte)''] = 157;
+ cTable[(byte)''] = 158;
+ cTable[(byte)''] = 159;
+ cTable[(byte)''] = 160;
+ cTable[(byte)''] = 161;
+ cTable[(byte)''] = 162;
+
+ cTable[(byte)''] = 163;
+ cTable[(byte)''] = 164;
+ cTable[(byte)''] = 165;
+ cTable[(byte)''] = 166;
+ cTable[(byte)''] = 167;
+ cTable[(byte)''] = 168;
+ cTable[(byte)''] = 169;
+ cTable[(byte)''] = 170;
+ cTable[(byte)''] = 171;
+ cTable[(byte)''] = 172;
+ cTable[(byte)''] = 173;
+ cTable[(byte)''] = 174;
+ cTable[(byte)''] = 175;
+ cTable[(byte)''] = 176;
+ cTable[(byte)''] = 177;
+ cTable[(byte)''] = 178;
+ cTable[(byte)''] = 179;
+ cTable[(byte)''] = 180;
+ cTable[(byte)''] = 181;
+ cTable[(byte)''] = 182;
+ cTable[(byte)''] = 183;
+ cTable[(byte)''] = 184;
+ cTable[(byte)''] = 185;
+ cTable[(byte)''] = 186;
+ cTable[(byte)''] = 187;
+ cTable[(byte)''] = 188;
+ cTable[(byte)''] = 189;
+ cTable[(byte)''] = 190;
+ cTable[(byte)''] = 191;
+ cTable[(byte)''] = 192;
+ cTable[(byte)''] = 193;
+ cTable[(byte)''] = 194;
+ cTable[(byte)''] = 195;
+
+ lTable[(byte)''] = 20;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 14;
+ lTable[(byte)''] = 22;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 20;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 22;
+ lTable[(byte)''] = 18;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 14;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 14;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 14;
+ lTable[(byte)''] = 23;
+ lTable[(byte)''] = 23;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 20;
+ lTable[(byte)''] = 15;
+
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 14;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 11;
+
+ } else if (_vm->getLanguage() == Common::CZ_CZE) {
+ // CZECH Language
+
+ cTable[(byte)''] = 196;
+ cTable[(byte)''] = 197;
+ cTable[(byte)''] = 198;
+ cTable[(byte)''] = 199;
+ cTable[(byte)''] = 200;
+ cTable[(byte)''] = 201;
+ cTable[(byte)''] = 202;
+ cTable[(byte)''] = 203;
+ cTable[(byte)''] = 204;
+ cTable[(byte)''] = 205;
+ cTable[(byte)''] = 206;
+ cTable[(byte)''] = 207;
+ cTable[(byte)''] = 208;
+ cTable[(byte)''] = 209;
+ cTable[(byte)''] = 210;
+
+ cTable[(byte)''] = 211;
+ cTable[(byte)''] = 212;
+ cTable[(byte)''] = 213;
+ cTable[(byte)''] = 214;
+ cTable[(byte)''] = 215;
+ cTable[(byte)''] = 216;
+ cTable[(byte)''] = 217;
+ cTable[(byte)''] = 218;
+ cTable[(byte)''] = 219;
+ cTable[(byte)''] = 220;
+ cTable[(byte)''] = 221;
+ cTable[(byte)''] = 222;
+ cTable[(byte)''] = 223;
+ cTable[(byte)''] = 224;
+ cTable[(byte)''] = 225;
+
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 14;
+ lTable[(byte)''] = 20;
+ lTable[(byte)''] = 7;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 20;
+ lTable[(byte)''] = 19;
+ lTable[(byte)''] = 16;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 13;
+ lTable[(byte)''] = 13;
+
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 6;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 15;
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 10;
+
+ } else if (_vm->getLanguage() == Common::FR_FRA) {
+ // French
+
+ cTable[(byte)''] = 226;
+ cTable[(byte)''] = 227;
+ cTable[(byte)''] = 228;
+ cTable[(byte)''] = 229;
+ cTable[(byte)''] = 230;
+ cTable[(byte)''] = 231;
+ cTable[(byte)''] = 232;
+ cTable[(byte)''] = 233;
+
+ lTable[(byte)''] = 12;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 6;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 10;
+ lTable[(byte)''] = 11;
+ lTable[(byte)''] = 11;
+
+ } else if (_vm->getLanguage() == Common::DE_DEU) {
+ // German
+
+ cTable[(byte)''] = 234;
+ // 'SS' = 235
+
+ // old chars overrides
+ cTable[(byte)''] = cTable[(byte)''] = 55;
+ cTable[(byte)''] = cTable[(byte)''] = 67;
+ cTable[(byte)''] = cTable[(byte)''] = 71;
+
+ lTable[(byte)''] = 11;
+ }
}
diff --git a/engines/tony/font.h b/engines/tony/font.h
index 3ada4d76c0..dab07b79b3 100644
--- a/engines/tony/font.h
+++ b/engines/tony/font.h
@@ -77,10 +77,10 @@ protected:
protected:
// Conversione (da overloadare)
- virtual int ConvertToLetter(int nChar) = 0;
+ virtual int ConvertToLetter(byte nChar) = 0;
// Lunghezza dei caratteri (da overloadare)
- virtual int LetterLength(int nChar, int nNext = 0) = 0;
+ virtual int LetterLength(byte nChar, byte nNext = 0) = 0;
public:
virtual int LetterHeight(void) = 0;
@@ -126,10 +126,10 @@ protected:
protected:
// Overload dei metodi
- int ConvertToLetter(int nChar) {
+ int ConvertToLetter(byte nChar) {
return cTable[nChar];
}
- int LetterLength(int nChar, int nNext = 0) {
+ int LetterLength(byte nChar, byte nNext = 0) {
return (nChar != -1 ? lTable[nChar] + l2Table[nChar][nNext] : lDefault);
}