diff options
Diffstat (limited to 'src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp')
-rw-r--r-- | src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp index d38fa299f9..910a16bf95 100644 --- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp +++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp @@ -1241,12 +1241,26 @@ int QFontEngineFT::synthesized() const return s; } -QFixed QFontEngineFT::ascent() const +void QFontEngineFT::initializeHeightMetrics() const { - QFixed v = QFixed::fromFixed(metrics.ascender); - if (scalableBitmapScaleFactor != 1) - v *= scalableBitmapScaleFactor; - return v; + QFontEngine::initializeHeightMetrics(); + + if (scalableBitmapScaleFactor != 1) { + m_ascent *= scalableBitmapScaleFactor; + m_descent *= scalableBitmapScaleFactor; + m_leading *= scalableBitmapScaleFactor; + } +} + +bool QFontEngineFT::processHheaTable() const +{ + if (!QFontEngine::processHheaTable()) { + m_ascent = QFixed::fromFixed(metrics.ascender); + m_descent = QFixed::fromFixed(-metrics.descender); + m_leading = QFixed::fromFixed(metrics.height - metrics.ascender + metrics.descender); + } + + return true; } QFixed QFontEngineFT::capHeight() const @@ -1261,22 +1275,6 @@ QFixed QFontEngineFT::capHeight() const return calculatedCapHeight(); } -QFixed QFontEngineFT::descent() const -{ - QFixed v = QFixed::fromFixed(-metrics.descender); - if (scalableBitmapScaleFactor != 1) - v *= scalableBitmapScaleFactor; - return v; -} - -QFixed QFontEngineFT::leading() const -{ - QFixed v = QFixed::fromFixed(metrics.height - metrics.ascender + metrics.descender); - if (scalableBitmapScaleFactor != 1) - v *= scalableBitmapScaleFactor; - return v; -} - QFixed QFontEngineFT::xHeight() const { TT_OS2 *os2 = (TT_OS2 *)FT_Get_Sfnt_Table(freetype->face, ft_sfnt_os2); |