summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
authorBalazs Kelemen <kbalazs@webkit.org>2012-03-08 17:02:15 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-12 23:29:37 +0100
commit3e45d4824611b07835aa7a816d0aee3f5c49e87e (patch)
tree8696fa0ff3bd494259122cd8b2c75fa015fa47ea /src/platformsupport
parent0850b5d76a242abe5beef05e2566957b695099a8 (diff)
Fix QFont hinting preference with fontconfig
Consider if the hinting preference of the QFont is not PreferDefaultHinting. Change-Id: I0f50b320356787b6c1eabee5f009e7d326a06925 Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp49
1 files changed, 31 insertions, 18 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index 69ec3ba08a..28a99cfd17 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -515,24 +515,37 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
FcCharSet *charset;
if (match) {
QFontEngineFT::HintStyle default_hint_style;
-
- //hinting
- int hint_style = 0;
- if (FcPatternGetInteger (match, FC_HINT_STYLE, 0, &hint_style) == FcResultNoMatch)
- hint_style = QFontEngineFT::HintFull;
- switch (hint_style) {
- case FC_HINT_NONE:
- default_hint_style = QFontEngineFT::HintNone;
- break;
- case FC_HINT_SLIGHT:
- default_hint_style = QFontEngineFT::HintLight;
- break;
- case FC_HINT_MEDIUM:
- default_hint_style = QFontEngineFT::HintMedium;
- break;
- default:
- default_hint_style = QFontEngineFT::HintFull;
- break;
+ if (f.hintingPreference != QFont::PreferDefaultHinting) {
+ switch (f.hintingPreference) {
+ case QFont::PreferNoHinting:
+ default_hint_style = QFontEngineFT::HintNone;
+ break;
+ case QFont::PreferVerticalHinting:
+ default_hint_style = QFontEngineFT::HintLight;
+ break;
+ case QFont::PreferFullHinting:
+ default:
+ default_hint_style = QFontEngineFT::HintFull;
+ break;
+ }
+ } else {
+ int hint_style = 0;
+ if (FcPatternGetInteger (match, FC_HINT_STYLE, 0, &hint_style) == FcResultNoMatch)
+ hint_style = QFontEngineFT::HintFull;
+ switch (hint_style) {
+ case FC_HINT_NONE:
+ default_hint_style = QFontEngineFT::HintNone;
+ break;
+ case FC_HINT_SLIGHT:
+ default_hint_style = QFontEngineFT::HintLight;
+ break;
+ case FC_HINT_MEDIUM:
+ default_hint_style = QFontEngineFT::HintMedium;
+ break;
+ default:
+ default_hint_style = QFontEngineFT::HintFull;
+ break;
+ }
}
engine->setDefaultHintStyle(default_hint_style);