最近又想出来一个新的汉化方法,不过还不成熟,在此先简单写一下,记录下来。 $ N7 {3 R* G) O2 j% Q
接下去还需要制作一些工具来统计和验证。
, G* T3 Q( X$ o: C s. x" r/ ?: T. M2 i* X6 |7 P
前提 * ~; g; R* A2 B! F' ]
此方法的适用前提是相邻的2个字母图片之间可以做到无缝连结。
5 p3 s' Q V2 T v8 O或者是通过修改参数可以做到相邻的2个字母图片无缝连结。 ; t0 ?8 ^( @9 O, Y- f% C" G
要做到这一点应该不难。 + T" d1 D2 b$ `' J% T* S3 }# n
4 N$ I, D) ?# [: Q7 Z, j
基本思路
7 P! p0 ^8 ~9 W" U4 r6 W一般的图片字库大约是定义了256个字母,用这些字母来拼凑出对话中的句子。
2 L2 b" z, ^+ M1 K. A一个中文AVG中用到的不重复的中文字一般有1000-2000个,大大超出了256的范围。
" s1 {, H6 r! E Z有没有办法用256个小图片来拼凑出1000-2000个中文字呢? 6 V+ O3 m& _1 v; t! H: ~; Z# M
我想出了一下的这个方法。我把它叫做纵向点阵模板复用法。 ! ]7 ~* m( R& V) v$ ~
6 J8 p. k. L1 r" f: O
这个思路来源于点阵字库。 # g- }1 W' B' J* k# r
我们先看一下8X8的中文点阵字库。8X8的中文点阵字库每个字是由8X8共64个点组成的。 - @7 j0 ^- \3 `) |
这8X8共64个点中,每一列我们把它叫做一个纵向点阵模板。
3 p+ w( x, }' R( @! y这样的纵向点阵模板最多有几种呢?对于1列是8个点的8X8中文点阵字库来说是2的8次方, $ B B R: v$ z% W7 S* E
刚好是256种。 ; [' M0 N+ x5 f3 Y
3 R) [0 ~. Z5 P1 i% B我们把图片字库的每一个字母都定义为这256种纵向点阵模板中的一种。 0 F `2 I5 O( q6 y) n2 \; X
这样就能把所有的中文汉字都拼凑出来了。是不是很简单。 ' \6 a1 [7 q/ J: g( N
( `5 M' c! `, X7 f) f+ p
一些问题
/ G9 U" T, z& i, B3 x- U如果在8X8中文点阵字库的基础上定义纵向点阵模板的话,有以下几个问题。
/ j4 f% K* {, T2 W3 H1.8X8中文点阵字库比较小,所以不放大的话基本是看不太清楚的。
- D Q% {% W9 B% {( |2 R, ^/ }9 [ 一般来说,我们需要把定义的纵向点阵模板在横向和纵向都放大2倍。 # G9 V( `) g9 Z v( }) ]
这样基本可以看清楚了。也就是说1个点都变为4个点再定义到图片上。 8 i E8 ?6 T+ i: d, O/ {4 w
对于一些看不太清楚的点可以手工修改一下,是它看起来更清晰一些。 7 G% w! k4 v/ t2 `! A
1 O$ {! {3 B# p
2.字幕文件的大小将会是原来的8倍 . C2 w* O. V8 g: y7 H
这个很好理解,原来表示一个字符需要1个图片,现在需要8个纵向的小图片才能拼凑出一个中文字。
/ h2 h1 o" t1 E) P) N2 ? 不过现在电脑的内存都比较大,载入一个10多M的字幕问题应该不大。
$ z+ [8 x+ L6 [ 但是怕游戏内部有限制。 + h! D4 M/ A A& p) k) {- W
$ C7 o9 q* W! L$ O3 k
高于8X8点阵的情况
* P* M) }5 X0 ]- }+ N由于8X8点阵比较小,看起来比较吃力,是不是有可能拼凑出高于8X8点阵的汉字呢?
N& r' K+ m8 f2 z2 z8 x可能性是有的。
- Y5 D9 E4 ^& o* `: h, [' y* a
1.假如游戏不仅在横向可以做到图片的无缝连结,还能在纵向的上下2行也能做到无缝连结的话。
0 `( R' x/ m* l8 G& |9 [ 我们就可以利用上下2行来拼凑出一个16X16点阵的汉字。
, ]0 i" q$ @. v9 I7 Z$ h- B$ Y( R& E 也就是说原来需要8个纵向的小图片,现在需要上下2行共2组共32个纵向的小图片来拼凑出一个汉字。
+ n/ h- _7 {2 A2 I; V; b 这样的话,字幕文件的大小将会是原来的32倍。
/ @3 E! W4 y( [: ~0 z- l/ S 这样做的效果应该是不错的,也不需要再放大了。
$ R& ^9 h$ m& V% H4 q
% H! W. ?! `: \# P, |- D2.还有介于8和16的点阵,应该也是有可能性的。
6 ^, v* D. C( a, P) I, ?6 W& r" | 这就和具体的游戏有关系了。要看这个游戏使用到的不重复的汉字共有多少个。
7 t# v. ^( | ]% Y8 r5 r, O 然后再用程序计算出最少要用多少个纵向点阵模板才能表示出这些汉字。 6 D L/ m. z9 }+ b& l
如果要超过256个才行的话,就行不通了。 5 q" ?( c @! @/ a) t( ^; Q
5 h* n( c0 o5 U: _: D6 r. h, }) q# j
这个新思路暂时先写到这里,欢迎看得懂的朋友提问和发表看法。 N. a# G$ Z7 C9 ]3 F
7 t# M& J2 H# E% O& D-------------------------------------------------
5 a6 B7 |; U- m2009.8.14更新
: L+ k" I$ }% j, m2 y放上一张图,说明一下什么是左右和上下的无缝连结。+ X w8 t" y/ q/ Q( E1 o3 K
这张图片来自游戏静物前传,我把图片字库全部给涂上颜色。
: J* f$ F# _: D放入游戏就看到了如下的效果。象这样的游戏应该还有不少。
2 d* K) t; V/ H8 q7 l/ c1 b9 V但是对于这个游戏来说,图片字库的宽度不知道是在什么地方被设置的。" D" i) R7 m$ a+ j ]' C
所以暂时无法使用本方法。
4 ]+ S- T# i) V" O9 l8 H( U: p |