aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/varLib/interpolate_layout.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/varLib/interpolate_layout.py')
-rw-r--r--Lib/fontTools/varLib/interpolate_layout.py39
1 files changed, 25 insertions, 14 deletions
diff --git a/Lib/fontTools/varLib/interpolate_layout.py b/Lib/fontTools/varLib/interpolate_layout.py
index f252149a..6d0385dd 100644
--- a/Lib/fontTools/varLib/interpolate_layout.py
+++ b/Lib/fontTools/varLib/interpolate_layout.py
@@ -1,8 +1,6 @@
"""
Interpolate OpenType Layout tables (GDEF / GPOS / GSUB).
"""
-from __future__ import print_function, division, absolute_import
-from fontTools.misc.py23 import *
from fontTools.ttLib import TTFont
from fontTools.varLib import models, VarLibError, load_designspace, load_masters
from fontTools.varLib.merger import InstancerMerger
@@ -60,29 +58,42 @@ def interpolate_layout(designspace, loc, master_finder=lambda s:s, mapped=False)
def main(args=None):
+ """Interpolate GDEF/GPOS/GSUB tables for a point on a designspace"""
from fontTools import configLogger
-
+ import argparse
import sys
- if args is None:
- args = sys.argv[1:]
- designspace_filename = args[0]
- locargs = args[1:]
- outfile = os.path.splitext(designspace_filename)[0] + '-instance.ttf'
+ parser = argparse.ArgumentParser(
+ "fonttools varLib.interpolate_layout",
+ description=main.__doc__,
+ )
+ parser.add_argument('designspace_filename', metavar='DESIGNSPACE',
+ help="Input TTF files")
+ parser.add_argument('locations', metavar='LOCATION', type=str, nargs='+',
+ help="Axis locations (e.g. wdth=120")
+ parser.add_argument('-o', '--output', metavar='OUTPUT',
+ help="Output font file (defaults to <designspacename>-instance.ttf)")
+ parser.add_argument('-l', '--loglevel', metavar='LEVEL', default="INFO",
+ help="Logging level (defaults to INFO)")
+
+
+ args = parser.parse_args(args)
+
+ if not args.output:
+ args.output = os.path.splitext(args.designspace_filename)[0] + '-instance.ttf'
- # TODO: allow user to configure logging via command-line options
- configLogger(level="INFO")
+ configLogger(level=args.loglevel)
finder = lambda s: s.replace('master_ufo', 'master_ttf_interpolatable').replace('.ufo', '.ttf')
loc = {}
- for arg in locargs:
+ for arg in args.locations:
tag,val = arg.split('=')
loc[tag] = float(val)
- font = interpolate_layout(designspace_filename, loc, finder)
- log.info("Saving font %s", outfile)
- font.save(outfile)
+ font = interpolate_layout(args.designspace_filename, loc, finder)
+ log.info("Saving font %s", args.output)
+ font.save(args.output)
if __name__ == "__main__":