[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,7 +1284,8 @@ 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);
c->push_cur_active_glyphs (pos_glyphs); if (pos_glyphs)
c->push_cur_active_glyphs (pos_glyphs);
unsigned endIndex = inputCount; unsigned endIndex = inputCount;
if (context_format == ContextFormat::CoverageBasedContext) if (context_format == ContextFormat::CoverageBasedContext)
@ -1291,8 +1293,10 @@ 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);
c->pop_cur_done_glyphs (); if (pos_glyphs) {
hb_set_destroy (pos_glyphs); c->pop_cur_done_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:
ال الح
الأحلام.
غير
سماء لا
الحب