Horrid hack to assign new gids. Use DEBUG_MSG over fprintf
This commit is contained in:
parent
8b80cbb1dd
commit
eb485bb9e9
|
@ -27,7 +27,24 @@
|
||||||
#include "hb-subset-plan.hh"
|
#include "hb-subset-plan.hh"
|
||||||
#include "hb-subset-private.hh"
|
#include "hb-subset-private.hh"
|
||||||
|
|
||||||
// TODO(Q1) map from old:new gid
|
hb_bool_t
|
||||||
|
hb_subset_plan_new_gid_for_old_id(hb_subset_plan_t *plan,
|
||||||
|
hb_codepoint_t old_gid,
|
||||||
|
hb_codepoint_t *new_gid) {
|
||||||
|
// TODO(Q1) lookup in map from old:new gid
|
||||||
|
// TEMPORARY: just loop over ids to retain and count up
|
||||||
|
hb_codepoint_t current = -1;
|
||||||
|
hb_codepoint_t count = 0;
|
||||||
|
while (hb_set_next(plan->glyphs_to_retain, ¤t)) {
|
||||||
|
if (old_gid == current) {
|
||||||
|
*new_gid = count;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
hb_set_t *
|
hb_set_t *
|
||||||
glyph_ids_to_retain (hb_subset_face_t *face,
|
glyph_ids_to_retain (hb_subset_face_t *face,
|
||||||
hb_set_t *codepoints)
|
hb_set_t *codepoints)
|
||||||
|
@ -37,13 +54,15 @@ glyph_ids_to_retain (hb_subset_face_t *face,
|
||||||
while (hb_set_next(codepoints, &cp)) {
|
while (hb_set_next(codepoints, &cp)) {
|
||||||
hb_codepoint_t gid;
|
hb_codepoint_t gid;
|
||||||
if (face->cmap.get_nominal_glyph(cp, &gid)) {
|
if (face->cmap.get_nominal_glyph(cp, &gid)) {
|
||||||
// TODO(Q1) a nice way to turn on/off logs
|
DEBUG_MSG(SUBSET, nullptr, "gid for U+%04X is %d\n", cp, gid);
|
||||||
fprintf(stderr, "gid for U+%04X is %d\n", cp, gid);
|
|
||||||
hb_set_add(gids, cp);
|
hb_set_add(gids, cp);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Unable to resolve gid for U+%04X\n", cp);
|
DEBUG_MSG(SUBSET, nullptr, "Unable to resolve gid for U+%04X\n", cp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(Q1) expand with glyphs that make up complex glyphs
|
||||||
|
// TODO expand with glyphs reached by G*
|
||||||
return gids;
|
return gids;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,11 @@ hb_subset_plan_create (hb_subset_face_t *face,
|
||||||
hb_subset_profile_t *profile,
|
hb_subset_profile_t *profile,
|
||||||
hb_subset_input_t *input);
|
hb_subset_input_t *input);
|
||||||
|
|
||||||
|
hb_bool_t
|
||||||
|
hb_subset_plan_new_gid_for_old_id(hb_subset_plan_t *plan,
|
||||||
|
hb_codepoint_t old_gid,
|
||||||
|
hb_codepoint_t *new_gid /* OUT */);
|
||||||
|
|
||||||
hb_subset_plan_t *
|
hb_subset_plan_t *
|
||||||
hb_subset_plan_get_empty ();
|
hb_subset_plan_get_empty ();
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,15 @@ hb_subset (hb_subset_profile_t *profile,
|
||||||
|
|
||||||
hb_subset_plan_t *plan = hb_subset_plan_create (face, profile, input);
|
hb_subset_plan_t *plan = hb_subset_plan_create (face, profile, input);
|
||||||
|
|
||||||
|
hb_codepoint_t old_gid = -1;
|
||||||
|
while (hb_set_next(plan->glyphs_to_retain, &old_gid)) {
|
||||||
|
hb_codepoint_t new_gid;
|
||||||
|
if (hb_subset_plan_new_gid_for_old_id(plan, old_gid, &new_gid)) {
|
||||||
|
DEBUG_MSG(SUBSET, nullptr, "Remap %d : %d\n", old_gid, new_gid);
|
||||||
|
} else {
|
||||||
|
DEBUG_MSG(SUBSET, nullptr, "Remap %d : DOOM! No new ID\n", old_gid);
|
||||||
|
}
|
||||||
|
}
|
||||||
// TODO:
|
// TODO:
|
||||||
// - Create initial header + table directory
|
// - Create initial header + table directory
|
||||||
// - Loop through the set of tables to be kept:
|
// - Loop through the set of tables to be kept:
|
||||||
|
|
Loading…
Reference in New Issue