aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/varLib/avar.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/varLib/avar.py')
-rw-r--r--Lib/fontTools/varLib/avar.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/Lib/fontTools/varLib/avar.py b/Lib/fontTools/varLib/avar.py
new file mode 100644
index 00000000..60f0d7e7
--- /dev/null
+++ b/Lib/fontTools/varLib/avar.py
@@ -0,0 +1,70 @@
+from fontTools.varLib import _add_avar, load_designspace
+from fontTools.misc.cliTools import makeOutputFileName
+import logging
+
+log = logging.getLogger("fontTools.varLib.avar")
+
+
+def main(args=None):
+ """Add `avar` table from designspace file to variable font."""
+
+ if args is None:
+ import sys
+
+ args = sys.argv[1:]
+
+ from fontTools import configLogger
+ from fontTools.ttLib import TTFont
+ from fontTools.designspaceLib import DesignSpaceDocument
+ import argparse
+
+ parser = argparse.ArgumentParser(
+ "fonttools varLib.avar",
+ description="Add `avar` table from designspace file to variable font.",
+ )
+ parser.add_argument("font", metavar="varfont.ttf", help="Variable-font file.")
+ parser.add_argument(
+ "designspace", metavar="family.designspace", help="Designspace file."
+ )
+ parser.add_argument(
+ "-o",
+ "--output-file",
+ type=str,
+ help="Output font file name.",
+ )
+ parser.add_argument(
+ "-v", "--verbose", action="store_true", help="Run more verbosely."
+ )
+
+ options = parser.parse_args(args)
+
+ configLogger(level=("INFO" if options.verbose else "WARNING"))
+
+ font = TTFont(options.font)
+ if not "fvar" in font:
+ log.error("Not a variable font.")
+ return 1
+
+ axisTags = [a.axisTag for a in font["fvar"].axes]
+
+ ds = load_designspace(options.designspace)
+
+ if "avar" in font:
+ log.warning("avar table already present, overwriting.")
+ del font["avar"]
+
+ _add_avar(font, ds.axes, ds.axisMappings, axisTags)
+
+ if options.output_file is None:
+ outfile = makeOutputFileName(options.font, overWrite=True, suffix=".avar")
+ else:
+ outfile = options.output_file
+ if outfile:
+ log.info("Saving %s", outfile)
+ font.save(outfile)
+
+
+if __name__ == "__main__":
+ import sys
+
+ sys.exit(main())