[feaLib] Check lookup index in chaining lookups
Raise if lookup_index is None, which would happen only of the lookup referenced belongs to the wrong table. The error message needs to be less cryptic, though. Fixes https://github.com/fonttools/fonttools/issues/1896
This commit is contained in:
parent
ec6205199e
commit
4526e164f1
@ -1263,6 +1263,9 @@ class ChainContextPosBuilder(LookupBuilder):
|
||||
st.PosLookupRecord = []
|
||||
for sequenceIndex, l in enumerate(lookups):
|
||||
if l is not None:
|
||||
if l.lookup_index is None:
|
||||
raise FeatureLibError('Missing lookup index',
|
||||
self.location)
|
||||
rec = otTables.PosLookupRecord()
|
||||
rec.SequenceIndex = sequenceIndex
|
||||
rec.LookupListIndex = l.lookup_index
|
||||
@ -1310,6 +1313,9 @@ class ChainContextSubstBuilder(LookupBuilder):
|
||||
st.SubstLookupRecord = []
|
||||
for sequenceIndex, l in enumerate(lookups):
|
||||
if l is not None:
|
||||
if l.lookup_index is None:
|
||||
raise FeatureLibError('Missing lookup index',
|
||||
self.location)
|
||||
rec = otTables.SubstLookupRecord()
|
||||
rec.SequenceIndex = sequenceIndex
|
||||
rec.LookupListIndex = l.lookup_index
|
||||
|
@ -430,6 +430,28 @@ class BuilderTest(unittest.TestCase):
|
||||
"Lookup blocks cannot be placed inside 'aalt' features",
|
||||
self.build, "feature aalt {lookup L {} L;} aalt;")
|
||||
|
||||
def test_chain_subst_refrences_GPOS_looup(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
"Missing lookup index",
|
||||
self.build,
|
||||
"lookup dummy { pos a 50; } dummy;"
|
||||
"feature test {"
|
||||
" sub a' lookup dummy b;"
|
||||
"} test;"
|
||||
)
|
||||
|
||||
def test_chain_pos_refrences_GSUB_looup(self):
|
||||
self.assertRaisesRegex(
|
||||
FeatureLibError,
|
||||
"Missing lookup index",
|
||||
self.build,
|
||||
"lookup dummy { sub a by A; } dummy;"
|
||||
"feature test {"
|
||||
" pos a' lookup dummy b;"
|
||||
"} test;"
|
||||
)
|
||||
|
||||
def test_extensions(self):
|
||||
class ast_BaseClass(ast.MarkClass):
|
||||
def asFea(self, indent=""):
|
||||
|
Loading…
x
Reference in New Issue
Block a user