Index: third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh |
diff --git a/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh b/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh |
index 568b5f63a96013f487a861202e10c6ad637b2512..8bb91071df310f560ac17672998c290d2b747163 100644 |
--- a/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh |
+++ b/third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh |
@@ -426,6 +426,7 @@ struct MarkArray : ArrayOf<MarkRecord> /* Array of MarkRecords--in Coverage orde |
o.x_offset = base_x - mark_x; |
o.y_offset = base_y - mark_y; |
o.attach_lookback() = buffer->idx - glyph_pos; |
+ buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT; |
buffer->idx++; |
return_trace (true); |
@@ -993,6 +994,7 @@ struct CursivePosFormat1 |
reverse_cursive_minor_offset (pos, child, c->direction, parent); |
pos[child].cursive_chain() = parent - child; |
+ buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_CURSIVE; |
if (likely (HB_DIRECTION_IS_HORIZONTAL (c->direction))) |
pos[child].y_offset = y_offset; |
else |
@@ -1599,12 +1601,14 @@ GPOS::position_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer) |
hb_direction_t direction = buffer->props.direction; |
/* Handle cursive connections */ |
- for (unsigned int i = 0; i < len; i++) |
- fix_cursive_minor_offset (pos, i, direction); |
+ if (buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_CURSIVE) |
+ for (unsigned int i = 0; i < len; i++) |
+ fix_cursive_minor_offset (pos, i, direction); |
/* Handle attachments */ |
- for (unsigned int i = 0; i < len; i++) |
- fix_mark_attachment (pos, i, direction); |
+ if (buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT) |
+ for (unsigned int i = 0; i < len; i++) |
+ fix_mark_attachment (pos, i, direction); |
} |