diff options
author | James Godfrey-Kittle <jamesgk@google.com> | 2015-03-25 09:51:00 -0700 |
---|---|---|
committer | James Godfrey-Kittle <jamesgk@google.com> | 2015-04-16 12:16:33 -0700 |
commit | d2d15092848686d63df18c2495bd705d01713200 (patch) | |
tree | 1f7fbdbaa149d5b8b0a52ee7e36ae7cadb94325b /scripts | |
parent | e803deb97304248780b2c06f79c53eae20a94fd2 (diff) |
Add support for table parsing in feature syntax.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/lib/fontbuild/features.py | 13 |
1 files changed, 12 insertions, 1 deletions
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."""
|