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/fontconfig/qfontconfigdatabase.cpp | |
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/fontconfig/qfontconfigdatabase.cpp')
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 18 |
1 files changed, 18 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; +} |