冒险解谜游戏中文网 ChinaAVG

标题: 【断剑1汉化项目】中文字库设计 [打印本页]

作者: shane007    时间: 2009-9-13 20:40
标题: 【断剑1汉化项目】中文字库设计
在这个帖子里,集中说明如何制造一个包含中文字体的字库。& r* s0 v* g' C3 }
在看这个帖子前,请先看一下这个帖子
0 e# K9 ]9 `8 h( L) hhttps://www.chinaavg.com/read.php?tid=18959
2 R/ `! U1 n2 E& K1 o为了便于理解,我制作了一个示意图,看了示意图应该很容易理解字库的结构。7 _- g  l- R, g. d! n( e- L
; x6 K- \7 F6 S6 G" m6 f
示意图如下:
9 Z/ W  L) s3 ~4 d) Y# m# i [attach]14224[/attach]
! d/ x+ A  n3 L2 q
9 D0 ]# l$ K+ q3 ^2 b' v3 `% s原来的字库的高度均为26个像素。每个像素用一个字节表示。
/ g* V! E; Y/ S( {. L! u3 S3 O! s; ]( F背景像素 0x00$ }6 |4 K6 H( a% z9 i: o, O
边框像素 0xC8  " e/ |! J* _) Z' }% K
字体像素 0xC1
  {7 f* n7 ]- |/ U8 Z
1 w+ G5 z; B6 R! i! G  y我的设计是 中文字体的高度也为26个像素,宽度固定为20个像素。; r" _, W2 X" @- ]" [, d$ q
原来的边框的宽度为2个像素,我觉得太宽了,不太好看,决定中文的边框为1个像素。$ L9 M4 e5 \8 v- K' N- V. z
我用一个中文的田字来演示字库的结构,黑色表示边框像素,红色表示字体像素,黄色表示背景像素。背景像素在显示到画面上以后,会被画面的像素所取代,字体像素会被设定的字体颜色所取代。
6 k, X- p% c* t3 C1 V" S边框像素的值是固定不变的。
. s  ?. Y% ]) l+ a
6 ?- Z; o6 }* |: Y  Y8 C我们要把这6000多个汉字的字模加在原来的字库的最后,然后在字库的索引部分也加上这6000多个汉字在字库中的索引。别忘了,在每个字的字模的前面有一个小的文件头,也要加上。总之,制作出来的字库和原来的字库的结构要完全保持一致。
. s% T4 x1 t: j+ B. A+ d1 d
- X1 L6 G4 W: i7 I$ \下面说一下如何制作这个字库。& }3 {: @; J# G6 M2 J
有一个工具,可以把TTF字体转化为点阵字库。以前在极速天龙的汉化中也用过这个工具。! c/ s! u' }( \. i
工具如下:9 `/ ^5 e" O- d7 e9 D
https://www.chinaavg.com/read.php?tid=17138" V9 d) F( j7 x% S% Q* f

. b% O# H* w# n制作出来的字库是字节对齐的,由于这次制作的字体的大小(不含边框)是16X16的点阵大小。
/ G0 i1 ]' M% Q& F9 G( l所以字节对齐的问题可以不用考虑。
% C1 J: @  `$ ~' ]" R  d$ P2 l
: y1 B# g9 p/ g0 |. `5 ?1. 用这个工具制作16X16的点阵字库。每个汉字是32个字节。, @2 s6 R2 l, ^( z( \
2. 这个字库每个像素是用1个bit表示,我们要制作一个转换程序,把它转换为上面示意图的格式。
& c7 w. ?. r4 k1 n  有色点的像素用0xC1来表示
- x0 m& g- U. {( `7 `! y  无色点的像素用0x00来表示" K7 m6 I1 ~6 y) {7 i) T& T& c1 y
  另外,用这个工具制作16X16的点阵字库是不含边框的,所以我们先要制作出边框来。! t( {+ N1 H, |. H1 M% ]  ~
  我们可以这么做
5 H9 p5 j2 j& U; w! I4 ^: P+ b(1) 用0x00填充 26X20 的矩阵* D6 I; J8 R3 e2 I
(2) 用0xC8把原16X16的点阵字形用上下左右,及4个45度方向共8个方向,画8次。
6 I4 D2 ~0 L: _7 r% ](3) 用0xC1把原16X16的点阵字形在原位置画1次。
9 V0 w6 K; X& o+ A" E8 d9 p! ^: ], e
* I3 X7 t, v1 T, `* m/ Z这样就能制作出符合要求的中文字库。




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2