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

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

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

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

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

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

关于通用图片字库生成工具,我也早有一个制作思路。6 H. X+ r! V! Z+ O* J* |& ^
) o3 [! [  r/ ?+ C$ A5 `7 m5 e
先写出来,仅供大家参考。
+ }0 O$ G, S$ a6 w- `2 N其实,要把工具做得通用化,关键是要在字库定义文件上下功夫。
+ W( C' J0 `6 Q+ t. l' X; K/ g所以我设计了以下这样一个大致流程。2 u5 p/ z& _; _" k! v1 d! `  T) z' E) M
4 R  z# S  Y; `- a0 t: E8 {, d* `
1.图片字库的图片部分生成. w( x; }2 j: Z  M2 A
对于不同类型的图片字库,其核心是相同的,即定义了一个图片字符的集合,让游戏能根据图片字库定义文件从图片字库中找出对应的字符所) b# X4 G7 n9 J2 [6 Y5 J( O
在的区域。9 C; \* }! x" C& Q: D) Y% x; l! @

+ ]8 K4 i/ c7 l' q  ?因此我设计了一种通用图片字库定义格式。
5 u! S8 K# O4 D0 g# |9 N: b这个格式是一个类似csv文件的结构,每行用逗号分割,对应一个字符的所有属性。
' |6 y7 a; N3 @, Z! q% @一个字符的所有属性有大约有20多种,比如字符的宽度,高度,间距等等,我们可以事先收集1批游戏的字库定义文件,
4 F6 M+ d5 |0 D1 `) E/ X把各种属性总结归纳出来即可。
* V5 G, I: w- u1 M8 f, r! h' X* c& L" ^# \
所以,第1步操作是这样的* _2 c3 T2 [& D9 Y) D4 Q9 ~) Y
图形界面的主程序MakeFont.exe
1 X  E) ]! }$ N- H! `" m输入:所有不重复的字符列表AllChars.txt,以及图片的大小,字符宽高等各种参数: |% a6 l9 ]: y7 m
输出:字库图片font.png,字库信息文件fontinfo.txt,通用图片字库字符定义文件define.txt
/ @) ]6 u' z* J6 B5 x3 Z% l6 j     字库信息文件fontinfo.txt保存了整个图片的信息,比如图片的宽度高度等等。
8 M( W$ v4 p+ d     define.txt中以上面描述的格式保存了所有字符的所有可能的属性。6 R! Z- b' T  T1 y
     每行对应一个字符。由于要把工具做成通用的,我们无法预知最终需要哪些属性,# f6 v3 e: o9 J6 {: U  C
     所以只能把所有属性都生成出来。
: y- g5 q- [9 D/ `9 w8 C  z( n     如果完成了这1部,就已经是一个很强大的工具了。
/ N* D% U3 \1 I# ?8 T* ?     会编成的朋友可以制作一个小程序,把define.txt转化成游戏需要的定义文件的格式。
# @; _5 g8 K. H# l; G     当然,我们的目标是要制作出一个让不会编成的朋友也会轻易使用的工具,
3 T% O! X  v/ L8 |, T     所以我们还需要制作一个define.txt到游戏需要的定义文件的格式的转换工具。  a" _/ |, d& v2 s7 L$ H
+ I- I5 r6 d, [
2.图片字库的定义文件文件生成
: D" A$ H  H/ ]( `  define.txt有了,下一步需要把它转换为游戏需要的定义文件的格式。
& d! V) x% M# ?2 a( Y2 @  我们把图片字库的定义文件分成以下2类。! Z. B* l% k9 l
8 m- Q2 x' y; T6 |
  a.文本类型; M0 z- e; O( t* M% H. D1 P4 N
    通常这一类型的定义文件用*.xml,*.txt等作为文件名.; u: J0 Q5 i1 e4 K
   
8 _1 p; e: J7 W    我们先取得游戏的定义文件,一般这个定义文件都有一定的格式。
/ w3 o* x% t4 f' D- |; y4 J% e    我们可以在这个格式的基础上做出1个模版template.txt。模版分固定部分和循环部分。& X& h5 [9 V9 r7 j8 u2 R' k$ H5 m
    循环部分定义了每个字符的属性,这些属性用活动的tag来表示.
/ ]' J# A4 B0 i    我们可以制作一个图形界面的工具map.exe,用这个工具可以设置活动的tag和define.txt的哪个属性相对应。
" J. i& l/ |) y' v0 l" R/ ~( E    然后生成一个map.txt。7 I4 e8 H/ }. R3 O% \, `
    最后根据fontinfo.txt,define.txt,template.txt,map.txt 生成出我们需要的*.xml或*.txt定义文件。
$ w' d& E& k1 S: F
1 w" }; `' c  ^  ]* d  U  b.16进制文件类型, |6 ?& V7 p! H1 ?# w
    通常这一类型的定义文件用*.fnt等作为文件名.
% _4 M) H* V; a4 Q  {* g    制作过程也和文本类型的类似。只不过有些环节和文本类型略有不同。
- h+ u+ d1 N) A    我们把假定的文件名略微改一下。* J- z$ Z! s7 P( a
    map_bin.exe,template_bin.txt,map_bin.txt9 H& z$ B4 _1 K1 J% d
    最后根据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发表的  :+ G7 w+ m1 z+ b+ ^  U, C
你说的生成define.txt这一步比较简单, 关键还是define.txt到字库定义这一步怎么做到通用的问题
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-7-10 13:27 | 只看该作者
引用第2楼shane007于2010-07-10 13:25发表的 : ( t- B6 y* h: P. n; l& O
! m5 e& m) T6 M* \

; l) f4 W1 e8 H9 t
) G! K; ]7 l" u; @1 p2 _: p/ }& V4 N* [" ~
是的,这个map.exe的功能就比较难做了。
5 c1 r3 A1 K% ~. ~1 ~我想可以先支持几种经常被使用的格式,然后慢慢增加。" [' \( x7 l3 L" b: f
要做成完全通用的估计很难。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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