[subset] when closing glyphs in context lookups don't use a current glyph set if a lookup is already applied.

This commit is contained in:
Garret Rieger 2021-03-25 19:14:48 -07:00
parent 2773d05740
commit b10741ca7f
13 changed files with 9 additions and 10 deletions

View File

@ -1250,10 +1250,11 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
unsigned seqIndex = lookupRecord[i].sequenceIndex; unsigned seqIndex = lookupRecord[i].sequenceIndex;
if (seqIndex >= inputCount) continue; if (seqIndex >= inputCount) continue;
hb_set_t *pos_glyphs = hb_set_create (); hb_set_t *pos_glyphs = nullptr;
if (hb_set_is_empty (covered_seq_indicies) || !hb_set_has (covered_seq_indicies, seqIndex)) if (hb_set_is_empty (covered_seq_indicies) || !hb_set_has (covered_seq_indicies, seqIndex))
{ {
pos_glyphs = hb_set_create ();
if (seqIndex == 0) if (seqIndex == 0)
{ {
switch (context_format) { switch (context_format) {
@ -1283,6 +1284,7 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
} }
hb_set_add (covered_seq_indicies, seqIndex); hb_set_add (covered_seq_indicies, seqIndex);
if (pos_glyphs)
c->push_cur_active_glyphs (pos_glyphs); c->push_cur_active_glyphs (pos_glyphs);
unsigned endIndex = inputCount; unsigned endIndex = inputCount;
@ -1291,9 +1293,11 @@ static void context_closure_recurse_lookups (hb_closure_context_t *c,
c->recurse (lookupRecord[i].lookupListIndex, covered_seq_indicies, seqIndex, endIndex); c->recurse (lookupRecord[i].lookupListIndex, covered_seq_indicies, seqIndex, endIndex);
if (pos_glyphs) {
c->pop_cur_done_glyphs (); c->pop_cur_done_glyphs ();
hb_set_destroy (pos_glyphs); hb_set_destroy (pos_glyphs);
} }
}
hb_set_destroy (covered_seq_indicies); hb_set_destroy (covered_seq_indicies);
} }

View File

@ -2,12 +2,7 @@ FONTS:
NotoNastaliqUrdu-Bold.ttf NotoNastaliqUrdu-Bold.ttf
PROFILES: PROFILES:
keep-layout.txt
keep-layout-retain-gids.txt keep-layout-retain-gids.txt
SUBSETS: SUBSETS:
ال الح
الأحلام.
غير
سماء لا
الحب