summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2019-01-23 20:53:57 +0100
committerBehdad Esfahbod <behdad@behdad.org>2019-01-23 20:53:57 +0100
commit36fb2b4da9718a86978fa07c99ba4345f7ca9b4b (patch)
tree8ef258388f9ddf83348bbf37d4f17040cd7d0ed1 /src
parentcbe0ed117ac86179183c389977d15981d26524f7 (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.hh8
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;
}