diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2020-11-18 13:45:19 +0100 |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2020-11-20 20:29:00 +0000 |
commit | 1d14067680f02f47b2f8ff375c44eb64633eec02 (patch) | |
tree | b70acd13e64cc19795773f23bc06bda6c17a94ee /src/gui/text/qfont.cpp | |
parent | c63669bb8c5169f8232151451b1095e2f3013d48 (diff) |
Fix weight when reading old serialized QFonts
The QFont::fromString() needs to differ between strings
produced before and after Qt 6.0 when interpreting the
weight value, since in older strings this will be the legacy
scale.
Luckily the number of tokens in the string can be used for this
purpose, since many tokens were added in Qt 6.0.
This broke KDE, where font settings are stored in QSettings
and serialized using QFont::toString() from Qt 5.
Fixes: QTBUG-88589
Pick-to: 6.0.0 6.0
Change-Id: I199737fed61917f8b9d8f86176ead29a89eb8e0c
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Diffstat (limited to 'src/gui/text/qfont.cpp')
-rw-r--r-- | src/gui/text/qfont.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index 0e680a3c6d..2021363da5 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -2186,7 +2186,10 @@ bool QFont::fromString(const QString &descrip) if (l[2].toInt() > 0) setPixelSize(l[2].toInt()); setStyleHint((StyleHint) l[3].toInt()); - setWeight(QFont::Weight(l[4].toInt())); + if (count >= 16) + setWeight(QFont::Weight(l[4].toInt())); + else + setWeight(QFont::Weight(qt_legacyToOpenTypeWeight(l[4].toInt()))); setStyle((QFont::Style)l[5].toInt()); setUnderline(l[6].toInt()); setStrikeOut(l[7].toInt()); |