- added remapping for Cyrillic characters to matching Latin counterparts.

This commit is contained in:
Christoph Oelckers 2020-09-29 20:16:31 +02:00
parent 6488f52055
commit fe61ff09a4
3 changed files with 28 additions and 3 deletions

View file

@ -880,6 +880,8 @@ int FFont::GetColorTranslation (EColorRange range, PalEntry *color) const
int FFont::GetCharCode(int code, bool needpic) const int FFont::GetCharCode(int code, bool needpic) const
{ {
int newcode;
if (code < 0 && code >= -128) if (code < 0 && code >= -128)
{ {
// regular chars turn negative when the 8th bit is set. // regular chars turn negative when the 8th bit is set.
@ -905,8 +907,7 @@ int FFont::GetCharCode(int code, bool needpic) const
} }
} }
// Try stripping accents from accented characters. // Try stripping accents from accented characters.
int newcode = stripaccent(code); while ((newcode = stripaccent(code)) != code)
if (newcode != code)
{ {
code = newcode; code = newcode;
if (code >= FirstChar && code <= LastChar && (!needpic || Chars[code - FirstChar].TranslatedPic != nullptr)) if (code >= FirstChar && code <= LastChar && (!needpic || Chars[code - FirstChar].TranslatedPic != nullptr))
@ -918,7 +919,6 @@ int FFont::GetCharCode(int code, bool needpic) const
else else
{ {
int originalcode = code; int originalcode = code;
int newcode;
// Try stripping accents from accented characters. This may repeat to allow multi-step fallbacks. // Try stripping accents from accented characters. This may repeat to allow multi-step fallbacks.
while ((newcode = stripaccent(code)) != code) while ((newcode = stripaccent(code)) != code)

View file

@ -402,6 +402,23 @@ int getAlternative(int code)
case 0x406: return 'I'; case 0x406: return 'I';
case 0x407: return 0xcf; case 0x407: return 0xcf;
case 0x408: return 'J'; case 0x408: return 'J';
case 0x410: return 'A';
case 0x412: return 'B';
case 0x415: return 'E';
case 0x41a: return 'K';
case 0x41c: return 'M';
case 0x41d: return 'H';
case 0x41e: return 'O';
case 0x420: return 'P';
case 0x421: return 'C';
case 0x423: return 'T';
case 0x425: return 'X';
case 0x430: return 'a';
case 0x435: return 'e';
case 0x43e: return 'o';
case 0x440: return 'p';
case 0x441: return 'c';
case 0x445: return 'x';
case 0x450: return 0xe8; case 0x450: return 0xe8;
case 0x451: return 0xeb; case 0x451: return 0xeb;
case 0x455: return 's'; case 0x455: return 's';

View file

@ -181,3 +181,11 @@
"#E4L9" = "$$DERELICT"; "#E4L9" = "$$DERELICT";
"#E4L10" = "$$THE QUEEN"; "#E4L10" = "$$THE QUEEN";
"#E4L11" = "$$AREA 51"; "#E4L11" = "$$AREA 51";
"WRITIN': ON" = "$$MSGON";
"WRITIN': OFF" = "$$MSGOFF";
"RAT AIMIN' ON" = "$$TXT_MOUSEAIMON";
"RAT AIMIN' OFF" = "$$TXT_MOUSEAIMOFF";
"BEER" = "$$CNTRLMNU_BEER";
"COW PIE" = "$$CNTRLMNU_COWPIE";