diff --git a/Lib/fontTools/feaLib/builder.py b/Lib/fontTools/feaLib/builder.py index 072844bd9..5e20e1b70 100644 --- a/Lib/fontTools/feaLib/builder.py +++ b/Lib/fontTools/feaLib/builder.py @@ -364,6 +364,11 @@ class Builder(object): if name in self.named_lookups_: raise FeatureLibError( 'Lookup "%s" has already been defined' % name, location) + if self.cur_feature_name_ == "aalt": + raise FeatureLibError( + "Lookup blocks cannot be placed inside 'aalt' features; " + "move it out, and then refer to it with a lookup statement", + location) self.cur_lookup_name_ = name self.named_lookups_[name] = None self.cur_lookup_ = None diff --git a/Lib/fontTools/feaLib/builder_test.py b/Lib/fontTools/feaLib/builder_test.py index f52434b9c..7c82f302e 100644 --- a/Lib/fontTools/feaLib/builder_test.py +++ b/Lib/fontTools/feaLib/builder_test.py @@ -329,6 +329,12 @@ class BuilderTest(unittest.TestCase): " sub A from [A.alt1 A.alt2];" "} foo;") + def test_lookup_inside_feature_aalt(self): + self.assertRaisesRegex( + FeatureLibError, + "Lookup blocks cannot be placed inside 'aalt' features", + self.build, "feature aalt {lookup L {} L;} aalt;") + def generate_feature_file_test(name): return lambda self: self.check_feature_file(name) @@ -339,4 +345,3 @@ for name in BuilderTest.TEST_FEATURE_FILES: if __name__ == "__main__": unittest.main() -