[subset] add option --no-prune-unicode-ranges
diff --git a/src/hb-ot-os2-table.hh b/src/hb-ot-os2-table.hh index 8e98f87..66ad5a5 100644 --- a/src/hb-ot-os2-table.hh +++ b/src/hb-ot-os2-table.hh
@@ -172,6 +172,7 @@ TRACE_SUBSET (this); OS2 *os2_prime = c->serializer->embed (this); if (unlikely (!os2_prime)) return_trace (false); + if (!c->plan->prune_unicode_ranges) return_trace (true); hb_set_t unicodes; if (!c->plan->glyphs_requested->is_empty ())
diff --git a/src/hb-subset-input.cc b/src/hb-subset-input.cc index 50cbb2f..88ff5ef 100644 --- a/src/hb-subset-input.cc +++ b/src/hb-subset-input.cc
@@ -56,6 +56,7 @@ input->name_legacy = false; input->overlaps_flag = false; input->notdef_outline = false; + input->no_prune_unicode_ranges = false; input->retain_all_layout_features = false; hb_tag_t default_drop_tables[] = { @@ -364,3 +365,16 @@ return subset_input->notdef_outline; } +HB_EXTERN void +hb_subset_input_set_no_prune_unicode_ranges (hb_subset_input_t *subset_input, + hb_bool_t no_prune_unicode_ranges) +{ + subset_input->no_prune_unicode_ranges = no_prune_unicode_ranges; +} + +HB_EXTERN hb_bool_t +hb_subset_input_get_no_prune_unicode_ranges (hb_subset_input_t *subset_input) +{ + return subset_input->no_prune_unicode_ranges; +} +
diff --git a/src/hb-subset-input.hh b/src/hb-subset-input.hh index f48ce0f..40bf9a3 100644 --- a/src/hb-subset-input.hh +++ b/src/hb-subset-input.hh
@@ -52,6 +52,7 @@ hb_bool_t name_legacy; hb_bool_t overlaps_flag; hb_bool_t notdef_outline; + hb_bool_t no_prune_unicode_ranges; hb_bool_t retain_all_layout_features; /* TODO *
diff --git a/src/hb-subset-plan.cc b/src/hb-subset-plan.cc index f5aaaaf..195378d 100644 --- a/src/hb-subset-plan.cc +++ b/src/hb-subset-plan.cc
@@ -403,6 +403,7 @@ plan->name_legacy = input->name_legacy; plan->overlaps_flag = input->overlaps_flag; plan->notdef_outline = input->notdef_outline; + plan->prune_unicode_ranges = !input->no_prune_unicode_ranges; plan->retain_all_layout_features = input->retain_all_layout_features; plan->unicodes = hb_set_create (); plan->name_ids = hb_set_reference (input->name_ids);
diff --git a/src/hb-subset-plan.hh b/src/hb-subset-plan.hh index 5df9e76..01117f4 100644 --- a/src/hb-subset-plan.hh +++ b/src/hb-subset-plan.hh
@@ -46,6 +46,7 @@ bool name_legacy : 1; bool overlaps_flag : 1; bool notdef_outline : 1; + bool prune_unicode_ranges : 1; bool retain_all_layout_features : 1; // For each cp that we'd like to retain maps to the corresponding gid.
diff --git a/src/hb-subset.h b/src/hb-subset.h index b604c48..249540f 100644 --- a/src/hb-subset.h +++ b/src/hb-subset.h
@@ -110,6 +110,13 @@ HB_EXTERN hb_bool_t hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input); +HB_EXTERN void +hb_subset_input_set_no_prune_unicode_ranges (hb_subset_input_t *subset_input, + hb_bool_t no_prune_unicode_ranges); + +HB_EXTERN hb_bool_t +hb_subset_input_get_no_prune_unicode_ranges (hb_subset_input_t *subset_input); + /* hb_subset () */ HB_EXTERN hb_face_t * hb_subset (hb_face_t *source, hb_subset_input_t *input);
diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61,62,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61,62,63.ttf new file mode 100644 index 0000000..b57dfc8 --- /dev/null +++ b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61,62,63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61,63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61,63.ttf new file mode 100644 index 0000000..001e837 --- /dev/null +++ b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61,63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61.ttf new file mode 100644 index 0000000..4ef5645 --- /dev/null +++ b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.61.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.62.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.62.ttf new file mode 100644 index 0000000..1864c03 --- /dev/null +++ b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.62.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.63.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.63.ttf new file mode 100644 index 0000000..9091754 --- /dev/null +++ b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.retain-all-codepoint.ttf new file mode 100644 index 0000000..92a8c85 --- /dev/null +++ b/test/subset/data/expected/basics/Comfortaa-Regular-new.no-prune-unicode-ranges.retain-all-codepoint.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61,62,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61,62,63.ttf new file mode 100644 index 0000000..9b0a9e4 --- /dev/null +++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61,62,63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61,63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61,63.ttf new file mode 100644 index 0000000..432b3b2 --- /dev/null +++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61,63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61.ttf new file mode 100644 index 0000000..d2402b4 --- /dev/null +++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.61.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.62.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.62.ttf new file mode 100644 index 0000000..907e8f7 --- /dev/null +++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.62.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.63.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.63.ttf new file mode 100644 index 0000000..741520c --- /dev/null +++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.retain-all-codepoint.ttf b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.retain-all-codepoint.ttf new file mode 100644 index 0000000..9744bc3 --- /dev/null +++ b/test/subset/data/expected/basics/NanumMyeongjo-Regular-subset.no-prune-unicode-ranges.retain-all-codepoint.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61,62,63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61,62,63.ttf new file mode 100644 index 0000000..712674f --- /dev/null +++ b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61,62,63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61,63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61,63.ttf new file mode 100644 index 0000000..f4b4a08 --- /dev/null +++ b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61,63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61.ttf new file mode 100644 index 0000000..691ce2e --- /dev/null +++ b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.61.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.62.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.62.ttf new file mode 100644 index 0000000..97913a4 --- /dev/null +++ b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.62.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.63.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.63.ttf new file mode 100644 index 0000000..085db02 --- /dev/null +++ b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.63.ttf Binary files differ
diff --git a/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.retain-all-codepoint.ttf b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.retain-all-codepoint.ttf new file mode 100644 index 0000000..712674f --- /dev/null +++ b/test/subset/data/expected/basics/Roboto-Regular.abc.no-prune-unicode-ranges.retain-all-codepoint.ttf Binary files differ
diff --git a/test/subset/data/profiles/no-prune-unicode-ranges.txt b/test/subset/data/profiles/no-prune-unicode-ranges.txt new file mode 100644 index 0000000..4d6872a --- /dev/null +++ b/test/subset/data/profiles/no-prune-unicode-ranges.txt
@@ -0,0 +1 @@ +--no-prune-unicode-ranges
diff --git a/test/subset/data/tests/basics.tests b/test/subset/data/tests/basics.tests index 79a784c..2e86e21 100644 --- a/test/subset/data/tests/basics.tests +++ b/test/subset/data/tests/basics.tests
@@ -15,6 +15,7 @@ gids.txt layout-features.txt keep-all-layout-features.txt +no-prune-unicode-ranges.txt SUBSETS: abc
diff --git a/util/options-subset.cc b/util/options-subset.cc index 36516ae..2b0314a 100644 --- a/util/options-subset.cc +++ b/util/options-subset.cc
@@ -311,6 +311,7 @@ {"set-overlaps-flag", 0, 0, G_OPTION_ARG_NONE, &this->input->overlaps_flag, "Set the overlaps flag on each glyph.", nullptr}, {"notdef-outline", 0, 0, G_OPTION_ARG_NONE, &this->input->notdef_outline, "Keep the outline of \'.notdef\' glyph", nullptr}, + {"no-prune-unicode-ranges", 0, 0, G_OPTION_ARG_NONE, &this->input->no_prune_unicode_ranges, "Don't change the 'OS/2 ulUnicodeRange*' bits.", nullptr}, {nullptr} }; parser->add_group (entries,