[subset] In LigatureSubst subsetting, check if the ligature glyph is in glyphset.
Otherwise coverage will not match the retained ligature sets.
This commit is contained in:
parent
ac4c3b3e85
commit
8658c257c4
|
@ -29,6 +29,9 @@ struct Ligature
|
||||||
bool intersects (const hb_set_t *glyphs) const
|
bool intersects (const hb_set_t *glyphs) const
|
||||||
{ return hb_all (component, glyphs); }
|
{ return hb_all (component, glyphs); }
|
||||||
|
|
||||||
|
bool intersects_lig_glyph (const hb_set_t *glyphs) const
|
||||||
|
{ return glyphs->has(ligGlyph); }
|
||||||
|
|
||||||
void closure (hb_closure_context_t *c) const
|
void closure (hb_closure_context_t *c) const
|
||||||
{
|
{
|
||||||
if (!intersects (c->glyphs)) return;
|
if (!intersects (c->glyphs)) return;
|
||||||
|
|
|
@ -34,6 +34,18 @@ struct LigatureSet
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool intersects_lig_glyph (const hb_set_t *glyphs) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
+ hb_iter (ligature)
|
||||||
|
| hb_map (hb_add (this))
|
||||||
|
| hb_map ([glyphs] (const Ligature<Types> &_) {
|
||||||
|
return _.intersects_lig_glyph (glyphs) && _.intersects (glyphs);
|
||||||
|
})
|
||||||
|
| hb_any
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
void closure (hb_closure_context_t *c) const
|
void closure (hb_closure_context_t *c) const
|
||||||
{
|
{
|
||||||
+ hb_iter (ligature)
|
+ hb_iter (ligature)
|
||||||
|
|
|
@ -130,7 +130,7 @@ struct LigatureSubstFormat1_2
|
||||||
+ hb_zip (this+coverage, hb_iter (ligatureSet) | hb_map (hb_add (this)))
|
+ hb_zip (this+coverage, hb_iter (ligatureSet) | hb_map (hb_add (this)))
|
||||||
| hb_filter (glyphset, hb_first)
|
| hb_filter (glyphset, hb_first)
|
||||||
| hb_filter ([&] (const LigatureSet<Types>& _) {
|
| hb_filter ([&] (const LigatureSet<Types>& _) {
|
||||||
return _.intersects (&glyphset);
|
return _.intersects_lig_glyph (&glyphset);
|
||||||
}, hb_second)
|
}, hb_second)
|
||||||
| hb_map (hb_first)
|
| hb_map (hb_first)
|
||||||
| hb_sink (new_coverage);
|
| hb_sink (new_coverage);
|
||||||
|
|
Loading…
Reference in New Issue