summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorJames Godfrey-Kittle <jamesgk@google.com>2015-03-25 09:51:00 -0700
committerJames Godfrey-Kittle <jamesgk@google.com>2015-04-16 12:16:33 -0700
commitd2d15092848686d63df18c2495bd705d01713200 (patch)
tree1f7fbdbaa149d5b8b0a52ee7e36ae7cadb94325b /scripts
parente803deb97304248780b2c06f79c53eae20a94fd2 (diff)
Add support for table parsing in feature syntax.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/lib/fontbuild/features.py13
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."""