git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@268 4cde692c-a291-49d1-8350-778aa11640f8
100 lines
2.4 KiB
Python
Executable File
100 lines
2.4 KiB
Python
Executable File
#! /usr/bin/env python
|
|
|
|
"""\
|
|
usage: ttcompile [-hvbf] [-i input-TTF] scr [target]
|
|
ttcompile [-hvbf] [-i input-TTF] src1 ... srcN directory
|
|
|
|
Translate one or more TTX files (as output by ttdump) to a TrueType
|
|
font file.
|
|
|
|
Options:
|
|
-h Help: print this message
|
|
-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 is specified.
|
|
-b Don't recalc glyph boundig boxes: use the values in the TTX file as-is.
|
|
-f Force overwriting existing files.
|
|
-v Verbose: messages will be written to stdout about what is being done
|
|
"""
|
|
|
|
import sys, os, getopt
|
|
from fontTools import ttLib
|
|
|
|
def usage():
|
|
print __doc__
|
|
sys.exit(2)
|
|
|
|
def makeOutputFileName(xmlPath, outputDir):
|
|
dir, file = os.path.split(xmlPath)
|
|
file, ext = os.path.splitext(file)
|
|
if outputDir:
|
|
dir = outputDir
|
|
return os.path.join(dir, file + ".ttf")
|
|
|
|
try:
|
|
options, args = getopt.getopt(sys.argv[1:], "hvbfi:")
|
|
except getopt.GetoptError:
|
|
usage()
|
|
|
|
# default values
|
|
verbose = 0
|
|
ttInFile = None
|
|
recalcBBoxes = 1
|
|
forceOverwrite = 0
|
|
|
|
for option, value in options:
|
|
if option == "-i":
|
|
ttInFile = value
|
|
elif option == "-v":
|
|
verbose = 1
|
|
elif option == "-h":
|
|
print __doc__
|
|
sys.exit(0)
|
|
elif option == "-b":
|
|
recalcBBoxes = 0
|
|
elif option == "-f":
|
|
forceOverwrite = 1
|
|
|
|
if not args:
|
|
usage()
|
|
|
|
if ttInFile and len(args) > 2:
|
|
print "Must specify exactly one TTX source file when using -i"
|
|
sys.exit(2)
|
|
|
|
|
|
nargs = len(args)
|
|
if nargs == 1:
|
|
files = [(args[0], makeOutputFileName(args[0], None))]
|
|
elif nargs == 2:
|
|
xmlPath = args[0]
|
|
outPath = args[1]
|
|
if os.path.isdir(outPath):
|
|
outPath = makeOutputFileName(xmlPath, outPath)
|
|
files = [(xmlPath, outPath)]
|
|
else:
|
|
outputDir = args[-1]
|
|
if not os.path.isdir(outputDir):
|
|
print "last argument must be an existing directory"
|
|
sys.exit(2)
|
|
files = []
|
|
for xmlPath in args[:-1]:
|
|
files.append((xmlPath, makeOutputFileName(xmlPath, outputDir)))
|
|
|
|
|
|
for xmlPath, ttPath in files:
|
|
if not forceOverwrite and os.path.exists(ttPath):
|
|
answer = raw_input('Overwrite "%s"? ' % ttPath)
|
|
if not answer[:1] in ("Y", "y"):
|
|
print "skipped."
|
|
continue
|
|
|
|
print 'Compiling "%s" to "%s"...' % (xmlPath, ttPath)
|
|
|
|
tt = ttLib.TTFont(ttInFile, recalcBBoxes=recalcBBoxes, verbose=verbose)
|
|
tt.importXML(xmlPath)
|
|
tt.save(ttPath)
|
|
|
|
if verbose:
|
|
import time
|
|
print "%s finished at" % sys.argv[0], time.strftime("%H:%M:%S", time.localtime(time.time()))
|