diff options
author | Pierre Rossi <pierre.rossi@nokia.com> | 2011-10-05 17:10:28 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-07 00:43:26 +0200 |
commit | 614b9efcf5a1d36994245fb1173ab010d16cd702 (patch) | |
tree | 646ac47a9c8d80674219c6567d261f4ddd4251fd | |
parent | 028a860ac58bc6b956e523e04f9dfdda032cad81 (diff) |
Fix QFont::defaultFamily() in the new QPA world.
This is so that the results of LayoutTests in WebKit are
more in line with what things were like in Qt 4.8.
Change-Id: I25962e03bd8e0316cb303c0d94c25ac4e73ea9a8
Reviewed-on: http://codereview.qt-project.org/6162
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
-rw-r--r-- | src/gui/text/qfont_qpa.cpp | 26 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase.h | 5 | ||||
-rw-r--r-- | tests/auto/gui/text/qfont/tst_qfont.cpp | 36 |
3 files changed, 58 insertions, 9 deletions
diff --git a/src/gui/text/qfont_qpa.cpp b/src/gui/text/qfont_qpa.cpp index e151a389cd..d6a73cfcf4 100644 --- a/src/gui/text/qfont_qpa.cpp +++ b/src/gui/text/qfont_qpa.cpp @@ -78,23 +78,31 @@ QString QFont::defaultFamily() const QString familyName; switch(d->request.styleHint) { case QFont::Times: - familyName = QString::fromLatin1("times"); + familyName = QString::fromLatin1("Times"); + break; case QFont::Courier: + familyName = QString::fromLatin1("Courier"); + break; case QFont::Monospace: - familyName = QString::fromLatin1("monospace"); + familyName = QString::fromLatin1("Courier New"); + break; + case QFont::Cursive: + familyName = QString::fromLatin1("Comic Sans MS"); + break; + case QFont::Fantasy: + familyName = QString::fromLatin1("Impact"); + break; case QFont::Decorative: - familyName = QString::fromLatin1("old english"); + familyName = QString::fromLatin1("Old English"); + break; case QFont::Helvetica: case QFont::System: default: - familyName = QString::fromLatin1("helvetica"); + familyName = QString::fromLatin1("Helvetica"); } - QStringList list = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fallbacksForFamily(familyName,QFont::StyleNormal,QFont::StyleHint(d->request.styleHint),QUnicodeTables::Common); - if (list.size()) { - familyName = list.at(0); - } - return familyName; + return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(familyName); + } QString QFont::lastResortFamily() const diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h index 994a7a4a7d..fb8ef20d6d 100644 --- a/src/gui/text/qfontdatabase.h +++ b/src/gui/text/qfontdatabase.h @@ -46,6 +46,8 @@ #include <QtCore/qstring.h> #include <QtGui/qfont.h> +class tst_QFont; + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -167,6 +169,9 @@ private: friend class QFontEngineMultiQWS; friend class QFontEngineMultiS60; friend class QFontEngineMultiQPA; +#ifdef QT_BUILD_INTERNAL + friend class ::tst_QFont; +#endif QFontDatabasePrivate *d; }; diff --git a/tests/auto/gui/text/qfont/tst_qfont.cpp b/tests/auto/gui/text/qfont/tst_qfont.cpp index 48d0e438f3..88c9486309 100644 --- a/tests/auto/gui/text/qfont/tst_qfont.cpp +++ b/tests/auto/gui/text/qfont/tst_qfont.cpp @@ -84,6 +84,10 @@ private slots: #if defined(Q_WS_MAC) void styleName(); #endif +#ifdef QT_BUILD_INTERNAL + void defaultFamily_data(); + void defaultFamily(); +#endif }; // Testing get/set functions @@ -627,5 +631,37 @@ void tst_QFont::styleName() } #endif +#ifdef QT_BUILD_INTERNAL +Q_DECLARE_METATYPE(QFont::StyleHint) +void tst_QFont::defaultFamily_data() +{ + QTest::addColumn<QFont::StyleHint>("styleHint"); + QTest::addColumn<QString>("defaultFamily"); + + QTest::newRow("serif") << QFont::Times << "Times"; + QTest::newRow("courier") << QFont::Courier << "Courier"; + QTest::newRow("monospace") << QFont::Monospace << "Courier New"; + QTest::newRow("cursive") << QFont::Cursive << "Comic Sans MS"; + QTest::newRow("fantasy") << QFont::Fantasy << "Impact"; + QTest::newRow("old english") << QFont::OldEnglish<< "Old English"; + QTest::newRow("sans-serif") << QFont::Helvetica << "Helvetica"; +} + +void tst_QFont::defaultFamily() +{ + QFETCH(QFont::StyleHint, styleHint); + QFETCH(QString, defaultFamily); + + QFontDatabase db; + if (!db.hasFamily(defaultFamily)) + QSKIP("Font family is not available on the system", SkipSingle); + + QFont f; + f.setStyleHint(styleHint); + QCOMPARE(QFontDatabase::resolveFontFamilyAlias(f.defaultFamily()), QFontDatabase::resolveFontFamilyAlias(defaultFamily)); + +} +#endif // QT_BUILD_INTERNAL + QTEST_MAIN(tst_QFont) #include "tst_qfont.moc" |