summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@qt.io>2017-05-31 09:02:39 +0200
committerOliver Wolff <oliver.wolff@qt.io>2017-06-01 08:23:51 +0000
commit61f67c12fa1e46894c50cd72983354f8c6834717 (patch)
tree853adfaf3ebdaecf2ef94cf681e42c2eb94828a3 /src/platformsupport/fontdatabases
parent40a7c57ba990dfd58814a4a9dc69948991458cd4 (diff)
winrt: Use styleHint as clue for fallbacks for font families
Similar on how it is done for Windows desktop we also use the given style hint when building the list of fallbacks a font family. Change-Id: I71378581d07f20ebe5bf0bc757bba919cc70e118 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r--src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase.cpp28
-rw-r--r--src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase_p.h2
2 files changed, 27 insertions, 3 deletions
diff --git a/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase.cpp b/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase.cpp
index 2a95ca26a9..db58e49bb2 100644
--- a/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase.cpp
+++ b/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase.cpp
@@ -448,19 +448,41 @@ QFontEngine *QWinRTFontDatabase::fontEngine(const QFontDef &fontDef, void *handl
return QFontEngineFT::create(fontDef, faceId, fontData);
}
+QString QWinRTFontDatabase::familyForStyleHint(QFont::StyleHint styleHint)
+{
+ switch (styleHint) {
+ case QFont::Times:
+ return QStringLiteral("Times New Roman");
+ case QFont::Courier:
+ return QStringLiteral("Courier New");
+ case QFont::Monospace:
+ return QStringLiteral("Courier New");
+ case QFont::Cursive:
+ return QStringLiteral("Comic Sans MS");
+ case QFont::Fantasy:
+ return QStringLiteral("Impact");
+ case QFont::Decorative:
+ return QStringLiteral("Old English");
+ case QFont::Helvetica:
+ return QStringLiteral("Segoe UI");
+ case QFont::System:
+ default:
+ break;
+ }
+ return QStringLiteral("Segoe UI");
+}
+
QStringList QWinRTFontDatabase::fallbacksForFamily(const QString &family, QFont::Style style,
QFont::StyleHint styleHint,
QChar::Script script) const
{
Q_UNUSED(style)
- Q_UNUSED(styleHint)
Q_UNUSED(script)
qCDebug(lcQpaFonts) << __FUNCTION__ << family;
QStringList result;
- if (family == QLatin1String("Helvetica"))
- result.append(QStringLiteral("Arial"));
+ result.append(QWinRTFontDatabase::familyForStyleHint(styleHint));
result.append(QFreeTypeFontDatabase::fallbacksForFamily(family, style, styleHint, script));
return result;
}
diff --git a/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase_p.h b/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase_p.h
index 9a2bf00fab..c21f411fff 100644
--- a/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase_p.h
+++ b/src/platformsupport/fontdatabases/winrt/qwinrtfontdatabase_p.h
@@ -80,6 +80,8 @@ public:
QStringList fallbacksForFamily(const QString &family, QFont::Style style,
QFont::StyleHint styleHint, QChar::Script script) const override;
void releaseHandle(void *handle) override;
+
+ static QString familyForStyleHint(QFont::StyleHint styleHint);
private:
QHash<IDWriteFontFile *, FontDescription> m_fonts;
QHash<QString, IDWriteFontFamily *> m_fontFamilies;