Font styles issues in QFontDatabase
-
wrote on 1 Aug 2020, 09:03 last edited by SiO2 8 Jun 2020, 18:20
When I am generating style lists for my font picking widget, I get localised strings,
QStringList familyBuf = dispSettings->fdb.families(QFontDatabase::Latin); for (int i = (familyBuf.length() - 1); i >= 0; i--) if (!dispSettings->fdb.isPrivateFamily(familyBuf.at(i))) if (dispSettings->fdb.isSmoothlyScalable(familyBuf.at(i))) if (QFontInfo(QFont(familyBuf[i])).family() == familyBuf.at(i)) { QString buf = familyBuf.at(i); fontFamilies.append(buf); stylesPack.insert(std::make_pair(buf, dispSettings->fdb.styles(buf)));
but when I am trying to get current style from font via QFontInfo+QFontDatabase, to generate initial GUI state, I suddenly recieve non-localized style string.
currStyle = dispSettings->fdb.styleString(fontInfo);
In Windows 7+ Qt5.7 QFontDatabase generated non-localized font strings, so there was no issues. How do I work around this mismatch in the Qt5.15+?
-
Hi
Is this on win 7 + Qt5.15 ? -
wrote on 1 Aug 2020, 09:37 last edited by
Hi.
No, the first system is w7+Qt5.7, the second is w10+Qt5.15. -
@SiO2
Hi
Would it be possible to try Qt5.7 on the win 10 to verify it is indeed something that changed
from 5.7 to 5.15 and not something that changed from win 7 -> win 10 ? -
wrote on 1 Aug 2020, 10:46 last edited by
Checked w10+Qt5.7. It is Qt changes that cases issues.
-
Hi
Ok so its either a bug (regression) or some changes in QFontInfo.
I could not locate any change log for QFontInfo but maybe others have an idea. -
wrote on 1 Aug 2020, 11:12 last edited by SiO2 8 Jan 2020, 17:17
QFontInfo behave the same way in both Qt5.7 and Qt5.15. It is QFontDatabase gives localized style strings in the newer version. What I need is a way to extract stylestring from current font in a way matching QFontDatabase behaviour, i.e. localized one.
-
wrote on 1 Aug 2020, 17:14 last edited by SiO2 8 Jan 2020, 17:18
It is worse in fact
QFontDatabase::styleString(const QFontInfo &fontInfo) //"Normal"
mismatch
QStringList QFontDatabase::styles(const QString &family) //"Обычный", "Полужирный"
so this class essentially breaks its own logic. Also default font keeps those localized stylestring even after me giving up localization via
QLocale::setDefault(QLocale::English);
1/8