diff options
-rw-r--r-- | engines/tucker/tucker.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp index 08ad6a05e7..cb3dd8e6f1 100644 --- a/engines/tucker/tucker.cpp +++ b/engines/tucker/tucker.cpp @@ -3858,7 +3858,15 @@ void TuckerEngine::drawSpeechTextLine(const uint8 *dataPtr, int pos, int count, x += _charWidthTable[dataPtr[pos]]; ++pos; } - addDirtyRect(xStart, y, x - xStart, Graphics::_charset._charH); + // At least in the English version of the game many glyphs in the character set are one pixel + // wider than specified in the character width table. This ensures that, when rendering text, + // characters are overlapping one pixel (i.e. their outlines overlap). + // This has the negative side effect that when a text line ends with a glyph whose specified + // size is narrower than its actual size, the calculated width for the dirty rect is wrong. + // To compensate for this we add the current character set's maximum glyph width to make sure + // that the dirty rect always covers the whole line. + // This fixes Bug #6370. + addDirtyRect(xStart, y, x - xStart + Graphics::_charset._charW, Graphics::_charset._charH); } void TuckerEngine::redrawScreen(int offset) { |