diff options
author | Jiang Jiang <jiang.jiang@nokia.com> | 2011-10-04 14:52:13 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-05 14:55:26 +0200 |
commit | 57c6f22858dc2d545bab705a9b9308b3eac354de (patch) | |
tree | 31d771cf1617595f0eca747d877cab320181b584 /src/platformsupport/fontdatabases | |
parent | 11070a090a9cc77d02315a3cb39eaf628bd9bfe7 (diff) |
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>
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 18 | ||||
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h | 1 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index e566cee4f4..3f4aeb2d4a 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -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; +} diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h index eec510722a..c6983e1a8b 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h @@ -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 |