summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2020-07-06 11:59:13 +0200
committerLuboš Luňák <l.lunak@collabora.com>2020-07-07 11:44:13 +0200
commitfada69d6ee05700fd57c8844591562608a900a9d (patch)
tree3b193fb280f4d5c3adc53408ae8b4119bc83793b
parentecb2dc9705d2197833cfbfd2259d3ac289f3e82d (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.cxx10
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;