summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/text
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>2014-07-09 09:49:59 +0200
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>2014-07-10 10:01:49 +0200
commit1dd9a0af4f577ccb5578cea562a98686c8e290e6 (patch)
tree7c5ade01e711b2f9d9f96da3f089229b2f7101d6 /tests/auto/gui/text
parent916c9d469bd0df227dc3be97fcca27e3cf58144f (diff)
Fix fallbacks for adapted common script
When the platform plugin gives us specific fallbacks for a specific script, we need to respect this, and load the correct font family regardless of which writing systems it supports. This is especially important since the common script is adapted to match surrounding, proper scripts, so characters such as digits next to e.g. Hebrew text will be marked as Hebrew. On stock Android, there is a single Hebrew font, and this would previously be put in all fallback slots for Hebrew regardless of what fallback fonts were dictated by the platform plugin. Since this font does not support the digits, they would show up as boxes. [ChangeLog][Android] Fixed common characters like digits and punctuation showing as boxes when positioned next to non-latin scripts. Task-number: QTBUG-39377 Change-Id: I1555e208a8ddc587c0bbdbfff1600cafdd9442e9 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Diffstat (limited to 'tests/auto/gui/text')
-rw-r--r--tests/auto/gui/text/qfontdatabase/qfontdatabase.pro5
-rw-r--r--tests/auto/gui/text/qfontdatabase/testdata.qrc5
-rw-r--r--tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp24
3 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qfontdatabase/qfontdatabase.pro b/tests/auto/gui/text/qfontdatabase/qfontdatabase.pro
index 6975c4088b..831ed1f572 100644
--- a/tests/auto/gui/text/qfontdatabase/qfontdatabase.pro
+++ b/tests/auto/gui/text/qfontdatabase/qfontdatabase.pro
@@ -9,3 +9,8 @@ wince* {
additionalFiles.path = .
DEPLOYMENT += additionalFiles
}
+
+android {
+ RESOURCES += testdata.qrc
+}
+
diff --git a/tests/auto/gui/text/qfontdatabase/testdata.qrc b/tests/auto/gui/text/qfontdatabase/testdata.qrc
new file mode 100644
index 0000000000..8a8670bf17
--- /dev/null
+++ b/tests/auto/gui/text/qfontdatabase/testdata.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>LED_REAL.TTF</file>
+ </qresource>
+</RCC>
diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
index 28db0ba291..2ae12ec246 100644
--- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
+++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
@@ -44,6 +44,8 @@
#include <qfontdatabase.h>
#include <qfontinfo.h>
#include <qfontmetrics.h>
+#include <qtextlayout.h>
+#include <private/qrawfont_p.h>
#include <qpa/qplatformfontdatabase.h>
class tst_QFontDatabase : public QObject
@@ -77,6 +79,7 @@ private slots:
void addAppFont();
void aliases();
+ void fallbackFonts();
private:
const QString m_testFont;
@@ -285,5 +288,26 @@ void tst_QFontDatabase::aliases()
QVERIFY(db.hasFamily(alias));
}
+void tst_QFontDatabase::fallbackFonts()
+{
+ QTextLayout layout;
+ QString s;
+ s.append(QChar(0x31));
+ s.append(QChar(0x05D0));
+ layout.setText(s);
+ layout.beginLayout();
+ layout.createLine();
+ layout.endLayout();
+
+ QList<QGlyphRun> runs = layout.glyphRuns(0, 1);
+ foreach (QGlyphRun run, runs) {
+ QRawFont rawFont = run.rawFont();
+ QVERIFY(rawFont.isValid());
+
+ QCOMPARE(run.glyphIndexes().size(), 1);
+ QVERIFY(run.glyphIndexes().at(0) != 0);
+ }
+}
+
QTEST_MAIN(tst_QFontDatabase)
#include "tst_qfontdatabase.moc"