Android: Fix synthesized oblique for non-latin scripts
In 5e3e34731b, 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>
bb10
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…
Reference in New Issue