__init__.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from argparse import RawTextHelpFormatter
  2. from fontTools.otlLib.optimize.gpos import COMPRESSION_LEVEL, compact
  3. from fontTools.ttLib import TTFont
  4. def main(args=None):
  5. """Optimize the layout tables of an existing font"""
  6. from argparse import ArgumentParser
  7. from fontTools import configLogger
  8. parser = ArgumentParser(
  9. prog="otlLib.optimize",
  10. description=main.__doc__,
  11. formatter_class=RawTextHelpFormatter,
  12. )
  13. parser.add_argument("font")
  14. parser.add_argument(
  15. "-o", metavar="OUTPUTFILE", dest="outfile", default=None, help="output file"
  16. )
  17. parser.add_argument(
  18. "--gpos-compression-level",
  19. help=COMPRESSION_LEVEL.help,
  20. default=COMPRESSION_LEVEL.default,
  21. choices=list(range(10)),
  22. type=int,
  23. )
  24. logging_group = parser.add_mutually_exclusive_group(required=False)
  25. logging_group.add_argument(
  26. "-v", "--verbose", action="store_true", help="Run more verbosely."
  27. )
  28. logging_group.add_argument(
  29. "-q", "--quiet", action="store_true", help="Turn verbosity off."
  30. )
  31. options = parser.parse_args(args)
  32. configLogger(
  33. level=("DEBUG" if options.verbose else "ERROR" if options.quiet else "INFO")
  34. )
  35. font = TTFont(options.font)
  36. compact(font, options.gpos_compression_level)
  37. font.save(options.outfile or options.font)
  38. if __name__ == "__main__":
  39. import sys
  40. if len(sys.argv) > 1:
  41. sys.exit(main())
  42. import doctest
  43. sys.exit(doctest.testmod().failed)