12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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())
|