From 5aae18feb80ff7aa58ce6f7400d54673af58196b Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Sun, 2 Nov 2014 13:08:33 +0100 Subject: 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 --- engines/sci/graphics/text16.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'engines/sci/graphics') 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; -- cgit v1.2.3