[subset] Remove invalid glyphs from glypset to retain

Fixes https://github.com/harfbuzz/harfbuzz/pull/1388
pull/1291/head
Behdad Esfahbod 6 years ago
parent 11aa0468ac
commit 9e9f16c92d
  1. 13
      src/hb-subset-plan.cc

@ -67,6 +67,17 @@ _gsub_closure (hb_face_t *face, hb_set_t *gids_to_retain)
gids_to_retain);
}
static void
_remove_invalid_gids (hb_set_t *glyphs,
unsigned int num_glyphs)
{
hb_codepoint_t gid = HB_SET_VALUE_INVALID;
while (glyphs->next (&gid))
{
if (gid >= num_glyphs)
glyphs->del (gid);
}
}
static hb_set_t *
_populate_gids_to_retain (hb_face_t *face,
@ -112,6 +123,8 @@ _populate_gids_to_retain (hb_face_t *face,
}
hb_set_destroy (initial_gids_to_retain);
_remove_invalid_gids (all_gids_to_retain, face->get_num_glyphs ());
glyphs->alloc (all_gids_to_retain->get_population ());
gid = HB_SET_VALUE_INVALID;
while (all_gids_to_retain->next (&gid))

Loading…
Cancel
Save