summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@nokia.com>2011-09-12 07:49:03 +0200
committerGunnar Sletta <gunnar.sletta@nokia.com>2011-09-12 07:49:03 +0200
commita9ac6da893ac10ce160c9eb80141508881cd71e2 (patch)
tree0e74067407612d44ad07ff74cb7be6d444ee28c5 /src/platformsupport
parent8eb5ba3b9cb1e8e07f28a3153672a946b2d82fd9 (diff)
parent687461627310e8b781da15d1a907c35bd8ffea6e (diff)
Merge branch 'master' into refactor
Conflicts: src/3rdparty/v8 src/gui/text/qfont_qpa.cpp src/gui/widgets/qlinecontrol.cpp src/plugins/platforms/fontdatabases/fontconfig/qfontconfigdatabase.cpp tests/auto/gui.pro tests/auto/network.pro tests/auto/qstring/tst_qstring.cpp Change-Id: Id118c172645303ccf06a207050d5bf1462ff57fe
Diffstat (limited to 'src/platformsupport')
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp41
1 files changed, 22 insertions, 19 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index d506d7c0f8..9726ad8119 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -475,14 +475,14 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
fid.filename = fontfile->fileName.toLocal8Bit();
fid.index = fontfile->indexValue;
- //try and get the pattern
- FcPattern *pattern = FcPatternCreate();
-
bool antialias = !(fontDef.styleStrategy & QFont::NoAntialias);
QFontEngineFT::GlyphFormat format = antialias? QFontEngineFT::Format_A8 : QFontEngineFT::Format_Mono;
engine = new QFontEngineFT(fontDef);
+ // try and get the pattern
+ FcPattern *pattern = FcPatternCreate();
+
FcValue value;
value.type = FcTypeString;
QByteArray cs = fontDef.family.toUtf8();
@@ -497,9 +497,8 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
value.u.i = fid.index;
FcPatternAdd(pattern,FC_INDEX,value,true);
- QFontEngineFT::HintStyle default_hint_style;
-
if (FcConfigSubstitute(0,pattern,FcMatchPattern)) {
+ QFontEngineFT::HintStyle default_hint_style;
//hinting
int hint_style = 0;
@@ -519,9 +518,10 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
default_hint_style = QFontEngineFT::HintFull;
break;
}
+ engine->setDefaultHintStyle(default_hint_style);
}
+ FcPatternDestroy(pattern);
- engine->setDefaultHintStyle(default_hint_style);
if (!engine->init(fid,antialias,format)) {
delete engine;
engine = 0;
@@ -576,26 +576,29 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString family, const
}
FcConfigSubstitute(0, pattern, FcMatchPattern);
- FcConfigSubstitute(0, pattern, FcMatchFont);
+ FcDefaultSubstitute(pattern);
FcResult result = FcResultMatch;
FcFontSet *fontSet = FcFontSort(0,pattern,FcFalse,0,&result);
+ FcPatternDestroy(pattern);
- if (fontSet && result == FcResultMatch)
- {
- for (int i = 0; i < fontSet->nfont; i++) {
- FcChar8 *value = 0;
- if (FcPatternGetString(fontSet->fonts[i], FC_FAMILY, 0, &value) != FcResultMatch)
- continue;
- // capitalize(value);
- QString familyName = QString::fromUtf8((const char *)value);
- if (!fallbackFamilies.contains(familyName,Qt::CaseInsensitive)) {
- fallbackFamilies << familyName;
+ if (fontSet) {
+ if (result == FcResultMatch) {
+ for (int i = 0; i < fontSet->nfont; i++) {
+ FcChar8 *value = 0;
+ if (FcPatternGetString(fontSet->fonts[i], FC_FAMILY, 0, &value) != FcResultMatch)
+ continue;
+ // capitalize(value);
+ QString familyName = QString::fromUtf8((const char *)value);
+ if (!fallbackFamilies.contains(familyName,Qt::CaseInsensitive) &&
+ familyName.compare(family, Qt::CaseInsensitive)) {
+ fallbackFamilies << familyName;
+ }
}
-
}
+ FcFontSetDestroy(fontSet);
}
-// qDebug() << "fallbackFamilies for:" << family << fallbackFamilies;
+// qDebug() << "fallbackFamilies for:" << family << style << styleHint << script << fallbackFamilies;
return fallbackFamilies;
}