diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2020-07-06 11:59:13 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2020-07-07 11:44:13 +0200 |
commit | fada69d6ee05700fd57c8844591562608a900a9d (patch) | |
tree | 3b193fb280f4d5c3adc53408ae8b4119bc83793b | |
parent | ecb2dc9705d2197833cfbfd2259d3ac289f3e82d (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>
-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 b3170b27b8ca..0e883bc1960f 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; |