summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>2014-03-25 10:08:05 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-25 14:19:27 +0100
commit0b87f4f6c912a508f170cd25ff5317bb77665fa9 (patch)
tree1ef3c9764d22ffe8baebdf6a1111b67532fe2055 /src/plugins
parentd668f1be22c0e0219c02bcc6928a825ca4f33e42 (diff)
Android: Fix font merging
Our fallback fonts would contain a minimal list of hardcoded fallback fonts, which is neither sufficient for displaying all text, nor portable to different vendors which can supply different font sets. [ChangeLog][Android] Fixed font merging problem which caused e.g. missing glyphs for Arabic numerals. Task-number: QTBUG-37738 Change-Id: Ic971343a1cd5610c79a81f6f6152c637937b5626 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/android/qandroidplatformfontdatabase.cpp18
-rw-r--r--src/plugins/platforms/android/qandroidplatformfontdatabase.h3
2 files changed, 17 insertions, 4 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
index 7f68b44ed8..7423e6c55a 100644
--- a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
+++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
@@ -60,7 +60,17 @@ void QAndroidPlatformFontDatabase::populateFontDatabase()
QDir dir(fontpath, QLatin1String("*.ttf"));
for (int i = 0; i < int(dir.count()); ++i) {
const QByteArray file = QFile::encodeName(dir.absoluteFilePath(dir[i]));
- addTTFile(QByteArray(), file);
+
+ QSupportedWritingSystems supportedWritingSystems;
+ QStringList families = addTTFile(QByteArray(), file, &supportedWritingSystems);
+
+ extern int qt_script_for_writing_system(QFontDatabase::WritingSystem writingSystem);
+ for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) {
+ if (i == QFontDatabase::Any || supportedWritingSystems.supported(QFontDatabase::WritingSystem(i))) {
+ QChar::Script script = QChar::Script(qt_script_for_writing_system(QFontDatabase::WritingSystem(i)));
+ m_fallbacks[script] += families;
+ }
+ }
}
}
@@ -71,9 +81,9 @@ QStringList QAndroidPlatformFontDatabase::fallbacksForFamily(const QString &fami
{
Q_UNUSED(family);
Q_UNUSED(style);
- Q_UNUSED(script);
+
if (styleHint == QFont::Monospace)
- return QString(qgetenv("QT_ANDROID_FONTS_MONOSPACE")).split(";");
+ return QString(qgetenv("QT_ANDROID_FONTS_MONOSPACE")).split(";") + m_fallbacks[script];
- return QString(qgetenv("QT_ANDROID_FONTS")).split(";");
+ return QString(qgetenv("QT_ANDROID_FONTS")).split(";") + m_fallbacks[script];
}
diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.h b/src/plugins/platforms/android/qandroidplatformfontdatabase.h
index 3cbfe95d36..cdd3cf1674 100644
--- a/src/plugins/platforms/android/qandroidplatformfontdatabase.h
+++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.h
@@ -53,6 +53,9 @@ public:
QFont::Style style,
QFont::StyleHint styleHint,
QChar::Script script) const;
+
+private:
+ QHash<QChar::Script, QStringList> m_fallbacks;
};
#endif // QANDROIDPLATFORMFONTDATABASE_H