[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.
This commit is contained in:
Alexei Podtelezhnikov 2022-04-25 08:03:08 -04:00
parent d59c7ce1b9
commit 581dd06405
1 changed files with 9 additions and 8 deletions

View File

@ -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];