LOCA_LONG and LOCA_SHORT, whichever is set.
If INTERPRETER is non-NULL, then possibly use the unscaled glyph
- metrics in METRICS when instructing the glyph.
+ metrics in METRICS and the interpreter STATE to instruct the glyph.
Return the outline with an incremented reference count and enter
the generated outline into CACHE upon success, possibly discarding
struct sfnt_loca_table_short *loca_short,
struct sfnt_loca_table_long *loca_long,
struct sfnt_interpreter *interpreter,
- struct sfnt_glyph_metrics *metrics)
+ struct sfnt_glyph_metrics *metrics,
+ struct sfnt_graphics_state *state)
{
struct sfnt_outline_cache *start;
struct sfnt_glyph_outline *outline;
if (interpreter && glyph->simple)
{
+ /* Restore the interpreter state from the snapshot taken after
+ loading the preprogram. */
+ interpreter->state = *state;
+
error = sfnt_interpret_simple_glyph (glyph, interpreter,
metrics, &value);
font->glyf, font->head,
font->loca_short,
font->loca_long,
- font->interpreter, &metrics);
+ font->interpreter, &metrics,
+ &font->state);
if (!outline)
return 1;
&font->outline_cache_size,
font->glyf, font->head,
font->loca_short,
- font->loca_long, NULL, NULL);
+ font->loca_long, NULL, NULL,
+ NULL);
if (!outline)
return 1;
info->loca_short,
info->loca_long,
info->interpreter,
- &metrics);
+ &metrics,
+ &info->state);
x_coords[i - from] = 0;
if (!outline)