Spaces:
Running
Running
| from fontTools.varLib import _add_fvar, _add_avar, load_designspace | |
| from fontTools.ttLib import newTable | |
| import logging | |
| log = logging.getLogger("fontTools.varLib.avar") | |
| def build(font, designspace_file): | |
| ds = load_designspace(designspace_file, require_sources=False) | |
| if not "fvar" in font: | |
| # if "name" not in font: | |
| font["name"] = newTable("name") | |
| _add_fvar(font, ds.axes, ds.instances) | |
| axisTags = [a.axisTag for a in font["fvar"].axes] | |
| if "avar" in font: | |
| log.warning("avar table already present, overwriting.") | |
| del font["avar"] | |
| _add_avar(font, ds.axes, ds.axisMappings, axisTags) | |
| def main(args=None): | |
| """Add `avar` table from designspace file to variable font.""" | |
| from fontTools.ttLib import TTFont | |
| from fontTools.misc.cliTools import makeOutputFileName | |
| from fontTools import configLogger | |
| import argparse | |
| if args is None: | |
| import sys | |
| args = sys.argv[1:] | |
| parser = argparse.ArgumentParser( | |
| "fonttools varLib.avar.build", | |
| 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.", | |
| default=None, | |
| ) | |
| 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) | |
| build(font, options.designspace) | |
| 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()) | |