[aat] In ContextualSubtable, mark mark after substituting mark

Fixes MORX-21.
This commit is contained in:
Behdad Esfahbod 2018-02-02 16:08:50 -05:00
parent fe5f9b1ae3
commit aed32589af
1 changed files with 8 additions and 8 deletions

View File

@ -207,13 +207,7 @@ struct ContextualSubtable
{
hb_buffer_t *buffer = driver->buffer;
if (entry->flags & SetMark)
{
mark = buffer->idx;
last_zero_before_mark = driver->last_zero;
}
if (entry->data.markIndex != 0xFFFF)
if (entry->data.markIndex != 0xFFFF && mark < buffer->len)
{
const Lookup<GlyphID> &lookup = subs[entry->data.markIndex];
hb_glyph_info_t *info = buffer->info;
@ -225,7 +219,7 @@ struct ContextualSubtable
ret = true;
}
}
if (entry->data.currentIndex != 0xFFFF)
if (entry->data.currentIndex != 0xFFFF && buffer->idx < buffer->len)
{
const Lookup<GlyphID> &lookup = subs[entry->data.currentIndex];
hb_glyph_info_t *info = buffer->info;
@ -238,6 +232,12 @@ struct ContextualSubtable
}
}
if (entry->flags & SetMark)
{
mark = buffer->idx;
last_zero_before_mark = driver->last_zero;
}
return true;
}