[coretext/uniscribe/directwrite/graphite/fallback] Update for unsafe-to-break
Fixes https://github.com/behdad/harfbuzz/issues/615
We'll see which bots I broke.
diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh
index 0b8d7c8..4913da6 100644
--- a/src/hb-buffer-private.hh
+++ b/src/hb-buffer-private.hh
@@ -305,7 +305,7 @@
info.cluster = cluster;
}
- int
+ inline int
_unsafe_to_break_find_min_cluster (const hb_glyph_info_t *info,
unsigned int start, unsigned int end,
unsigned int cluster) const
@@ -314,7 +314,7 @@
cluster = MIN<unsigned int> (cluster, info[i].cluster);
return cluster;
}
- void
+ inline void
_unsafe_to_break_set_mask (hb_glyph_info_t *info,
unsigned int start, unsigned int end,
unsigned int cluster)
@@ -326,6 +326,19 @@
info[i].mask |= HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
}
}
+
+ inline void
+ unsafe_to_break_all (void)
+ {
+ for (unsigned int i = 0; i < len; i++)
+ info[i].mask |= HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
+ }
+ inline void
+ safe_to_break_all (void)
+ {
+ for (unsigned int i = 0; i < len; i++)
+ info[i].mask &= ~HB_GLYPH_FLAG_UNSAFE_TO_BREAK;
+ }
};
diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc
index 90c9cd3..86ca17f 100644
--- a/src/hb-coretext.cc
+++ b/src/hb-coretext.cc
@@ -1262,6 +1262,8 @@
}
}
+ buffer->unsafe_to_break_all ();
+
#undef FAIL
fail:
diff --git a/src/hb-directwrite.cc b/src/hb-directwrite.cc
index 25749de..0674ef9 100644
--- a/src/hb-directwrite.cc
+++ b/src/hb-directwrite.cc
@@ -927,8 +927,7 @@
hb_bool_t res = _hb_directwrite_shape_full (shape_plan, font, buffer,
features, num_features, width);
- if (res)
- buffer->content_type = HB_BUFFER_CONTENT_TYPE_GLYPHS;
+ buffer->unsafe_to_break_all ();
return res;
}
diff --git a/src/hb-fallback-shape.cc b/src/hb-fallback-shape.cc
index 4b60c6c..3f09c3f 100644
--- a/src/hb-fallback-shape.cc
+++ b/src/hb-fallback-shape.cc
@@ -143,5 +143,7 @@
if (HB_DIRECTION_IS_BACKWARD (direction))
hb_buffer_reverse (buffer);
+ buffer->safe_to_break_all ();
+
return true;
}
diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc
index 531c2ad..62aaae9 100644
--- a/src/hb-graphite2.cc
+++ b/src/hb-graphite2.cc
@@ -416,5 +416,7 @@
if (feats) gr_featureval_destroy (feats);
gr_seg_destroy (seg);
+ buffer->unsafe_to_break_all ();
+
return true;
}
diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index 4841345..0b0bad5 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -1032,6 +1032,8 @@
if (backward)
hb_buffer_reverse (buffer);
+ buffer->unsafe_to_break_all ();
+
/* Wow, done! */
return true;
}