From e4c20df5a411705e4ee7fb31cab9eb9f3451cbd4 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Sat, 23 May 2015 02:49:37 -0400 Subject: [PATCH] ecere/gfx/LFBDisplayDriver: Fixed extent of italic fonts --- ecere/src/gfx/drivers/LFBDisplayDriver.ec | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ecere/src/gfx/drivers/LFBDisplayDriver.ec b/ecere/src/gfx/drivers/LFBDisplayDriver.ec index c1e8762..9d7baaa 100644 --- a/ecere/src/gfx/drivers/LFBDisplayDriver.ec +++ b/ecere/src/gfx/drivers/LFBDisplayDriver.ec @@ -3454,6 +3454,8 @@ public class LFBDisplayDriver : DisplayDriver int fontEntryNum = 0; int glyphScript = 0; FontEntry curFontEntry; + GlyphInfo * lastGlyph = null; + int lastAX = 0; pack.bitmap.alphaBlend = true; @@ -3811,10 +3813,20 @@ public class LFBDisplayDriver : DisplayDriver if(callback) callback(surface, display, ((*x) >> 6), y + (oy >> 6), glyph, (outline ? outline : pack).bitmap); *x += ax; + + lastGlyph = glyph; + lastAX = ax; } if(numGlyphs && (rightToLeft ? (glyphIndex < 0) : (glyphIndex == numGlyphs))) numGlyphs = 0; } + if(lastGlyph) + { + int w = (lastGlyph->w * lastGlyph->left) * (1 << 6); + // Fix for advance != width + left (e.g. italic fonts) + if(w > lastAX) + *x += w - lastAX; + } } if(surface) { -- 1.8.3.1