From e316519c0e0e1c77aa1039d58776631800f29149 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Tue, 10 Jul 2012 10:17:22 +0200 Subject: Get font's underline position in DirectWrite font engine Fetch the correct underline position for the font along with other metrics. Task-number: QTBUG-22656 Change-Id: I35f6ea15ad18088033a5e7b7b83e2430c1b32a8f Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp | 9 +++++++++ src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h | 2 ++ 2 files changed, 11 insertions(+) (limited to 'src/plugins') diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp index 3490ebfc80..48aae703a4 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp +++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp @@ -242,9 +242,18 @@ void QWindowsFontEngineDirectWrite::collectMetrics() m_descent = DESIGN_TO_LOGICAL(metrics.descent); m_xHeight = DESIGN_TO_LOGICAL(metrics.xHeight); m_lineGap = DESIGN_TO_LOGICAL(metrics.lineGap); + m_underlinePosition = DESIGN_TO_LOGICAL(metrics.underlinePosition); } } +QFixed QWindowsFontEngineDirectWrite::underlinePosition() const +{ + if (m_underlinePosition > 0) + return m_underlinePosition; + else + return QFontEngine::underlinePosition(); +} + QFixed QWindowsFontEngineDirectWrite::lineThickness() const { if (m_lineThickness > 0) diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h index 32444c7cb0..195748a886 100644 --- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h +++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h @@ -69,6 +69,7 @@ public: void initFontInfo(const QFontDef &request, int dpi, IDWriteFont *font); QFixed lineThickness() const; + QFixed underlinePosition() const; bool getSfntTableData(uint tag, uchar *buffer, uint *length) const; QFixed emSquareSize() const; @@ -115,6 +116,7 @@ private: IDWriteBitmapRenderTarget *m_directWriteBitmapRenderTarget; QFixed m_lineThickness; + QFixed m_underlinePosition; int m_unitsPerEm; QFixed m_ascent; QFixed m_descent; -- cgit v1.2.3