diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2020-07-06 11:59:13 +0200 |
---|---|---|
committer | Adolfo Jayme Barrientos <fitojb@ubuntu.com> | 2020-07-13 22:58:20 +0200 |
commit | 1171d609c52fc1f7cd58787e9ebc1ecca32fe450 (patch) | |
tree | 33eeef47423e39520d608c14ead58e9ac0162949 /vcl | |
parent | b6cd8fb8d8095c3aa1d7fd6654b7173ecc87bcb0 (diff) |
set also RGB/BGR LCD order for Skia text rendering (tdf#134275)
Change-Id: I797a851f52d9ba4c18127219b9042348225d14dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98199
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
(cherry picked from commit fada69d6ee05700fd57c8844591562608a900a9d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98089
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/skia/win/gdiimpl.cxx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/vcl/skia/win/gdiimpl.cxx b/vcl/skia/win/gdiimpl.cxx index 6129c8e266da..43ced4e9639f 100644 --- a/vcl/skia/win/gdiimpl.cxx +++ b/vcl/skia/win/gdiimpl.cxx @@ -22,6 +22,7 @@ #include <SkTypeface_win.h> #include <SkFont.h> #include <SkFontMgr.h> +#include <SkFontLCDConfig.h> #include <tools/sk_app/win/WindowContextFactory_win.h> #include <tools/sk_app/WindowContext.h> @@ -213,16 +214,25 @@ SkFont::Edging WinSkiaSalGraphicsImpl::getFontEdging() // the glyphs will be rendered based on this setting (subpixel AA requires colors, // others do not). fontEdging = SkFont::Edging::kAlias; + SkFontLCDConfig::LCDOrder lcdOrder = SkFontLCDConfig::kNONE_LCDOrder; BOOL set; if (SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &set, 0) && set) { UINT set2; if (SystemParametersInfo(SPI_GETFONTSMOOTHINGTYPE, 0, &set2, 0) && set2 == FE_FONTSMOOTHINGCLEARTYPE) + { fontEdging = SkFont::Edging::kSubpixelAntiAlias; + if (SystemParametersInfo(SPI_GETFONTSMOOTHINGORIENTATION, 0, &set2, 0) + && set2 == FE_FONTSMOOTHINGORIENTATIONBGR) + lcdOrder = SkFontLCDConfig::kBGR_LCDOrder; + else + lcdOrder = SkFontLCDConfig::kRGB_LCDOrder; // default + } else fontEdging = SkFont::Edging::kAntiAlias; } + SkFontLCDConfig::SetSubpixelOrder(lcdOrder); // Cache this, it is actually visible a little bit when profiling. fontEdgingDone = true; return fontEdging; |