summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qfontengine.cpp3
-rw-r--r--tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp39
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"