diff --git a/fonts/locale/zh_tw_docs/COPYING.txt b/fonts/locale/zh_tw_docs/COPYING.txt new file mode 100644 index 000000000..6d1a18fae --- /dev/null +++ b/fonts/locale/zh_tw_docs/COPYING.txt @@ -0,0 +1,11 @@ +COPYING.txt for "tuxpaint-ttf-zh_tw" +Traditional Chinese TrueType Font (TTF) for Tux Paint + +The "zh_tw.ttf" font file is a subset of a "wp010-05.ttf" TrueType font. + +The "wp010-05.ttf" by Hann-Tzong Wang , +and located at: http://www.ossacc.org/Download/misc/wangfont + +The orig-font "wp010-05.ttf" is GPL licensed, so the subset font "zh_tw.ttf" +is GPL, too. + diff --git a/fonts/locale/zh_tw_docs/README.txt b/fonts/locale/zh_tw_docs/README.txt new file mode 100644 index 000000000..fa4f3cefc --- /dev/null +++ b/fonts/locale/zh_tw_docs/README.txt @@ -0,0 +1,68 @@ +README.txt for "tuxpaint-ttf-zh_tw" +Traditional Chinese TrueType Font (TTF) for Tux Paint + +Song Huang +song@song.idv.tw + +Oct 23, 2005 - Oct 23, 2005 + +This font is required to run Tux Paint in Traditional Chinese. +(e.g., with the "--lang zh_tw" option) + +To install, run "make install" as the superuser ('root'). +The font file will be placed in the /usr/share/tuxpaint/fonts/locale/ directory. + +--- + +----- Original Message ----- +From: "Song Huang" +To: "Developmental mailing list for Tux Paint, a drawing program for young children." +Sent: Tuesday, October 26, 2004 12:10 PM +Subject: the font subset maker + + +> Hi, +> +> The font mustly large, especially traditional chinese font more then 13 MB. +> +> I used python and fontforge to take PO file's msgstr, and generate a subset font file. +> here is the files: +> - python script: +> http://www.ossacc.org/Members/song/DrWangFreeTTF/maketuxfont.py +> - fontforge script: +> http://www.ossacc.org/Members/song/DrWangFreeTTF/tuxpaintsubset.pe +> - the traditional chinese font subset file: +> http://www.ossacc.org/Members/song/DrWangFreeTTF/zh_tw.ttf +> +> Usage: (put the scripts together) +> +> $ ./maketuxfont.py -h +> usage: ./maketuxfont.py [options] original_font_file +> +> options: +> --version show program's version number and exit +> -h, --help show this help message and exit +> -lLOCALE, --locale=LOCALE +> to make the locale fonts subset +> -pPOFILE, --pofile=POFILE +> parse the pofile to get strings +> +> Example: +> +> $ ./maketuxfont.py \ +> -l zh_tw \ +> -p tuxpaint/src/po/zh_tw.po \ +> -p tuxpaint-stamps/po/tuxpaint-stamps-zh_tw.po \ +> wp010-05.ttf +> +> then will get the "zh_tw.ttf" file. +> +> Best regards, +> ============================================= +> Song Huang +> OSSACC (OSS Application Consulting Center) +> http://www.ossacc.org +> ============================================= +> + + diff --git a/fonts/locale/zh_tw_docs/maketuxfont.py b/fonts/locale/zh_tw_docs/maketuxfont.py new file mode 100644 index 000000000..9b6539877 --- /dev/null +++ b/fonts/locale/zh_tw_docs/maketuxfont.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 -*- +# Copyright: Song Huang +# 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() diff --git a/fonts/locale/zh_tw_docs/tuxpaintsubset.pe b/fonts/locale/zh_tw_docs/tuxpaintsubset.pe new file mode 100644 index 000000000..73f2fe8bb --- /dev/null +++ b/fonts/locale/zh_tw_docs/tuxpaintsubset.pe @@ -0,0 +1,66 @@ +#!/usr/bin/env fontforge +# >> The script first draft by Edward Lee. << +# Copyright: Song Huang +# License: GUN GPL +# 2004/10/26 + +if ($argc < 4) + Print("usage: ", $0, " orig.ttf generate.ttf char_num [char_num ...]") + Quit(1) +endif + +Print("Loading ", $1, "...") +Open($1) + +a=Array(($argc - 3)) +Print("argc = " + $argc) +i=3 +while ( i < $argc ) + a[(i-3)]=Strtol($argv[i]) + # Print(">> " + $argv[i]) + i++ +endloop + +i=$argc - 4 +while ( i >= 0 ) + SelectMore(a[i]) + i-- +endloop +Copy() + +fontName=GetTTFName(0x404, 6) + "[Subset for TuxPaint] " +fontCopyRight=GetTTFName(0x404, 0) +fontVersion=GetTTFName(0x404, 5) + "[Subset for TuxPaint] " +fontMaker="TuxPaint's Font Subset Maker" +fontSample="TuxPaint Font Subset." + +Close() + +New() +Reencode("unicode") +ScaleToEm(1024) +# nameid=1 Font Family Name +SetTTFName(0x404,1,fontName) +# nameid=4 Full Font Name +SetTTFName(0x404,4,fontName) +# nameid=5 Version string +SetTTFName(0x404,5,fontVersion) +# nameid=6 Postscript name for the font +SetTTFName(0x404,6,fontName) +# nameid=8 Manufacturer Name +SetTTFName(0x404,8,fontMaker) +# nameid=19 Sample text +SetTTFName(0x404,4,fontName) + +i=$argc - 4 +while ( i >= 0 ) + SelectMore(a[i]) + i-- +endloop +Paste() + +Print("Generating fonts...") +Generate($2) +Close() + +Quit(0)