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