diff --git a/Lib/fontTools/varLib/merger.py b/Lib/fontTools/varLib/merger.py index a4db492b7..b2c34016b 100644 --- a/Lib/fontTools/varLib/merger.py +++ b/Lib/fontTools/varLib/merger.py @@ -936,6 +936,15 @@ def merge(merger, self, lst): self.EntryExitCount = len(self.EntryExitRecord) +@AligningMerger.merger(ot.EntryExitRecord) +def merge(merger, self, lst): + if all(master.EntryAnchor is None for master in lst): + self.EntryAnchor = None + if all(master.ExitAnchor is None for master in lst): + self.ExitAnchor = None + merger.mergeObjects(self, lst) + + @AligningMerger.merger(ot.Lookup) def merge(merger, self, lst): subtables = merger.lookup_subtables = [l.SubTable for l in lst] diff --git a/Tests/varLib/merger_test.py b/Tests/varLib/merger_test.py index e5ae61c60..e44d466da 100644 --- a/Tests/varLib/merger_test.py +++ b/Tests/varLib/merger_test.py @@ -1902,32 +1902,38 @@ class SparsePositioningMergerTest: ds.sources[0].font.newGlyph("a").unicode = ord("a") ds.sources[0].font.newGlyph("b").unicode = ord("b") + ds.sources[0].font.newGlyph("c").unicode = ord("c") ds.sources[ 0 ].font.features.text = """ feature curs { position cursive a ; + position cursive c ; } curs; """ ds.sources[1].font.newGlyph("a").unicode = ord("a") ds.sources[1].font.newGlyph("b").unicode = ord("b") + ds.sources[1].font.newGlyph("c").unicode = ord("c") ds.sources[ 1 ].font.features.text = """ feature curs { position cursive a ; position cursive b ; + position cursive c ; } curs; """ ds.sources[2].font.newGlyph("a").unicode = ord("a") ds.sources[2].font.newGlyph("b").unicode = ord("b") + ds.sources[2].font.newGlyph("c").unicode = ord("c") ds.sources[ 2 ].font.features.text = """ feature curs { position cursive b ; + position cursive c ; } curs; """