diff --git a/Lib/fontTools/voltLib/parser.py b/Lib/fontTools/voltLib/parser.py index 194f273ac..a452b9a49 100644 --- a/Lib/fontTools/voltLib/parser.py +++ b/Lib/fontTools/voltLib/parser.py @@ -73,7 +73,7 @@ class Parser(object): if self.next_token_ == "TYPE": self.expect_keyword_("TYPE") gtype = self.expect_name_() - assert gtype in ("BASE", "LIGATURE", "MARK") + assert gtype in ("BASE", "LIGATURE", "MARK", "COMPONENT") components = None if self.next_token_ == "COMPONENTS": self.expect_keyword_("COMPONENTS") diff --git a/Tests/voltLib/parser_test.py b/Tests/voltLib/parser_test.py index e74c4685b..51a65fc80 100644 --- a/Tests/voltLib/parser_test.py +++ b/Tests/voltLib/parser_test.py @@ -77,6 +77,22 @@ class ParserTest(unittest.TestCase): def_glyph.type, def_glyph.components), ("f_f", 320, None, "LIGATURE", 2)) + def test_def_glyph_mark(self): + [def_glyph] = self.parse( + 'DEF_GLYPH "brevecomb" ID 320 TYPE MARK END_GLYPH' + ).statements + self.assertEqual((def_glyph.name, def_glyph.id, def_glyph.unicode, + def_glyph.type, def_glyph.components), + ("brevecomb", 320, None, "MARK", None)) + + def test_def_glyph_component(self): + [def_glyph] = self.parse( + 'DEF_GLYPH "f.f_f" ID 320 TYPE COMPONENT END_GLYPH' + ).statements + self.assertEqual((def_glyph.name, def_glyph.id, def_glyph.unicode, + def_glyph.type, def_glyph.components), + ("f.f_f", 320, None, "COMPONENT", None)) + def test_def_glyph_no_type(self): [def_glyph] = self.parse( 'DEF_GLYPH "glyph20" ID 20 END_GLYPH'