| Index: third_party/harfbuzz-ng/src/hb-shape.cc
|
| diff --git a/third_party/harfbuzz-ng/src/hb-shape.cc b/third_party/harfbuzz-ng/src/hb-shape.cc
|
| index 67ef7e6a8f56a09714582f4b17b9dc8b4745b21b..c1b752405e1fdc55b8b4515b7e218e130ff90736 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-shape.cc
|
| +++ b/third_party/harfbuzz-ng/src/hb-shape.cc
|
| @@ -153,6 +153,18 @@ parse_one_feature (const char **pp, const char *end, hb_feature_t *feature)
|
| *pp == end;
|
| }
|
|
|
| +/**
|
| + * hb_feature_from_string:
|
| + * @str: (array length=len):
|
| + * @len:
|
| + * @feature: (out):
|
| + *
|
| + *
|
| + *
|
| + * Return value:
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| hb_bool_t
|
| hb_feature_from_string (const char *str, int len,
|
| hb_feature_t *feature)
|
| @@ -163,6 +175,16 @@ hb_feature_from_string (const char *str, int len,
|
| return parse_one_feature (&str, str + len, feature);
|
| }
|
|
|
| +/**
|
| + * hb_feature_to_string:
|
| + * @feature:
|
| + * @buf: (array length=size):
|
| + * @size:
|
| + *
|
| + *
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| void
|
| hb_feature_to_string (hb_feature_t *feature,
|
| char *buf, unsigned int size)
|
| @@ -181,23 +203,23 @@ hb_feature_to_string (hb_feature_t *feature,
|
| {
|
| s[len++] = '[';
|
| if (feature->start)
|
| - len += snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->start);
|
| + len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->start));
|
| if (feature->end != feature->start + 1) {
|
| s[len++] = ':';
|
| if (feature->end != (unsigned int) -1)
|
| - len += snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->end);
|
| + len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->end));
|
| }
|
| s[len++] = ']';
|
| }
|
| if (feature->value > 1)
|
| {
|
| s[len++] = '=';
|
| - len += snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->value);
|
| + len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->value));
|
| }
|
| assert (len < ARRAY_LENGTH (s));
|
| len = MIN (len, size - 1);
|
| memcpy (buf, s, len);
|
| - s[len] = '\0';
|
| + buf[len] = '\0';
|
| }
|
|
|
|
|
| @@ -209,6 +231,15 @@ void free_static_shaper_list (void)
|
| free (static_shaper_list);
|
| }
|
|
|
| +/**
|
| + * hb_shape_list_shapers:
|
| + *
|
| + *
|
| + *
|
| + * Return value: (transfer none):
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| const char **
|
| hb_shape_list_shapers (void)
|
| {
|
| @@ -244,6 +275,20 @@ retry:
|
| }
|
|
|
|
|
| +/**
|
| + * hb_shape_full:
|
| + * @font: a font.
|
| + * @buffer: a buffer.
|
| + * @features: (array length=num_features):
|
| + * @num_features:
|
| + * @shaper_list: (array zero-terminated=1):
|
| + *
|
| + *
|
| + *
|
| + * Return value:
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| hb_bool_t
|
| hb_shape_full (hb_font_t *font,
|
| hb_buffer_t *buffer,
|
| @@ -265,6 +310,17 @@ hb_shape_full (hb_font_t *font,
|
| return res;
|
| }
|
|
|
| +/**
|
| + * hb_shape:
|
| + * @font: a font.
|
| + * @buffer: a buffer.
|
| + * @features: (array length=num_features):
|
| + * @num_features:
|
| + *
|
| + *
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| void
|
| hb_shape (hb_font_t *font,
|
| hb_buffer_t *buffer,
|
|
|