shithub: freetype+ttf2subf

Download patch

ref: 581dd064055eff6bda496c96e32b5400df57d8ef
parent: d59c7ce1b970bfe38b3df161e9dd711b75392709
author: Alexei Podtelezhnikov <apodtele@gmail.com>
date: Mon Apr 25 04:03:08 EDT 2022

[truetype] Reset IUP flags in `TT_RunIns`.

Fixes #1148 by moving the flag initialization back, partly reverting
7809007a and fd03dcc1.  Initializing these flags elsewhere skips 'cvt'.

* src/truetype/ttinterp.c (TT_RunIns): Initialize the IUP flag here...
(TT_Run_Context): ... instead of here.

git/fs: mount .git/fs: mount/attach disallowed
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -516,14 +516,6 @@
     exec->GS.round_state = 1;
     exec->GS.loop        = 1;
 
-#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
-    exec->iup_called  = FALSE;
-#endif
-#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
-    exec->iupx_called = FALSE;
-    exec->iupy_called = FALSE;
-#endif
-
     /* some glyphs leave something on the stack. so we clean it */
     /* before a new execution.                                  */
     exec->top     = 0;
@@ -7846,6 +7838,15 @@
 
     Compute_Funcs( exc );
     Compute_Round( exc, (FT_Byte)exc->GS.round_state );
+
+    /* These flags cancel execution of some opcodes after IUP is called */
+#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
+    exc->iup_called  = FALSE;
+#endif
+#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
+    exc->iupx_called = FALSE;
+    exc->iupy_called = FALSE;
+#endif
 
     do
     {