看板FreeBSD
标 题[log] 如何造字?
发信站SayYA 资讯站 (Thu Dec 26 22:27:19 2002)
转信站Ptt!news.ntu!ctu-gate!ctu-reader!news.nctu!SayYa
http://freebsd.sinica.edu.tw/zh-tut/bdf-newchar.html
23.33. 如何造字?
造字的问题,目前笔者会的只有造点阵字而已。
首先,找到你要改的字型档,在这边假设是 kc15f.bdf,我只会改 BDF 格式的,
然後把点阵的格式嵌入该字型档内。
以 '文' 为例,先得到他的 ENCODING:
# echo "文" | hexdump
0000000 e5a4 000a
0000003
# printf %d 0xa4e5
42213
以及他的 ucs-2:
# echo "文" | iconv -f big5 -t ucs-2 | hexdump
0000000 8765 0a00
0000004
我们在这边以 (方方土) 为例,他的 big5 code 是 0x964f(38479),
ucs-2 code 是 0x5803。
先找到 CHARS 13867,因为我们要加新字, 所以改成 CHARS 13868。
然後到这个档的最後,找最後一个 STARTCHAR 加一,在这边是 STARTCHAR 13868
为最後一个,所以加一, 然後将字塞最後,并在 ENDFONT 之前。
STARTCHAR 13869
ENCODING 38479
SWIDTH 31 0
DWIDTH 16 0
BBX 15 15 1 -3
BITMAP
1830
1424
FEFE
2040
3C78
2488
4488
5528
8A10
0180
0110
3FF8
0100
0104
FFFE
ENDCHAR
BITMAP 的内容请参考
http://partners.adobe.com/asn/developer/pdfs/tn/5005.BDF_Spec.pdf
然後跟着以下的方式作来让 X 认识你所造的字:
# cd /usr/X11R6/lib/X11/fonts/encodings/large/
# cp big5.eten-0.enc.gz big5.eten-0.enc.gz.bak
# gunzip big5.eten-0.enc.gz
# chmod 644 big5.eten-0.enc
# vim big5.eten-0.enc
0x964F 0x5803
# chmod 444 big5.eten-0.enc
# gzip big5.eten-0.enc
# cd /usr/X11R6/lib/X11/fonts/local
# fetch kc15f.bdf
# mkfontdir
# crxvt -fm -kc-fixed-medium-r-normal--16-160-72-72-c-160-big5-0
# perl -e 'print pack("CC", 0x96, 0x4F);'
--
※ Origin: SayYA 资讯站 <bbs.sayya.org>
◆ From: statue.netlab.cse.yzu.edu.tw