54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
from argparse import RawTextHelpFormatter
|
|
from fontTools.otlLib.optimize.gpos import COMPRESSION_LEVEL, compact
|
|
from fontTools.ttLib import TTFont
|
|
|
|
|
|
def main(args=None):
|
|
"""Optimize the layout tables of an existing font"""
|
|
from argparse import ArgumentParser
|
|
|
|
from fontTools import configLogger
|
|
|
|
parser = ArgumentParser(
|
|
prog="otlLib.optimize",
|
|
description=main.__doc__,
|
|
formatter_class=RawTextHelpFormatter,
|
|
)
|
|
parser.add_argument("font")
|
|
parser.add_argument(
|
|
"-o", metavar="OUTPUTFILE", dest="outfile", default=None, help="output file"
|
|
)
|
|
parser.add_argument(
|
|
"--gpos-compression-level",
|
|
help=COMPRESSION_LEVEL.help,
|
|
default=COMPRESSION_LEVEL.default,
|
|
choices=list(range(10)),
|
|
type=int,
|
|
)
|
|
logging_group = parser.add_mutually_exclusive_group(required=False)
|
|
logging_group.add_argument(
|
|
"-v", "--verbose", action="store_true", help="Run more verbosely."
|
|
)
|
|
logging_group.add_argument(
|
|
"-q", "--quiet", action="store_true", help="Turn verbosity off."
|
|
)
|
|
options = parser.parse_args(args)
|
|
|
|
configLogger(
|
|
level=("DEBUG" if options.verbose else "ERROR" if options.quiet else "INFO")
|
|
)
|
|
|
|
font = TTFont(options.font)
|
|
compact(font, options.gpos_compression_level)
|
|
font.save(options.outfile or options.font)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
|
|
if len(sys.argv) > 1:
|
|
sys.exit(main())
|
|
import doctest
|
|
|
|
sys.exit(doctest.testmod().failed)
|