--- ./src/ports/SkFontHost_win.cpp.sav 2020-03-18 10:26:52.470184300 +0100 +++ ./src/ports/SkFontHost_win.cpp 2020-03-18 12:08:04.598406700 +0100 @@ -1215,17 +1215,23 @@ // since the caller may require A8 for maskfilters, we can't check for BW // ... until we have the caller tell us that explicitly const SkGdiRGB* src = (const SkGdiRGB*)bits; +#if defined(SK_GAMMA_APPLY_TO_A8) if (fPreBlend.isApplicable()) { RGBToA8(src, srcRB, glyph, fPreBlend.fG); - } else { + } else +#endif + { RGBToA8(src, srcRB, glyph, fPreBlend.fG); } } else { // LCD16 const SkGdiRGB* src = (const SkGdiRGB*)bits; SkASSERT(SkMask::kLCD16_Format == glyph.fMaskFormat); +#if defined(SK_GAMMA_APPLY_TO_A8) if (fPreBlend.isApplicable()) { RGBToLcd16(src, srcRB, glyph, fPreBlend.fR, fPreBlend.fG, fPreBlend.fB); - } else { + } else +#endif + { RGBToLcd16(src, srcRB, glyph, fPreBlend.fR, fPreBlend.fG, fPreBlend.fB); } } --- ./src/ports/SkScalerContext_win_dw.cpp +++ ./src/ports/SkScalerContext_win_dw.cpp @@ -1132,27 +1132,36 @@ void SkScalerContext_DW::generateImage(const SkGlyph& glyph) { BilevelToBW(src, glyph); } else if (!isLCD(fRec)) { if (textureType == DWRITE_TEXTURE_ALIASED_1x1) { +#if defined(SK_GAMMA_APPLY_TO_A8) if (fPreBlend.isApplicable()) { GrayscaleToA8(src, glyph, fPreBlend.fG); - } else { + } else +#endif + { GrayscaleToA8(src, glyph, fPreBlend.fG); } } else { +#if defined(SK_GAMMA_APPLY_TO_A8) if (fPreBlend.isApplicable()) { RGBToA8(src, glyph, fPreBlend.fG); - } else { + } else +#endif + { RGBToA8(src, glyph, fPreBlend.fG); } } } else { SkASSERT(SkMask::kLCD16_Format == glyph.fMaskFormat); +#if defined(SK_GAMMA_APPLY_TO_A8) if (fPreBlend.isApplicable()) { if (fRec.fFlags & SkScalerContext::kLCD_BGROrder_Flag) { RGBToLcd16(src, glyph, fPreBlend.fR, fPreBlend.fG, fPreBlend.fB); } else { RGBToLcd16(src, glyph, fPreBlend.fR, fPreBlend.fG, fPreBlend.fB); } - } else { + } else +#endif + { if (fRec.fFlags & SkScalerContext::kLCD_BGROrder_Flag) { RGBToLcd16(src, glyph, fPreBlend.fR, fPreBlend.fG, fPreBlend.fB); } else {