From 17ced070fd1e55948659bc37c421f98074910599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Fri, 9 Nov 2018 17:56:08 +0100 Subject: [PATCH] Read font selection flags and use them when querying for metrics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Certain fonts with multiple styles have the same family name. When loading these as application fonts we were not specific enough when querying for the text metrics. This meant that e.g. the bold version in a font family would get the metrics of the regular one. Fixes: QTBUG-67273 Change-Id: Ic988d62cddde0a1f77ddcaf2891cadc21c9b31e6 Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../windows/qwindowsfontdatabase.cpp | 39 +++++++++++++++--- .../windows/qwindowsfontdatabase_p.h | 8 ++++ .../auto/gui/text/qfontdatabase/testdata.qrc | 1 + .../text/qfontdatabase/tst_qfontdatabase.cpp | 29 +++++++++++++ .../auto/shared/resources/testfont_italic.ttf | Bin 0 -> 64136 bytes 5 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 tests/auto/shared/resources/testfont_italic.ttf diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp index c70d507b99..9ff50bdf05 100644 --- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp @@ -1490,7 +1490,8 @@ static void getFontTable(const uchar *fileBegin, const uchar *data, quint32 tag, static void getFamiliesAndSignatures(const QByteArray &fontData, QList *families, - QVector *signatures) + QVector *signatures, + QVector *values) { const uchar *data = reinterpret_cast(fontData.constData()); @@ -1511,9 +1512,25 @@ static void getFamiliesAndSignatures(const QByteArray &fontData, families->append(qMove(names)); + if (values || signatures) + getFontTable(data, font, MAKE_TAG('O', 'S', '/', '2'), &table, &length); + + if (values) { + QFontValues fontValues; + if (table && length >= 64) { + // Read in some details about the font, offset calculated based on the specification + fontValues.weight = qFromBigEndian(table + 4); + + quint16 fsSelection = qFromBigEndian(table + 62); + fontValues.isItalic = (fsSelection & 1) != 0; + fontValues.isUnderlined = (fsSelection & (1 << 1)) != 0; + fontValues.isOverstruck = (fsSelection & (1 << 4)) != 0; + } + values->append(std::move(fontValues)); + } + if (signatures) { FONTSIGNATURE signature; - getFontTable(data, font, MAKE_TAG('O', 'S', '/', '2'), &table, &length); if (table && length >= 86) { // Offsets taken from OS/2 table in the TrueType spec signature.fsUsb[0] = qFromBigEndian(table + 42); @@ -1536,11 +1553,12 @@ QStringList QWindowsFontDatabase::addApplicationFont(const QByteArray &fontData, WinApplicationFont font; font.fileName = fileName; QVector signatures; + QVector fontValues; QList families; QStringList familyNames; if (!fontData.isEmpty()) { - getFamiliesAndSignatures(fontData, &families, &signatures); + getFamiliesAndSignatures(fontData, &families, &signatures, &fontValues); if (families.isEmpty()) return familyNames; @@ -1553,14 +1571,23 @@ QStringList QWindowsFontDatabase::addApplicationFont(const QByteArray &fontData, // Memory fonts won't show up in enumeration, so do add them the hard way. for (int j = 0; j < families.count(); ++j) { - const QString familyName = families.at(j).name; - const QString styleName = families.at(j).style; + const auto &family = families.at(j); + const QString &familyName = family.name; + const QString &styleName = family.style; familyNames << familyName; HDC hdc = GetDC(0); LOGFONT lf; memset(&lf, 0, sizeof(LOGFONT)); memcpy(lf.lfFaceName, familyName.utf16(), sizeof(wchar_t) * qMin(LF_FACESIZE - 1, familyName.size())); lf.lfCharSet = DEFAULT_CHARSET; + const QFontValues &values = fontValues.at(j); + lf.lfWeight = values.weight; + if (values.isItalic) + lf.lfItalic = TRUE; + if (values.isOverstruck) + lf.lfStrikeOut = TRUE; + if (values.isUnderlined) + lf.lfUnderline = TRUE; HFONT hfont = CreateFontIndirect(&lf); HGDIOBJ oldobj = SelectObject(hdc, hfont); @@ -1581,7 +1608,7 @@ QStringList QWindowsFontDatabase::addApplicationFont(const QByteArray &fontData, QByteArray data = f.readAll(); f.close(); - getFamiliesAndSignatures(data, &families, 0); + getFamiliesAndSignatures(data, &families, nullptr, nullptr); if (families.isEmpty()) return QStringList(); diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h index ab6d6307c7..9d0aa7f723 100644 --- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h +++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_p.h @@ -177,6 +177,14 @@ struct QFontNames QString preferredStyle; // e.g. "Condensed Italic" }; +struct QFontValues +{ + quint16 weight = 0; + bool isItalic = false; + bool isOverstruck = false; + bool isUnderlined = false; +}; + bool qt_localizedName(const QString &name); QString qt_getEnglishName(const QString &familyName, bool includeStyle = false); QFontNames qt_getCanonicalFontNames(const LOGFONT &lf); diff --git a/tests/auto/gui/text/qfontdatabase/testdata.qrc b/tests/auto/gui/text/qfontdatabase/testdata.qrc index 81a0b5b0bf..224e845601 100644 --- a/tests/auto/gui/text/qfontdatabase/testdata.qrc +++ b/tests/auto/gui/text/qfontdatabase/testdata.qrc @@ -3,5 +3,6 @@ LED_REAL.TTF ../../../shared/resources/testfont.ttf ../../../shared/resources/testfont_condensed.ttf + ../../../shared/resources/testfont_italic.ttf diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp index da2f100c0b..68664cdd2f 100644 --- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp +++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp @@ -61,6 +61,8 @@ private slots: void addAppFont_data(); void addAppFont(); + void addTwoAppFontsFromFamily(); + void aliases(); void fallbackFonts(); @@ -75,6 +77,7 @@ private: QString m_ledFont; QString m_testFont; QString m_testFontCondensed; + QString m_testFontItalic; }; tst_QFontDatabase::tst_QFontDatabase() @@ -86,9 +89,11 @@ void tst_QFontDatabase::initTestCase() m_ledFont = QFINDTESTDATA("LED_REAL.TTF"); m_testFont = QFINDTESTDATA("testfont.ttf"); m_testFontCondensed = QFINDTESTDATA("testfont_condensed.ttf"); + m_testFontItalic = QFINDTESTDATA("testfont_italic.ttf"); QVERIFY(!m_ledFont.isEmpty()); QVERIFY(!m_testFont.isEmpty()); QVERIFY(!m_testFontCondensed.isEmpty()); + QVERIFY(!m_testFontItalic.isEmpty()); } void tst_QFontDatabase::styles_data() @@ -259,6 +264,30 @@ void tst_QFontDatabase::addAppFont() QCOMPARE(db.families(), oldFamilies); } +void tst_QFontDatabase::addTwoAppFontsFromFamily() +{ + int regularId = QFontDatabase::addApplicationFont(m_testFont); + if (regularId == -1) + QSKIP("Skip the test since app fonts are not supported on this system"); + + int italicId = QFontDatabase::addApplicationFont(m_testFontItalic); + QVERIFY(italicId != -1); + + QVERIFY(!QFontDatabase::applicationFontFamilies(regularId).isEmpty()); + QVERIFY(!QFontDatabase::applicationFontFamilies(italicId).isEmpty()); + + QString regularFontName = QFontDatabase::applicationFontFamilies(regularId).first(); + QString italicFontName = QFontDatabase::applicationFontFamilies(italicId).first(); + QCOMPARE(regularFontName, italicFontName); + + QFont italicFont = QFontDatabase().font(italicFontName, + QString::fromLatin1("Italic"), 14); + QVERIFY(italicFont.italic()); + + QFontDatabase::removeApplicationFont(regularId); + QFontDatabase::removeApplicationFont(italicId); +} + void tst_QFontDatabase::aliases() { QFontDatabase db; diff --git a/tests/auto/shared/resources/testfont_italic.ttf b/tests/auto/shared/resources/testfont_italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0a01f883f4820bd90e39bddc406e676c6053d162 GIT binary patch literal 64136 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 k->+P?Ywt^uxt;x7(}CV6Jw{m^qG2