设为首页收藏本站官方微博

汉化资料 通用图片字库生成工具制作思路

[复制链接]
查看: 2644|回复: 3
打印 上一主题 下一主题

[汉化资料] 通用图片字库生成工具制作思路

跳转到指定楼层
楼主
发表于 2010-7-10 08:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

通用图片字库生成工具制作思路

关于通用图片字库生成工具,我也早有一个制作思路。
. M( F% ]8 ^+ V) a! E5 d" e- o
" Z4 T9 ?! I1 t0 q+ {先写出来,仅供大家参考。% i+ L0 R/ |8 h% t$ J  W8 c2 f
其实,要把工具做得通用化,关键是要在字库定义文件上下功夫。
1 a, z! U" y; y1 H& o! U( {所以我设计了以下这样一个大致流程。
* G  q+ D% _5 I0 n% n
$ D, U3 U# L% o) e) ?1.图片字库的图片部分生成0 K* {! g& [& n7 W' F0 R6 K. Q
对于不同类型的图片字库,其核心是相同的,即定义了一个图片字符的集合,让游戏能根据图片字库定义文件从图片字库中找出对应的字符所
& A) ]" p$ v5 z% n  c+ m, C; ?5 I" t在的区域。' Y3 E- T# m& ]- |9 A1 G
5 d. k% b$ o& b) T# L1 l/ L
因此我设计了一种通用图片字库定义格式。1 [( |5 t( s8 k9 t" ~$ t
这个格式是一个类似csv文件的结构,每行用逗号分割,对应一个字符的所有属性。% d# D7 n- {# Z, c1 t6 n( H3 S+ ^# `
一个字符的所有属性有大约有20多种,比如字符的宽度,高度,间距等等,我们可以事先收集1批游戏的字库定义文件,9 t4 _8 Z7 S% C# m6 [& n2 Q
把各种属性总结归纳出来即可。, q. `8 |/ `, x' M+ C/ z! \
2 ]* I/ e$ ?! _9 y
所以,第1步操作是这样的8 _3 M+ J) y! O! {& s/ _$ O
图形界面的主程序MakeFont.exe
# t% A' d3 l7 P5 _* E1 Y9 u输入:所有不重复的字符列表AllChars.txt,以及图片的大小,字符宽高等各种参数
9 _6 h# R7 m1 P4 U输出:字库图片font.png,字库信息文件fontinfo.txt,通用图片字库字符定义文件define.txt
: ~& N% L" p" M* p' P* B5 P2 I     字库信息文件fontinfo.txt保存了整个图片的信息,比如图片的宽度高度等等。: Z, N7 n% h4 g. g( a7 h  X
     define.txt中以上面描述的格式保存了所有字符的所有可能的属性。$ M! F0 F8 R; T+ @- H( B5 ]
     每行对应一个字符。由于要把工具做成通用的,我们无法预知最终需要哪些属性,# R) S" E! N3 F0 X! `
     所以只能把所有属性都生成出来。/ b- g1 y7 h' S9 `* b) ^1 `4 U6 J
     如果完成了这1部,就已经是一个很强大的工具了。
# C" G8 ~& ?* Q( r6 ~     会编成的朋友可以制作一个小程序,把define.txt转化成游戏需要的定义文件的格式。" @* T* E+ S/ X2 m1 }/ E+ C
     当然,我们的目标是要制作出一个让不会编成的朋友也会轻易使用的工具,
/ `% u& X8 `& }, x     所以我们还需要制作一个define.txt到游戏需要的定义文件的格式的转换工具。
: Z5 T$ M9 ^" v7 {8 q6 `% D4 @3 H0 ^
2.图片字库的定义文件文件生成0 d9 i9 e+ I1 T
  define.txt有了,下一步需要把它转换为游戏需要的定义文件的格式。
/ h: f, |" |4 V6 p: b$ A% ^2 A/ X, @  我们把图片字库的定义文件分成以下2类。% k' l+ @; `7 H- \% u
: l" R& |; S" _- ~
  a.文本类型9 b& g8 f# J/ p8 _
    通常这一类型的定义文件用*.xml,*.txt等作为文件名.: G- G. z# Y% D# K
    . s: c8 k4 d1 t' C! P, Q
    我们先取得游戏的定义文件,一般这个定义文件都有一定的格式。
4 x8 ~; A9 I7 E% L1 [9 s    我们可以在这个格式的基础上做出1个模版template.txt。模版分固定部分和循环部分。- [1 r4 B% x% Q; k- [, t
    循环部分定义了每个字符的属性,这些属性用活动的tag来表示.! I! Y8 t- R' ?1 J! ~; c4 L
    我们可以制作一个图形界面的工具map.exe,用这个工具可以设置活动的tag和define.txt的哪个属性相对应。& {1 B# ?- U+ }, W7 @# E+ a
    然后生成一个map.txt。
7 E% Z# N6 t* J% W" q& l) ^    最后根据fontinfo.txt,define.txt,template.txt,map.txt 生成出我们需要的*.xml或*.txt定义文件。. Y: A, ?+ f. K: @: [% H

: I( P$ s5 ?, G+ ~1 z  b.16进制文件类型% h/ i% @; h8 g6 _+ g4 q
    通常这一类型的定义文件用*.fnt等作为文件名.' l4 K$ i& I# h1 S
    制作过程也和文本类型的类似。只不过有些环节和文本类型略有不同。
  ]$ V! W# |( H4 f1 t5 M5 J; h    我们把假定的文件名略微改一下。5 i% L( Q' c- s% F& a& A
    map_bin.exe,template_bin.txt,map_bin.txt
0 a  \0 I( X& Y9 l9 R    最后根据fontinfo.txt,define.txt,template_bin.txt,map_bin.txt 生成出我们需要的*.fnt等定义文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-7-10 12:57 | 只看该作者
你说的生成define.txt这一步比较简单, 关键还是define.txt到字库定义这一步怎么做到通用的问题
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-7-10 13:25 | 只看该作者
引用第1楼bandaot于2010-07-10 12:57发表的  :5 @- y+ P& i3 c# T' i! [1 }2 O
你说的生成define.txt这一步比较简单, 关键还是define.txt到字库定义这一步怎么做到通用的问题
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-7-10 13:27 | 只看该作者
引用第2楼shane007于2010-07-10 13:25发表的 :
4 H) U1 s& A% D( [6 D& a  z1 w0 \/ e' \$ u$ ^

# V7 \: v8 I1 C2 T; i8 a) _' I& x$ B" Z. y+ q
/ A$ k( `0 s* q4 d
是的,这个map.exe的功能就比较难做了。
& p: C. }! J& q# P我想可以先支持几种经常被使用的格式,然后慢慢增加。0 T' v1 s, A( {+ |  @
要做成完全通用的估计很难。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表