Small correction.
>From a1c6bbcbb81ec091b17de5054b3f21ee80520c6c Mon Sep 17 00:00:00 2001
From: Nikolaus Waxweiler <[email protected]>
Date: Sun, 29 May 2016 20:05:35 +0200
Subject: [PATCH] Let SHPIX move points in the twilight zone in v40.
Special case: allow SHPIX to move points in the twilight zone.
Otherwise, treat SHPIX the same as DELTAP. Unbreaks various fonts such
as older versions of Rokkitt and DTL Argo T Light that would glitch
severly after calling ALIGNRP after a blocked SHPIX.
---
src/truetype/ttinterp.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index c6df129..f376161 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -5548,6 +5548,10 @@
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
FT_Int B1, B2;
#endif
+#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
+ FT_Bool in_twilight = exc->GS.gep0 == 0 || exc->GS.gep1 == 0 || exc->GS.gep2 == 0;
+#endif
+
if ( exc->top < exc->GS.loop + 1 )
@@ -5656,11 +5660,14 @@
if ( SUBPIXEL_HINTING_MINIMAL &&
exc->backwards_compatibility )
{
- /* XXX: breaks Rokkitt < v1.2 */
- /* (glyphs explode vertically on ALIGNRP). */
- if ( !( exc->iupx_called && exc->iupy_called ) &&
- ( ( exc->is_composite && exc->GS.freeVector.y != 0 ) ||
- ( exc->zp2.tags[point] & FT_CURVE_TAG_TOUCH_Y ) ) )
+ /* Special case: allow SHPIX to move points in the twilight zone.
+ * Otherwise, treat SHPIX the same as DELTAP. Unbreaks various fonts
+ * such as older versions of Rokkitt and DTL Argo T Light that would
+ * glitch severly after calling ALIGNRP after a blocked SHPIX. */
+ if ( in_twilight ||
+ ( !( exc->iupx_called && exc->iupy_called ) &&
+ ( ( exc->is_composite && exc->GS.freeVector.y != 0 ) ||
+ ( exc->zp2.tags[point] & FT_CURVE_TAG_TOUCH_Y ) ) ) )
Move_Zp2_Point( exc, point, 0, dy, TRUE );
}
else
--
2.5.5
_______________________________________________
Freetype-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/freetype-devel