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.

(cherry picked from commit 194b53ef9d)
This commit is contained in:
Jean-Marc Lasgouttes 2024-09-23 19:15:20 +02:00
parent b4e61498cf
commit 3cab29486d
2 changed files with 5 additions and 2 deletions

View File

@ -114,7 +114,7 @@ inline QChar const ucs4_to_qchar(char_type const ucs4)
GuiFontMetrics::GuiFontMetrics(QFont const & font) 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), strwidth_cache_(strwidth_cache_max_cost),
breakstr_cache_(breakstr_cache_max_cost), breakstr_cache_(breakstr_cache_max_cost),
qtextlayout_cache_(qtextlayout_cache_max_size) qtextlayout_cache_(qtextlayout_cache_max_size)
@ -163,7 +163,8 @@ int GuiFontMetrics::em() const
int GuiFontMetrics::xHeight() 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_; return xheight_;
} }

View File

@ -35,6 +35,8 @@ What's new
These two settings are mutually exclusive by default and we signal These two settings are mutually exclusive by default and we signal
that within UI now. Workarounds can be found our and hyperref manual. that within UI now. Workarounds can be found our and hyperref manual.
- Fix display of superscripts on Windows (bug 13100).
* DOCUMENTATION AND LOCALIZATION * DOCUMENTATION AND LOCALIZATION