docs/harfbuzz-sections.txt | 14 +-- src/gen-emoji-table.py | 13 +- src/hb-deprecated.h | 37 ++++++++ src/hb-ot-var-fvar-table.hh | 114 +++++++++++++++++-------- src/hb-ot-var.cc | 41 ++++++--- src/hb-ot-var.h | 66 ++++++-------- src/hb-unicode-emoji-table.hh | 189 +++--------------------------------------- test/api/test-ot-face.c | 2 8 files changed, 208 insertions(+), 268 deletions(-)
New commits: commit f48bb9a3939067f24a81007e642caaac77cc7167 Author: Behdad Esfahbod <beh...@behdad.org> Date: Tue Nov 20 20:40:55 2018 -0500 [var] Deprecated axis enumeration API and add new version New version has axis flags. New API: +hb_ot_var_axis_info_t +hb_ot_var_find_axis_info() +hb_ot_var_get_axis_infos() Deprecated API: -HB_OT_VAR_NO_AXIS_INDEX -hb_ot_var_axis_t -hb_ot_var_find_axis() -hb_ot_var_get_axes() diff --git a/docs/harfbuzz-sections.txt b/docs/harfbuzz-sections.txt index 63d5f6ce..5f5dcef7 100644 --- a/docs/harfbuzz-sections.txt +++ b/docs/harfbuzz-sections.txt @@ -161,6 +161,10 @@ hb_ot_layout_table_choose_script hb_ot_layout_table_find_script hb_ot_tag_from_language hb_ot_tags_from_script +HB_OT_VAR_NO_AXIS_INDEX +hb_ot_var_axis_t +hb_ot_var_find_axis +hb_ot_var_get_axes hb_set_invert hb_unicode_eastasian_width_func_t hb_unicode_eastasian_width @@ -581,14 +585,12 @@ HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE HB_OT_TAG_VAR_AXIS_SLANT HB_OT_TAG_VAR_AXIS_WEIGHT HB_OT_TAG_VAR_AXIS_WIDTH -HB_OT_VAR_NO_AXIS_INDEX -hb_ot_var_axis_t hb_ot_var_has_data -hb_ot_var_find_axis -hb_ot_var_get_axis_count -hb_ot_var_get_axes hb_ot_var_axis_flags_t -hb_ot_var_axis_get_flags +hb_ot_var_axis_info_t +hb_ot_var_find_axis_info +hb_ot_var_get_axis_count +hb_ot_var_get_axis_infos hb_ot_var_get_named_instance_count hb_ot_var_named_instance_get_subfamily_name_id hb_ot_var_named_instance_get_postscript_name_id diff --git a/src/hb-deprecated.h b/src/hb-deprecated.h index e39b79f7..a74431f0 100644 --- a/src/hb-deprecated.h +++ b/src/hb-deprecated.h @@ -241,6 +241,43 @@ HB_EXTERN HB_DEPRECATED_FOR (hb_ot_tags_from_script_and_language) hb_tag_t hb_ot_tag_from_language (hb_language_t language); +typedef unsigned int hb_ot_name_id_t; /* Since is in hb-ot.h */ + +/** + * HB_OT_VAR_NO_AXIS_INDEX: + * + * Since: 1.4.2 + * Deprecated: REPLACEME + */ +#define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu + +/** + * hb_ot_var_axis_t: + * + * Since: 1.4.2 + * Deprecated: REPLACEME + */ +typedef struct hb_ot_var_axis_t +{ + hb_tag_t tag; + hb_ot_name_id_t name_id; + float min_value; + float default_value; + float max_value; +} hb_ot_var_axis_t; + +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_get_axis_infos) unsigned int +hb_ot_var_get_axes (hb_face_t *face, + unsigned int start_offset, + unsigned int *axes_count /* IN/OUT */, + hb_ot_var_axis_t *axes_array /* OUT */); + +HB_EXTERN HB_DEPRECATED_FOR (hb_ot_var_find_axis_info) hb_bool_t +hb_ot_var_find_axis (hb_face_t *face, + hb_tag_t axis_tag, + unsigned int *axis_index, + hb_ot_var_axis_t *axis_info); + #endif HB_END_DECLS diff --git a/src/hb-ot-var-fvar-table.hh b/src/hb-ot-var-fvar-table.hh index 0bf9d10d..5c8832e1 100644 --- a/src/hb-ot-var-fvar-table.hh +++ b/src/hb-ot-var-fvar-table.hh @@ -115,28 +115,62 @@ struct fvar inline unsigned int get_axis_count (void) const { return axisCount; } - inline bool get_axis (unsigned int index, hb_ot_var_axis_t *info) const + inline void get_axis_deprecated (unsigned int axis_index, + hb_ot_var_axis_t *info) const { - if (info) + const AxisRecord &axis = get_axes ()[axis_index]; + info->tag = axis.axisTag; + info->name_id = axis.axisNameID; + info->default_value = axis.defaultValue / 65536.; + /* Ensure order, to simplify client math. */ + info->min_value = MIN<float> (info->default_value, axis.minValue / 65536.); + info->max_value = MAX<float> (info->default_value, axis.maxValue / 65536.); + } + + inline void get_axis_info (unsigned int axis_index, + hb_ot_var_axis_info_t *info) const + { + const AxisRecord &axis = get_axes ()[axis_index]; + info->axis_index = axis_index; + info->tag = axis.axisTag; + info->name_id = axis.axisNameID; + info->flags = (hb_ot_var_axis_flags_t) (unsigned int) axis.flags; + info->default_value = axis.defaultValue / 65536.; + /* Ensure order, to simplify client math. */ + info->min_value = MIN<float> (info->default_value, axis.minValue / 65536.); + info->max_value = MAX<float> (info->default_value, axis.maxValue / 65536.); + info->reserved = 0; + } + + inline unsigned int get_axes_deprecated (unsigned int start_offset, + unsigned int *axes_count /* IN/OUT */, + hb_ot_var_axis_t *axes_array /* OUT */) const + { + if (axes_count) { - const AxisRecord &axis = get_axes ()[index]; - info->tag = axis.axisTag; - info->name_id = axis.axisNameID; - info->default_value = axis.defaultValue / 65536.; - /* Ensure order, to simplify client math. */ - info->min_value = MIN<float> (info->default_value, axis.minValue / 65536.); - info->max_value = MAX<float> (info->default_value, axis.maxValue / 65536.); - } + /* TODO Rewrite as hb_array_t<>::sub-array() */ + unsigned int count = axisCount; + start_offset = MIN (start_offset, count); + + count -= start_offset; + axes_array += start_offset; + + count = MIN (count, *axes_count); + *axes_count = count; - return true; + for (unsigned int i = 0; i < count; i++) + get_axis_deprecated (start_offset + i, axes_array + i); + } + return axisCount; } - inline unsigned int get_axis_infos (unsigned int start_offset, - unsigned int *axes_count /* IN/OUT */, - hb_ot_var_axis_t *axes_array /* OUT */) const + inline unsigned int get_axis_infos (unsigned int start_offset, + unsigned int *axes_count /* IN/OUT */, + hb_ot_var_axis_info_t *axes_array /* OUT */) const { if (axes_count) { + /* TODO Rewrite as hb_array_t<>::sub-array() */ unsigned int count = axisCount; start_offset = MIN (start_offset, count); @@ -147,32 +181,48 @@ struct fvar *axes_count = count; for (unsigned int i = 0; i < count; i++) - get_axis (start_offset + i, axes_array + i); + get_axis_info (start_offset + i, axes_array + i); } return axisCount; } - inline bool find_axis (hb_tag_t tag, unsigned int *index, hb_ot_var_axis_t *info) const + inline bool find_axis_deprecated (hb_tag_t tag, + unsigned int *axis_index, + hb_ot_var_axis_t *info) const { const AxisRecord *axes = get_axes (); unsigned int count = get_axis_count (); for (unsigned int i = 0; i < count; i++) if (axes[i].axisTag == tag) { - if (index) - *index = i; - return get_axis (i, info); + if (axis_index) + *axis_index = i; + get_axis_deprecated (i, info); + return true; + } + if (axis_index) + *axis_index = HB_OT_VAR_NO_AXIS_INDEX; + return false; + } + + inline bool find_axis_info (hb_tag_t tag, + hb_ot_var_axis_info_t *info) const + { + const AxisRecord *axes = get_axes (); + unsigned int count = get_axis_count (); + for (unsigned int i = 0; i < count; i++) + if (axes[i].axisTag == tag) + { + get_axis_info (i, info); + return true; } - if (index) - *index = HB_OT_VAR_NO_AXIS_INDEX; return false; } inline int normalize_axis_value (unsigned int axis_index, float v) const { - hb_ot_var_axis_t axis; - if (!get_axis (axis_index, &axis)) - return 0; + hb_ot_var_axis_info_t axis; + get_axis_info (axis_index, &axis); v = MAX (MIN (v, axis.max_value), axis.min_value); /* Clamp. */ @@ -188,25 +238,25 @@ struct fvar inline unsigned int get_instance_count (void) const { return instanceCount; } - inline hb_ot_name_id_t get_instance_subfamily_name_id (unsigned int index) const + inline hb_ot_name_id_t get_instance_subfamily_name_id (unsigned int instance_index) const { - const InstanceRecord &instance = get_instance (index); + const InstanceRecord &instance = get_instance (instance_index); return instance.subfamilyNameID; } - inline hb_ot_name_id_t get_instance_postscript_name_id (unsigned int index) const + inline hb_ot_name_id_t get_instance_postscript_name_id (unsigned int instance_index) const { - const InstanceRecord &instance = get_instance (index); + const InstanceRecord &instance = get_instance (instance_index); if (instanceSize >= axisCount * 4 + 6) return StructAfter<NameID> (instance.get_coordinates (axisCount)); return HB_OT_NAME_ID_INVALID; } - inline unsigned int get_instance_coords (unsigned int index, + inline unsigned int get_instance_coords (unsigned int instance_index, unsigned int *coords_length, /* IN/OUT */ float *coords /* OUT */) const { - if (unlikely (index >= instanceCount)) + if (unlikely (instance_index >= instanceCount)) { if (coords_length) *coords_length = 0; @@ -215,7 +265,7 @@ struct fvar if (coords_length && *coords_length) { - const InstanceRecord &instance = get_instance (index); + const InstanceRecord &instance = get_instance (instance_index); hb_array_t<const Fixed> instanceCoords = instance.get_coordinates (axisCount) .sub_array (0, *coords_length); for (unsigned int i = 0; i < instanceCoords.len; i++) diff --git a/src/hb-ot-var.cc b/src/hb-ot-var.cc index 279e8723..56d24817 100644 --- a/src/hb-ot-var.cc +++ b/src/hb-ot-var.cc @@ -53,7 +53,6 @@ * @face: #hb_face_t to test * * This function allows to verify the presence of OpenType variation data on the face. - * Alternatively, use hb_ot_var_get_axis_count(). * * Return value: true if face has a `fvar' table and false otherwise * @@ -80,6 +79,7 @@ hb_ot_var_get_axis_count (hb_face_t *face) * hb_ot_var_get_axes: * * Since: 1.4.2 + * Deprecated: REPLACEME **/ unsigned int hb_ot_var_get_axes (hb_face_t *face, @@ -87,13 +87,14 @@ hb_ot_var_get_axes (hb_face_t *face, unsigned int *axes_count /* IN/OUT */, hb_ot_var_axis_t *axes_array /* OUT */) { - return face->table.fvar->get_axis_infos (start_offset, axes_count, axes_array); + return face->table.fvar->get_axes_deprecated (start_offset, axes_count, axes_array); } /** * hb_ot_var_find_axis: * * Since: 1.4.2 + * Deprecated: REPLACEME **/ hb_bool_t hb_ot_var_find_axis (hb_face_t *face, @@ -101,9 +102,37 @@ hb_ot_var_find_axis (hb_face_t *face, unsigned int *axis_index, hb_ot_var_axis_t *axis_info) { - return face->table.fvar->find_axis (axis_tag, axis_index, axis_info); + return face->table.fvar->find_axis_deprecated (axis_tag, axis_index, axis_info); +} + +/** + * hb_ot_var_get_axis_infos: + * + * Since: REPLACEME + **/ +HB_EXTERN unsigned int +hb_ot_var_get_axis_infos (hb_face_t *face, + unsigned int start_offset, + unsigned int *axes_count /* IN/OUT */, + hb_ot_var_axis_info_t *axes_array /* OUT */) +{ + return face->table.fvar->get_axis_infos (start_offset, axes_count, axes_array); } +/** + * hb_ot_var_find_axis_info: + * + * Since: REPLACEME + **/ +HB_EXTERN hb_bool_t +hb_ot_var_find_axis_info (hb_face_t *face, + hb_tag_t axis_tag, + hb_ot_var_axis_info_t *axis_info) +{ + return face->table.fvar->find_axis_info (axis_tag, axis_info); +} + + /* * Named instances. */ @@ -156,10 +185,10 @@ hb_ot_var_normalize_variations (hb_face_t *face, const OT::fvar &fvar = *face->table.fvar; for (unsigned int i = 0; i < variations_length; i++) { - unsigned int axis_index; - if (hb_ot_var_find_axis (face, variations[i].tag, &axis_index, nullptr) && - axis_index < coords_length) - coords[axis_index] = fvar.normalize_axis_value (axis_index, variations[i].value); + hb_ot_var_axis_info_t info; + if (hb_ot_var_find_axis_info (face, variations[i].tag, &info) && + info.axis_index < coords_length) + coords[info.axis_index] = fvar.normalize_axis_value (info.axis_index, variations[i].value); } face->table.avar->map_coords (coords, coords_length); diff --git a/src/hb-ot-var.h b/src/hb-ot-var.h index 0114e5c9..779be104 100644 --- a/src/hb-ot-var.h +++ b/src/hb-ot-var.h @@ -55,43 +55,11 @@ hb_ot_var_has_data (hb_face_t *face); * Variation axes. */ -/** - * HB_OT_VAR_NO_AXIS_INDEX: - * - * Since: 1.4.2 - */ -#define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu HB_EXTERN unsigned int hb_ot_var_get_axis_count (hb_face_t *face); /** - * hb_ot_var_axis_t: - * - * Since: 1.4.2 - */ -typedef struct hb_ot_var_axis_t -{ - hb_tag_t tag; - hb_ot_name_id_t name_id; - float min_value; - float default_value; - float max_value; -} hb_ot_var_axis_t; - -HB_EXTERN unsigned int -hb_ot_var_get_axes (hb_face_t *face, - unsigned int start_offset, - unsigned int *axes_count /* IN/OUT */, - hb_ot_var_axis_t *axes_array /* OUT */); - -HB_EXTERN hb_bool_t -hb_ot_var_find_axis (hb_face_t *face, - hb_tag_t axis_tag, - unsigned int *axis_index, - hb_ot_var_axis_t *axis_info); - -/** * hb_ot_var_axis_flags_t: * @HB_OT_VAR_AXIS_FLAG_HIDDEN: The axis should not be exposed directly in user interfaces. * @@ -103,6 +71,35 @@ typedef enum { /*< flags >*/ _HB_OT_VAR_AXIS_FLAG_MAX_VALUE= 0x7FFFFFFFu, /*< skip >*/ } hb_ot_var_axis_flags_t; +/** + * hb_ot_var_axis_info_t: + * + * Since: REPLACEME + */ +typedef struct hb_ot_var_axis_info_t +{ + unsigned int axis_index; + hb_tag_t tag; + hb_ot_name_id_t name_id; + hb_ot_var_axis_flags_t flags; + float min_value; + float default_value; + float max_value; + /*< private >*/ + unsigned int reserved; +} hb_ot_var_axis_info_t; + +HB_EXTERN unsigned int +hb_ot_var_get_axis_infos (hb_face_t *face, + unsigned int start_offset, + unsigned int *axes_count /* IN/OUT */, + hb_ot_var_axis_info_t *axes_array /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_var_find_axis_info (hb_face_t *face, + hb_tag_t axis_tag, + hb_ot_var_axis_info_t *axis_info); + /* * Named instances. diff --git a/test/api/test-ot-face.c b/test/api/test-ot-face.c index d6eefbaa..757bc1f8 100644 --- a/test/api/test-ot-face.c +++ b/test/api/test-ot-face.c @@ -93,7 +93,7 @@ test_face (hb_face_t *face, hb_ot_name_get_utf32 (face, cp, NULL, NULL, NULL); hb_ot_var_get_axis_count (face); - hb_ot_var_get_axes (face, 0, NULL, NULL); + hb_ot_var_get_axis_infos (face, 0, NULL, NULL); hb_ot_var_normalize_variations (face, NULL, 0, NULL, 0); hb_ot_var_normalize_coords (face, 0, NULL, NULL); commit b2d803cef6974519d5892af2c9efeb8dfba87618 Author: Behdad Esfahbod <beh...@behdad.org> Date: Tue Nov 20 11:42:25 2018 -0500 Remove newly-added -hb_ot_var_axis_get_flags() diff --git a/src/hb-ot-var-fvar-table.hh b/src/hb-ot-var-fvar-table.hh index 47c2516f..0bf9d10d 100644 --- a/src/hb-ot-var-fvar-table.hh +++ b/src/hb-ot-var-fvar-table.hh @@ -131,12 +131,6 @@ struct fvar return true; } - inline hb_ot_var_axis_flags_t get_axis_flags (unsigned int index) const - { - const AxisRecord &axis = get_axes ()[index]; - return (hb_ot_var_axis_flags_t) (unsigned int) axis.flags; - } - inline unsigned int get_axis_infos (unsigned int start_offset, unsigned int *axes_count /* IN/OUT */, hb_ot_var_axis_t *axes_array /* OUT */) const diff --git a/src/hb-ot-var.cc b/src/hb-ot-var.cc index 9ad2f861..279e8723 100644 --- a/src/hb-ot-var.cc +++ b/src/hb-ot-var.cc @@ -104,18 +104,6 @@ hb_ot_var_find_axis (hb_face_t *face, return face->table.fvar->find_axis (axis_tag, axis_index, axis_info); } -/** - * hb_ot_var_axis_get_flags: - * - * Since: REPLACEME - **/ -hb_ot_var_axis_flags_t -hb_ot_var_axis_get_flags (hb_face_t *face, - unsigned int axis_index) -{ - return face->table.fvar->get_axis_flags (axis_index); -} - /* * Named instances. */ diff --git a/src/hb-ot-var.h b/src/hb-ot-var.h index 676be9f7..0114e5c9 100644 --- a/src/hb-ot-var.h +++ b/src/hb-ot-var.h @@ -103,10 +103,6 @@ typedef enum { /*< flags >*/ _HB_OT_VAR_AXIS_FLAG_MAX_VALUE= 0x7FFFFFFFu, /*< skip >*/ } hb_ot_var_axis_flags_t; -HB_EXTERN hb_ot_var_axis_flags_t -hb_ot_var_axis_get_flags (hb_face_t *face, - unsigned int axis_index); - /* * Named instances. commit 736897d7a1410fd281fbcedc084b85bf4ba1410c Author: Behdad Esfahbod <beh...@behdad.org> Date: Tue Nov 20 11:40:43 2018 -0500 [var] Make sure hb_ot_var_axis_flags_t is int-sized diff --git a/src/hb-ot-var.h b/src/hb-ot-var.h index 997be77f..676be9f7 100644 --- a/src/hb-ot-var.h +++ b/src/hb-ot-var.h @@ -98,7 +98,9 @@ hb_ot_var_find_axis (hb_face_t *face, * Since: REPLACEME */ typedef enum { /*< flags >*/ - HB_OT_VAR_AXIS_FLAG_HIDDEN = 0x0001u, + HB_OT_VAR_AXIS_FLAG_HIDDEN = 0x00000001u, + + _HB_OT_VAR_AXIS_FLAG_MAX_VALUE= 0x7FFFFFFFu, /*< skip >*/ } hb_ot_var_axis_flags_t; HB_EXTERN hb_ot_var_axis_flags_t commit eab5d15f6156e771cb606b760dd170b96c5cd398 Author: Behdad Esfahbod <beh...@behdad.org> Date: Tue Nov 20 11:33:33 2018 -0500 [var] Move code diff --git a/src/hb-ot-var.h b/src/hb-ot-var.h index 79ce7d72..997be77f 100644 --- a/src/hb-ot-var.h +++ b/src/hb-ot-var.h @@ -47,19 +47,6 @@ HB_BEGIN_DECLS * fvar / avar */ -/** - * hb_ot_var_axis_t: - * - * Since: 1.4.2 - */ -typedef struct hb_ot_var_axis_t { - hb_tag_t tag; - hb_ot_name_id_t name_id; - float min_value; - float default_value; - float max_value; -} hb_ot_var_axis_t; - HB_EXTERN hb_bool_t hb_ot_var_has_data (hb_face_t *face); @@ -78,6 +65,20 @@ hb_ot_var_has_data (hb_face_t *face); HB_EXTERN unsigned int hb_ot_var_get_axis_count (hb_face_t *face); +/** + * hb_ot_var_axis_t: + * + * Since: 1.4.2 + */ +typedef struct hb_ot_var_axis_t +{ + hb_tag_t tag; + hb_ot_name_id_t name_id; + float min_value; + float default_value; + float max_value; +} hb_ot_var_axis_t; + HB_EXTERN unsigned int hb_ot_var_get_axes (hb_face_t *face, unsigned int start_offset, commit 064f703c7ac5a28803a8221720e922ea6dbd2505 Merge: be1828da 82951182 Author: Behdad Esfahbod <beh...@behdad.org> Date: Tue Nov 20 16:29:30 2018 -0500 Merge pull request #1397 from harfbuzz/small-emoji-table Shrink the emoji table by merging adjacent ranges commit 82951182799772a642d32195dd87e6f0c116f545 Author: David Corbett <corbett....@husky.neu.edu> Date: Tue Nov 20 15:41:45 2018 -0500 Shrink the emoji table by merging adjacent ranges diff --git a/src/gen-emoji-table.py b/src/gen-emoji-table.py index 278e0b2d..9afe747d 100755 --- a/src/gen-emoji-table.py +++ b/src/gen-emoji-table.py @@ -12,7 +12,7 @@ if len (sys.argv) != 2: f = open(sys.argv[1]) header = [f.readline () for _ in range(10)] -sets = OrderedDict() +ranges = OrderedDict() for line in f.readlines(): line = line.strip() if not line or line[0] == '#': @@ -25,9 +25,12 @@ for line in f.readlines(): else: start = end = rang[0] - if typ not in sets: - sets[typ] = set() - sets[typ].add((start, end)) + if typ not in ranges: + ranges[typ] = [] + if ranges[typ] and ranges[typ][-1][1] == start - 1: + ranges[typ][-1] = (ranges[typ][-1][0], end) + else: + ranges[typ].append((start, end)) @@ -49,7 +52,7 @@ print () print ('#include "hb-unicode.hh"') print () -for typ,s in sets.items(): +for typ,s in ranges.items(): if typ != "Extended_Pictographic": continue print() print("static const struct hb_unicode_range_t _hb_unicode_emoji_%s_table[] =" % typ) diff --git a/src/hb-unicode-emoji-table.hh b/src/hb-unicode-emoji-table.hh index 41199de5..1dd0b321 100644 --- a/src/hb-unicode-emoji-table.hh +++ b/src/hb-unicode-emoji-table.hh @@ -47,38 +47,9 @@ static const struct hb_unicode_range_t _hb_unicode_emoji_Extended_Pictographic_t {0x25FB, 0x25FE}, {0x2600, 0x2605}, {0x2607, 0x2612}, - {0x2614, 0x2615}, - {0x2616, 0x2617}, - {0x2618, 0x2618}, - {0x2619, 0x2619}, - {0x261A, 0x266F}, - {0x2670, 0x2671}, - {0x2672, 0x267D}, - {0x267E, 0x267F}, - {0x2680, 0x2685}, - {0x2690, 0x2691}, - {0x2692, 0x269C}, - {0x269D, 0x269D}, - {0x269E, 0x269F}, - {0x26A0, 0x26A1}, - {0x26A2, 0x26B1}, - {0x26B2, 0x26B2}, - {0x26B3, 0x26BC}, - {0x26BD, 0x26BF}, - {0x26C0, 0x26C3}, - {0x26C4, 0x26CD}, - {0x26CE, 0x26CE}, - {0x26CF, 0x26E1}, - {0x26E2, 0x26E2}, - {0x26E3, 0x26E3}, - {0x26E4, 0x26E7}, - {0x26E8, 0x26FF}, - {0x2700, 0x2700}, - {0x2701, 0x2704}, - {0x2705, 0x2705}, - {0x2708, 0x2709}, - {0x270A, 0x270B}, - {0x270C, 0x2712}, + {0x2614, 0x2685}, + {0x2690, 0x2705}, + {0x2708, 0x2712}, {0x2714, 0x2714}, {0x2716, 0x2716}, {0x271D, 0x271D}, @@ -105,163 +76,33 @@ static const struct hb_unicode_range_t _hb_unicode_emoji_Extended_Pictographic_t {0x303D, 0x303D}, {0x3297, 0x3297}, {0x3299, 0x3299}, - {0x1F000, 0x1F02B}, - {0x1F02C, 0x1F02F}, - {0x1F030, 0x1F093}, - {0x1F094, 0x1F09F}, - {0x1F0A0, 0x1F0AE}, - {0x1F0AF, 0x1F0B0}, - {0x1F0B1, 0x1F0BE}, - {0x1F0BF, 0x1F0BF}, - {0x1F0C0, 0x1F0C0}, - {0x1F0C1, 0x1F0CF}, - {0x1F0D0, 0x1F0D0}, - {0x1F0D1, 0x1F0DF}, - {0x1F0E0, 0x1F0F5}, - {0x1F0F6, 0x1F0FF}, + {0x1F000, 0x1F0FF}, {0x1F10D, 0x1F10F}, {0x1F12F, 0x1F12F}, - {0x1F16C, 0x1F16F}, - {0x1F170, 0x1F171}, - {0x1F17E, 0x1F17E}, - {0x1F17F, 0x1F17F}, + {0x1F16C, 0x1F171}, + {0x1F17E, 0x1F17F}, {0x1F18E, 0x1F18E}, {0x1F191, 0x1F19A}, {0x1F1AD, 0x1F1E5}, - {0x1F201, 0x1F202}, - {0x1F203, 0x1F20F}, + {0x1F201, 0x1F20F}, {0x1F21A, 0x1F21A}, {0x1F22F, 0x1F22F}, {0x1F232, 0x1F23A}, {0x1F23C, 0x1F23F}, - {0x1F249, 0x1F24F}, - {0x1F250, 0x1F251}, - {0x1F252, 0x1F25F}, - {0x1F260, 0x1F265}, - {0x1F266, 0x1F2FF}, - {0x1F300, 0x1F320}, - {0x1F321, 0x1F32C}, - {0x1F32D, 0x1F32F}, - {0x1F330, 0x1F335}, - {0x1F336, 0x1F336}, - {0x1F337, 0x1F37C}, - {0x1F37D, 0x1F37D}, - {0x1F37E, 0x1F37F}, - {0x1F380, 0x1F393}, - {0x1F394, 0x1F39F}, - {0x1F3A0, 0x1F3C4}, - {0x1F3C5, 0x1F3C5}, - {0x1F3C6, 0x1F3CA}, - {0x1F3CB, 0x1F3CE}, - {0x1F3CF, 0x1F3D3}, - {0x1F3D4, 0x1F3DF}, - {0x1F3E0, 0x1F3F0}, - {0x1F3F1, 0x1F3F7}, - {0x1F3F8, 0x1F3FA}, - {0x1F400, 0x1F43E}, - {0x1F43F, 0x1F43F}, - {0x1F440, 0x1F440}, - {0x1F441, 0x1F441}, - {0x1F442, 0x1F4F7}, - {0x1F4F8, 0x1F4F8}, - {0x1F4F9, 0x1F4FC}, - {0x1F4FD, 0x1F4FE}, - {0x1F4FF, 0x1F4FF}, - {0x1F500, 0x1F53D}, - {0x1F546, 0x1F54A}, - {0x1F54B, 0x1F54F}, - {0x1F550, 0x1F567}, - {0x1F568, 0x1F579}, - {0x1F57A, 0x1F57A}, - {0x1F57B, 0x1F5A3}, - {0x1F5A4, 0x1F5A4}, - {0x1F5A5, 0x1F5FA}, - {0x1F5FB, 0x1F5FF}, - {0x1F600, 0x1F600}, - {0x1F601, 0x1F610}, - {0x1F611, 0x1F611}, - {0x1F612, 0x1F614}, - {0x1F615, 0x1F615}, - {0x1F616, 0x1F616}, - {0x1F617, 0x1F617}, - {0x1F618, 0x1F618}, - {0x1F619, 0x1F619}, - {0x1F61A, 0x1F61A}, - {0x1F61B, 0x1F61B}, - {0x1F61C, 0x1F61E}, - {0x1F61F, 0x1F61F}, - {0x1F620, 0x1F625}, - {0x1F626, 0x1F627}, - {0x1F628, 0x1F62B}, - {0x1F62C, 0x1F62C}, - {0x1F62D, 0x1F62D}, - {0x1F62E, 0x1F62F}, - {0x1F630, 0x1F633}, - {0x1F634, 0x1F634}, - {0x1F635, 0x1F640}, - {0x1F641, 0x1F642}, - {0x1F643, 0x1F644}, - {0x1F645, 0x1F64F}, - {0x1F680, 0x1F6C5}, - {0x1F6C6, 0x1F6CF}, - {0x1F6D0, 0x1F6D0}, - {0x1F6D1, 0x1F6D2}, - {0x1F6D3, 0x1F6D4}, - {0x1F6D5, 0x1F6DF}, - {0x1F6E0, 0x1F6EC}, - {0x1F6ED, 0x1F6EF}, - {0x1F6F0, 0x1F6F3}, - {0x1F6F4, 0x1F6F6}, - {0x1F6F7, 0x1F6F8}, - {0x1F6F9, 0x1F6F9}, - {0x1F6FA, 0x1F6FF}, + {0x1F249, 0x1F3FA}, + {0x1F400, 0x1F53D}, + {0x1F546, 0x1F64F}, + {0x1F680, 0x1F6FF}, {0x1F774, 0x1F77F}, - {0x1F7D5, 0x1F7D8}, - {0x1F7D9, 0x1F7FF}, + {0x1F7D5, 0x1F7FF}, {0x1F80C, 0x1F80F}, {0x1F848, 0x1F84F}, {0x1F85A, 0x1F85F}, {0x1F888, 0x1F88F}, {0x1F8AE, 0x1F8FF}, - {0x1F90C, 0x1F90F}, - {0x1F910, 0x1F918}, - {0x1F919, 0x1F91E}, - {0x1F91F, 0x1F91F}, - {0x1F920, 0x1F927}, - {0x1F928, 0x1F92F}, - {0x1F930, 0x1F930}, - {0x1F931, 0x1F932}, - {0x1F933, 0x1F93A}, - {0x1F93C, 0x1F93E}, - {0x1F93F, 0x1F93F}, - {0x1F940, 0x1F945}, - {0x1F947, 0x1F94B}, - {0x1F94C, 0x1F94C}, - {0x1F94D, 0x1F94F}, - {0x1F950, 0x1F95E}, - {0x1F95F, 0x1F96B}, - {0x1F96C, 0x1F970}, - {0x1F971, 0x1F972}, - {0x1F973, 0x1F976}, - {0x1F977, 0x1F979}, - {0x1F97A, 0x1F97A}, - {0x1F97B, 0x1F97B}, - {0x1F97C, 0x1F97F}, - {0x1F980, 0x1F984}, - {0x1F985, 0x1F991}, - {0x1F992, 0x1F997}, - {0x1F998, 0x1F9A2}, - {0x1F9A3, 0x1F9AF}, - {0x1F9B0, 0x1F9B9}, - {0x1F9BA, 0x1F9BF}, - {0x1F9C0, 0x1F9C0}, - {0x1F9C1, 0x1F9C2}, - {0x1F9C3, 0x1F9CF}, - {0x1F9D0, 0x1F9E6}, - {0x1F9E7, 0x1F9FF}, - {0x1FA00, 0x1FA5F}, - {0x1FA60, 0x1FA6D}, - {0x1FA6E, 0x1FFFD}, + {0x1F90C, 0x1F93A}, + {0x1F93C, 0x1F945}, + {0x1F947, 0x1FFFD}, }; #endif /* HB_UNICODE_EMOJI_TABLE_HH */ _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz