diff options
author | Martin Kiewitz | 2014-11-02 13:08:33 +0100 |
---|---|---|
committer | Martin Kiewitz | 2014-11-02 13:08:33 +0100 |
commit | 5aae18feb80ff7aa58ce6f7400d54673af58196b (patch) | |
tree | 6df60abb671b5d78695438944e096e7259f7bf34 | |
parent | 9d693b9a793f1d14d9b80a0341ac55dfc2da0b0b (diff) | |
download | scummvm-rg350-5aae18feb80ff7aa58ce6f7400d54673af58196b.tar.gz scummvm-rg350-5aae18feb80ff7aa58ce6f7400d54673af58196b.tar.bz2 scummvm-rg350-5aae18feb80ff7aa58ce6f7400d54673af58196b.zip |
SCI: text16 Shift-JIS font switch fixed
fixes Police Quest 2 Japanese intro and others,
where the internal SCI font was used and not
the Shift-JIS hires font
-rw-r--r-- | engines/sci/graphics/text16.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/engines/sci/graphics/text16.cpp b/engines/sci/graphics/text16.cpp index 4f9b6c7da8..3769cd3af9 100644 --- a/engines/sci/graphics/text16.cpp +++ b/engines/sci/graphics/text16.cpp @@ -362,12 +362,12 @@ int16 GfxText16::Size(Common::Rect &rect, const char *text, GuiResourceId fontId else fontId = previousFontId; - if (g_sci->getLanguage() == Common::JA_JPN) - SwitchToFont900OnSjis(text); - rect.top = rect.left = 0; if (maxWidth < 0) { // force output as single line + if (g_sci->getLanguage() == Common::JA_JPN) + SwitchToFont900OnSjis(text); + StringWidth(text, fontId, textWidth, textHeight); rect.bottom = textHeight; rect.right = textWidth; @@ -378,6 +378,10 @@ int16 GfxText16::Size(Common::Rect &rect, const char *text, GuiResourceId fontId const char *curTextPos = text; // in work position for GetLongest() const char *curTextLine = text; // starting point of current line while (*curTextPos) { + // We need to check for Shift-JIS every line + if (g_sci->getLanguage() == Common::JA_JPN) + SwitchToFont900OnSjis(curTextPos); + charCount = GetLongest(curTextPos, rect.right, fontId); if (charCount == 0) break; @@ -466,17 +470,19 @@ void GfxText16::Box(const char *text, bool show, const Common::Rect &rect, TextA else fontId = previousFontId; - if (g_sci->getLanguage() == Common::JA_JPN) { - if (SwitchToFont900OnSjis(text)) - doubleByteMode = true; - } - // Reset reference code rects _codeRefRects.clear(); _codeRefTempRect.left = _codeRefTempRect.top = -1; maxTextWidth = 0; while (*curTextPos) { + // We need to check for Shift-JIS every line + // Police Quest 2 PC-9801 often draws English + Japanese text during the same call + if (g_sci->getLanguage() == Common::JA_JPN) { + if (SwitchToFont900OnSjis(curTextPos)) + doubleByteMode = true; + } + charCount = GetLongest(curTextPos, rect.width(), fontId); if (charCount == 0) break; |