summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fontdatabases
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-09-04 11:47:33 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-09 15:30:08 +0200
commit2ad331465c3b19d56edb9b744b66e908f03294d3 (patch)
tree862df86f964a59d1edccba348bc2640b469b4c1c /src/platformsupport/fontdatabases
parent295977e77f2b78ff729c3c57b5b43f57ebe60949 (diff)
QRawFont::fromFont does not get antialias setting from fontconfig
When creating a fontengine in QFontconfigDatabase::fontEngine we solely base the antialias setting on the QFont StyleStrategy and forget to ask fontconfig it has an overriding definition for this font match. This patch will now let fontconfig decide the antialias setting unless the NoAntialias stylestrategy has been set. Change-Id: I67981582a37cfd3c59aa1db929095585af554088 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Diffstat (limited to 'src/platformsupport/fontdatabases')
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index afe634dc4b..d555ada95a 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -565,6 +565,14 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QChar::Script sc
}
}
+ if (antialias) {
+ // If antialiasing is not fully disabled, fontconfig may still disable it on a font match basis.
+ FcBool fc_antialias;
+ if (FcPatternGetBool(match, FC_ANTIALIAS,0, &fc_antialias) != FcResultMatch)
+ fc_antialias = true;
+ antialias = fc_antialias;
+ }
+
if (f.hintingPreference == QFont::PreferDefaultHinting) {
const QPlatformServices *services = QGuiApplicationPrivate::platformIntegration()->services();
if (services && (services->desktopEnvironment() == "GNOME" || services->desktopEnvironment() == "UNITY")) {