forked from pool/libqt5-qtwebengine
9bce4b8c38
Qt 5.10.0 OBS-URL: https://build.opensuse.org/request/show/557410 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtwebengine?expand=0&rev=28
80 lines
3.2 KiB
Diff
80 lines
3.2 KiB
Diff
From: Jan Steffens <heftig@archlinux.org>
|
|
Date: 2017-09-19 23:30:08 -0700
|
|
Subject: This is required for QtWebEngine to show the patent-free LCD rendering. Without this patch, only grayscale rendering is used.
|
|
References: boo#1061344
|
|
Upstream: submitted
|
|
Index: qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp
|
|
===================================================================
|
|
--- qtwebengine-everywhere-src-5.10.0.orig/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp
|
|
+++ qtwebengine-everywhere-src-5.10.0/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp
|
|
@@ -99,8 +99,6 @@ public:
|
|
FreeTypeLibrary()
|
|
: fGetVarDesignCoordinates(nullptr)
|
|
, fLibrary(nullptr)
|
|
- , fIsLCDSupported(false)
|
|
- , fLCDExtra(0)
|
|
{
|
|
if (FT_New_Library(&gFTMemory, &fLibrary)) {
|
|
return;
|
|
@@ -150,8 +148,6 @@ public:
|
|
// Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs.
|
|
// The default has changed over time, so this doesn't mean the same thing to all users.
|
|
if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) {
|
|
- fIsLCDSupported = true;
|
|
- fLCDExtra = 2; //Using a filter adds one full pixel to each side.
|
|
}
|
|
}
|
|
~FreeTypeLibrary() {
|
|
@@ -161,8 +157,6 @@ public:
|
|
}
|
|
|
|
FT_Library library() { return fLibrary; }
|
|
- bool isLCDSupported() { return fIsLCDSupported; }
|
|
- int lcdExtra() { return fLCDExtra; }
|
|
|
|
// FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1.
|
|
// Prior to this there was no way to get the coordinates out of the FT_Face.
|
|
@@ -173,8 +167,6 @@ public:
|
|
|
|
private:
|
|
FT_Library fLibrary;
|
|
- bool fIsLCDSupported;
|
|
- int fLCDExtra;
|
|
|
|
// FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0.
|
|
// The following platforms provide FreeType of at least 2.4.0.
|
|
@@ -661,17 +653,6 @@ void SkTypeface_FreeType::onFilterRec(Sk
|
|
rec->fTextSize = SkIntToScalar(1 << 14);
|
|
}
|
|
|
|
- if (isLCD(*rec)) {
|
|
- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr.
|
|
- SkAutoMutexAcquire ama(gFTMutex);
|
|
- ref_ft_library();
|
|
- if (!gFTLibrary->isLCDSupported()) {
|
|
- // If the runtime Freetype library doesn't support LCD, disable it here.
|
|
- rec->fMaskFormat = SkMask::kA8_Format;
|
|
- }
|
|
- unref_ft_library();
|
|
- }
|
|
-
|
|
SkPaint::Hinting h = rec->getHinting();
|
|
if (SkPaint::kFull_Hinting == h && !isLCD(*rec)) {
|
|
// collapse full->normal hinting if we're not doing LCD
|
|
@@ -1072,11 +1053,11 @@ bool SkScalerContext_FreeType::getCBoxFo
|
|
void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) {
|
|
if (isLCD(fRec)) {
|
|
if (fLCDIsVert) {
|
|
- glyph->fHeight += gFTLibrary->lcdExtra();
|
|
- glyph->fTop -= gFTLibrary->lcdExtra() >> 1;
|
|
+ glyph->fHeight += 2;
|
|
+ glyph->fTop -= 1;
|
|
} else {
|
|
- glyph->fWidth += gFTLibrary->lcdExtra();
|
|
- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1;
|
|
+ glyph->fWidth += 2;
|
|
+ glyph->fLeft -= 1;
|
|
}
|
|
}
|
|
}
|