diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2021-12-01 16:46:27 +0100 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2021-12-02 12:53:34 +0100 |
commit | 0062f5a2089f9654c8880087ac6fb0b46a90bef2 (patch) | |
tree | dd71f978da6ceb5e662256252c544e97696c43a4 /src/gui/text/freetype/qfontengine_ft.cpp | |
parent | 022891bcd8ae4e8de02cdef9ed281e9a31eedbc4 (diff) |
Freetype: adjust underlinePosition to match our expectations
We expect underlinePosition() to be the topleft corner of where we
start drawing the underline but freetype reports the _center_ of the
underline:
"underline_position: [...]. It is the center of the underlining stem."
- https://freetype.org/freetype2/docs/reference/ft2-base_interface.html
Pick-to: 6.2 5.15
Fixes: QTBUG-62602
Change-Id: I96808816f50f3f37b18f579adf285502c88e6ea5
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/gui/text/freetype/qfontengine_ft.cpp')
-rw-r--r-- | src/gui/text/freetype/qfontengine_ft.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gui/text/freetype/qfontengine_ft.cpp b/src/gui/text/freetype/qfontengine_ft.cpp index 35e861d430..b24e620d15 100644 --- a/src/gui/text/freetype/qfontengine_ft.cpp +++ b/src/gui/text/freetype/qfontengine_ft.cpp @@ -758,7 +758,8 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format, } // underline metrics line_thickness = QFixed::fromFixed(FT_MulFix(face->underline_thickness, face->size->metrics.y_scale)); - underline_position = QFixed::fromFixed(-FT_MulFix(face->underline_position, face->size->metrics.y_scale)); + QFixed center_position = QFixed::fromFixed(-FT_MulFix(face->underline_position, face->size->metrics.y_scale)); + underline_position = center_position - line_thickness / 2; } else { // ad hoc algorithm int score = fontDef.weight * fontDef.pixelSize; |