diff options
Diffstat (limited to 'Lib/fontTools/ttx.py')
-rw-r--r-- | Lib/fontTools/ttx.py | 206 |
1 files changed, 103 insertions, 103 deletions
diff --git a/Lib/fontTools/ttx.py b/Lib/fontTools/ttx.py index 2eed0c5c..3f06c58b 100644 --- a/Lib/fontTools/ttx.py +++ b/Lib/fontTools/ttx.py @@ -1,95 +1,112 @@ """\ usage: ttx [options] inputfile1 [... inputfileN] - TTX -- From OpenType To XML And Back - - If an input file is a TrueType or OpenType font file, it will be - decompiled to a TTX file (an XML-based text format). - If an input file is a TTX file, it will be compiled to whatever - format the data is in, a TrueType or OpenType/CFF font file. - - Output files are created so they are unique: an existing file is - never overwritten. - - General options: - -h Help: print this message. - --version: show version and exit. - -d <outputfolder> Specify a directory where the output files are - to be created. - -o <outputfile> Specify a file to write the output to. A special - value of - would use the standard output. - -f Overwrite existing output file(s), ie. don't append numbers. - -v Verbose: more messages will be written to stdout about what - is being done. - -q Quiet: No messages will be written to stdout about what - is being done. - -a allow virtual glyphs ID's on compile or decompile. - - Dump options: - -l List table info: instead of dumping to a TTX file, list some - minimal info about each table. - -t <table> Specify a table to dump. Multiple -t options - are allowed. When no -t option is specified, all tables - will be dumped. - -x <table> Specify a table to exclude from the dump. Multiple - -x options are allowed. -t and -x are mutually exclusive. - -s Split tables: save the TTX data into separate TTX files per - table and write one small TTX file that contains references - to the individual table dumps. This file can be used as - input to ttx, as long as the table files are in the - same directory. - -g Split glyf table: Save the glyf data into separate TTX files - per glyph and write a small TTX for the glyf table which - contains references to the individual TTGlyph elements. - NOTE: specifying -g implies -s (no need for -s together with -g) - -i Do NOT disassemble TT instructions: when this option is given, - all TrueType programs (glyph programs, the font program and the - pre-program) will be written to the TTX file as hex data - instead of assembly. This saves some time and makes the TTX - file smaller. - -z <format> Specify a bitmap data export option for EBDT: - {'raw', 'row', 'bitwise', 'extfile'} or for the CBDT: - {'raw', 'extfile'} Each option does one of the following: - -z raw - * export the bitmap data as a hex dump - -z row - * export each row as hex data - -z bitwise - * export each row as binary in an ASCII art style - -z extfile - * export the data as external files with XML references - If no export format is specified 'raw' format is used. - -e Don't ignore decompilation errors, but show a full traceback - and abort. - -y <number> Select font number for TrueType Collection (.ttc/.otc), - starting from 0. - --unicodedata <UnicodeData.txt> Use custom database file to write - character names in the comments of the cmap TTX output. - --newline <value> Control how line endings are written in the XML - file. It can be 'LF', 'CR', or 'CRLF'. If not specified, the - default platform-specific line endings are used. - - Compile options: - -m Merge with TrueType-input-file: specify a TrueType or OpenType - font file to be merged with the TTX file. This option is only - valid when at most one TTX file is specified. - -b Don't recalc glyph bounding boxes: use the values in the TTX - file as-is. - --recalc-timestamp Set font 'modified' timestamp to current time. - By default, the modification time of the TTX file will be used. - --no-recalc-timestamp Keep the original font 'modified' timestamp. - --flavor <type> Specify flavor of output font file. May be 'woff' - or 'woff2'. Note that WOFF2 requires the Brotli Python extension, - available at https://github.com/google/brotli - --with-zopfli Use Zopfli instead of Zlib to compress WOFF. The Python - extension is available at https://pypi.python.org/pypi/zopfli +TTX -- From OpenType To XML And Back + +If an input file is a TrueType or OpenType font file, it will be +decompiled to a TTX file (an XML-based text format). +If an input file is a TTX file, it will be compiled to whatever +format the data is in, a TrueType or OpenType/CFF font file. + +Output files are created so they are unique: an existing file is +never overwritten. + +General options +=============== + +-h Help print this message. +--version show version and exit. +-d <outputfolder> Specify a directory where the output files are + to be created. +-o <outputfile> Specify a file to write the output to. A special + value of - would use the standard output. +-f Overwrite existing output file(s), ie. don't append + numbers. +-v Verbose: more messages will be written to stdout + about what is being done. +-q Quiet: No messages will be written to stdout about + what is being done. +-a allow virtual glyphs ID's on compile or decompile. + +Dump options +============ + +-l List table info: instead of dumping to a TTX file, list + some minimal info about each table. +-t <table> Specify a table to dump. Multiple -t options + are allowed. When no -t option is specified, all tables + will be dumped. +-x <table> Specify a table to exclude from the dump. Multiple + -x options are allowed. -t and -x are mutually exclusive. +-s Split tables: save the TTX data into separate TTX files per + table and write one small TTX file that contains references + to the individual table dumps. This file can be used as + input to ttx, as long as the table files are in the + same directory. +-g Split glyf table: Save the glyf data into separate TTX files + per glyph and write a small TTX for the glyf table which + contains references to the individual TTGlyph elements. + NOTE: specifying -g implies -s (no need for -s together + with -g) +-i Do NOT disassemble TT instructions: when this option is + given, all TrueType programs (glyph programs, the font + program and the pre-program) will be written to the TTX + file as hex data instead of assembly. This saves some time + and makes the TTX file smaller. +-z <format> Specify a bitmap data export option for EBDT: + {'raw', 'row', 'bitwise', 'extfile'} or for the CBDT: + {'raw', 'extfile'} Each option does one of the following: + + -z raw + export the bitmap data as a hex dump + -z row + export each row as hex data + -z bitwise + export each row as binary in an ASCII art style + -z extfile + export the data as external files with XML references + + If no export format is specified 'raw' format is used. +-e Don't ignore decompilation errors, but show a full traceback + and abort. +-y <number> Select font number for TrueType Collection (.ttc/.otc), + starting from 0. +--unicodedata <UnicodeData.txt> + Use custom database file to write character names in the + comments of the cmap TTX output. +--newline <value> + Control how line endings are written in the XML file. It + can be 'LF', 'CR', or 'CRLF'. If not specified, the + default platform-specific line endings are used. + +Compile options +=============== + +-m Merge with TrueType-input-file: specify a TrueType or + OpenType font file to be merged with the TTX file. This + option is only valid when at most one TTX file is specified. +-b Don't recalc glyph bounding boxes: use the values in the + TTX file as-is. +--recalc-timestamp + Set font 'modified' timestamp to current time. + By default, the modification time of the TTX file will be + used. +--no-recalc-timestamp + Keep the original font 'modified' timestamp. +--flavor <type> + Specify flavor of output font file. May be 'woff' or 'woff2'. + Note that WOFF2 requires the Brotli Python extension, + available at https://github.com/google/brotli +--with-zopfli + Use Zopfli instead of Zlib to compress WOFF. The Python + extension is available at https://pypi.python.org/pypi/zopfli """ -from fontTools.misc.py23 import Tag, tostr from fontTools.ttLib import TTFont, TTLibError from fontTools.misc.macCreatorType import getMacCreatorAndType from fontTools.unicode import setUnicodeData +from fontTools.misc.textTools import Tag, tostr from fontTools.misc.timeTools import timestampSinceEpoch from fontTools.misc.loggingTools import Timer from fontTools.misc.cliTools import makeOutputFileName @@ -118,11 +135,10 @@ class Options(object): disassembleInstructions = True mergeFile = None recalcBBoxes = True - allowVID = False ignoreDecompileErrors = True bitmapGlyphDataFormat = 'raw' unicodedata = None - newlinestr = None + newlinestr = "\n" recalcTimestamp = None flavor = None useZopfli = False @@ -184,8 +200,6 @@ class Options(object): self.mergeFile = value elif option == "-b": self.recalcBBoxes = False - elif option == "-a": - self.allowVID = True elif option == "-e": self.ignoreDecompileErrors = False elif option == "--unicodedata": @@ -258,7 +272,7 @@ def ttDump(input, output, options): log.info('Dumping "%s" to "%s"...', input, output) if options.unicodedata: setUnicodeData(options.unicodedata) - ttf = TTFont(input, 0, allowVID=options.allowVID, + ttf = TTFont(input, 0, ignoreDecompileErrors=options.ignoreDecompileErrors, fontNumber=options.fontNumber) ttf.saveXML(output, @@ -280,8 +294,7 @@ def ttCompile(input, output, options): sfnt.USE_ZOPFLI = True ttf = TTFont(options.mergeFile, flavor=options.flavor, recalcBBoxes=options.recalcBBoxes, - recalcTimestamp=options.recalcTimestamp, - allowVID=options.allowVID) + recalcTimestamp=options.recalcTimestamp) ttf.importXML(input) if options.recalcTimestamp is None and 'head' in ttf: @@ -374,15 +387,6 @@ def process(jobs, options): action(input, output, options) -def waitForKeyPress(): - """Force the DOS Prompt window to stay open so the user gets - a chance to see what's wrong.""" - import msvcrt - print('(Hit any key to exit)', file=sys.stderr) - while not msvcrt.kbhit(): - pass - - def main(args=None): """Convert OpenType fonts to XML and back""" from fontTools import configLogger @@ -403,16 +407,12 @@ def main(args=None): log.error("(Cancelled.)") sys.exit(1) except SystemExit: - if sys.platform == "win32": - waitForKeyPress() raise except TTLibError as e: log.error(e) sys.exit(1) except: log.exception('Unhandled exception has occurred') - if sys.platform == "win32": - waitForKeyPress() sys.exit(1) |