From d2d15092848686d63df18c2495bd705d01713200 Mon Sep 17 00:00:00 2001 From: James Godfrey-Kittle Date: Wed, 25 Mar 2015 09:51:00 -0700 Subject: Add support for table parsing in feature syntax. --- scripts/lib/fontbuild/features.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/lib/fontbuild/features.py b/scripts/lib/fontbuild/features.py index d3f86c6..898aa56 100755 --- a/scripts/lib/fontbuild/features.py +++ b/scripts/lib/fontbuild/features.py @@ -39,9 +39,10 @@ parser.subType1And4RE = re.compile( "\s*;" # ; ) -# don't be greedy when matching feature/lookup content (may be duplicates) +# don't be greedy when matching feature/lookup/table content (may be duplicates) parser.featureContentRE[3] = parser.featureContentRE[3].replace('*', '*?') parser.lookupContentRE[3] = parser.lookupContentRE[3].replace('*', '*?') +parser.tableContentRE[3] = parser.tableContentRE[3].replace('*', '*?') class FilterFeatureWriter(FDKSyntaxFeatureWriter): @@ -52,6 +53,7 @@ class FilterFeatureWriter(FDKSyntaxFeatureWriter): self.refs = refs self.featureNames = set() self.lookupNames = set() + self.tableNames = set() self.languageSystems = set() super(FilterFeatureWriter, self).__init__( name=name, isFeature=isFeature) @@ -149,6 +151,15 @@ class FilterFeatureWriter(FDKSyntaxFeatureWriter): self.languageSystems.add(system) super(FilterFeatureWriter, self).languageSystem(langTag, scriptTag) + def table(self, name, data): + """Adds a table only once.""" + if name in self.tableNames: + return + self.tableNames.add(name) + self._instructions.append("table %s {" % name) + self._instructions.extend([" %s %s;" % line for line in data]) + self._instructions.append("} %s;" % name) + def compileFeatureRE(name): """Compiles a feature-matching regex.""" -- cgit v1.2.3