Index: third_party/harfbuzz-ng/src/hb-buffer.cc |
diff --git a/third_party/harfbuzz-ng/src/hb-buffer.cc b/third_party/harfbuzz-ng/src/hb-buffer.cc |
index e8bdfb1c6c142429e5336f6bbafeba8448314a33..c566a4a298a26855c61a126ee3d4361a991130f6 100644 |
--- a/third_party/harfbuzz-ng/src/hb-buffer.cc |
+++ b/third_party/harfbuzz-ng/src/hb-buffer.cc |
@@ -223,6 +223,7 @@ hb_buffer_t::swap_buffers (void) |
if (unlikely (in_error)) return; |
assert (have_output); |
+ have_output = FALSE; |
if (out_info != info) |
{ |
@@ -270,7 +271,7 @@ hb_buffer_t::replace_glyphs_be16 (unsigned int num_in, |
void |
hb_buffer_t::replace_glyphs (unsigned int num_in, |
unsigned int num_out, |
- const uint16_t *glyph_data) |
+ const uint32_t *glyph_data) |
{ |
if (!make_room_for (num_in, num_out)) return; |
@@ -431,6 +432,29 @@ hb_buffer_t::reverse_clusters (void) |
} |
void |
+hb_buffer_t::merge_clusters (unsigned int start, |
+ unsigned int end) |
+{ |
+ unsigned int cluster = this->info[start].cluster; |
+ |
+ for (unsigned int i = start + 1; i < end; i++) |
+ cluster = MIN (cluster, this->info[i].cluster); |
+ for (unsigned int i = start; i < end; i++) |
+ this->info[i].cluster = cluster; |
+} |
+void |
+hb_buffer_t::merge_out_clusters (unsigned int start, |
+ unsigned int end) |
+{ |
+ unsigned int cluster = this->out_info[start].cluster; |
+ |
+ for (unsigned int i = start + 1; i < end; i++) |
+ cluster = MIN (cluster, this->out_info[i].cluster); |
+ for (unsigned int i = start; i < end; i++) |
+ this->out_info[i].cluster = cluster; |
+} |
+ |
+void |
hb_buffer_t::guess_properties (void) |
{ |
/* If script is set to INVALID, guess from buffer contents */ |