diff --git a/src/hb-subset-cff-common.hh b/src/hb-subset-cff-common.hh index 6debb85db..944d5e901 100644 --- a/src/hb-subset-cff-common.hh +++ b/src/hb-subset-cff-common.hh @@ -419,7 +419,7 @@ struct ParsedCStr : ParsedValues SUPER::add_op (op, substr); } - inline void addCallOp (OpCode op, const SubByteStr& substr, unsigned int subr_num) + inline void add_call_op (OpCode op, const SubByteStr& substr, unsigned int subr_num) { if (!is_parsed ()) { diff --git a/src/hb-subset-cff1.cc b/src/hb-subset-cff1.cc index baac97714..414642f3f 100644 --- a/src/hb-subset-cff1.cc +++ b/src/hb-subset-cff1.cc @@ -392,7 +392,7 @@ struct CFF1CSOpSet_SubrSubset : CFF1CSOpSetaddCallOp (op, substr, env.context.subr_num); + param.current_parsed_str->add_call_op (op, substr, env.context.subr_num); hb_set_add (closure, env.context.subr_num); param.set_current_str (env); } @@ -592,7 +592,7 @@ struct cff_subset_plan { num_glyphs = plan->glyphs.len; orig_fdcount = acc.fdCount; drop_hints = plan->drop_hints; - desubroutinize = true; // plan->desubroutinize; + desubroutinize = plan->desubroutinize; /* check whether the subset renumbers any glyph IDs */ gid_renum = false; diff --git a/src/hb-subset-input.cc b/src/hb-subset-input.cc index d59b5bae0..01710f297 100644 --- a/src/hb-subset-input.cc +++ b/src/hb-subset-input.cc @@ -131,3 +131,16 @@ hb_subset_input_get_drop_layout (hb_subset_input_t *subset_input) { return subset_input->drop_layout; } + +HB_EXTERN void +hb_subset_input_set_desubroutinize (hb_subset_input_t *subset_input, + hb_bool_t desubroutinize) +{ + subset_input->desubroutinize = desubroutinize; +} + +HB_EXTERN hb_bool_t +hb_subset_input_get_desubroutinize (hb_subset_input_t *subset_input) +{ + return subset_input->desubroutinize; +} diff --git a/src/hb-subset.h b/src/hb-subset.h index 8b07a45e9..ff4dcccbb 100644 --- a/src/hb-subset.h +++ b/src/hb-subset.h @@ -66,6 +66,11 @@ hb_subset_input_set_drop_layout (hb_subset_input_t *subset_input, HB_EXTERN hb_bool_t hb_subset_input_get_drop_layout (hb_subset_input_t *subset_input); +HB_EXTERN void +hb_subset_input_set_desubroutinize (hb_subset_input_t *subset_input, + hb_bool_t desubroutinize); +HB_EXTERN hb_bool_t +hb_subset_input_get_desubroutinize (hb_subset_input_t *subset_input); /* hb_subset() */ HB_EXTERN hb_face_t * diff --git a/util/hb-subset.cc b/util/hb-subset.cc index 3f0963c3f..202d15a5d 100644 --- a/util/hb-subset.cc +++ b/util/hb-subset.cc @@ -90,6 +90,7 @@ struct subset_consumer_t void finish (const font_options_t *font_opts) { hb_subset_input_set_drop_hints (input, subset_options.drop_hints); + hb_subset_input_set_desubroutinize (input, subset_options.desubroutinize); hb_face_t *face = hb_font_get_face (font); diff --git a/util/options.cc b/util/options.cc index e52d63be8..e185e24e5 100644 --- a/util/options.cc +++ b/util/options.cc @@ -970,7 +970,7 @@ subset_options_t::add_options (option_parser_t *parser) GOptionEntry entries[] = { {"no-hinting", 0, 0, G_OPTION_ARG_NONE, &this->drop_hints, "Whether to drop hints", nullptr}, - {"desubroutinize", 0, 0, G_OPTION_ARG_NONE, &this->desubroutinize, "Remove CFF/CFF2 use of subroutinizes", nullptr}, + {"desubroutinize", 0, 0, G_OPTION_ARG_NONE, &this->desubroutinize, "Remove CFF/CFF2 use of subroutines", nullptr}, {nullptr} };