summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp22
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp20
-rw-r--r--tests/auto/gui/text/qfontdatabase/testdata.qrc1
-rw-r--r--tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp29
-rw-r--r--tests/auto/shared/resources/testfont_open.otfbin0 -> 62676 bytes
5 files changed, 49 insertions, 23 deletions
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
index 011476cf13..36a94724c1 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
@@ -1069,18 +1069,16 @@ static bool addFontToDatabase(QString familyName,
QString subFamilyName;
QString subFamilyStyle;
- if (ttf) {
- // Look-up names registered in the font
- QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
- if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
- englishName = canonicalNames.name;
- if (!canonicalNames.preferredName.isEmpty()) {
- subFamilyName = familyName;
- subFamilyStyle = styleName;
- faceName = familyName; // Remember the original name for later lookups
- familyName = canonicalNames.preferredName;
- styleName = canonicalNames.preferredStyle;
- }
+ // Look-up names registered in the font
+ QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
+ if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
+ englishName = canonicalNames.name;
+ if (!canonicalNames.preferredName.isEmpty()) {
+ subFamilyName = familyName;
+ subFamilyStyle = styleName;
+ faceName = familyName; // Remember the original name for later lookups
+ familyName = canonicalNames.preferredName;
+ styleName = canonicalNames.preferredStyle;
}
QSupportedWritingSystems writingSystems;
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
index a6b7fcf31e..5c2742d295 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
@@ -215,17 +215,15 @@ static bool addFontToDatabase(QString familyName,
QString subFamilyName;
QString subFamilyStyle;
- if (ttf) {
- // Look-up names registered in the font
- QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
- if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
- englishName = canonicalNames.name;
- if (!canonicalNames.preferredName.isEmpty()) {
- subFamilyName = familyName;
- subFamilyStyle = styleName;
- familyName = canonicalNames.preferredName;
- styleName = canonicalNames.preferredStyle;
- }
+ // Look-up names registered in the font
+ QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
+ if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
+ englishName = canonicalNames.name;
+ if (!canonicalNames.preferredName.isEmpty()) {
+ subFamilyName = familyName;
+ subFamilyStyle = styleName;
+ familyName = canonicalNames.preferredName;
+ styleName = canonicalNames.preferredStyle;
}
QSupportedWritingSystems writingSystems;
diff --git a/tests/auto/gui/text/qfontdatabase/testdata.qrc b/tests/auto/gui/text/qfontdatabase/testdata.qrc
index 224e845601..a590099b20 100644
--- a/tests/auto/gui/text/qfontdatabase/testdata.qrc
+++ b/tests/auto/gui/text/qfontdatabase/testdata.qrc
@@ -4,5 +4,6 @@
<file alias="testfont.ttf">../../../shared/resources/testfont.ttf</file>
<file alias="testfont_condensed.ttf">../../../shared/resources/testfont_condensed.ttf</file>
<file alias="testfont_italic.ttf">../../../shared/resources/testfont_italic.ttf</file>
+ <file alias="testfont_open.otf">../../../shared/resources/testfont_open.otf</file>
</qresource>
</RCC>
diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
index 2b69801b59..12e8083622 100644
--- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
+++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
@@ -76,6 +76,9 @@ private slots:
void rasterFonts();
void smoothFonts();
+ void registerOpenTypePreferredNamesSystem();
+ void registerOpenTypePreferredNamesApplication();
+
private:
QString m_ledFont;
QString m_testFont;
@@ -440,5 +443,31 @@ void tst_QFontDatabase::smoothFonts()
QVERIFY(!QFontDatabase().isBitmapScalable(font.family()));
}
+void tst_QFontDatabase::registerOpenTypePreferredNamesSystem()
+{
+ QFontDatabase db;
+ // This font family was picked because it was the only one I had installed which showcased the
+ // problem
+ if (!db.hasFamily(QString::fromLatin1("Source Code Pro ExtraLight")))
+ QSKIP("Source Code Pro ExtraLight is not installed");
+
+ QStringList styles = db.styles(QString::fromLatin1("Source Code Pro"));
+ QVERIFY(styles.contains(QLatin1String("ExtraLight")));
+}
+
+void tst_QFontDatabase::registerOpenTypePreferredNamesApplication()
+{
+ QFontDatabase db;
+
+ int id = QFontDatabase::addApplicationFont(QString::fromLatin1(":/testfont_open.otf"));
+ if (id == -1)
+ QSKIP("Skip the test since app fonts are not supported on this system");
+
+ QStringList styles = db.styles(QString::fromLatin1("QtBidiTestFont"));
+ QVERIFY(styles.contains(QLatin1String("Open")));
+
+ QFontDatabase::removeApplicationFont(id);
+}
+
QTEST_MAIN(tst_QFontDatabase)
#include "tst_qfontdatabase.moc"
diff --git a/tests/auto/shared/resources/testfont_open.otf b/tests/auto/shared/resources/testfont_open.otf
new file mode 100644
index 0000000000..0f7950f2dd
--- /dev/null
+++ b/tests/auto/shared/resources/testfont_open.otf
Binary files differ