[subset-plan] Use gid-to-unicodes multimap
One test fails. Need investigation.
This commit is contained in:
parent
da7961b2e8
commit
32e049a315
|
@ -524,14 +524,39 @@ _populate_unicodes_to_retain (const hb_set_t *unicodes,
|
|||
cmap_unicodes = &plan->accelerator->unicodes;
|
||||
}
|
||||
|
||||
for (hb_codepoint_t cp : *cmap_unicodes)
|
||||
if (plan->accelerator &&
|
||||
unicodes->get_population () < cmap_unicodes->get_population () &&
|
||||
glyphs->get_population () < cmap_unicodes->get_population ())
|
||||
{
|
||||
hb_codepoint_t gid = (*unicode_glyphid_map)[cp];
|
||||
if (!unicodes->has (cp) && !glyphs->has (gid))
|
||||
continue;
|
||||
auto &gid_to_unicodes = plan->accelerator->gid_to_unicodes;
|
||||
for (hb_codepoint_t gid : *glyphs)
|
||||
{
|
||||
auto unicodes = gid_to_unicodes.get (gid);
|
||||
|
||||
plan->codepoint_to_glyph->set (cp, gid);
|
||||
plan->unicode_to_new_gid_list.push (hb_pair (cp, gid));
|
||||
for (hb_codepoint_t cp : unicodes)
|
||||
{
|
||||
plan->codepoint_to_glyph->set (cp, gid);
|
||||
plan->unicode_to_new_gid_list.push (hb_pair (cp, gid));
|
||||
}
|
||||
}
|
||||
for (hb_codepoint_t cp : *unicodes)
|
||||
{
|
||||
hb_codepoint_t gid = (*unicode_glyphid_map)[cp];
|
||||
plan->codepoint_to_glyph->set (cp, gid);
|
||||
plan->unicode_to_new_gid_list.push (hb_pair (cp, gid));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (hb_codepoint_t cp : *cmap_unicodes)
|
||||
{
|
||||
hb_codepoint_t gid = (*unicode_glyphid_map)[cp];
|
||||
if (!unicodes->has (cp) && !glyphs->has (gid))
|
||||
continue;
|
||||
|
||||
plan->codepoint_to_glyph->set (cp, gid);
|
||||
plan->unicode_to_new_gid_list.push (hb_pair (cp, gid));
|
||||
}
|
||||
}
|
||||
|
||||
/* Add gids which where requested, but not mapped in cmap */
|
||||
|
|
Loading…
Reference in New Issue