1*e1fe3e4aSElliott Hughesfrom fontTools.varLib import _add_avar, load_designspace 2*e1fe3e4aSElliott Hughesfrom fontTools.misc.cliTools import makeOutputFileName 3*e1fe3e4aSElliott Hughesimport logging 4*e1fe3e4aSElliott Hughes 5*e1fe3e4aSElliott Hugheslog = logging.getLogger("fontTools.varLib.avar") 6*e1fe3e4aSElliott Hughes 7*e1fe3e4aSElliott Hughes 8*e1fe3e4aSElliott Hughesdef main(args=None): 9*e1fe3e4aSElliott Hughes """Add `avar` table from designspace file to variable font.""" 10*e1fe3e4aSElliott Hughes 11*e1fe3e4aSElliott Hughes if args is None: 12*e1fe3e4aSElliott Hughes import sys 13*e1fe3e4aSElliott Hughes 14*e1fe3e4aSElliott Hughes args = sys.argv[1:] 15*e1fe3e4aSElliott Hughes 16*e1fe3e4aSElliott Hughes from fontTools import configLogger 17*e1fe3e4aSElliott Hughes from fontTools.ttLib import TTFont 18*e1fe3e4aSElliott Hughes from fontTools.designspaceLib import DesignSpaceDocument 19*e1fe3e4aSElliott Hughes import argparse 20*e1fe3e4aSElliott Hughes 21*e1fe3e4aSElliott Hughes parser = argparse.ArgumentParser( 22*e1fe3e4aSElliott Hughes "fonttools varLib.avar", 23*e1fe3e4aSElliott Hughes description="Add `avar` table from designspace file to variable font.", 24*e1fe3e4aSElliott Hughes ) 25*e1fe3e4aSElliott Hughes parser.add_argument("font", metavar="varfont.ttf", help="Variable-font file.") 26*e1fe3e4aSElliott Hughes parser.add_argument( 27*e1fe3e4aSElliott Hughes "designspace", metavar="family.designspace", help="Designspace file." 28*e1fe3e4aSElliott Hughes ) 29*e1fe3e4aSElliott Hughes parser.add_argument( 30*e1fe3e4aSElliott Hughes "-o", 31*e1fe3e4aSElliott Hughes "--output-file", 32*e1fe3e4aSElliott Hughes type=str, 33*e1fe3e4aSElliott Hughes help="Output font file name.", 34*e1fe3e4aSElliott Hughes ) 35*e1fe3e4aSElliott Hughes parser.add_argument( 36*e1fe3e4aSElliott Hughes "-v", "--verbose", action="store_true", help="Run more verbosely." 37*e1fe3e4aSElliott Hughes ) 38*e1fe3e4aSElliott Hughes 39*e1fe3e4aSElliott Hughes options = parser.parse_args(args) 40*e1fe3e4aSElliott Hughes 41*e1fe3e4aSElliott Hughes configLogger(level=("INFO" if options.verbose else "WARNING")) 42*e1fe3e4aSElliott Hughes 43*e1fe3e4aSElliott Hughes font = TTFont(options.font) 44*e1fe3e4aSElliott Hughes if not "fvar" in font: 45*e1fe3e4aSElliott Hughes log.error("Not a variable font.") 46*e1fe3e4aSElliott Hughes return 1 47*e1fe3e4aSElliott Hughes 48*e1fe3e4aSElliott Hughes axisTags = [a.axisTag for a in font["fvar"].axes] 49*e1fe3e4aSElliott Hughes 50*e1fe3e4aSElliott Hughes ds = load_designspace(options.designspace) 51*e1fe3e4aSElliott Hughes 52*e1fe3e4aSElliott Hughes if "avar" in font: 53*e1fe3e4aSElliott Hughes log.warning("avar table already present, overwriting.") 54*e1fe3e4aSElliott Hughes del font["avar"] 55*e1fe3e4aSElliott Hughes 56*e1fe3e4aSElliott Hughes _add_avar(font, ds.axes, ds.axisMappings, axisTags) 57*e1fe3e4aSElliott Hughes 58*e1fe3e4aSElliott Hughes if options.output_file is None: 59*e1fe3e4aSElliott Hughes outfile = makeOutputFileName(options.font, overWrite=True, suffix=".avar") 60*e1fe3e4aSElliott Hughes else: 61*e1fe3e4aSElliott Hughes outfile = options.output_file 62*e1fe3e4aSElliott Hughes if outfile: 63*e1fe3e4aSElliott Hughes log.info("Saving %s", outfile) 64*e1fe3e4aSElliott Hughes font.save(outfile) 65*e1fe3e4aSElliott Hughes 66*e1fe3e4aSElliott Hughes 67*e1fe3e4aSElliott Hughesif __name__ == "__main__": 68*e1fe3e4aSElliott Hughes import sys 69*e1fe3e4aSElliott Hughes 70*e1fe3e4aSElliott Hughes sys.exit(main()) 71