diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> | 2013-04-17 12:44:36 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-22 18:35:52 +0200 |
commit | 241ee2ee4208eb6b338390f82b71f1b1d7c4c5b0 (patch) | |
tree | 90d41086a914ebddc6ed4170e7337c27e40acb90 /src/platformsupport | |
parent | d64274d4ffd0556e3de6da82cb8220ebba2d9186 (diff) |
Read correct font hinting config on Gnome/Unity
Fixes regression against Qt 4. This tries to recreate the logic
from 5c46d9a4c85abbcc0b5db2bbbafded3efd784cd9 in Qt 4, where we
on Gnome would override the default hint style specified in
FontConfig with Xft.hintstyle settings. This is the configuration
used for changing the hint style in the Gnome Tweak Tool.
Task-number: QTBUG-29582
Change-Id: I6b9fe2c8ff55ff080d034e5a53fc8cbb49f7651f
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 9c28c9fa63..91472f9efb 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -47,11 +47,17 @@ #include <QtCore/QElapsedTimer> +#include <qpa/qplatformnativeinterface.h> #include <qpa/qplatformscreen.h> +#include <qpa/qplatformintegration.h> +#include <qpa/qplatformservices.h> #include <QtGui/private/qfontengine_ft_p.h> #include <QtGui/private/qfontengine_p.h> #include <QtGui/private/qfontengine_qpa_p.h> +#include <QtGui/private/qguiapplication_p.h> + +#include <QtGui/qguiapplication.h> #include <ft2build.h> #include FT_TRUETYPE_TABLES_H @@ -640,6 +646,19 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QChar::Script sc break; } } + + if (f.hintingPreference == QFont::PreferDefaultHinting) { + QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment(); + if (desktopEnvironment == "GNOME" || desktopEnvironment == "UNITY") { + void *hintStyleResource = + QGuiApplication::platformNativeInterface()->nativeResourceForScreen("hintstyle", + QGuiApplication::primaryScreen()); + int hintStyle = int(reinterpret_cast<qintptr>(hintStyleResource)); + if (hintStyle > 0) + default_hint_style = QFontEngine::HintStyle(hintStyle - 1); + } + } + engine->setDefaultHintStyle(default_hint_style); if (antialias) { |