def _loadFeatureWriters(parser, specs): feature_writers = [] for s in specs: if s == "None": # magic value that means "don't generate any features!" return [] try: feature_writers.append(loadFeatureWriterFromString(s)) except Exception as e: parser.error("Failed to load --feature-writer:\n {}: {}".format( type(e).__name__, e)) return feature_writers
def test_loadFeatureWriterFromString_valid(spec, FontClass): writer = loadFeatureWriterFromString(spec) assert writer.tableTag in {"GSUB", "GPOS"} assert callable(writer.write)
logging.basicConfig(level=logging.INFO) parser = argparse.ArgumentParser( description="Apply feature writers to a UFO file") parser.add_argument("--output", "-o", metavar="OUTPUT", help="output file name") parser.add_argument("ufo", metavar="UFO", help="UFO file") parser.add_argument( "writers", metavar="WRITER", nargs="*", help="list of feature writers to enable", ) args = parser.parse_args() if not args.output: args.output = makeOutputFileName(args.ufo) ufo = loader(args.ufo) writers = [loadFeatureWriterFromString(w) for w in args.writers] compiler = FeatureCompiler(ufo, featureWriters=writers or None) compiler.setupFeatures() buf = StringIO() compiler.writeFeatures(buf) ufo.features.text = buf.getvalue() logger.info("Written on %s" % args.output) ufo.save(args.output)