reworked command line options
git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@152 4cde692c-a291-49d1-8350-778aa11640f8
This commit is contained in:
parent
5808f3ff71
commit
656a6cce4f
63
ttCompile.py
63
ttCompile.py
@ -1,26 +1,37 @@
|
|||||||
#! /usr/bin/env python
|
#! /usr/bin/env python
|
||||||
|
|
||||||
"""\
|
"""\
|
||||||
usage: %s [-hvb] [-i TrueType-input-file] TTX-file [TrueType-output-file]
|
usage: %s [-hvbf] [-d output-dir] [-i TTF-input-file] [TTX-file...]
|
||||||
Translate an TTX file (as output by ttDump.py) to a TrueType font file.
|
|
||||||
If the TTX-file argument is a directory instead of a file, all files in
|
Translate a TTX file (as output by ttDump) to a TrueType font file.
|
||||||
|
If a TTX-file argument is a directory instead of a file, all files in
|
||||||
that directory ending in '.ttx' will be merged into one TrueType file.
|
that directory ending in '.ttx' will be merged into one TrueType file.
|
||||||
This is mostly useful in conjunction with the -s option of ttDump.py.
|
This is mostly useful in conjunction with the -s option of ttDump.py.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-i TrueType-input-file: specify a TT file to be merged with the TTX file(s)
|
-h Help: print this message
|
||||||
-v verbose: messages will be written to stdout about what is being done
|
-i TrueType-input-file: specify a TT file to be merged with the TTX file.
|
||||||
|
This option is only valid when at most one TTX file (or directory
|
||||||
|
containing separated TTX files) is specified.
|
||||||
-b Don't recalc glyph boundig boxes: use the values in the TTX file as-is.
|
-b Don't recalc glyph boundig boxes: use the values in the TTX file as-is.
|
||||||
-h help: print this message
|
-d <output-dir> Specify a directory in which the output file(s)
|
||||||
|
should end up. The directory must exist.
|
||||||
|
-f Force overwriting existing files.
|
||||||
|
-v Verbose: messages will be written to stdout about what is being done
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys, os, getopt
|
import sys, os, getopt
|
||||||
from fontTools import ttLib
|
from fontTools import ttLib
|
||||||
|
|
||||||
options, args = getopt.getopt(sys.argv[1:], "hvi:b")
|
options, args = getopt.getopt(sys.argv[1:], "hvbfd:i:")
|
||||||
|
|
||||||
|
# default values
|
||||||
verbose = 0
|
verbose = 0
|
||||||
ttInFile = None
|
ttInFile = None
|
||||||
recalcBBoxes = 1
|
recalcBBoxes = 1
|
||||||
|
forceOverwrite = 0
|
||||||
|
outputDir = None
|
||||||
|
|
||||||
for option, value in options:
|
for option, value in options:
|
||||||
if option == "-i":
|
if option == "-i":
|
||||||
ttInFile = value
|
ttInFile = value
|
||||||
@ -31,32 +42,46 @@ for option, value in options:
|
|||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
elif option == "-b":
|
elif option == "-b":
|
||||||
recalcBBoxes = 0
|
recalcBBoxes = 0
|
||||||
|
elif option == "-d":
|
||||||
|
outputDir = value
|
||||||
|
elif option == "-f":
|
||||||
|
forceOverwrite = 1
|
||||||
|
|
||||||
if len(args) == 1:
|
if not args:
|
||||||
xmlPath = args[0]
|
|
||||||
name, ext = os.path.splitext(xmlPath)
|
|
||||||
ttPath = name + '.ttf'
|
|
||||||
elif len(args) == 2:
|
|
||||||
xmlPath, ttPath = args
|
|
||||||
else:
|
|
||||||
print __doc__ % sys.argv[0]
|
print __doc__ % sys.argv[0]
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
|
if ttInFile and len(args) > 1:
|
||||||
|
print "Must specify exactly one TTX file (or directory) when using -i"
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
|
for xmlPath in args:
|
||||||
|
path, ext = os.path.splitext(xmlPath)
|
||||||
|
if outputDir is not None:
|
||||||
|
fileName = os.path.basename(path)
|
||||||
|
path = os.path.join(outputDir, fileName)
|
||||||
|
ttPath = path + '.ttf'
|
||||||
|
|
||||||
|
if not forceOverwrite and os.path.exists(ttPath):
|
||||||
|
answer = raw_input('Overwrite "%s"? ' % ttPath)
|
||||||
|
if not answer[:1] in ("Y", "y"):
|
||||||
|
print "skipped."
|
||||||
|
continue
|
||||||
|
|
||||||
tt = ttLib.TTFont(ttInFile, recalcBBoxes=recalcBBoxes, verbose=verbose)
|
tt = ttLib.TTFont(ttInFile, recalcBBoxes=recalcBBoxes, verbose=verbose)
|
||||||
|
|
||||||
if os.path.isdir(xmlPath):
|
if os.path.isdir(xmlPath):
|
||||||
import glob
|
import glob
|
||||||
oldDir = os.getcwd()
|
files = glob.glob1(xmlPath, "*.ttx")
|
||||||
os.chdir(xmlPath)
|
|
||||||
files = glob.glob("*.ttx")
|
|
||||||
os.chdir(oldDir)
|
|
||||||
for xmlFile in files:
|
for xmlFile in files:
|
||||||
xmlFile = os.path.join(xmlPath, xmlFile)
|
xmlFile = os.path.join(xmlPath, xmlFile)
|
||||||
tt.importXML(xmlFile)
|
tt.importXML(xmlFile)
|
||||||
else:
|
else:
|
||||||
tt.importXML(xmlPath)
|
tt.importXML(xmlPath)
|
||||||
|
|
||||||
tt.save(ttPath)
|
tt.save(ttPath)
|
||||||
del tt
|
|
||||||
if verbose:
|
if verbose:
|
||||||
import time
|
import time
|
||||||
print "%s finished at" % sys.argv[0], time.strftime("%H:%M:%S", time.localtime(time.time()))
|
print "%s finished at" % sys.argv[0], time.strftime("%H:%M:%S", time.localtime(time.time()))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user