[morx] Remove deleted-glyph at the end of processing

This commit is contained in:
Behdad Esfahbod 2018-10-25 17:36:33 -07:00
parent 1bb8ed86d6
commit 5c272e3613
1 changed files with 17 additions and 0 deletions

View File

@ -998,6 +998,22 @@ struct morx
} }
} }
inline static void remove_deleted_glyphs (hb_buffer_t *buffer)
{
if (unlikely (!buffer->successful)) return;
buffer->clear_output ();
for (buffer->idx = 0; buffer->idx < buffer->len && buffer->successful;)
{
if (unlikely (buffer->cur().codepoint == DELETED_GLYPH))
buffer->skip_glyph ();
else
buffer->next_glyph ();
}
if (likely (buffer->successful))
buffer->swap_buffers ();
}
inline void apply (hb_aat_apply_context_t *c) const inline void apply (hb_aat_apply_context_t *c) const
{ {
if (unlikely (!c->buffer->successful)) return; if (unlikely (!c->buffer->successful)) return;
@ -1010,6 +1026,7 @@ struct morx
if (unlikely (!c->buffer->successful)) return; if (unlikely (!c->buffer->successful)) return;
chain = &StructAfter<Chain> (*chain); chain = &StructAfter<Chain> (*chain);
} }
remove_deleted_glyphs (c->buffer);
} }
inline bool sanitize (hb_sanitize_context_t *c) const inline bool sanitize (hb_sanitize_context_t *c) const