diff --git a/src/hb-subset-input.cc b/src/hb-subset-input.cc index ccaddab8e..473b728d2 100644 --- a/src/hb-subset-input.cc +++ b/src/hb-subset-input.cc @@ -48,12 +48,14 @@ hb_subset_input_create_or_fail () hb_set_add_range (input->name_ids, 0, 6); input->name_languages = hb_set_create (); hb_set_add (input->name_languages, 0x0409); + input->layout_features = hb_set_create (); input->drop_tables = hb_set_create (); input->drop_hints = false; input->desubroutinize = false; input->retain_gids = false; input->name_legacy = false; input->overlaps_flag = false; + input->retain_all_layout_features = false; hb_tag_t default_drop_tables[] = { // Layout disabled by default @@ -82,6 +84,94 @@ hb_subset_input_create_or_fail () input->drop_tables->add_array (default_drop_tables, ARRAY_LENGTH (default_drop_tables)); + //copied from _layout_features_groups in fonttools + hb_tag_t default_layout_features[] = { + // default shaper + // common + HB_TAG ('r', 'v', 'r', 'n'), + HB_TAG ('c', 'c', 'm', 'p'), + HB_TAG ('l', 'i', 'g', 'a'), + HB_TAG ('l', 'o', 'c', 'l'), + HB_TAG ('m', 'a', 'r', 'k'), + HB_TAG ('m', 'k', 'm', 'k'), + HB_TAG ('r', 'l', 'i', 'g'), + + //fractions + HB_TAG ('f', 'r', 'a', 'c'), + HB_TAG ('n', 'u', 'm', 'r'), + HB_TAG ('d', 'n', 'o', 'm'), + + //horizontal + HB_TAG ('c', 'a', 'l', 't'), + HB_TAG ('c', 'l', 'i', 'g'), + HB_TAG ('c', 'u', 'r', 's'), + HB_TAG ('k', 'e', 'r', 'n'), + HB_TAG ('r', 'c', 'l', 't'), + + //vertical + HB_TAG ('v', 'a', 'l', 't'), + HB_TAG ('v', 'e', 'r', 't'), + HB_TAG ('v', 'k', 'r', 'n'), + HB_TAG ('v', 'p', 'a', 'l'), + HB_TAG ('v', 'r', 't', '2'), + + //ltr + HB_TAG ('l', 't', 'r', 'a'), + HB_TAG ('l', 't', 'r', 'm'), + + //rtl + HB_TAG ('r', 't', 'l', 'a'), + HB_TAG ('r', 't', 'l', 'm'), + + //Complex shapers + //arabic + HB_TAG ('i', 'n', 'i', 't'), + HB_TAG ('m', 'e', 'd', 'i'), + HB_TAG ('f', 'i', 'n', 'a'), + HB_TAG ('i', 's', 'o', 'l'), + HB_TAG ('m', 'e', 'd', '2'), + HB_TAG ('f', 'i', 'n', '2'), + HB_TAG ('f', 'i', 'n', '3'), + HB_TAG ('c', 's', 'w', 'h'), + HB_TAG ('m', 's', 'e', 't'), + HB_TAG ('s', 't', 'c', 'h'), + + //hangul + HB_TAG ('l', 'j', 'm', 'o'), + HB_TAG ('v', 'j', 'm', 'o'), + HB_TAG ('t', 'j', 'm', 'o'), + + //tibetan + HB_TAG ('a', 'b', 'v', 's'), + HB_TAG ('b', 'l', 'w', 's'), + HB_TAG ('a', 'b', 'v', 'm'), + HB_TAG ('b', 'l', 'w', 'm'), + + //indic + HB_TAG ('n', 'u', 'k', 't'), + HB_TAG ('a', 'k', 'h', 'n'), + HB_TAG ('r', 'p', 'h', 'f'), + HB_TAG ('r', 'k', 'r', 'f'), + HB_TAG ('p', 'r', 'e', 'f'), + HB_TAG ('b', 'l', 'w', 'f'), + HB_TAG ('h', 'a', 'l', 'f'), + HB_TAG ('a', 'b', 'v', 'f'), + HB_TAG ('p', 's', 't', 'f'), + HB_TAG ('c', 'f', 'a', 'r'), + HB_TAG ('v', 'a', 't', 'u'), + HB_TAG ('c', 'j', 'c', 't'), + HB_TAG ('i', 'n', 'i', 't'), + HB_TAG ('p', 'r', 'e', 's'), + HB_TAG ('a', 'b', 'v', 's'), + HB_TAG ('b', 'l', 'w', 's'), + HB_TAG ('p', 's', 't', 's'), + HB_TAG ('h', 'a', 'l', 'n'), + HB_TAG ('d', 'i', 's', 't'), + HB_TAG ('a', 'b', 'v', 'm'), + HB_TAG ('b', 'l', 'w', 'm'), + }; + + input->layout_features->add_array (default_layout_features, ARRAY_LENGTH (default_layout_features)); return input; } @@ -117,6 +207,7 @@ hb_subset_input_destroy (hb_subset_input_t *subset_input) hb_set_destroy (subset_input->name_ids); hb_set_destroy (subset_input->name_languages); hb_set_destroy (subset_input->drop_tables); + hb_set_destroy (subset_input->layout_features); free (subset_input); } diff --git a/src/hb-subset-input.hh b/src/hb-subset-input.hh index 5dff9d2c4..36ab226a7 100644 --- a/src/hb-subset-input.hh +++ b/src/hb-subset-input.hh @@ -43,12 +43,14 @@ struct hb_subset_input_t hb_set_t *name_ids; hb_set_t *name_languages; hb_set_t *drop_tables; + hb_set_t *layout_features; bool drop_hints; bool desubroutinize; bool retain_gids; bool name_legacy; bool overlaps_flag; + bool retain_all_layout_features; /* TODO * * features diff --git a/src/hb-subset-plan.cc b/src/hb-subset-plan.cc index 1cacd7a1c..56d66e117 100644 --- a/src/hb-subset-plan.cc +++ b/src/hb-subset-plan.cc @@ -85,88 +85,96 @@ _remap_indexes (const hb_set_t *indexes, } #ifndef HB_NO_SUBSET_LAYOUT -static inline void -_gsub_closure_glyphs_lookups_features (hb_face_t *face, - hb_set_t *gids_to_retain, - hb_map_t *gsub_lookups, - hb_map_t *gsub_features, - script_langsys_map *gsub_langsys) +typedef void (*layout_collect_func_t) (hb_face_t *face, hb_tag_t table_tag, const hb_tag_t *scripts, const hb_tag_t *languages, const hb_tag_t *features, hb_set_t *lookup_indexes /* OUT */); + +static void _collect_subset_layout (hb_face_t *face, + hb_tag_t table_tag, + const hb_set_t *layout_features_to_retain, + bool retain_all_features, + layout_collect_func_t layout_collect_func, + hb_set_t *lookup_indices /* OUT */) { + if (retain_all_features) + { + layout_collect_func (face, + table_tag, + nullptr, + nullptr, + nullptr, + lookup_indices); + return; + } + + if (hb_set_is_empty (layout_features_to_retain)) return; + unsigned num = layout_features_to_retain->get_population () + 1; + hb_tag_t *features = (hb_tag_t *) malloc (num * sizeof (hb_tag_t)); + if (!features) return; + + unsigned i = 0; + for (hb_tag_t f : layout_features_to_retain->iter ()) + features[i++] = f; + + features[i] = 0; + + layout_collect_func (face, + table_tag, + nullptr, + nullptr, + features, + lookup_indices); + + free (features); +} + +template +static inline void +_closure_glyphs_lookups_features (hb_face_t *face, + hb_set_t *gids_to_retain, + const hb_set_t *layout_features_to_retain, + bool retain_all_features, + hb_map_t *lookups, + hb_map_t *features, + script_langsys_map *langsys_map) +{ + hb_blob_ptr_t table = hb_sanitize_context_t ().reference_table (face); + hb_tag_t table_tag = table->tableTag; hb_set_t lookup_indices; - hb_ot_layout_collect_lookups (face, - HB_OT_TAG_GSUB, - nullptr, - nullptr, - nullptr, - &lookup_indices); - hb_ot_layout_lookups_substitute_closure (face, - &lookup_indices, - gids_to_retain); - hb_blob_ptr_t gsub = hb_sanitize_context_t ().reference_table (face); - gsub->closure_lookups (face, - gids_to_retain, + _collect_subset_layout (face, + table_tag, + layout_features_to_retain, + retain_all_features, + hb_ot_layout_collect_lookups, + &lookup_indices); + + if (table_tag == HB_OT_TAG_GSUB) + hb_ot_layout_lookups_substitute_closure (face, + &lookup_indices, + gids_to_retain); + table->closure_lookups (face, + gids_to_retain, &lookup_indices); - _remap_indexes (&lookup_indices, gsub_lookups); + _remap_indexes (&lookup_indices, lookups); // Collect and prune features hb_set_t feature_indices; - hb_ot_layout_collect_features (face, - HB_OT_TAG_GSUB, - nullptr, - nullptr, - nullptr, - &feature_indices); + _collect_subset_layout (face, + table_tag, + layout_features_to_retain, + retain_all_features, + hb_ot_layout_collect_features, + &feature_indices); - gsub->prune_features (gsub_lookups, &feature_indices); + table->prune_features (lookups, &feature_indices); hb_map_t duplicate_feature_map; - gsub->find_duplicate_features (gsub_lookups, &feature_indices, &duplicate_feature_map); + table->find_duplicate_features (lookups, &feature_indices, &duplicate_feature_map); feature_indices.clear (); - gsub->prune_langsys (&duplicate_feature_map, gsub_langsys, &feature_indices); - _remap_indexes (&feature_indices, gsub_features); + table->prune_langsys (&duplicate_feature_map, langsys_map, &feature_indices); + _remap_indexes (&feature_indices, features); - gsub.destroy (); + table.destroy (); } -static inline void -_gpos_closure_lookups_features (hb_face_t *face, - const hb_set_t *gids_to_retain, - hb_map_t *gpos_lookups, - hb_map_t *gpos_features, - script_langsys_map *gpos_langsys) -{ - hb_set_t lookup_indices; - hb_ot_layout_collect_lookups (face, - HB_OT_TAG_GPOS, - nullptr, - nullptr, - nullptr, - &lookup_indices); - hb_blob_ptr_t gpos = hb_sanitize_context_t ().reference_table (face); - gpos->closure_lookups (face, - gids_to_retain, - &lookup_indices); - _remap_indexes (&lookup_indices, gpos_lookups); - - // Collect and prune features - hb_set_t feature_indices; - hb_ot_layout_collect_features (face, - HB_OT_TAG_GPOS, - nullptr, - nullptr, - nullptr, - &feature_indices); - - gpos->prune_features (gpos_lookups, &feature_indices); - hb_map_t duplicate_feature_map; - gpos->find_duplicate_features (gpos_lookups, &feature_indices, &duplicate_feature_map); - - feature_indices.clear (); - gpos->prune_langsys (&duplicate_feature_map, gpos_langsys, &feature_indices); - _remap_indexes (&feature_indices, gpos_features); - - gpos.destroy (); -} #endif #ifndef HB_NO_VAR @@ -265,10 +273,10 @@ _populate_gids_to_retain (hb_subset_plan_t* plan, #ifndef HB_NO_SUBSET_LAYOUT if (close_over_gsub) // closure all glyphs/lookups/features needed for GSUB substitutions. - _gsub_closure_glyphs_lookups_features (plan->source, plan->_glyphset_gsub, plan->gsub_lookups, plan->gsub_features, plan->gsub_langsys); + _closure_glyphs_lookups_features (plan->source, plan->_glyphset_gsub, plan->layout_features, plan->retain_all_layout_features, plan->gsub_lookups, plan->gsub_features, plan->gsub_langsys); if (close_over_gpos) - _gpos_closure_lookups_features (plan->source, plan->_glyphset_gsub, plan->gpos_lookups, plan->gpos_features, plan->gpos_langsys); + _closure_glyphs_lookups_features (plan->source, plan->_glyphset_gsub, plan->layout_features, plan->retain_all_layout_features, plan->gpos_lookups, plan->gpos_features, plan->gpos_langsys); #endif _remove_invalid_gids (plan->_glyphset_gsub, plan->source->get_num_glyphs ()); @@ -393,10 +401,12 @@ hb_subset_plan_create (hb_face_t *face, plan->retain_gids = input->retain_gids; plan->name_legacy = input->name_legacy; plan->overlaps_flag = input->overlaps_flag; + plan->retain_all_layout_features = input->retain_all_layout_features; plan->unicodes = hb_set_create (); plan->name_ids = hb_set_reference (input->name_ids); _nameid_closure (face, plan->name_ids); plan->name_languages = hb_set_reference (input->name_languages); + plan->layout_features = hb_set_reference (input->layout_features); plan->glyphs_requested = hb_set_reference (input->glyphs); plan->drop_tables = hb_set_reference (input->drop_tables); plan->source = hb_face_reference (face); @@ -456,6 +466,7 @@ hb_subset_plan_destroy (hb_subset_plan_t *plan) hb_set_destroy (plan->unicodes); hb_set_destroy (plan->name_ids); hb_set_destroy (plan->name_languages); + hb_set_destroy (plan->layout_features); hb_set_destroy (plan->glyphs_requested); hb_set_destroy (plan->drop_tables); hb_face_destroy (plan->source); diff --git a/src/hb-subset-plan.hh b/src/hb-subset-plan.hh index 132beb07f..fe3b13b36 100644 --- a/src/hb-subset-plan.hh +++ b/src/hb-subset-plan.hh @@ -45,6 +45,7 @@ struct hb_subset_plan_t bool retain_gids : 1; bool name_legacy : 1; bool overlaps_flag : 1; + bool retain_all_layout_features : 1; // For each cp that we'd like to retain maps to the corresponding gid. hb_set_t *unicodes; @@ -55,6 +56,9 @@ struct hb_subset_plan_t // name_languages we would like to retain hb_set_t *name_languages; + //layout features which will be preserved + hb_set_t *layout_features; + //glyph ids requested to retain hb_set_t *glyphs_requested; diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,62,63.ttf index 163ebcbb2..9c6b70fca 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,63.ttf index 867ddfcb1..3f139a68d 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61.ttf index 76ad2fa0b..4d931ad66 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.retain-all-codepoint.ttf index a6100c7ed..0db4b2ab4 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.default.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.default.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,62,63.ttf index 732414df4..33d61d11c 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,63.ttf index ac228485a..89cf93342 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61.ttf index 88e26567d..a5af7e223 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.retain-all-codepoint.ttf index ce8fd887e..829eadfb4 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints-retain-gids.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,62,63.ttf index 53398975c..4d2b38b40 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,63.ttf index ac861aae9..4574849f7 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61.ttf index d2d1881b0..39a58bc4b 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.retain-all-codepoint.ttf index 102f5c672..aa40cb5ad 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.drop-hints.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,62,63.ttf index 7ec6a0db6..f64910140 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,63.ttf index 7160f0fea..d1c12a8f3 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61.ttf index 69c08d904..1eb5ecf12 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.62.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.62.ttf index bed98973e..2fc09ae1a 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.62.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.62.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.63.ttf index 29be22f68..e2bafcd42 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.retain-all-codepoint.ttf index a6100c7ed..0db4b2ab4 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.gids.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,62,63.ttf new file mode 100644 index 000000000..163ebcbb2 Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,63.ttf new file mode 100644 index 000000000..867ddfcb1 Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61.ttf new file mode 100644 index 000000000..76ad2fa0b Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.62.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.62.ttf new file mode 100644 index 000000000..0f95a1e9e Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.62.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.63.ttf new file mode 100644 index 000000000..23a8777d6 Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.retain-all-codepoint.ttf new file mode 100644 index 000000000..a6100c7ed Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.keep-all-layout-features.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,62,63.ttf new file mode 100644 index 000000000..9c6b70fca Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,63.ttf new file mode 100644 index 000000000..3f139a68d Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61.ttf new file mode 100644 index 000000000..4d931ad66 Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.62.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.62.ttf new file mode 100644 index 000000000..0f95a1e9e Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.62.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.63.ttf new file mode 100644 index 000000000..23a8777d6 Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.retain-all-codepoint.ttf new file mode 100644 index 000000000..7727d4896 Binary files /dev/null and b/test/subset/data/expected/basics/Comfortaa-Regular-new.layout-features.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,62,63.ttf index 4c485126c..e71b46a4a 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,63.ttf index dd8d99b18..186e96897 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61.ttf index 019bc1190..ea9e87244 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.retain-all-codepoint.ttf index 4a172ab83..20eafb3d6 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-ids.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,62,63.ttf index 163ebcbb2..9c6b70fca 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,63.ttf index 867ddfcb1..3f139a68d 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61.ttf index 76ad2fa0b..4d931ad66 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.retain-all-codepoint.ttf index a6100c7ed..0db4b2ab4 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-languages.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,62,63.ttf index 163ebcbb2..9c6b70fca 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,63.ttf index 867ddfcb1..3f139a68d 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61.ttf index 76ad2fa0b..4d931ad66 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.retain-all-codepoint.ttf index a6100c7ed..0db4b2ab4 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.name-legacy.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,62,63.ttf index a6b3aa174..a6bc5c76a 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,62,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,63.ttf index c4262e57b..9720d1ce4 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,63.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61.ttf index 578802026..1068b7f76 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.61.ttf differ diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.retain-all-codepoint.ttf index a1733e046..6a94355b3 100644 Binary files a/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.retain-all-codepoint.ttf and b/test/subset/data/expected/basics/Comfortaa-Regular-new.retain-gids.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61,62,63.ttf new file mode 100644 index 000000000..dbed582fb Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61,63.ttf new file mode 100644 index 000000000..5913420e3 Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61,63.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61.ttf new file mode 100644 index 000000000..3635f68be Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.61.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.62.ttf new file mode 100644 index 000000000..91fcad84a Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.62.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.63.ttf new file mode 100644 index 000000000..737cbdc7e Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.63.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.retain-all-codepoint.ttf new file mode 100644 index 000000000..9744bc31d Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.keep-all-layout-features.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61,62,63.ttf new file mode 100644 index 000000000..dbed582fb Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61,63.ttf new file mode 100644 index 000000000..5913420e3 Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61,63.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61.ttf new file mode 100644 index 000000000..3635f68be Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.61.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.62.ttf new file mode 100644 index 000000000..91fcad84a Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.62.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.63.ttf new file mode 100644 index 000000000..737cbdc7e Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.63.ttf differ diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.retain-all-codepoint.ttf new file mode 100644 index 000000000..9744bc31d Binary files /dev/null and b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.layout-features.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61,62,63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61,62,63.ttf new file mode 100644 index 000000000..712674fa2 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61,63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61,63.ttf new file mode 100644 index 000000000..f4b4a0852 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61.ttf new file mode 100644 index 000000000..60e3c5cbb Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.61.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.62.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.62.ttf new file mode 100644 index 000000000..a2916f82b Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.62.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.63.ttf new file mode 100644 index 000000000..e3964f8e9 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.63.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.retain-all-codepoint.ttf new file mode 100644 index 000000000..712674fa2 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.keep-all-layout-features.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61,62,63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61,62,63.ttf new file mode 100644 index 000000000..712674fa2 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61,62,63.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61,63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61,63.ttf new file mode 100644 index 000000000..f4b4a0852 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61,63.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61.ttf new file mode 100644 index 000000000..60e3c5cbb Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.61.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.62.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.62.ttf new file mode 100644 index 000000000..a2916f82b Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.62.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.63.ttf new file mode 100644 index 000000000..e3964f8e9 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.63.ttf differ diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.retain-all-codepoint.ttf new file mode 100644 index 000000000..712674fa2 Binary files /dev/null and b/test/subset/data/expected/basics/Roboto-Regular.abc.layout-features.retain-all-codepoint.ttf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.1FC,21,41,20,62,63.otf index 36b2980a9..b54850811 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.61,62,63.otf index c4c49ad04..490061dbd 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf index be1e1d765..3043a3d6e 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.default.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.1FC,21,41,20,62,63.otf index f6d90c169..07bef3970 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.61,62,63.otf index dd41df16b..1a8e60767 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf index 0f59d858e..8f12c8d5a 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.1FC,21,41,20,62,63.otf index da612a06c..42d42a1f2 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.61,62,63.otf index f65ae3133..7e4f67a58 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf index 41ea5309d..52137b27b 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.desubroutinize.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.1FC,21,41,20,62,63.otf index a62bcc80b..7d0665cad 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.61,62,63.otf index d57a8f065..6f7d42c45 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf index 3d645389c..e09189309 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize-retain-gids.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.1FC,21,41,20,62,63.otf index 29839512d..6da46639e 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.61,62,63.otf index baaae1d66..e4e7b468a 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf index 4dbbaa3d2..4ce677ef3 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-desubroutinize.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.1FC,21,41,20,62,63.otf index cfa140fdf..a356293ef 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.61,62,63.otf index 054f32ff0..5b2473126 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf index cd7fbc012..ce53b928f 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints-retain-gids.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.1FC,21,41,20,62,63.otf index c600cd387..54fb44084 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.61,62,63.otf index 6900288ba..7a7aa0400 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf index 03785e1f4..e4ace2de2 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.drop-hints.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.1FC,21,41,20,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.1FC,21,41,20,62,63.otf index cfbe2efba..54ac3961a 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.1FC,21,41,20,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.1FC,21,41,20,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.61,62,63.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.61,62,63.otf index b5111f138..42b501f7b 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.61,62,63.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.61,62,63.otf differ diff --git a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf index fc3438937..4fc733a0f 100644 Binary files a/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf and b/test/subset/data/expected/cff-full-font/SourceSansPro-Regular.retain-gids.D7,D8,D9,DA,DE.otf differ diff --git a/test/subset/data/expected/full-font/Roboto-Regular.default.1FC,21,41,20,62,63.ttf b/test/subset/data/expected/full-font/Roboto-Regular.default.1FC,21,41,20,62,63.ttf index e644241ac..63cbe612e 100644 Binary files a/test/subset/data/expected/full-font/Roboto-Regular.default.1FC,21,41,20,62,63.ttf and b/test/subset/data/expected/full-font/Roboto-Regular.default.1FC,21,41,20,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/Roboto-Regular.default.61,62,63.ttf b/test/subset/data/expected/full-font/Roboto-Regular.default.61,62,63.ttf index 32340c4fa..57fc022b3 100644 Binary files a/test/subset/data/expected/full-font/Roboto-Regular.default.61,62,63.ttf and b/test/subset/data/expected/full-font/Roboto-Regular.default.61,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/Roboto-Regular.default.D7,D8,D9,DA,DE.ttf b/test/subset/data/expected/full-font/Roboto-Regular.default.D7,D8,D9,DA,DE.ttf index 97863b6c8..f5adaefe4 100644 Binary files a/test/subset/data/expected/full-font/Roboto-Regular.default.D7,D8,D9,DA,DE.ttf and b/test/subset/data/expected/full-font/Roboto-Regular.default.D7,D8,D9,DA,DE.ttf differ diff --git a/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf b/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf index c51a5e4cc..4ee0e5c45 100644 Binary files a/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf and b/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.1FC,21,41,20,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.61,62,63.ttf b/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.61,62,63.ttf index 38cb8f7ad..ff10e0e01 100644 Binary files a/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.61,62,63.ttf and b/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.61,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf b/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf index 8c7a34148..2ec9e5ba7 100644 Binary files a/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf and b/test/subset/data/expected/full-font/Roboto-Regular.drop-hints.D7,D8,D9,DA,DE.ttf differ diff --git a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.1FC,21,41,20,62,63.ttf b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.1FC,21,41,20,62,63.ttf index a8c7e64ee..f871dcfc7 100644 Binary files a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.1FC,21,41,20,62,63.ttf and b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.1FC,21,41,20,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.61,62,63.ttf b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.61,62,63.ttf index 36825cc59..1d0d6ebb1 100644 Binary files a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.61,62,63.ttf and b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.61,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf index 34cb87aed..72f5a1161 100644 Binary files a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf and b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.default.D7,D8,D9,DA,DE.ttf differ diff --git a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf index 7fe00abb4..df354f524 100644 Binary files a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf and b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.1FC,21,41,20,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.61,62,63.ttf b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.61,62,63.ttf index 36825cc59..1d0d6ebb1 100644 Binary files a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.61,62,63.ttf and b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.61,62,63.ttf differ diff --git a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf index 34cb87aed..72f5a1161 100644 Binary files a/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf and b/test/subset/data/expected/full-font/SourceSerifVariable-Roman.drop-hints.D7,D8,D9,DA,DE.ttf differ diff --git a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42,43.otf index b1a0b3c8f..1381f88b3 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42,43.otf and b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42.otf b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42.otf index b070e2bc9..761a65e17 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42.otf and b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.41,42.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.retain-all-codepoint.otf index 6354eff8f..b8f6ea784 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42,43.otf index 41f4ff45a..21bc23428 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42.otf b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42.otf index 67e87dc0e..67b0d9917 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42.otf and b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.41,42.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf index 6354eff8f..b8f6ea784 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.context/gpos_context1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42,43.otf index 3deac416e..b71f54cb0 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42,43.otf and b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42.otf index 5f0ded380..d0ce4a3e5 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42.otf and b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.41,42.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.retain-all-codepoint.otf index 0691569c7..4a992b83d 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42,43.otf index 520a37393..8cc2769cc 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42.otf index b9e8c99f1..1a8d71a07 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42.otf and b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.41,42.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf index 0691569c7..4a992b83d 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.context/gpos_context2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.41,42,43.otf index 7c1199548..d6166c0cf 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.41,42,43.otf and b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.retain-all-codepoint.otf index 684e99126..77c23585c 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.41,42,43.otf index ab8599715..1422fa0eb 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.retain-all-codepoint.otf index 684e99126..77c23585c 100644 Binary files a/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.context/gpos_context3_simple_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43,57.otf index 574824a5f..81de55dd7 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43.otf index d946c63e6..d5f0aa4de 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42.otf index aa13f114a..5ac74e168 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,56,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,56,57.otf index eb57e403b..c828f556c 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,56,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,56,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41.otf index 8c351f721..1ec8c556e 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.42,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.42,57.otf index 7cc801ab6..5df452453 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.42,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.42,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43,57.otf index 9bd8d6533..53a5e58a1 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43.otf index 08f54728e..035fbbebd 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42.otf index f51c9c056..c4430ed1e 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,56,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,56,57.otf index 97d85034b..c3cb256d3 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,56,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,56,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41.otf index 3a8ea5955..055405298 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.42,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.42,57.otf index 88abc1c80..01311b2aa 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.42,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.42,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf index 574824a5f..81de55dd7 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf index d946c63e6..d5f0aa4de 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42.otf index aa13f114a..5ac74e168 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf index eb57e403b..c828f556c 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41.otf index 8c351f721..1ec8c556e 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41.otf differ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.42,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.42,57.otf index 7cc801ab6..5df452453 100644 Binary files a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.42,57.otf and b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.42,57.otf differ diff --git a/test/subset/data/expected/layout.gdef/Roboto-Regular.default.41,42,43.ttf b/test/subset/data/expected/layout.gdef/Roboto-Regular.default.41,42,43.ttf index a4a5df187..af99a82bb 100644 Binary files a/test/subset/data/expected/layout.gdef/Roboto-Regular.default.41,42,43.ttf and b/test/subset/data/expected/layout.gdef/Roboto-Regular.default.41,42,43.ttf differ diff --git a/test/subset/data/expected/layout.gdef/Roboto-Regular.drop-hints.41,42,43.ttf b/test/subset/data/expected/layout.gdef/Roboto-Regular.drop-hints.41,42,43.ttf index 762edc70d..db3158263 100644 Binary files a/test/subset/data/expected/layout.gdef/Roboto-Regular.drop-hints.41,42,43.ttf and b/test/subset/data/expected/layout.gdef/Roboto-Regular.drop-hints.41,42,43.ttf differ diff --git a/test/subset/data/expected/layout.gdef/Roboto-Regular.keep-gdef-gpos.41,42,43.ttf b/test/subset/data/expected/layout.gdef/Roboto-Regular.keep-gdef-gpos.41,42,43.ttf index a4a5df187..af99a82bb 100644 Binary files a/test/subset/data/expected/layout.gdef/Roboto-Regular.keep-gdef-gpos.41,42,43.ttf and b/test/subset/data/expected/layout.gdef/Roboto-Regular.keep-gdef-gpos.41,42,43.ttf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,43.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,43.otf index 5277309e9..a8dfffd13 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,43.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,43.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,46.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,46.otf index 5a74887dc..791a9a894 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,46.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41,46.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41.otf index 1caeeab35..83c0771a7 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.41.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.43,46.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.43,46.otf index c429dc981..e0cf95277 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.43,46.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.43,46.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.retain-all-codepoint.otf index 2d6962bb6..87be9ac1c 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,43.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,43.otf index 6b2879fff..c40db8e52 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,43.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,43.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,46.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,46.otf index eebb3e158..bf19981e9 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,46.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41,46.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41.otf index e56bbf4c5..84cdca6dd 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.41.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.43,46.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.43,46.otf index c271bde2f..7d9bed22e 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.43,46.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.43,46.otf differ diff --git a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.retain-all-codepoint.otf index 2d6962bb6..87be9ac1c 100644 Binary files a/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos/gpos1_2_font.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23,25.otf b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23,25.otf index 47fea1ac6..42b13defb 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23,25.otf and b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23,25.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23.otf b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23.otf index 99e813fc5..54aa03b23 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23.otf and b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.21,23.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.retain-all-codepoint.otf index 8f18b89c6..4354aa7e9 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23,25.otf b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23,25.otf index 49039feeb..10dff4cc3 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23,25.otf and b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23,25.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23.otf b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23.otf index 68cb0ec5d..ccc86c816 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23.otf and b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.21,23.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.retain-all-codepoint.otf index 8f18b89c6..4354aa7e9 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos2/gpos2_1_font7.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23,25.otf b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23,25.otf index f227d5ad6..4904307e8 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23,25.otf and b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23,25.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23.otf b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23.otf index a785d4967..b3306fc2a 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23.otf and b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.21,23.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.retain-all-codepoint.otf index aebc39673..1098f7c49 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23,25.otf b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23,25.otf index 77c408cd1..03c56c4f9 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23,25.otf and b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23,25.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23.otf b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23.otf index 9abdd3204..2c86996d2 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23.otf and b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.21,23.otf differ diff --git a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.retain-all-codepoint.otf index aebc39673..1098f7c49 100644 Binary files a/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos2/gpos2_2_font5.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,29.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,29.otf index f3ca19a2f..184d5cb6b 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,29.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,29.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,2B.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,2B.otf index 2a8114ad6..1f5e98323 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,2B.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.28,2B.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.29,2B.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.29,2B.otf index 1426d50af..adf2d0adc 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.29,2B.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.29,2B.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.retain-all-codepoint.otf index 8dbc8200d..3bc9b8783 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,29.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,29.otf index 17aa6d833..bd02afe59 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,29.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,29.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,2B.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,2B.otf index 9e6f2eb84..856081670 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,2B.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.28,2B.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.29,2B.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.29,2B.otf index 0187ed7b9..dea73b70e 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.29,2B.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.29,2B.otf differ diff --git a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.retain-all-codepoint.otf index 8dbc8200d..3bc9b8783 100644 Binary files a/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos3/gpos3_font3.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,44.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,44.otf index 5447973d5..dafff201a 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,44.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,45.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,45.otf index e6c891b2e..2fa69c9e2 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,45.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43.otf index 127f798f3..57218850e 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44,45,46.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44,45,46.otf index 5f4754268..1021815f9 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44,45,46.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44,45,46.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44.otf index 8fe4d63eb..07636380f 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,45.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,45.otf index 147ed5782..e1bbdf50f 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,45.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43.otf index 1b0f24362..f4e2b3b8b 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.41,43.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.retain-all-codepoint.otf index 3765d20de..bc25cb80e 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,44.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,44.otf index 1c2e5a462..1f00f43a7 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,44.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,45.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,45.otf index 2fed45d31..0b3d17d95 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,45.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43.otf index 00076157a..cfd5f1e24 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44,45,46.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44,45,46.otf index 73315f3ed..8a0e9746a 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44,45,46.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44,45,46.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44.otf index 4005a0d77..798f56135 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,45.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,45.otf index c9f261ce9..73b0155be 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,45.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43.otf index 9ed6a9b77..65a323160 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.41,43.otf differ diff --git a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.retain-all-codepoint.otf index 3765d20de..bc25cb80e 100644 Binary files a/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos4/gpos4_multiple_anchors_1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,44.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,44.otf index 3749d3545..9b3e75d74 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,44.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,45.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,45.otf index 5d4fcee06..38d95cbae 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,45.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43.otf index 54fc0684b..d17d9d87b 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,44.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,44.otf index d4c95a645..5607d82c0 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,44.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,44.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,45.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,45.otf index 656792d72..1297db218 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,45.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42,45.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42.otf index cc2f5f7ee..c016e2112 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.41,42.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.retain-all-codepoint.otf index 2a82c60bd..65ee41ae4 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,44.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,44.otf index 13a1fb785..db0e80ce3 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,44.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,45.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,45.otf index 51533581f..f7512029c 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,45.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43.otf index b7a0bc625..513f33125 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,44.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,44.otf index bb7d74b52..14f79e337 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,44.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,44.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,45.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,45.otf index 0da7880e3..5b8c588a9 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,45.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42,45.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42.otf index 9b6e1589f..eb2937afd 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.41,42.otf differ diff --git a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.retain-all-codepoint.otf index 2a82c60bd..65ee41ae4 100644 Binary files a/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos5/gpos5_font1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,44.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,44.otf index 106c55abc..ae9cd4220 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,44.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,45.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,45.otf index ba37625a1..79487dc71 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,45.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43.otf index 8a6aa87e9..69a5df244 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44,45,46.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44,45,46.otf index 09e27e695..61258b572 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44,45,46.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44,45,46.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44.otf index 48e8928e3..e77361ad7 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,45.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,45.otf index e4656fe02..ebce48905 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,45.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43.otf index 5527d9ff4..82414b8e6 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.41,43.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.retain-all-codepoint.otf index 0feba1bd6..e8e961eaf 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,44.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,44.otf index 92d1e28f9..e3ea59fc5 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,44.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,45.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,45.otf index 28d5cb495..d076404f2 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,45.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43.otf index 7d58a98f7..7117c66ac 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44,45,46.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44,45,46.otf index d944ebf92..82bd9c160 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44,45,46.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44,45,46.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44.otf index 7dc3d6211..5b925f2fa 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,44.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,45.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,45.otf index f7727d4fd..0257f0e93 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,45.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43,45.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43.otf index 7e564d5d0..5f9272cd3 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.41,43.otf differ diff --git a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.retain-all-codepoint.otf index 0feba1bd6..e8e961eaf 100644 Binary files a/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos6/gpos6_font1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,623,62D,644,627,645,2E.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,623,62D,644,627,645,2E.ttf index 9862336a0..469f75a0e 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,623,62D,644,627,645,2E.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,623,62D,644,627,645,2E.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,62D,628.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,62D,628.ttf index 00f78036b..c7a17fab7 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,62D,628.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644,62D,628.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644.ttf index c1537155b..8f18a6977 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.627,644.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.633,645,627,621,20,644,627.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.633,645,627,621,20,644,627.ttf index 0e5dd57b9..639a594fc 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.633,645,627,621,20,644,627.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.633,645,627,621,20,644,627.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.63A,64A,631.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.63A,64A,631.ttf index 7d27cb630..9471024f8 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.63A,64A,631.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.default.63A,64A,631.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,623,62D,644,627,645,2E.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,623,62D,644,627,645,2E.ttf index 494dee006..2860e2b4a 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,623,62D,644,627,645,2E.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,623,62D,644,627,645,2E.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,62D,628.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,62D,628.ttf index f4a1ce43a..e0b91f6ba 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,62D,628.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644,62D,628.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644.ttf index 45f11775b..ec657ee0c 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.627,644.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.633,645,627,621,20,644,627.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.633,645,627,621,20,644,627.ttf index 82976b0e0..d5d960430 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.633,645,627,621,20,644,627.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.633,645,627,621,20,644,627.ttf differ diff --git a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.63A,64A,631.ttf b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.63A,64A,631.ttf index ebc2866c8..efe656795 100644 Binary files a/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.63A,64A,631.ttf and b/test/subset/data/expected/layout.gpos8.amiri/Amiri-Regular.retain-gids.63A,64A,631.ttf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.30,31,32,33.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.30,31,32,33.otf index 34966da1d..7ec35bb08 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.30,31,32,33.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf index aee157993..2447631d7 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf index 61f41df10..03f6ebd1a 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf index aee157993..2447631d7 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.30,31,32,33.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.30,31,32,33.otf index 7130a4c6c..58f08c330 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.30,31,32,33.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf index 48b30c79b..e9cdc4547 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf index 4c3af1350..bb21de823 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf index 48b30c79b..e9cdc4547 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.30,31,32,33.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.30,31,32,33.otf index 55f3f6655..6a92162d7 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.30,31,32,33.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.retain-all-codepoint.otf index 2f0e4b9d1..754956680 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.30,31,32,33.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.30,31,32,33.otf index 9bc50e5aa..d23e61354 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.30,31,32,33.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.retain-all-codepoint.otf index 2f0e4b9d1..754956680 100644 Binary files a/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gpos8/gpos_chaining3_simple_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41,42.otf b/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41,42.otf index 46484863c..cb5b909f2 100644 Binary files a/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41,42.otf and b/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41,42.otf differ diff --git a/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41.otf b/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41.otf index cd2c4c268..4dd9df58c 100644 Binary files a/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41.otf and b/test/subset/data/expected/layout.gpos9/gpos9_font2.default.41.otf differ diff --git a/test/subset/data/expected/layout.gpos9/gpos9_font2.default.42.otf b/test/subset/data/expected/layout.gpos9/gpos9_font2.default.42.otf index 09e20f804..13f172086 100644 Binary files a/test/subset/data/expected/layout.gpos9/gpos9_font2.default.42.otf and b/test/subset/data/expected/layout.gpos9/gpos9_font2.default.42.otf differ diff --git a/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41,42.otf b/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41,42.otf index 968dd3729..3310714a9 100644 Binary files a/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41,42.otf and b/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41,42.otf differ diff --git a/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41.otf b/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41.otf index 842cf79d0..bfb62d7ae 100644 Binary files a/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41.otf and b/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.41.otf differ diff --git a/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.42.otf b/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.42.otf index 5ef0589f1..3ad1eb4f6 100644 Binary files a/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.42.otf and b/test/subset/data/expected/layout.gpos9/gpos9_font2.retain-gids.42.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9,53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9,53F1.otf index 685c2c90c..a00b0f998 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9,53F1.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9,53F1.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9.otf index fc1f61bb9..1a0c52d4d 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53A9.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53F1.otf index 367edeb11..ad984d814 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53F1.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.53F1.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.retain-all-codepoint.otf index c55b23359..7013db94a 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9,53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9,53F1.otf index 1d67ee495..3a8d104fb 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9,53F1.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9,53F1.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9.otf index 31fc761c5..da6ca49dc 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53A9.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53F1.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53F1.otf index 2fd89a4ad..9b2fdeeb3 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53F1.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.53F1.otf differ diff --git a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.retain-all-codepoint.otf index e737ed1ff..1cbadaa7c 100644 Binary files a/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub3/gsub_alternate_substitution.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42,43.otf b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42,43.otf index e1a944d25..181b8d8f1 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42,43.otf and b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42.otf b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42.otf index 73c0650b4..61a728f03 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42.otf and b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.41,42.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.retain-all-codepoint.otf index 817e5c4ab..41990d6b1 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42,43.otf index a99ffb88a..d0bf4dea0 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42.otf b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42.otf index 6b020cdac..74e62de07 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42.otf and b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.41,42.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf index 817e5c4ab..41990d6b1 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub5/gsub_context1_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42,43.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42,43.otf index b1155251e..7ff642f14 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42,43.otf and b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42.otf index 32437e447..6b91f4bf3 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42.otf and b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.41,42.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.retain-all-codepoint.otf index a0ca58f6f..5f9883260 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42,43.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42,43.otf index 14caaccfb..f67517077 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42,43.otf and b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42,43.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42.otf index c79a5bdae..6bcfd4d2b 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42.otf and b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.41,42.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf index a0ca58f6f..5f9883260 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub5/gsub_context2_multiple_subrules_f2.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.default.retain-all-codepoint.otf index 1e4055a6b..060d8f242 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.retain-gids.retain-all-codepoint.otf index 1e4055a6b..060d8f242 100644 Binary files a/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub5/gsub_context3_successive_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.30,31,32,33.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.30,31,32,33.otf index bdaa8059f..d324012be 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.30,31,32,33.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf index 3e7ecef82..ebf56f0a9 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf index e10d863c0..ef0e490e9 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf index 3e7ecef82..ebf56f0a9 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining1_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.30,31,32,33.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.30,31,32,33.otf index a53b114d6..b94bf708d 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.30,31,32,33.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf index 6b55fe6ad..e3dc20f9b 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf index 856249e72..a83989b0b 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf index 6b55fe6ad..e3dc20f9b 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining2_multiple_subrules_f1.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.30,31,32,33.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.30,31,32,33.otf index fbd9a4461..f2b8f7176 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.30,31,32,33.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.retain-all-codepoint.otf index 2af5abbe5..07286e3f4 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.30,31,32,33.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.30,31,32,33.otf index 2d08eb0b5..3b19106d8 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.30,31,32,33.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.30,31,32,33.otf differ diff --git a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.retain-all-codepoint.otf index 2af5abbe5..07286e3f4 100644 Binary files a/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub6/gsub_chaining3_simple_f2.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47,48,49.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47,48,49.otf index 4e30f4718..b2ec2d9d7 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47,48,49.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47,48,49.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47.otf index 0f8ef5ac3..80f2c6e42 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,47.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,4D.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,4D.otf index 7b18952d6..ac92afa32 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,4D.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,4D.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,51.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,51.otf index f96a05aa8..302611954 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,51.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.41,42,43,44,45,46,51.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.61.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.61.otf index 627649815..190130276 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.61.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.61.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.retain-all-codepoint.otf index aae2b269c..ac065e511 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.default.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47,48,49.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47,48,49.otf index 8495a4a16..bf8e048a3 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47,48,49.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47,48,49.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47.otf index 4838600e2..6af7f145f 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,47.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,4D.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,4D.otf index 27982fd91..e390914b2 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,4D.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,4D.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,51.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,51.otf index 87a06c034..de4ae1d06 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,51.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.41,42,43,44,45,46,51.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.61.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.61.otf index eebf28c87..2cbf8a604 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.61.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.61.otf differ diff --git a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.retain-all-codepoint.otf b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.retain-all-codepoint.otf index aae2b269c..ac065e511 100644 Binary files a/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.retain-all-codepoint.otf and b/test/subset/data/expected/layout.gsub8/gsub8_manually_created.retain-gids.retain-all-codepoint.otf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,42,43.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,42,43.ttf index 33aa3f7f4..7bcb2a229 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,42,43.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,42,43.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,43.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,43.ttf index c207f0932..ed1be23c6 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,43.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41,43.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41.ttf index 70251b38a..a3400b124 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.41.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.43.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.43.ttf index 2109fafc7..7204e10e6 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.43.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.43.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.CA,CB.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.CA,CB.ttf index 16c6d432e..ea36c4be4 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.CA,CB.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.default.CA,CB.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,42,43.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,42,43.ttf index 95e055f53..1d6652991 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,42,43.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,42,43.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,43.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,43.ttf index 1702a1022..874c7a78f 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,43.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41,43.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41.ttf index c03e8cbf5..412a33dde 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.41.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.43.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.43.ttf index be5e6d9f4..d5048b0df 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.43.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.43.ttf differ diff --git a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf index 9798bc48e..ea16a3e81 100644 Binary files a/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf and b/test/subset/data/expected/layout/Roboto-Regular.smallcaps.retain-gids.CA,CB.ttf differ diff --git a/test/subset/data/expected/variable/Fraunces.default.26,66,69,124,125.ttf b/test/subset/data/expected/variable/Fraunces.default.26,66,69,124,125.ttf index 9d45fcba8..bb96a671d 100644 Binary files a/test/subset/data/expected/variable/Fraunces.default.26,66,69,124,125.ttf and b/test/subset/data/expected/variable/Fraunces.default.26,66,69,124,125.ttf differ diff --git a/test/subset/data/expected/variable/Fraunces.default.61.ttf b/test/subset/data/expected/variable/Fraunces.default.61.ttf index 381ef6d26..3d401a513 100644 Binary files a/test/subset/data/expected/variable/Fraunces.default.61.ttf and b/test/subset/data/expected/variable/Fraunces.default.61.ttf differ diff --git a/test/subset/data/profiles/keep-all-layout-features.txt b/test/subset/data/profiles/keep-all-layout-features.txt new file mode 100644 index 000000000..97241e045 --- /dev/null +++ b/test/subset/data/profiles/keep-all-layout-features.txt @@ -0,0 +1 @@ +--layout-features=* diff --git a/test/subset/data/profiles/layout-features.txt b/test/subset/data/profiles/layout-features.txt new file mode 100644 index 000000000..15456e6c3 --- /dev/null +++ b/test/subset/data/profiles/layout-features.txt @@ -0,0 +1 @@ +--layout-features=kern,mark,liga diff --git a/test/subset/data/tests/basics.tests b/test/subset/data/tests/basics.tests index c5aa136ea..5a9818db5 100644 --- a/test/subset/data/tests/basics.tests +++ b/test/subset/data/tests/basics.tests @@ -12,6 +12,8 @@ name-ids.txt name-languages.txt name-legacy.txt gids.txt +layout-features.txt +keep-all-layout-features.txt SUBSETS: abc diff --git a/test/subset/generate-expected-outputs.py b/test/subset/generate-expected-outputs.py index ec69bb616..593104ab1 100755 --- a/test/subset/generate-expected-outputs.py +++ b/test/subset/generate-expected-outputs.py @@ -17,7 +17,6 @@ def usage(): def generate_expected_output(input_file, unicodes, profile_flags, output_path): args = ["fonttools", "subset", input_file] args.extend(["--notdef-outline", - "--layout-features=*", "--drop-tables+=DSIG", "--drop-tables-=sbix", "--unicodes=%s" % unicodes, diff --git a/util/options-subset.cc b/util/options-subset.cc index d3b063b71..c177076ed 100644 --- a/util/options-subset.cc +++ b/util/options-subset.cc @@ -200,6 +200,52 @@ parse_name_languages (const char *name, return true; } +static gboolean +parse_layout_features (const char *name, + const char *arg, + gpointer data, + GError **error G_GNUC_UNUSED) +{ + subset_options_t *subset_opts = (subset_options_t *) data; + hb_set_t *layout_features = subset_opts->input->layout_features; + + char last_name_char = name[strlen (name) - 1]; + + if (last_name_char != '+' && last_name_char != '-') + hb_set_clear (layout_features); + + if (0 == strcmp (arg, "*")) + { + if (last_name_char == '-') + hb_set_clear (layout_features); + else + subset_opts->input->retain_all_layout_features = true; + return true; + } + + char *s = strtok((char *) arg, ", "); + while (s) + { + if (strlen (s) > 4) // table tags are at most 4 bytes + { + g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, + "Failed parsing table tag values at: '%s'", s); + return false; + } + + hb_tag_t tag = hb_tag_from_string (s, strlen (s)); + + if (last_name_char != '-') + hb_set_add (layout_features, tag); + else + hb_set_del (layout_features, tag); + + s = strtok(nullptr, ", "); + } + + return true; +} + static gboolean parse_drop_tables (const char *name, const char *arg, @@ -247,8 +293,15 @@ subset_options_t::add_options (option_parser_t *parser) {"gids", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_gids, "Specify glyph IDs or ranges to include in the subset", "list of comma/whitespace-separated int numbers or ranges"}, {"desubroutinize", 0, 0, G_OPTION_ARG_NONE, &this->input->desubroutinize, "Remove CFF/CFF2 use of subroutines", nullptr}, {"name-IDs", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_nameids, "Subset specified nameids", "list of int numbers"}, + {"name-IDs-", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_nameids, "Subset specified nameids", "list of int numbers"}, + {"name-IDs+", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_nameids, "Subset specified nameids", "list of int numbers"}, {"name-legacy", 0, 0, G_OPTION_ARG_NONE, &this->input->name_legacy, "Keep legacy (non-Unicode) 'name' table entries", nullptr}, {"name-languages", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_name_languages, "Subset nameRecords with specified language IDs", "list of int numbers"}, + {"name-languages-", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_name_languages, "Subset nameRecords with specified language IDs", "list of int numbers"}, + {"name-languages+", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_name_languages, "Subset nameRecords with specified language IDs", "list of int numbers"}, + {"layout-features", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_layout_features, "Specify set of layout feature tags that will be preserved", "list of string table tags."}, + {"layout-features+", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_layout_features, "Specify set of layout feature tags that will be preserved", "list of string table tags."}, + {"layout-features-", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_layout_features, "Specify set of layout feature tags that will be preserved", "list of string table tags."}, {"drop-tables", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_drop_tables, "Drop the specified tables.", "list of string table tags."}, {"drop-tables+", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_drop_tables, "Drop the specified tables.", "list of string table tags."}, {"drop-tables-", 0, 0, G_OPTION_ARG_CALLBACK, (gpointer) &parse_drop_tables, "Drop the specified tables.", "list of string table tags."},