From 581dd064055eff6bda496c96e32b5400df57d8ef Mon Sep 17 00:00:00 2001 From: Alexei Podtelezhnikov Date: Mon, 25 Apr 2022 08:03:08 -0400 Subject: [PATCH] [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. --- src/truetype/ttinterp.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index be3922bfa..e16565c3a 100644 --- 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; @@ -7847,6 +7839,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 { exc->opcode = exc->code[exc->IP];