From 735cd0ccf3e51f9b3f0e9d30df08899ae54bf7ab Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 14 May 2015 02:48:42 +0400 Subject: [QFontDatabase] Defer the fallback families list initialization Use the same trick the WebKit related path has used for years: if there is no explicit list that takes a precedence over the default one (i.e. QFont("Arial,SimHei")), then defer the fallback families list initialization until it gets requested. Change-Id: If5a74294bdebb24865c619bc0d7328b3e706de76 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontengine.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/gui/text/qfontengine.cpp') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 6f5d178655..f9d924d10a 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -1590,15 +1590,15 @@ QFontEngineMulti::~QFontEngineMulti() } } +QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script); + void QFontEngineMulti::ensureFallbackFamiliesQueried() { - if (QPlatformIntegration *integration = QGuiApplicationPrivate::platformIntegration()) { - const QStringList fallbackFamilies = integration->fontDatabase()->fallbacksForFamily(fontDef.family, - QFont::Style(fontDef.style), - QFont::AnyStyle, - QChar::Script(m_script)); - setFallbackFamiliesList(fallbackFamilies); - } + QFont::StyleHint styleHint = QFont::StyleHint(fontDef.styleHint); + if (styleHint == QFont::AnyStyle && fontDef.fixedPitch) + styleHint = QFont::TypeWriter; + + setFallbackFamiliesList(qt_fallbacksForFamily(fontDef.family, QFont::Style(fontDef.style), styleHint, QChar::Script(m_script))); } void QFontEngineMulti::setFallbackFamiliesList(const QStringList &fallbackFamilies) -- cgit v1.2.3