冒险解谜游戏中文网 ChinaAVG
标题:
【断剑1汉化项目】中文字库设计
[打印本页]
作者:
shane007
时间:
2009-9-13 20:40
标题:
【断剑1汉化项目】中文字库设计
在这个帖子里,集中说明如何制造一个包含中文字体的字库。
+ E5 r1 ~: t; Q% ]) i& z/ L% I
在看这个帖子前,请先看一下这个帖子
7 e! W/ e2 I9 U2 _+ r) ~
https://www.chinaavg.com/read.php?tid=18959
" H7 S- a7 n! J# [3 M
为了便于理解,我制作了一个示意图,看了示意图应该很容易理解字库的结构。
& K& H* N( { C6 I% ~9 e
y3 H' y7 M" l
示意图如下:
6 V3 r% l$ r+ F5 o' H
[attach]14224[/attach]
; h6 ?5 H+ q$ l. J! P* ?# ^
4 K8 t6 f7 c, q, K8 p
原来的字库的高度均为26个像素。每个像素用一个字节表示。
' T4 Q; _1 F& C
背景像素 0x00
# e' Y% E9 c- n# i4 ]5 k3 Q' T
边框像素 0xC8
1 \8 \: t @# f6 W4 H6 R r
字体像素 0xC1
7 f7 E4 B$ ?* L R
; f; ]) P' a* Y* x9 t8 V; ^& _! _
我的设计是 中文字体的高度也为26个像素,宽度固定为20个像素。
7 v! h, Z( w" m, V( @9 Y
原来的边框的宽度为2个像素,我觉得太宽了,不太好看,决定中文的边框为1个像素。
z7 J: J& x, ?& G" E, s
我用一个中文的田字来演示字库的结构,黑色表示边框像素,红色表示字体像素,黄色表示背景像素。背景像素在显示到画面上以后,会被画面的像素所取代,字体像素会被设定的字体颜色所取代。
; P$ K8 l8 E% V, u5 P3 R
边框像素的值是固定不变的。
% m [7 E/ a, u; v
I; ~; L( [5 r
我们要把这6000多个汉字的字模加在原来的字库的最后,然后在字库的索引部分也加上这6000多个汉字在字库中的索引。别忘了,在每个字的字模的前面有一个小的文件头,也要加上。总之,制作出来的字库和原来的字库的结构要完全保持一致。
4 H: q" L. x# I' c2 I9 H
+ S# l) P3 Y) v8 D+ p- a
下面说一下如何制作这个字库。
% K2 N6 w. [# h; W: C) z Z
有一个工具,可以把TTF字体转化为点阵字库。以前在极速天龙的汉化中也用过这个工具。
7 G0 G j9 k- }8 H/ H5 l. s
工具如下:
; Z& l& X! x$ v/ x, m' u5 Z
https://www.chinaavg.com/read.php?tid=17138
7 R: b1 q; y) x& O& j, z
^+ Q3 k" h- q( F' S1 `9 R. ~
制作出来的字库是字节对齐的,由于这次制作的字体的大小(不含边框)是16X16的点阵大小。
5 R' P" W# ^- R( K$ s* t
所以字节对齐的问题可以不用考虑。
* }; H$ c( ^; |0 R% W$ [' k& C
: H+ M; P. g% a/ E1 L. E* L
1. 用这个工具制作16X16的点阵字库。每个汉字是32个字节。
# D# y. p* a: K) }9 G, k! t" V9 d
2. 这个字库每个像素是用1个bit表示,我们要制作一个转换程序,把它转换为上面示意图的格式。
6 V- e0 O8 T1 D& \
有色点的像素用0xC1来表示
( T/ F7 h3 a# v5 O/ s0 d& w6 K' g
无色点的像素用0x00来表示
' _2 i5 b4 c1 _
另外,用这个工具制作16X16的点阵字库是不含边框的,所以我们先要制作出边框来。
3 U( x3 p3 m* j; h+ h6 f4 U
我们可以这么做
0 d$ q- X# Z4 S$ n. K# ^
(1) 用0x00填充 26X20 的矩阵
. h5 u Q- B* e$ \6 }. ` e
(2) 用0xC8把原16X16的点阵字形用上下左右,及4个45度方向共8个方向,画8次。
: N6 ^: g/ F+ X s' p; J0 x
(3) 用0xC1把原16X16的点阵字形在原位置画1次。
{. _1 v0 F& ]7 i" u, O8 S4 i; ~
: Y" X- J4 u) c: ]0 `" ^
这样就能制作出符合要求的中文字库。
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2