Add font family alias resolving to QPA
By default it doesn't do anything special, but for fontconfig font db it will do some tricks to convert alias like serif to actualy font family names like Times. Change-Id: I73058d187a5422e6f93bc1b728cecdc0250d5e1e Reviewed-on: http://codereview.qt-project.org/5984 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>bb10
parent
11070a090a
commit
57c6f22858
|
|
@ -1131,7 +1131,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
|
|||
# include "qfontdatabase_s60.cpp"
|
||||
#endif
|
||||
QT_END_INCLUDE_NAMESPACE
|
||||
#if !defined(Q_WS_X11)
|
||||
#if !defined(Q_WS_X11) && !defined(Q_WS_QPA)
|
||||
QString QFontDatabase::resolveFontFamilyAlias(const QString &family)
|
||||
{
|
||||
return family;
|
||||
|
|
|
|||
|
|
@ -377,4 +377,9 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
|
|||
}
|
||||
}
|
||||
|
||||
QString QFontDatabase::resolveFontFamilyAlias(const QString &family)
|
||||
{
|
||||
return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(family);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -372,6 +372,17 @@ QHash<QByteArray, QFont> QPlatformFontDatabase::defaultFonts() const
|
|||
return QHash<QByteArray, QFont>();
|
||||
}
|
||||
|
||||
/*!
|
||||
Resolve alias to actual font family names.
|
||||
|
||||
\since 5.0
|
||||
*/
|
||||
|
||||
QString QPlatformFontDatabase::resolveFontFamilyAlias(const QString &family) const
|
||||
{
|
||||
return family;
|
||||
}
|
||||
|
||||
/*!
|
||||
\class QPlatformFontDatabase
|
||||
\brief The QPlatformFontDatabase class makes it possible to customize how fonts
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ public:
|
|||
|
||||
virtual QFont defaultFont() const;
|
||||
virtual QHash<QByteArray, QFont> defaultFonts() const;
|
||||
virtual QString resolveFontFamilyAlias(const QString &family) const;
|
||||
|
||||
//callback
|
||||
static void registerQPF2Font(const QByteArray &dataArray, void *handle);
|
||||
|
|
|
|||
|
|
@ -658,3 +658,21 @@ QStringList QFontconfigDatabase::addApplicationFont(const QByteArray &fontData,
|
|||
return families;
|
||||
}
|
||||
|
||||
QString QFontconfigDatabase::resolveFontFamilyAlias(const QString &family) const
|
||||
{
|
||||
FcPattern *pattern = FcPatternCreate();
|
||||
if (!pattern)
|
||||
return family;
|
||||
|
||||
QByteArray cs = family.toUtf8();
|
||||
FcPatternAddString(pattern, FC_FAMILY, (const FcChar8 *) cs.constData());
|
||||
FcConfigSubstitute(0, pattern, FcMatchPattern);
|
||||
FcDefaultSubstitute(pattern);
|
||||
|
||||
FcChar8 *familyAfterSubstitution;
|
||||
FcPatternGetString(pattern, FC_FAMILY, 0, &familyAfterSubstitution);
|
||||
QString resolved = QString::fromUtf8((const char *) familyAfterSubstitution);
|
||||
FcPatternDestroy(pattern);
|
||||
|
||||
return resolved;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public:
|
|||
QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle);
|
||||
QStringList fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const;
|
||||
QStringList addApplicationFont(const QByteArray &fontData, const QString &fileName);
|
||||
QString resolveFontFamilyAlias(const QString &family) const;
|
||||
};
|
||||
|
||||
#endif // QFONTCONFIGDATABASE_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue