From 321a563a315898dcb8f8d0d0776c7c450d6e9caa Mon Sep 17 00:00:00 2001 From: Adrian Frühwirth Date: Wed, 24 Jan 2018 00:59:46 +0100 Subject: TUCKER: Fix font rendering bug Fixes Trac#6370. --- engines/tucker/tucker.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'engines/tucker') 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) { -- cgit v1.2.3