tuxpaint-pencil-sharpener/fonts/locale/zh_tw_docs/maketuxfont.py
Bill Kendrick 71120af4aa Rebuild zh_TW.ttf (Chinese Traditional) subset font
...that ships with Tux Paint.
2023-06-13 21:46:07 -07:00

58 lines
1.8 KiB
Python
Executable file

#!/usr/bin/env python2
# -*- coding: UTF-8 -*-
# Copyright: Song Huang <song@song.idv.tw>
# License: GUN GPL
# 2004/10/26
import popen2
from optparse import OptionParser
from codecs import open as cOpen
from string import letters, punctuation
def parsePO(po):
try:
poFile = cOpen(po, 'r', 'utf8')
print '>> parse ', po
for line in poFile.readlines():
if line[:6] == 'msgstr':
line = line.strip()
for s in line[8:-1]:
s = str(ord(s))
if s not in stringList:
stringList.append(s)
poFile.close()
except IOError, e:
print "Unable to open the file:" , po, e
if __name__ == '__main__':
# parse script arguments
optparser = OptionParser(usage='./%prog [options] original_font_file', version="%prog 0.2")
optparser.add_option("-l", "--locale", action="store", help="to make the locale fonts subset")
optparser.add_option("-p", "--pofile", action="append", help="parse the pofile to get strings")
(options, args) = optparser.parse_args()
# get all words
if options.locale and options.pofile and args:
stringList = []
for c in list(letters + punctuation):
stringList.append(str(ord(c)))
for po in options.pofile:
parsePO(po)
stringList.sort()
#print "poList = ", options.pofile, "\nstringList = ", stringList
else:
print "Error: lost some option or original font file, please run the script with --help argument."
# make font subset
cmd = "./tuxpaintsubset.pe %s %s.ttf %s" % (args[0], options.locale, ' '.join(stringList))
print cmd
r, w, e = popen2.popen3(cmd)
msg = r.read()
if msg:
print msg
error = e.read()
if error:
print error
r.close()
w.close()
e.close()