[subset] Use gids_to_retain_sorted to produce old gid -> new gid mapping since it now has the more complete set.

This commit is contained in:
Garret Rieger 2018-02-16 15:20:14 -07:00 committed by Behdad Esfahbod
parent dcac9fe964
commit dc6d67df13
1 changed files with 6 additions and 4 deletions

View File

@ -63,10 +63,11 @@ hb_subset_plan_new_gid_for_old_id (hb_subset_plan_t *plan,
hb_codepoint_t *new_gid)
{
// the index in old_gids is the new gid; only up to codepoints.len are valid
for (unsigned int i = 0; i < plan->gids_to_retain.len; i++) {
if (plan->gids_to_retain[i] == old_gid) {
// +1: assign new gids from 1..N; 0 is special
*new_gid = i + 1;
for (unsigned int i = 0; i < plan->gids_to_retain_sorted.len; i++)
{
if (plan->gids_to_retain_sorted[i] == old_gid)
{
*new_gid = i;
return true;
}
}
@ -158,6 +159,7 @@ _populate_gids_to_retain (hb_face_t *face,
}
// Transfer to a sorted list.
old_gids_sorted.alloc (hb_set_get_population (all_gids_to_retain));
unsigned int gid = HB_SET_VALUE_INVALID;
while (hb_set_next (all_gids_to_retain, &gid))
{