From a159ca80d73f07d617d6edd9b3e59bda25449a1c Mon Sep 17 00:00:00 2001 From: Pierre Rossi Date: Thu, 22 Mar 2012 17:12:32 +0100 Subject: Don't hardcode the default families in qfont_qpa.cpp Since different platforms come with different fonts, we should probably leave it up to the platform to decide which family to use. Change-Id: I18bb81c0ce87cc7e9ac7f3abaeae1b41c0ce8410 Reviewed-by: Friedemann Kleint Reviewed-by: Jiang Jiang --- src/gui/text/qfont_qpa.cpp | 35 ++++------------------ src/gui/text/qfontdatabase.h | 5 ---- .../fontconfig/qfontconfigdatabase.cpp | 7 +++++ .../platforms/windows/qwindowsfontdatabase.cpp | 26 ++++++++++++++++ .../platforms/windows/qwindowsfontdatabase_ft.cpp | 25 ++++++++++++++++ 5 files changed, 64 insertions(+), 34 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfont_qpa.cpp b/src/gui/text/qfont_qpa.cpp index 6576f237c4..b73b03025b 100644 --- a/src/gui/text/qfont_qpa.cpp +++ b/src/gui/text/qfont_qpa.cpp @@ -75,35 +75,12 @@ void QFont::setRawName(const QString &) QString QFont::defaultFamily() const { - QString familyName; - switch(d->request.styleHint) { - case QFont::SansSerif: - familyName = QString::fromLatin1("sans-serif"); - break; - case QFont::Serif: - familyName = QString::fromLatin1("serif"); - break; - case QFont::TypeWriter: - case QFont::Monospace: - familyName = QString::fromLatin1("monospace"); - break; - case QFont::Cursive: - familyName = QString::fromLatin1("cursive"); - break; - case QFont::Fantasy: - familyName = QString::fromLatin1("fantasy"); - break; - case QFont::Decorative: - familyName = QString::fromLatin1("decorative"); - break; - case QFont::System: - default: - familyName = QString(); - break; - } - - return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(familyName); - + QPlatformFontDatabase *fontDB = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); + const QStringList fallbacks = fontDB->fallbacksForFamily(QString(), QFont::StyleNormal + , QFont::StyleHint(d->request.styleHint), QUnicodeTables::Common); + if (!fallbacks.isEmpty()) + return fallbacks.first(); + return QString(); } QString QFont::lastResortFamily() const diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h index b30f7da48d..f0830f2a41 100644 --- a/src/gui/text/qfontdatabase.h +++ b/src/gui/text/qfontdatabase.h @@ -46,8 +46,6 @@ #include #include -class tst_QFont; - QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -162,9 +160,6 @@ private: friend class QFontEngineMultiXLFD; friend class QFontEngineMultiQWS; friend class QFontEngineMultiQPA; -#ifdef QT_BUILD_INTERNAL - friend class ::tst_QFont; -#endif QFontDatabasePrivate *d; }; diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index bf05433b22..9ad9b96d15 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -291,8 +291,15 @@ static const char *getFcFamilyForStyleHint(const QFont::StyleHint style) stylehint = "serif"; break; case QFont::TypeWriter: + case QFont::Monospace: stylehint = "monospace"; break; + case QFont::Cursive: + stylehint = "cursive"; + break; + case QFont::Fantasy: + stylehint = "fantasy"; + break; default: break; } diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index c1c25dd686..3fc40f49ac 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -698,6 +698,32 @@ QStringList QWindowsFontDatabase::fallbacksForFamily(const QString family, const QStringList result = QPlatformFontDatabase::fallbacksForFamily(family, style, styleHint, script); if (!result.isEmpty()) return result; + + switch (styleHint) { + case QFont::Times: + result << QString::fromLatin1("Times New Roman"); + break; + case QFont::Courier: + result << QString::fromLatin1("Courier New"); + break; + case QFont::Monospace: + result << QString::fromLatin1("Courier New"); + break; + case QFont::Cursive: + result << QString::fromLatin1("Comic Sans MS"); + break; + case QFont::Fantasy: + result << QString::fromLatin1("Impact"); + break; + case QFont::Decorative: + result << QString::fromLatin1("Old English"); + break; + case QFont::Helvetica: + case QFont::System: + default: + result << QString::fromLatin1("Arial"); + } + if (QWindowsContext::verboseFonts) qDebug() << __FUNCTION__ << family << style << styleHint << script << result << m_families.size(); diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp index e84f0c7630..246b5b3710 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp @@ -422,6 +422,31 @@ QStringList QWindowsFontDatabaseFT::fallbacksForFamily(const QString family, con QStringList result = QPlatformFontDatabase::fallbacksForFamily(family, style, styleHint, script); if (!result.isEmpty()) return result; + + switch (styleHint) { + case QFont::Times: + result << QString::fromLatin1("Times New Roman"); + break; + case QFont::Courier: + result << QString::fromLatin1("Courier New"); + break; + case QFont::Monospace: + result << QString::fromLatin1("Courier New"); + break; + case QFont::Cursive: + result << QString::fromLatin1("Comic Sans MS"); + break; + case QFont::Fantasy: + result << QString::fromLatin1("Impact"); + break; + case QFont::Decorative: + result << QString::fromLatin1("Old English"); + break; + case QFont::Helvetica: + case QFont::System: + default: + result << QString::fromLatin1("Arial"); + } if (QWindowsContext::verboseFonts) qDebug() << __FUNCTION__ << family << style << styleHint << script << result << m_families; -- cgit v1.2.3