diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2019-01-23 20:53:57 +0100 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2019-01-23 20:53:57 +0100 |
commit | 36fb2b4da9718a86978fa07c99ba4345f7ca9b4b (patch) | |
tree | 8ef258388f9ddf83348bbf37d4f17040cd7d0ed1 /src | |
parent | cbe0ed117ac86179183c389977d15981d26524f7 (diff) |
[AAT] In InsertionChain, set mark to previous-position if inserting
Fixes MORX-31
Diffstat (limited to 'src')
-rw-r--r-- | src/hb-aat-layout-morx-table.hh | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh index a301fd3f..2ebbc351 100644 --- a/src/hb-aat-layout-morx-table.hh +++ b/src/hb-aat-layout-morx-table.hh @@ -729,6 +729,8 @@ struct InsertionSubtable hb_buffer_t *buffer = driver->buffer; unsigned int flags = entry->flags; + unsigned mark_loc = buffer->out_len; + if (entry->data.markedInsertIndex != 0xFFFF) { unsigned int count = (flags & MarkedInsertCount); @@ -754,6 +756,9 @@ struct InsertionSubtable buffer->unsafe_to_break_from_outbuffer (mark, MIN (buffer->idx + 1, buffer->len)); } + if (flags & SetMark) + mark = mark_loc; + if (entry->data.currentInsertIndex != 0xFFFF) { unsigned int count = (flags & CurrentInsertCount) >> 5; @@ -791,9 +796,6 @@ struct InsertionSubtable buffer->move_to ((flags & DontAdvance) ? end : end + count); } - if (flags & SetMark) - mark = buffer->out_len; - return true; } |