diff options
-rw-r--r-- | src/gui/text/qfontengine.cpp | 3 | ||||
-rw-r--r-- | tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp | 39 |
2 files changed, 41 insertions, 1 deletions
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 6b764dee54..5035b61fe9 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -1862,7 +1862,8 @@ bool QFontEngineMulti::stringToCMap(const QChar *str, int len, && ucs4 != QChar::LineSeparator && ucs4 != QChar::LineFeed && ucs4 != QChar::CarriageReturn - && ucs4 != QChar::ParagraphSeparator) { + && ucs4 != QChar::ParagraphSeparator + && QChar::category(ucs4) != QChar::Other_PrivateUse) { if (!m_fallbackFamiliesQueried) const_cast<QFontEngineMulti *>(this)->ensureFallbackFamiliesQueried(); for (int x = 1, n = qMin(m_engines.size(), 256); x < n; ++x) { diff --git a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp index f28478dafd..d3267d024b 100644 --- a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp +++ b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp @@ -56,6 +56,9 @@ private slots: void shapingDisabledDevanagari(); void shapingDisabledLatin(); + + void privateUseArea(); + private: bool haveTestFonts; }; @@ -1312,5 +1315,41 @@ void tst_QTextScriptEngine::shapingDisabledDevanagari() QCOMPARE(noShapingRuns.first().glyphIndexes().size(), normalRuns.first().glyphIndexes().size()); } +void tst_QTextScriptEngine::privateUseArea() +{ + QString privateUseAreaString = QString::fromUtf8(""); + + QFont font; + QList<QGlyphRun> withFontMerging; + { + QTextLayout layout; + layout.setText(privateUseAreaString); + layout.setFont(font); + layout.beginLayout(); + layout.createLine(); + layout.endLayout(); + + withFontMerging = layout.glyphRuns(); + } + + font.setStyleStrategy(QFont::NoFontMerging); + QList<QGlyphRun> withoutFontMerging; + { + QTextLayout layout; + layout.setText(privateUseAreaString); + layout.setFont(font); + layout.beginLayout(); + layout.createLine(); + layout.endLayout(); + + withoutFontMerging = layout.glyphRuns(); + } + + QCOMPARE(withFontMerging.size(), withoutFontMerging.size()); + + for (int i = 0; i < withFontMerging.size(); ++i) + QCOMPARE(withFontMerging.at(i).glyphIndexes(), withoutFontMerging.at(i).glyphIndexes()); +} + QTEST_MAIN(tst_QTextScriptEngine) #include "tst_qtextscriptengine.moc" |