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)
: 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_;
}

View File

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