From 194b53ef9d2896664772a12c0038eedd717daec3 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Mon, 23 Sep 2024 19:15:20 +0200 Subject: [PATCH] QFontMetrics::xHeight() is not always the ascent of 'x' Use the real ascent of glyph 'x' as LyX 2.3.x did. It can make a difference at least on Windows with many fonts. Fixes bug #13100. --- src/frontends/qt/GuiFontMetrics.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/frontends/qt/GuiFontMetrics.cpp b/src/frontends/qt/GuiFontMetrics.cpp index f0300f16ea..5b9805a079 100644 --- a/src/frontends/qt/GuiFontMetrics.cpp +++ b/src/frontends/qt/GuiFontMetrics.cpp @@ -114,7 +114,7 @@ inline QChar const ucs4_to_qchar(char_type const ucs4) GuiFontMetrics::GuiFontMetrics(QFont const & font) - : font_(font), metrics_(font, 0), xheight_(metrics_.xHeight()), + : font_(font), metrics_(font, 0), xheight_(-metrics_.boundingRect('x').top()), strwidth_cache_(strwidth_cache_max_cost), breakstr_cache_(breakstr_cache_max_cost), qtextlayout_cache_(qtextlayout_cache_max_size) @@ -163,7 +163,8 @@ int GuiFontMetrics::em() const int GuiFontMetrics::xHeight() const { -// LATTEST(metrics_.xHeight() == ascent('x')); + // This is not alays true on Windows (see #13100). + // LATTEST(metrics_.xHeight() == ascent('x')); return xheight_; }