diff options
Diffstat (limited to 'src/3rdparty/harfbuzz-ng/src/hb-kern.hh')
-rw-r--r-- | src/3rdparty/harfbuzz-ng/src/hb-kern.hh | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-kern.hh b/src/3rdparty/harfbuzz-ng/src/hb-kern.hh index 99d533c045..0462a0ea8e 100644 --- a/src/3rdparty/harfbuzz-ng/src/hb-kern.hh +++ b/src/3rdparty/harfbuzz-ng/src/hb-kern.hh @@ -49,11 +49,14 @@ struct hb_kern_machine_t hb_mask_t kern_mask, bool scale = true) const { - OT::hb_ot_apply_context_t c (1, font, buffer); + if (!buffer->message (font, "start kern")) + return; + + buffer->unsafe_to_concat (); + OT::hb_ot_apply_context_t c (1, font, buffer, hb_blob_get_empty ()); c.set_lookup_mask (kern_mask); c.set_lookup_props (OT::LookupFlag::IgnoreMarks); - OT::hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c.iter_input; - skippy_iter.init (&c); + auto &skippy_iter = c.iter_input; bool horizontal = HB_DIRECTION_IS_HORIZONTAL (buffer->props.direction); unsigned int count = buffer->len; @@ -67,8 +70,9 @@ struct hb_kern_machine_t continue; } - skippy_iter.reset (idx, 1); - if (!skippy_iter.next ()) + skippy_iter.reset (idx); + unsigned unsafe_to; + if (!skippy_iter.next (&unsafe_to)) { idx++; continue; @@ -126,6 +130,8 @@ struct hb_kern_machine_t skip: idx = skippy_iter.idx; } + + (void) buffer->message (font, "end kern"); } const Driver &driver; |