diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/text/qfontengine_ft.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 6a65aad1c1..1e7c3a2e1d 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -892,7 +892,21 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph, FT_GlyphSlot slot = face->glyph; if (embolden) Q_FT_GLYPHSLOT_EMBOLDEN(slot); - if (obliquen) Q_FT_GLYPHSLOT_OBLIQUE(slot); + if (obliquen) { + Q_FT_GLYPHSLOT_OBLIQUE(slot); + + // While Embolden alters the metrics of the slot, oblique does not, so we need + // to fix this ourselves. + transform = true; + FT_Matrix m; + m.xx = 0x10000; + m.yx = 0x0; + m.xy = 0x6000; + m.yy = 0x10000; + + FT_Matrix_Multiply(&m, &matrix); + } + FT_Library library = qt_getFreetype(); info.xOff = TRUNC(ROUND(slot->advance.x)); |