Android: Fix synthesized oblique for non-latin scripts
In 5e3e34731b7880ac775e8f1fa156ce016e6820f1, a default implementation of QPlatformFontDatabase::fallbacksForFamily() was added, but this implementation included only the fonts with a matching style in the returned list. The result of this was that if a font face for a specific language did not have e.g. an italic font, then we would show missing glyph boxes instead. On Android, it would be impossible to show any italic text in Chinese, Japanese, Hebrew, or Arabic. [ChangeLog][QtGui][Text] Fixed synthesized oblique for non-latin text on platforms using the basic font database, such as Android. Task-number: QTBUG-51223 Change-Id: I494d8ad87292b65d4380a2e600c1c0dc7fc8f937 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
This commit is contained in:
parent
78ee77f491
commit
aa2e2a8d5e
@ -805,7 +805,8 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo
|
||||
Q_UNUSED(family);
|
||||
Q_UNUSED(styleHint);
|
||||
|
||||
QStringList retList;
|
||||
QStringList preferredFallbacks;
|
||||
QStringList otherFallbacks;
|
||||
|
||||
size_t writingSystem = std::find(scriptForWritingSystem,
|
||||
scriptForWritingSystem + QFontDatabase::WritingSystemsCount,
|
||||
@ -826,18 +827,18 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo
|
||||
QtFontFoundry *foundry = f->foundries[j];
|
||||
|
||||
for (int k = 0; k < foundry->count; ++k) {
|
||||
if (style == foundry->styles[k]->key.style) {
|
||||
if (foundry->name.isEmpty())
|
||||
retList.append(f->name);
|
||||
else
|
||||
retList.append(f->name + QLatin1String(" [") + foundry->name + QLatin1Char(']'));
|
||||
break;
|
||||
}
|
||||
QString name = foundry->name.isEmpty()
|
||||
? f->name
|
||||
: f->name + QLatin1String(" [") + foundry->name + QLatin1Char(']');
|
||||
if (style == foundry->styles[k]->key.style)
|
||||
preferredFallbacks.append(name);
|
||||
else
|
||||
otherFallbacks.append(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return retList;
|
||||
return preferredFallbacks + otherFallbacks;
|
||||
}
|
||||
|
||||
static void initializeDb();
|
||||
|
Loading…
x
Reference in New Issue
Block a user