summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2016-01-30 10:18:25 +0400
committerKonstantin Ritt <ritt.ks@gmail.com>2016-04-27 16:52:27 +0000
commit3df159ba174c1775a0e77d2305a639eeab1ea71d (patch)
tree2c90d89d17c069359e2beeb22b438a868adcf509 /tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
parente81f52ecc7cdbc555865c25289a6946837a15126 (diff)
Improve the script itemization algorithm to match Unicode 8.0
Override preceding Common-s with a subsequent non-Inherited, non-Common script. This produces longer script runs, which automagically improves the shaping quality (as we don't lose the context anymore), the shaping performance (as we're typically shape a fewer runs), and the fallback font selection (when the font supports more than just a single language/script). Task-number: QTBUG-29930 Change-Id: I1c55af30bd397871d7f1f6e062605517f5a7e5a1 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp')
-rw-r--r--tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp22
1 files changed, 7 insertions, 15 deletions
diff --git a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
index 18012fd347..e9e243f7ed 100644
--- a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
+++ b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
@@ -1225,29 +1225,21 @@ void tst_QTextScriptEngine::thaiWithZWJ()
QTextLayout layout(s, font);
QTextEngine *e = layout.engine();
e->itemize();
- QCOMPARE(e->layoutData->items.size(), 11);
+ QCOMPARE(e->layoutData->items.size(), 3);
for (int item = 0; item < e->layoutData->items.size(); ++item)
e->shape(item);
- QCOMPARE(e->layoutData->items[0].num_glyphs, ushort(7)); // Thai: The ZWJ and ZWNJ characters are inherited, so should be part of the thai script
- QCOMPARE(e->layoutData->items[1].num_glyphs, ushort(1)); // Common: The smart quotes cannot be handled by thai, so should be a separate item
- QCOMPARE(e->layoutData->items[2].num_glyphs, ushort(1)); // Thai: Thai character
- QCOMPARE(e->layoutData->items[3].num_glyphs, ushort(1)); // Common: Ellipsis
- QCOMPARE(e->layoutData->items[4].num_glyphs, ushort(1)); // Thai: Thai character
- QCOMPARE(e->layoutData->items[5].num_glyphs, ushort(1)); // Common: Smart quote
- QCOMPARE(e->layoutData->items[6].num_glyphs, ushort(1)); // Thai: Thai character
- QCOMPARE(e->layoutData->items[7].num_glyphs, ushort(1)); // Common: \xA0 = non-breaking space. Could be useful to have in thai, but not currently implemented
- QCOMPARE(e->layoutData->items[8].num_glyphs, ushort(1)); // Thai: Thai character
- QCOMPARE(e->layoutData->items[9].num_glyphs, ushort(1)); // Japanese: Kanji for tree
- QCOMPARE(e->layoutData->items[10].num_glyphs, ushort(2)); // Thai: Thai character followed by superscript "a" which is of inherited type
+ QCOMPARE(e->layoutData->items[0].num_glyphs, ushort(15)); // Thai, Inherited and Common
+ QCOMPARE(e->layoutData->items[1].num_glyphs, ushort(1)); // Japanese: Kanji for tree
+ QCOMPARE(e->layoutData->items[2].num_glyphs, ushort(2)); // Thai: Thai character followed by superscript "a" which is of inherited type
//A quick sanity check - check all the characters are individual clusters
unsigned short *logClusters = e->layoutData->logClustersPtr;
- for (int i = 0; i < 7; i++)
+ for (int i = 0; i < 15; i++)
QCOMPARE(logClusters[i], ushort(i));
- for (int i = 0; i < 10; i++)
- QCOMPARE(logClusters[i+7], ushort(0));
+ for (int i = 0; i < 3; i++)
+ QCOMPARE(logClusters[i+15], ushort(0));
// A thai implementation could either remove the ZWJ and ZWNJ characters, or hide them.
// The current implementation hides them, so we test for that.