From 48c12bda632184b4af878a79c11be4e177a1c8d0 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 13 Jan 2017 11:26:26 +0000 Subject: [PATCH] [feaLib] add __main__.py so one can call `fonttools feaLib` This is the same as Snippets/apply-feature-file.py Fixes #569 --- Lib/fontTools/feaLib/__main__.py | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Lib/fontTools/feaLib/__main__.py diff --git a/Lib/fontTools/feaLib/__main__.py b/Lib/fontTools/feaLib/__main__.py new file mode 100644 index 000000000..e446db622 --- /dev/null +++ b/Lib/fontTools/feaLib/__main__.py @@ -0,0 +1,42 @@ +from __future__ import print_function, division, absolute_import +from fontTools.misc.py23 import * +from fontTools.ttLib import TTFont +from fontTools.feaLib.builder import addOpenTypeFeatures +from fontTools import configLogger +from fontTools.misc.cliTools import makeOutputFileName +import sys +import argparse +import logging + + +log = logging.getLogger("fontTools.feaLib") + + +def main(args=None): + parser = argparse.ArgumentParser( + description="Use fontTools to compile OpenType feature files (*.fea).") + parser.add_argument( + "input_fea", metavar="FEATURES", help="Path to the feature file") + parser.add_argument( + "input_font", metavar="INPUT_FONT", help="Path to the input font") + parser.add_argument( + "-o", "--output", dest="output_font", metavar="OUTPUT_FONT", + help="Path to the output font.") + parser.add_argument( + "-v", "--verbose", help="increase the logger verbosity. Multiple -v " + "options are allowed.", action="count", default=0) + options = parser.parse_args(args) + + levels = ["WARNING", "INFO", "DEBUG"] + configLogger(level=levels[min(len(levels) - 1, options.verbose)]) + + output_font = options.output_font or makeOutputFileName(options.input_font) + log.info("Compiling features to '%s'" % (output_font)) + + font = TTFont(options.input_font) + addOpenTypeFeatures(font, options.input_fea) + font.save(output_font) + + +if __name__ == '__main__': + sys.exit(main())