diff --git a/Lib/fontTools/feaLib/parser.py b/Lib/fontTools/feaLib/parser.py index d658cd42d..8e3a1cd92 100644 --- a/Lib/fontTools/feaLib/parser.py +++ b/Lib/fontTools/feaLib/parser.py @@ -652,7 +652,7 @@ class Parser(object): assert self.cur_token_ == "feature" location = self.cur_token_location_ tag = self.expect_tag_() - vertical = (tag == "vkrn") + vertical = (tag in {"vkrn", "vpal", "vhal", "valt"}) use_extension = False if self.next_token_ == "useExtension": diff --git a/Lib/fontTools/feaLib/parser_test.py b/Lib/fontTools/feaLib/parser_test.py index c5d9e742a..f30134383 100644 --- a/Lib/fontTools/feaLib/parser_test.py +++ b/Lib/fontTools/feaLib/parser_test.py @@ -908,6 +908,15 @@ class ParserTest(unittest.TestCase): self.assertIsNone(value.xAdvDevice) self.assertIsNone(value.yAdvDevice) + def test_valuerecord_format_a_vertical_contexts_(self): + for tag in "vkrn vpal vhal valt".split(): + doc = self.parse( + "feature %s {valueRecordDef 77 foo;} %s;" % (tag, tag)) + value = doc.statements[0].statements[0].value + if value.yAdvance != 77: + self.fail(msg="feature %s should be a vertical context " + "for ValueRecord format A" % tag) + def test_valuerecord_format_b(self): doc = self.parse("feature liga {valueRecordDef <1 2 3 4> foo;} liga;") value = doc.statements[0].statements[0].value