summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@nokia.com>2011-10-05 17:10:28 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-07 00:43:26 +0200
commit614b9efcf5a1d36994245fb1173ab010d16cd702 (patch)
tree646ac47a9c8d80674219c6567d261f4ddd4251fd
parent028a860ac58bc6b956e523e04f9dfdda032cad81 (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.cpp26
-rw-r--r--src/gui/text/qfontdatabase.h5
-rw-r--r--tests/auto/gui/text/qfont/tst_qfont.cpp36
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"