Index: third_party/harfbuzz-ng/src/hb-buffer-private.hh |
diff --git a/third_party/harfbuzz-ng/src/hb-buffer-private.hh b/third_party/harfbuzz-ng/src/hb-buffer-private.hh |
index 7fed7386b0e9cda8b77f83825ece679b8659d89b..111078c240c04ac7b6050855b32274f73c69da4c 100644 |
--- a/third_party/harfbuzz-ng/src/hb-buffer-private.hh |
+++ b/third_party/harfbuzz-ng/src/hb-buffer-private.hh |
@@ -35,9 +35,37 @@ |
#include "hb-unicode-private.hh" |
+#ifndef HB_BUFFER_MAX_EXPANSION_FACTOR |
+#define HB_BUFFER_MAX_EXPANSION_FACTOR 32 |
+#endif |
+#ifndef HB_BUFFER_MAX_LEN_MIN |
+#define HB_BUFFER_MAX_LEN_MIN 8192 |
+#endif |
+#ifndef HB_BUFFER_MAX_LEN_DEFAULT |
+#define HB_BUFFER_MAX_LEN_DEFAULT 0x3FFFFFFF /* Shaping more than a billion chars? Let us know! */ |
+#endif |
+ |
ASSERT_STATIC (sizeof (hb_glyph_info_t) == 20); |
ASSERT_STATIC (sizeof (hb_glyph_info_t) == sizeof (hb_glyph_position_t)); |
+HB_MARK_AS_FLAG_T (hb_buffer_flags_t); |
+HB_MARK_AS_FLAG_T (hb_buffer_serialize_flags_t); |
+ |
+enum hb_buffer_scratch_flags_t { |
+ HB_BUFFER_SCRATCH_FLAG_DEFAULT = 0x00000000u, |
+ HB_BUFFER_SCRATCH_FLAG_HAS_NON_ASCII = 0x00000001u, |
+ HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES = 0x00000002u, |
+ HB_BUFFER_SCRATCH_FLAG_HAS_SPACE_FALLBACK = 0x00000004u, |
+ HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_CURSIVE = 0x00000008u, |
+ HB_BUFFER_SCRATCH_FLAG_HAS_GPOS_ATTACHMENT = 0x00000010u, |
+ /* Reserved for complex shapers' internal use. */ |
+ HB_BUFFER_SCRATCH_FLAG_COMPLEX0 = 0x01000000u, |
+ HB_BUFFER_SCRATCH_FLAG_COMPLEX1 = 0x02000000u, |
+ HB_BUFFER_SCRATCH_FLAG_COMPLEX2 = 0x04000000u, |
+ HB_BUFFER_SCRATCH_FLAG_COMPLEX3 = 0x08000000u, |
+}; |
+HB_MARK_AS_FLAG_T (hb_buffer_scratch_flags_t); |
+ |
/* |
* hb_buffer_t |
@@ -52,6 +80,8 @@ struct hb_buffer_t { |
hb_buffer_flags_t flags; /* BOT / EOT / etc. */ |
hb_buffer_cluster_level_t cluster_level; |
hb_codepoint_t replacement; /* U+FFFD or something else. */ |
+ hb_buffer_scratch_flags_t scratch_flags; /* Have space-flallback, etc. */ |
+ unsigned int max_len; /* Maximum allowed len. */ |
/* Buffer contents */ |
hb_buffer_content_type_t content_type; |
@@ -76,8 +106,8 @@ struct hb_buffer_t { |
inline hb_glyph_position_t &cur_pos (unsigned int i = 0) { return pos[idx + i]; } |
inline hb_glyph_position_t cur_pos (unsigned int i = 0) const { return pos[idx + i]; } |
- inline hb_glyph_info_t &prev (void) { return out_info[out_len - 1]; } |
- inline hb_glyph_info_t prev (void) const { return info[out_len - 1]; } |
+ inline hb_glyph_info_t &prev (void) { return out_info[out_len ? out_len - 1 : 0]; } |
+ inline hb_glyph_info_t prev (void) const { return out_info[out_len ? out_len - 1 : 0]; } |
inline bool has_separate_output (void) const { return info != out_info; } |