aboutsummaryrefslogtreecommitdiff
path: root/Lib/fontTools/ttx.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/fontTools/ttx.py')
-rw-r--r--Lib/fontTools/ttx.py206
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)