diff --git a/src/hb-subset-cff-common.cc b/src/hb-subset-cff-common.cc index 46821fec1..f29937a22 100644 --- a/src/hb-subset-cff-common.cc +++ b/src/hb-subset-cff-common.cc @@ -66,21 +66,17 @@ hb_plan_subset_cff_fdselect (const hb_subset_plan_t *plan, hb_set_t *set = hb_set_create (); if (set == &Null (hb_set_t)) return false; - hb_codepoint_t prev_fd = 0; + hb_codepoint_t prev_fd = CFF_UNDEF_CODE; for (hb_codepoint_t i = 0; i < subset_num_glyphs; i++) { hb_codepoint_t glyph; hb_codepoint_t fd; if (!plan->old_gid_for_new_gid (i, &glyph)) { - /* for a missing glyph, use the same fd as the previous - * as an attempt to minimize the number of ranges */ - fd = prev_fd; - } - else - { - fd = src.get_fd (glyph); + /* fonttools retains FDSelect & font dicts for missing glyphs. do the same */ + glyph = i; } + fd = src.get_fd (glyph); set->add (fd); if (fd != prev_fd) diff --git a/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf b/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf index 6da8ad376..906bdbefd 100644 Binary files a/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf and b/test/api/fonts/SourceHanSans-Regular.41,4C2E.retaingids.otf differ