diff options
| author | Sérgio Martins <sergio.martins@kdab.com> | 2014-11-20 21:15:16 +0000 |
|---|---|---|
| committer | Sérgio Martins <sergio.martins@kdab.com> | 2015-02-14 01:15:11 +0000 |
| commit | fbc3d75354dc6ca6a84c9642efdccf99ac8d5a8b (patch) | |
| tree | fd48da9b75b28d93a780882b1618762b110bc349 /src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp | |
| parent | c5e2d5f73b26b556ab76ab980e28f6435935f092 (diff) | |
FreeType: Support RGB rendering when not using FontConfig
Windows+FreeType, Linux with -no-fontconfig and the forthcoming
OSX FreeType engine can now use sub pixel rendering.
The function to get the subpixel type is in QPlatformScreen because
we're moving to per screen font settings in the future.
This patch is safe, as no functionality is changed for existing users,
if one wants sub pixel rendering they'll still have to pass -DFT_CONFIG_OPTION_SUBPIXEL_RENDERING
to configure.
Task-number: QTBUG-44269
Change-Id: Ib6c22d48a1b7c7b85ee316d5d9e3b6eae0c1ecc0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Diffstat (limited to 'src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp')
| -rw-r--r-- | src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp index d5288aadc33..65cdabdf5bc 100644 --- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp @@ -101,9 +101,19 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, void *usrPt fid.index = fontfile->indexValue; bool antialias = !(fontDef.styleStrategy & QFont::NoAntialias); - QFontEngineFT::GlyphFormat format = antialias? QFontEngineFT::Format_A8 : QFontEngineFT::Format_Mono; - QFontEngineFT *engine = new QFontEngineFT(fontDef); + QFontEngineFT::GlyphFormat format = QFontEngineFT::Format_Mono; + if (antialias) { + QFontEngine::SubpixelAntialiasingType subpixelType = subpixelAntialiasingTypeHint(); + if (subpixelType == QFontEngine::Subpixel_None || (fontDef.styleStrategy & QFont::NoSubpixelAntialias)) { + format = QFontEngineFT::Format_A8; + engine->subpixelType = QFontEngine::Subpixel_None; + } else { + format = QFontEngineFT::Format_A32; + engine->subpixelType = subpixelType; + } + } + if (!engine->init(fid, antialias, format) || engine->invalid()) { delete engine; engine = 0; |
