diff options
-rwxr-xr-x | scripts/lib/fontbuild/features.py | 17 | ||||
-rwxr-xr-x | scripts/lib/fontbuild/markFeature.py | 7 | ||||
-rwxr-xr-x | scripts/lib/fontbuild/mkmkFeature.py | 7 |
3 files changed, 25 insertions, 6 deletions
diff --git a/scripts/lib/fontbuild/features.py b/scripts/lib/fontbuild/features.py index 3b52f76..2de484d 100755 --- a/scripts/lib/fontbuild/features.py +++ b/scripts/lib/fontbuild/features.py @@ -150,6 +150,23 @@ class FilterFeatureWriter(FDKSyntaxFeatureWriter): super(FilterFeatureWriter, self).languageSystem(langTag, scriptTag)
+def compileFeatureRE(name):
+ """Compiles a feature-matching regex using feaTool's template."""
+ featureRE = list(parser.featureContentRE)
+ featureRE.insert(2, name)
+ featureRE.insert(6, name)
+ return re.compile("".join(featureRE))
+
+
+def updateFeature(font, name, value):
+ """Add a feature definition, or replace existing one."""
+ featureRE = compileFeatureRE(name)
+ if featureRE.search(font.features.text):
+ font.features.text = featureRE.sub(value, font.features.text)
+ else:
+ font.features.text += "\n" + value
+
+
def readFeatureFile(font, text):
"""Incorporate valid definitions from feature text into font."""
writer = FilterFeatureWriter(set(font.keys()))
diff --git a/scripts/lib/fontbuild/markFeature.py b/scripts/lib/fontbuild/markFeature.py index c966085..e2e36c1 100755 --- a/scripts/lib/fontbuild/markFeature.py +++ b/scripts/lib/fontbuild/markFeature.py @@ -1,3 +1,6 @@ +from fontbuild.features import updateFeature
+
+
aliases = [["uni0430", "a"], ["uni0435", "e"], ["uni0440", "p"], ["uni0441", "c"], ["uni0445", "x"], ["uni0455", "s"], ["uni0456", "i"], ["uni0471", "psi"]]
def GetAliaseName(gname):
@@ -79,6 +82,4 @@ def GenerateFeature_mark(font): text += "} mark;\n"
- if "mark" not in font.features.tags:
- font.features.tags.append("mark")
- font.features.values["mark"] = text
+ updateFeature(font, "mark", text)
diff --git a/scripts/lib/fontbuild/mkmkFeature.py b/scripts/lib/fontbuild/mkmkFeature.py index e2195f5..a839dae 100755 --- a/scripts/lib/fontbuild/mkmkFeature.py +++ b/scripts/lib/fontbuild/mkmkFeature.py @@ -1,3 +1,6 @@ +from fontbuild.features import updateFeature
+
+
def CreateAccNameList(font, acc_anchor_name):
lst = []
for g in font:
@@ -56,6 +59,4 @@ def GenerateFeature_mkmk(font): text += "} mkmk;\n"
- if "mkmk" not in font.features.tags:
- font.features.tags.append("mkmk")
- font.features.values["mkmk"] = text
+ updateFeature(font, "mkmk", text)
|