external/skia/UnpackedTarball_skia.mk    |    1 
 external/skia/windows-text-gamma.patch.0 |   72 +++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)

New commits:
commit 4df4f60fd8bdd5b0c650a1dbe5d2c488acf68105
Author:     Xisco Fauli <[email protected]>
AuthorDate: Fri Jul 4 11:38:48 2025 +0200
Commit:     Xisco Fauli <[email protected]>
CommitDate: Fri Jul 4 13:17:28 2025 +0200

    Revert "tdf#166339 vcl: Removed Windows skia text gamma patch"
    
    This reverts commit 9f509a54f61740785a1f135ddec99573ba3e8a41.
    
    Reason for revert: On second thought, it feels safer to keep it 
master/libreoffice-25.8 only at this point
    
    Change-Id: I5a2aabf028db948f9d7af2df3ba0a929471e1332
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187378
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/external/skia/UnpackedTarball_skia.mk 
b/external/skia/UnpackedTarball_skia.mk
index fd6b0bb7da3d..60481be5de23 100644
--- a/external/skia/UnpackedTarball_skia.mk
+++ b/external/skia/UnpackedTarball_skia.mk
@@ -21,6 +21,7 @@ skia_patches := \
     clang-attributes-warning.patch.1 \
     fontconfig-get-typeface.patch.1 \
     windows-do-not-modify-logfont.patch.0 \
+    windows-text-gamma.patch.0 \
     windows-force-unicode-api.patch.0 \
     fix-without-gl.patch.1 \
     windows-typeface-directwrite.patch.1 \
diff --git a/external/skia/windows-text-gamma.patch.0 
b/external/skia/windows-text-gamma.patch.0
new file mode 100644
index 000000000000..aad89597a447
--- /dev/null
+++ b/external/skia/windows-text-gamma.patch.0
@@ -0,0 +1,72 @@
+--- ./src/ports/SkFontHost_win.cpp     2024-10-04 15:24:40.448100018 +0200
++++ ./src/ports/SkFontHost_win.cpp     2024-10-04 15:26:22.284624363 +0200
+@@ -1149,18 +1149,24 @@
+         // 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<true>(src, srcRB, glyph, imageBuffer, fPreBlend.fG);
+-        } else {
++        } else
++#endif
++        {
+             RGBToA8<false>(src, srcRB, glyph, imageBuffer, fPreBlend.fG);
+         }
+     } else {    // LCD16
+         const SkGdiRGB* src = (const SkGdiRGB*)bits;
+         SkASSERT(SkMask::kLCD16_Format == glyph.maskFormat());
++#if defined(SK_GAMMA_APPLY_TO_A8)
+         if (fPreBlend.isApplicable()) {
+             RGBToLcd16<true>(src, srcRB, glyph, imageBuffer,
+                              fPreBlend.fR, fPreBlend.fG, fPreBlend.fB);
+-        } else {
++        } else
++#endif
++        {
+             RGBToLcd16<false>(src, srcRB, glyph, imageBuffer,
+                               fPreBlend.fR, fPreBlend.fG, fPreBlend.fB);
+         }
+--- ./src/ports/SkScalerContext_win_dw.cpp     2024-10-04 15:24:40.448100018 
+0200
++++ ./src/ports/SkScalerContext_win_dw.cpp     2024-10-04 15:29:29.810572073 
+0200
+@@ -2127,20 +2127,27 @@
+         BilevelToBW(src, glyph, imageBuffer);
+     } else if (!isLCD(fRec)) {
+         if (textureType == DWRITE_TEXTURE_ALIASED_1x1) {
++#if defined(SK_GAMMA_APPLY_TO_A8)
+             if (fPreBlend.isApplicable()) {
+                 GrayscaleToA8<true>(src, glyph, imageBuffer, fPreBlend.fG);
+-            } else {
++            } else
++#endif
++            {
+                 GrayscaleToA8<false>(src, glyph, imageBuffer, fPreBlend.fG);
+             }
+         } else {
++#if defined(SK_GAMMA_APPLY_TO_A8)
+             if (fPreBlend.isApplicable()) {
+                 RGBToA8<true>(src, glyph, imageBuffer, fPreBlend.fG);
+-            } else {
++            } else
++#endif
++            {
+                 RGBToA8<false>(src, glyph, imageBuffer, fPreBlend.fG);
+             }
+         }
+     } else {
+         SkASSERT(SkMask::kLCD16_Format == glyph.maskFormat());
++#if defined(SK_GAMMA_APPLY_TO_A8)
+         if (fPreBlend.isApplicable()) {
+             if (fRec.fFlags & SkScalerContext::kLCD_BGROrder_Flag) {
+                 RGBToLcd16<true, false>(src, glyph, imageBuffer,
+@@ -2149,7 +2156,9 @@
+                 RGBToLcd16<true, true>(src, glyph, imageBuffer,
+                                        fPreBlend.fR, fPreBlend.fG, 
fPreBlend.fB);
+             }
+-        } else {
++        } else
++#endif
++        {
+             if (fRec.fFlags & SkScalerContext::kLCD_BGROrder_Flag) {
+                 RGBToLcd16<false, false>(src, glyph, imageBuffer,
+                                          fPreBlend.fR, fPreBlend.fG, 
fPreBlend.fB);

Reply via email to