Extend clusters backward in out-buffer
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index c3cf561..38eb95f 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc
@@ -452,10 +452,18 @@ hb_buffer_t::merge_out_clusters (unsigned int start, unsigned int end) { + if (unlikely (start >= end)) + return; + unsigned int cluster = out_info[start].cluster; for (unsigned int i = start + 1; i < end; i++) cluster = MIN (cluster, out_info[i].cluster); + + /* Extend start */ + while (start && out_info[start - 1].cluster == out_info[start].cluster) + start--; + for (unsigned int i = start; i < end; i++) out_info[i].cluster = cluster; }
diff --git a/src/hb-ot-shape-complex-misc.cc b/src/hb-ot-shape-complex-misc.cc index d93d4c6..748d4b3 100644 --- a/src/hb-ot-shape-complex-misc.cc +++ b/src/hb-ot-shape-complex-misc.cc
@@ -178,8 +178,6 @@ /* XXX Make this easier! */ /* Make cluster */ - for (; start > 0 && buffer->out_info[start - 1].cluster == buffer->out_info[start].cluster; start--) - ; for (; buffer->idx < count;) if (buffer->cur().cluster == buffer->prev().cluster) buffer->next_glyph ();