From f9d8e4a97620eecd8dba3469b1bc115b3fbe242a Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Thu, 29 Jul 2021 15:25:41 -0700 Subject: [PATCH] [subset] switch ..._set_flags to not take a mask. --- src/hb-subset-input.cc | 21 ++++++++----------- src/hb-subset-input.hh | 4 +++- src/hb-subset-plan.hh | 2 +- src/hb-subset.h | 35 ++++++++++++++------------------ test/api/hb-subset-test.h | 3 +-- test/api/test-subset-cff1.c | 20 ++++++++---------- test/api/test-subset-cff2.c | 9 ++++---- test/api/test-subset-glyf.c | 12 +++++------ test/api/test-subset-gvar.c | 2 +- test/api/test-subset-hvar.c | 4 ++-- test/api/test-subset-vvar.c | 2 +- test/api/test-subset.c | 11 ++-------- test/fuzzing/hb-subset-fuzzer.cc | 6 +++--- util/options.hh | 9 ++++---- 14 files changed, 61 insertions(+), 79 deletions(-) diff --git a/src/hb-subset-input.cc b/src/hb-subset-input.cc index e1d3bcf06..fd49cb34f 100644 --- a/src/hb-subset-input.cc +++ b/src/hb-subset-input.cc @@ -55,7 +55,7 @@ hb_subset_input_create_or_fail (void) input->drop_tables = hb_set_create (); input->no_subset_tables = hb_set_create (); - input->flags = HB_SUBSET_FLAGS_NONE; + input->flags = HB_SUBSET_FLAGS_DEFAULT; hb_tag_t default_drop_tables[] = { // Layout disabled by default @@ -357,36 +357,31 @@ hb_subset_input_no_subset_tables_set (hb_subset_input_t *input) * hb_subset_input_get_flags: * @input: a #hb_subset_input_t object. * - * Return value: the subsetting flags bit array. + * Return value: the subsetting flags bit field. * * Since: REPLACE **/ HB_EXTERN hb_subset_flags_t hb_subset_input_get_flags (hb_subset_input_t *input) { - return input->flags; + return (hb_subset_flags_t) input->flags; } /** * hb_subset_input_set_flags: * @input: a #hb_subset_input_t object. - * @flag: which flag to set. - * @mask: bit mask which specifies which flags to change. - * @value: bit set of new values for those flags. + * @value: bit field of flags * - * Updates the flags specified by the mask to the values in value. + * Set all of the flags in the input object to the values + * specified by the bit field. * * Since: REPLACE **/ HB_EXTERN void hb_subset_input_set_flags (hb_subset_input_t *input, - hb_subset_flags_t mask, - hb_subset_flags_t value) + unsigned value) { - // Set desired flags. - input->flags = (hb_subset_flags_t) (input->flags | (mask & value)); - // Clear desired flags. - input->flags = (hb_subset_flags_t) (input->flags & ~(mask & ~value)); + input->flags = (hb_subset_flags_t) value; } /** diff --git a/src/hb-subset-input.hh b/src/hb-subset-input.hh index 89da38f25..99ce5284c 100644 --- a/src/hb-subset-input.hh +++ b/src/hb-subset-input.hh @@ -34,6 +34,8 @@ #include "hb-font.hh" +HB_MARK_AS_FLAG_T (hb_subset_flags_t); + struct hb_subset_input_t { hb_object_header_t header; @@ -46,7 +48,7 @@ struct hb_subset_input_t hb_set_t *drop_tables; hb_set_t *layout_features; - hb_subset_flags_t flags; + unsigned flags; /* TODO * diff --git a/src/hb-subset-plan.hh b/src/hb-subset-plan.hh index d4d0bdc82..92a4e27cc 100644 --- a/src/hb-subset-plan.hh +++ b/src/hb-subset-plan.hh @@ -40,7 +40,7 @@ struct hb_subset_plan_t hb_object_header_t header; bool successful; - hb_subset_flags_t flags; + unsigned flags; // For each cp that we'd like to retain maps to the corresponding gid. hb_set_t *unicodes; diff --git a/src/hb-subset.h b/src/hb-subset.h index 45d770808..aa2a83d44 100644 --- a/src/hb-subset.h +++ b/src/hb-subset.h @@ -40,9 +40,8 @@ HB_BEGIN_DECLS typedef struct hb_subset_input_t hb_subset_input_t; /** - * TODO(garretrieger): update to match added values, and no hinting change. * hb_subset_flags_t: - * @HB_SUBSET_FLAGS_NONE: bit set with no flags set. + * @HB_SUBSET_FLAGS_DEFAULT: all flags at their default value. * @HB_SUBSET_FLAGS_NO_HINTING: If set hinting instructions will be dropped in * the produced subset. Otherwise hinting instructions will be retained. * Defaults to true. @@ -54,7 +53,7 @@ typedef struct hb_subset_input_t hb_subset_input_t; * Defaults to false. * @HB_SUBSET_FLAGS_NAME_LEGACY: If set non-unicode name records will be * retained in the subset. Defaults to false. - * @HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG: If set the subsetter will set the + * @HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG: If set the subsetter will set the * OVERLAP_SIMPLE flag on each simple glyph. Defaults to false. * @HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED: If set the subsetter will not * drop unrecognized tables and instead pass them through untouched. @@ -69,26 +68,23 @@ typedef struct hb_subset_input_t hb_subset_input_t; * retained. If unset then the set accessed by * hb_subset_input_layout_features_set() will be used to determine the features * to be retained. - * HB_SUBSET_FLAGS_ALL: bit set with all flags set. * * List of boolean properties that can be configured on the subset input. * * Since: REPLACE **/ -typedef enum -{ - HB_SUBSET_FLAGS_NONE = 0, - HB_SUBSET_FLAGS_NO_HINTING = 1, - HB_SUBSET_FLAGS_RETAIN_GIDS = 1 << 1, - HB_SUBSET_FLAGS_DESUBROUTINIZE = 1 << 2, - HB_SUBSET_FLAGS_NAME_LEGACY = 1 << 3, - HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG = 1 << 4, - HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 1 << 5, - HB_SUBSET_FLAGS_NOTDEF_OUTLINE = 1 << 6, - HB_SUBSET_FLAGS_GLYPH_NAMES = 1 << 7, - HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES = 1 << 8, - HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES = 1 << 9, - HB_SUBSET_FLAGS_ALL = -1, +typedef enum { /*< flags >*/ + HB_SUBSET_FLAGS_DEFAULT = 0x00000000u, + HB_SUBSET_FLAGS_NO_HINTING = 0x00000001u, + HB_SUBSET_FLAGS_RETAIN_GIDS = 0x00000002u, + HB_SUBSET_FLAGS_DESUBROUTINIZE = 0x00000004u, + HB_SUBSET_FLAGS_NAME_LEGACY = 0x00000008u, + HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG = 0x00000010u, + HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 0x00000020u, + HB_SUBSET_FLAGS_NOTDEF_OUTLINE = 0x00000040u, + HB_SUBSET_FLAGS_GLYPH_NAMES = 0x00000080u, + HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES = 0x00000100u, + HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES = 0x00000200u, } hb_subset_flags_t; HB_EXTERN hb_subset_input_t * @@ -137,8 +133,7 @@ hb_subset_input_get_flags (hb_subset_input_t *input); HB_EXTERN void hb_subset_input_set_flags (hb_subset_input_t *input, - hb_subset_flags_t mask, - hb_subset_flags_t value); + unsigned value); HB_EXTERN hb_face_t * hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input); diff --git a/test/api/hb-subset-test.h b/test/api/hb-subset-test.h index 261a68702..a8db116e6 100644 --- a/test/api/hb-subset-test.h +++ b/test/api/hb-subset-test.h @@ -76,8 +76,7 @@ hb_subset_test_create_input_from_nameids (const hb_set_t *name_ids) hb_set_add_range (name_langids, 0, 0x5FFF); hb_subset_input_set_flags (input, - HB_SUBSET_FLAGS_NAME_LEGACY, - HB_SUBSET_FLAGS_ALL); + HB_SUBSET_FLAGS_NAME_LEGACY); return input; } diff --git a/test/api/test-subset-cff1.c b/test/api/test-subset-cff1.c index 16b076c90..7c68a49f8 100644 --- a/test/api/test-subset-cff1.c +++ b/test/api/test-subset-cff1.c @@ -80,7 +80,7 @@ test_subset_cff1_strip_hints (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -103,7 +103,7 @@ test_subset_cff1_desubr (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_DESUBROUTINIZE, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_DESUBROUTINIZE); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -127,8 +127,7 @@ test_subset_cff1_desubr_strip_hints (void) hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); hb_subset_input_set_flags (input, - HB_SUBSET_FLAGS_NO_HINTING | HB_SUBSET_FLAGS_DESUBROUTINIZE, - HB_SUBSET_FLAGS_ALL); + HB_SUBSET_FLAGS_NO_HINTING | HB_SUBSET_FLAGS_DESUBROUTINIZE); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -171,7 +170,7 @@ test_subset_cff1_j_strip_hints (void) hb_set_add (codepoints, 0x41); hb_set_add (codepoints, 0x4C2E); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING); face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, input); hb_set_destroy (codepoints); @@ -194,7 +193,7 @@ test_subset_cff1_j_desubr (void) hb_set_add (codepoints, 0x41); hb_set_add (codepoints, 0x4C2E); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_DESUBROUTINIZE, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_DESUBROUTINIZE); face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, input); hb_set_destroy (codepoints); @@ -218,8 +217,7 @@ test_subset_cff1_j_desubr_strip_hints (void) hb_set_add (codepoints, 0x4C2E); input = hb_subset_test_create_input (codepoints); hb_subset_input_set_flags (input, - HB_SUBSET_FLAGS_NO_HINTING | HB_SUBSET_FLAGS_DESUBROUTINIZE, - HB_SUBSET_FLAGS_ALL); + HB_SUBSET_FLAGS_NO_HINTING | HB_SUBSET_FLAGS_DESUBROUTINIZE); face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, input); hb_set_destroy (codepoints); @@ -281,7 +279,7 @@ test_subset_cff1_dotsection (void) hb_face_t *face_test; hb_set_add (codepoints, 0x69); /* i */ input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING); face_test = hb_subset_test_create_subset (face, input); hb_set_destroy (codepoints); @@ -304,7 +302,7 @@ test_subset_cff1_retaingids (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -327,7 +325,7 @@ test_subset_cff1_j_retaingids (void) hb_set_add (codepoints, 0x41); hb_set_add (codepoints, 0x4C2E); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_41_3041_4c2e_subset = hb_subset_test_create_subset (face_41_3041_4c2e, input); hb_set_destroy (codepoints); diff --git a/test/api/test-subset-cff2.c b/test/api/test-subset-cff2.c index 81ec3e8c0..a5dde4239 100644 --- a/test/api/test-subset-cff2.c +++ b/test/api/test-subset-cff2.c @@ -80,7 +80,7 @@ test_subset_cff2_strip_hints (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -103,7 +103,7 @@ test_subset_cff2_desubr (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_DESUBROUTINIZE, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_DESUBROUTINIZE); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -127,8 +127,7 @@ test_subset_cff2_desubr_strip_hints (void) hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); hb_subset_input_set_flags (input, - HB_SUBSET_FLAGS_DESUBROUTINIZE | HB_SUBSET_FLAGS_NO_HINTING, - HB_SUBSET_FLAGS_ALL); + HB_SUBSET_FLAGS_DESUBROUTINIZE | HB_SUBSET_FLAGS_NO_HINTING); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -151,7 +150,7 @@ test_subset_cff2_retaingids (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); diff --git a/test/api/test-subset-glyf.c b/test/api/test-subset-glyf.c index 9b618e8bc..1e283dc5c 100644 --- a/test/api/test-subset-glyf.c +++ b/test/api/test-subset-glyf.c @@ -92,7 +92,7 @@ test_subset_glyf_set_overlaps_flag (void) hb_set_add (codepoints, 508); hb_subset_input_t* input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG); face_abcAE_subset = hb_subset_test_create_subset (face_abcAE, input); hb_set_destroy (codepoints); @@ -239,7 +239,7 @@ test_subset_glyf_strip_hints_simple (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -263,7 +263,7 @@ test_subset_glyf_strip_hints_composite (void) hb_face_t *face_generated_subset; hb_set_add (codepoints, 0x1fc); input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING); face_generated_subset = hb_subset_test_create_subset (face_components, input); hb_set_destroy (codepoints); @@ -298,7 +298,7 @@ test_subset_glyf_strip_hints_invalid (void) } input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NO_HINTING); hb_set_destroy (codepoints); face_subset = hb_subset_or_fail (face, input); @@ -320,7 +320,7 @@ test_subset_glyf_retain_gids (void) hb_set_add (codepoints, 99); hb_subset_input_t *input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -344,7 +344,7 @@ test_subset_glyf_retain_gids_truncates (void) hb_set_add (codepoints, 97); hb_subset_input_t *input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); diff --git a/test/api/test-subset-gvar.c b/test/api/test-subset-gvar.c index 56f055843..5ffc02d73 100644 --- a/test/api/test-subset-gvar.c +++ b/test/api/test-subset-gvar.c @@ -79,7 +79,7 @@ test_subset_gvar_retaingids (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); hb_subset_input_t *input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); diff --git a/test/api/test-subset-hvar.c b/test/api/test-subset-hvar.c index 6375af6e3..925b74369 100644 --- a/test/api/test-subset-hvar.c +++ b/test/api/test-subset-hvar.c @@ -79,7 +79,7 @@ test_subset_map_HVAR_retaingids (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); hb_subset_input_t *input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); @@ -160,7 +160,7 @@ test_subset_identity_HVAR_retaingids (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); hb_subset_input_t *input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); diff --git a/test/api/test-subset-vvar.c b/test/api/test-subset-vvar.c index e28cac1ee..7b526d9d3 100644 --- a/test/api/test-subset-vvar.c +++ b/test/api/test-subset-vvar.c @@ -79,7 +79,7 @@ test_subset_VVAR_retaingids (void) hb_set_add (codepoints, 'a'); hb_set_add (codepoints, 'c'); hb_subset_input_t *input = hb_subset_test_create_input (codepoints); - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS, HB_SUBSET_FLAGS_ALL); + hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_RETAIN_GIDS); face_abc_subset = hb_subset_test_create_subset (face_abc, input); hb_set_destroy (codepoints); diff --git a/test/api/test-subset.c b/test/api/test-subset.c index 9ef3946bf..e4fa8cd1e 100644 --- a/test/api/test-subset.c +++ b/test/api/test-subset.c @@ -98,13 +98,12 @@ test_subset_set_flags (void) { hb_subset_input_t *input = hb_subset_input_create_or_fail (); - g_assert (hb_subset_input_get_flags (input) == HB_SUBSET_FLAGS_NONE); + g_assert (hb_subset_input_get_flags (input) == HB_SUBSET_FLAGS_DEFAULT); hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_NAME_LEGACY | HB_SUBSET_FLAGS_NOTDEF_OUTLINE | - HB_SUBSET_FLAGS_GLYPH_NAMES, - HB_SUBSET_FLAGS_ALL); + HB_SUBSET_FLAGS_GLYPH_NAMES); g_assert (hb_subset_input_get_flags (input) == (hb_subset_flags_t) ( @@ -113,12 +112,6 @@ test_subset_set_flags (void) HB_SUBSET_FLAGS_GLYPH_NAMES)); hb_subset_input_set_flags (input, - - HB_SUBSET_FLAGS_NAME_LEGACY | - HB_SUBSET_FLAGS_NOTDEF_OUTLINE | - HB_SUBSET_FLAGS_GLYPH_NAMES | - HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES, - HB_SUBSET_FLAGS_NAME_LEGACY | HB_SUBSET_FLAGS_NOTDEF_OUTLINE | HB_SUBSET_FLAGS_RETAIN_ALL_FEATURES); diff --git a/test/fuzzing/hb-subset-fuzzer.cc b/test/fuzzing/hb-subset-fuzzer.cc index 041c886fb..fa95c8735 100644 --- a/test/fuzzing/hb-subset-fuzzer.cc +++ b/test/fuzzing/hb-subset-fuzzer.cc @@ -11,12 +11,12 @@ static void trySubset (hb_face_t *face, const hb_codepoint_t text[], int text_length, - hb_subset_flags_t flag_bits) + unsigned flag_bits) { hb_subset_input_t *input = hb_subset_input_create_or_fail (); if (!input) return; - hb_subset_input_set_flags (input, HB_SUBSET_FLAGS_ALL, flag_bits); + hb_subset_input_set_flags (input, (hb_subset_flags_t) flag_bits); hb_set_t *codepoints = hb_subset_input_unicode_set (input); @@ -56,7 +56,7 @@ extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size) hb_face_collect_unicodes (face, output); hb_set_destroy (output); - hb_subset_flags_t flags = HB_SUBSET_FLAGS_NONE; + unsigned flags = HB_SUBSET_FLAGS_DEFAULT; const hb_codepoint_t text[] = { 'A', 'B', 'C', 'D', 'E', 'X', 'Y', 'Z', '1', '2', diff --git a/util/options.hh b/util/options.hh index 926f1993a..84bc593e5 100644 --- a/util/options.hh +++ b/util/options.hh @@ -709,7 +709,7 @@ struct subset_options_t : option_group_t { for (unsigned i = 0; i < sizeof(int) * 8; i++) { - if (1 << i == flag) + if (1u << i == flag) return &flags[i]; } return &flags[sizeof(int) * 8 - 1]; @@ -719,12 +719,13 @@ struct subset_options_t : option_group_t hb_subset_input_t * get_input () { + hb_subset_flags_t flags_set = HB_SUBSET_FLAGS_DEFAULT; for (unsigned i = 0; i < sizeof(int) * 8; i++) { - hb_subset_input_set_flags (input, - (hb_subset_flags_t) (1 << i), - flags[i] ? HB_SUBSET_FLAGS_ALL : HB_SUBSET_FLAGS_NONE); + if (flags[i]) + flags_set = (hb_subset_flags_t) (flags_set | (1u << i)); } + hb_subset_input_set_flags (input, flags_set); return input; }