#include "QtGui/qfont.h"
#include "QtCore/qmap.h"
#include "QtCore/qobject.h"
+#include "QtCore/qstringlist.h"
#include <private/qunicodetables_p.h>
#include <QtGui/qfontdatabase.h>
#include "private/qfixed_p.h"
QString family;
QString styleName;
+ QStringList fallBackFamilies;
qreal pointSize;
qreal pixelSize;
if (!engine) {
if (!request.family.isEmpty()) {
- QStringList fallbacks = fallbackFamilies(request.family,QFont::Style(request.style),QFont::StyleHint(request.styleHint),QUnicodeTables::Script(script));
+ QStringList fallbacks = request.fallBackFamilies
+ + fallbackFamilies(request.family,
+ QFont::Style(request.style),
+ QFont::StyleHint(request.styleHint),
+ QUnicodeTables::Script(script));
+
for (int i = 0; !engine && i < fallbacks.size(); i++) {
QFontDef def = request;
def.family = fallbacks.at(i);
QStringList family_list;
if (!req.family.isEmpty()) {
- family_list = familyList(req);
+ QStringList familiesForRequest = familyList(req);
+
+ // Add primary selection
+ family_list << familiesForRequest.takeFirst();
+
+ // Fallbacks requested in font request
+ req.fallBackFamilies = familiesForRequest;
// add the default family
QString defaultFamily = QGuiApplication::font().family();
fe = 0;
}
+
+ // No need to check requested fallback families again
+ req.fallBackFamilies.clear();
}
if (fe->symbol || (d->request.styleStrategy & QFont::NoFontMerging)) {
extractor.extractFont(&fnt, &adjustment);
QFontInfo info(fnt);
- // Note, we have to QSKIP rather than QEXPECT_FAIL because font lookup is broken
- // such that it may work or not work depending on the order in which fonts were
- // loaded from disk: ### fixme: Check platforms
- QSKIP("QTBUG-20986 may fail on qpa");
-
QTEST(info.family(), "expectedFamily");
}