summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases
diff options
context:
space:
mode:
authorJiang Jiang <jiang.jiang@nokia.com>2012-05-09 16:38:54 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-11 01:42:02 +0200
commit2b39093d2f811a1d6593fcbbfdc7ead993d68f59 (patch)
tree4c7159f2c59c8ea6303ff794668b874429298bf6 /src/platformsupport/fontdatabases
parent954c2f4cf1466ac7a8d9be2ea20dc0e4aeb53c7a (diff)
Do not use charset loaded by fontconfig
The only use for storing charset loaded by fontconfig in font engines is for determine if a font supports certain codepoint, however FreeType already does that. The charset loaded is sometimes not complete, for instance in fontconfig 2.9.0 it removed Apple Roman platform support for cmap loading, thus results a regression in common symbol fonts (Wingdings, Webdings) rendering. Because those symbol fonts produced by Monotype only contain two cmap tables: Apple Roman and Microsoft Symbol, since the Microsoft Symbol table has a weird 0xF000 offset, we always fallback to the Apple Roman cmap table. Removing freetype charset cache also make each font engine consuming less memory. Change-Id: I88f3f44981f3a1c517b84809a3f5b834ffff7681 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp5
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp14
2 files changed, 4 insertions, 15 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index d995ffbbad..86a01d8f3b 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -517,7 +517,6 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
FcResult result;
FcPattern *match = FcFontMatch(0, pattern, &result);
- FcCharSet *charset;
if (match) {
QFontEngineFT::HintStyle default_hint_style;
if (f.hintingPreference != QFont::PreferDefaultHinting) {
@@ -577,7 +576,6 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
} else
format = QFontEngineFT::Format_Mono;
- FcPatternGetCharSet(match, FC_CHARSET, 0, &charset);
FcPatternDestroy(match);
} else
format = antialias ? QFontEngineFT::Format_A8 : QFontEngineFT::Format_Mono;
@@ -600,9 +598,6 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
}
}
- if (engine && engine->freetype && !engine->freetype->charset)
- engine->freetype->charset = FcCharSetCopy(charset);
-
return engine;
}
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp
index 31828ef01f..153c452b04 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp
@@ -61,18 +61,12 @@ QFontEngineMultiFontConfig::~QFontEngineMultiFontConfig()
bool QFontEngineMultiFontConfig::shouldLoadFontEngineForCharacter(int at, uint ucs4) const
{
- QFontEngineFT *fontEngine = static_cast<QFontEngineFT *>(engines.at(at));
bool charSetHasChar = true;
- if (fontEngine != 0) {
- FcCharSet *charSet = fontEngine->freetype->charset;
+ FcPattern *matchPattern = getMatchPatternForFallback(at - 1);
+ if (matchPattern != 0) {
+ FcCharSet *charSet;
+ FcPatternGetCharSet(matchPattern, FC_CHARSET, 0, &charSet);
charSetHasChar = FcCharSetHasChar(charSet, ucs4);
- } else {
- FcPattern *matchPattern = getMatchPatternForFallback(at - 1);
- if (matchPattern != 0) {
- FcCharSet *charSet;
- FcPatternGetCharSet(matchPattern, FC_CHARSET, 0, &charSet);
- charSetHasChar = FcCharSetHasChar(charSet, ucs4);
- }
}
return charSetHasChar;