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