[subset] Switch building of glyph maps in subset plan to use iterators.
This commit is contained in:
parent
971020eca7
commit
5e3cbed048
|
@ -218,9 +218,7 @@ struct hb_pair_t
|
|||
hb_pair_t (const pair_t& o) : first (o.first), second (o.second) {}
|
||||
|
||||
hb_pair_t<T1, T2> reverse () const
|
||||
{
|
||||
return hb_pair_t<T1, T2> (second, first);
|
||||
}
|
||||
{ return hb_pair_t<T1, T2> (second, first); }
|
||||
|
||||
bool operator == (const pair_t& o) const { return first == o.first && second == o.second; }
|
||||
|
||||
|
|
|
@ -153,36 +153,36 @@ _populate_gids_to_retain (hb_face_t *face,
|
|||
}
|
||||
|
||||
static void
|
||||
_create_old_gid_to_new_gid_map (const hb_face_t *face,
|
||||
bool retain_gids,
|
||||
hb_set_t *all_gids_to_retain,
|
||||
hb_map_t *glyph_map, /* OUT */
|
||||
hb_map_t *reverse_glyph_map, /* OUT */
|
||||
unsigned int *num_glyphs /* OUT */)
|
||||
_create_old_gid_to_new_gid_map (const hb_face_t *face,
|
||||
bool retain_gids,
|
||||
const hb_set_t *all_gids_to_retain,
|
||||
hb_map_t *glyph_map, /* OUT */
|
||||
hb_map_t *reverse_glyph_map, /* OUT */
|
||||
unsigned int *num_glyphs /* OUT */)
|
||||
{
|
||||
hb_codepoint_t gid = HB_SET_VALUE_INVALID;
|
||||
unsigned int length = 0;
|
||||
for (unsigned int i = 0; all_gids_to_retain->next (&gid); i++) {
|
||||
if (!retain_gids)
|
||||
{
|
||||
glyph_map->set (gid, i);
|
||||
reverse_glyph_map->set (i, gid);
|
||||
}
|
||||
else
|
||||
{
|
||||
glyph_map->set (gid, gid);
|
||||
reverse_glyph_map->set (gid, gid);
|
||||
}
|
||||
++length;
|
||||
}
|
||||
if (!retain_gids || length == 0)
|
||||
{
|
||||
*num_glyphs = length;
|
||||
}
|
||||
else
|
||||
if (!retain_gids)
|
||||
{
|
||||
+ hb_enumerate (hb_iter (all_gids_to_retain), (hb_codepoint_t) 0)
|
||||
| hb_sink (reverse_glyph_map)
|
||||
;
|
||||
*num_glyphs = reverse_glyph_map->get_population ();
|
||||
} else {
|
||||
+ hb_iter (all_gids_to_retain)
|
||||
| hb_map ([=] (hb_codepoint_t _) {
|
||||
return hb_pair_t<hb_codepoint_t, hb_codepoint_t> (_, _);
|
||||
})
|
||||
| hb_sink (reverse_glyph_map);
|
||||
;
|
||||
|
||||
// TODO(grieger): Should we discard glyphs past the max glyph to keep?
|
||||
// *num_glyphs = + hb_iter (all_gids_to_retain) | hb_reduce (hb_max, 0);
|
||||
*num_glyphs = face->get_num_glyphs ();
|
||||
}
|
||||
|
||||
+ reverse_glyph_map->iter ()
|
||||
| hb_map (&hb_pair_t<hb_codepoint_t, hb_codepoint_t>::reverse)
|
||||
| hb_sink (glyph_map)
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue