[truetype] Reduce Infinality footprint again.

* src/truetype/ttgload.c (compute_glyph_metrics): Streamline and
prioritize the Infinality checks to use `hdmx`.
This commit is contained in:
Alexei Podtelezhnikov 2021-12-07 10:19:06 -05:00
parent 1f95189875
commit 012b00f3e6
1 changed files with 12 additions and 28 deletions

View File

@ -2262,14 +2262,20 @@
/* unless FT_LOAD_COMPUTE_METRICS is set or backward compatibility */ /* unless FT_LOAD_COMPUTE_METRICS is set or backward compatibility */
/* mode of the v40 interpreter is active. See `ttinterp.h' for */ /* mode of the v40 interpreter is active. See `ttinterp.h' for */
/* details on backward compatibility mode. */ /* details on backward compatibility mode. */
if ( if ( IS_HINTED( loader->load_flags ) &&
!( loader->load_flags & FT_LOAD_COMPUTE_METRICS ) &&
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
!( driver->interpreter_version == TT_INTERPRETER_VERSION_40 && !( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
( loader->exec && loader->exec->backward_compatibility ) ) && ( loader->exec && loader->exec->backward_compatibility ) ) &&
#endif #endif
!face->postscript.isFixedPitch && #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
IS_HINTED( loader->load_flags ) && !( driver->interpreter_version == TT_INTERPRETER_VERSION_38 &&
!( loader->load_flags & FT_LOAD_COMPUTE_METRICS ) ) !SPH_OPTION_BITMAP_WIDTHS &&
FT_LOAD_TARGET_MODE( loader->load_flags ) !=
FT_RENDER_MODE_MONO &&
( loader->exec && !loader->exec->compatible_widths ) ) &&
#endif
!face->postscript.isFixedPitch )
{ {
FT_Byte* widthp; FT_Byte* widthp;
@ -2278,30 +2284,8 @@
size->metrics->x_ppem, size->metrics->x_ppem,
glyph_index ); glyph_index );
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY if ( widthp )
glyph->metrics.horiAdvance = *widthp * 64;
if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 )
{
FT_Bool ignore_x_mode;
ignore_x_mode = FT_BOOL( FT_LOAD_TARGET_MODE( loader->load_flags ) !=
FT_RENDER_MODE_MONO );
if ( widthp &&
( ( ignore_x_mode && loader->exec->compatible_widths ) ||
!ignore_x_mode ||
SPH_OPTION_BITMAP_WIDTHS ) )
glyph->metrics.horiAdvance = *widthp * 64;
}
else
#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
{
if ( widthp )
glyph->metrics.horiAdvance = *widthp * 64;
}
} }
/* set glyph dimensions */ /* set glyph dimensions */