冒险解谜游戏中文网 ChinaAVG

标题: 图片字库定义文件通用制作工具的设计思路 [打印本页]

作者: shane007    时间: 2010-4-25 15:17
标题: 图片字库定义文件通用制作工具的设计思路
最近,大量的汉化项目都涉及到了图片字库。" G/ {. L- U/ T- H3 ~. F' K4 d: V
要用图片字库自然离不开编程制作图片字库的定义文件。  p; x, O4 p# O, k7 U; D) N! d
图片字库我们可以用Photoshop来快速制作,请看如下帖子。  p+ O6 A& C2 \2 V
用Photoshop制作图片字库简易教程. M+ b" q7 Y) Z' p* \; R! D
https://www.chinaavg.com/read.php?tid=22020
& `4 G2 w% Y$ E- d1 D" U7 x& w: r, V' h& L
那图片字库定义文件是否有什么快捷的办法来生成呢?8 A5 ?1 N2 p; J7 R7 x
办法都是人想出来的,我想了个如下的办法:' ?/ h+ Z: R& i  C  j" a& V

$ F2 N- k" L$ c9 y/ B$ u5 j# I我们可以发现,虽然图片字库的定义多种多样。' P" D( T: f$ I0 j# Y0 G4 y5 Q
但是,大致都可以归纳为如下的样子
# D! @3 p% G7 r% c6 T' P
3 ^; i% f" j0 n2 V1. 头部信息
  _  o9 y; A$ Z+ `3 G    记录了图片的高度,宽度,字符数等信息
- z) h, p1 Y) |% F! T2. 每个字符的位置信息x字符数
$ M9 a3 S+ A! y6 x0 Q6 z. W, g8 e% E* i0 }
对于第2个部分来说,我们可以设计一个通用工具来生成。- D# o: O2 Z$ p/ L
下面说说这个通用工具的设计思路。4 j7 |6 z$ d) E, n+ i) U! b
+ S" s+ z) h/ o' T3 [
我们先输入一些必要的参数,比如字符的高度,宽度,首行字符的上边界及左边界坐标等等。  T2 Z- ?) v* {, {7 w! ?; C
就可以确定每一个字符的范围,这每一个字符都会对应1组参数,比如x,y,,left,top以及UV坐标系的x/width 等等2 E- ~6 X9 u+ z1 d! [
我们可以预先定义一个字符的位置信息的模版。4 J6 }* S, X$ c- V3 j. ]
程序会按模版的定义,选取我们需要的参数,按游戏的图片字库定义文件的格式,生成上面的part2.
$ b+ d+ I1 I2 ^& [那part1我们只要简单地手工修改一下即可。
+ W$ o, A5 Z+ N' }9 F( U- @! D
7 }9 E& V! I& v8 G3 @5 T2 n有了这样的1个工具的话,我们可以快速地制作出各种类型的图片字库的定义文件。$ I% c/ r$ H7 ^; F) a7 X5 S
希望各位懂技术的朋友给提提意见,参与讨论。
作者: rendu2mai    时间: 2010-4-25 22:18
标题: 小小的想法
之前完成作业碰到了不少的字库定义文件,也有过这方面的考虑,汇报一下自己的想法,但愿有所裨益。: s4 }- N, t) |; u) M
part2的字库定义基本分两类
. I; f8 r+ X% H: v+ ]一是字符集中型,就是第一行定义第一个字符的所有信息,第二行定义下一个的,比如Magic Encyclopedia 3 Illusions:
  1. char id=32   x=0     y=0     width=1     height=0     xoffset=0     yoffset=30    xadvance=7     page=0  chnl=0
  2. char id=33   x=427   y=93    width=5     height=22    xoffset=1     yoffset=4     xadvance=7     page=0  chnl=0
复制代码
二是属性集中型,就是第一行先把所有字符的某一个属性比如字符编码定义完,下一行定义所有字符的另一个属性如宽度,如popcap framework的定义方法:
  1. Define CharList
  2. ('%', '(',);
  3. Define WidthList
  4. (7, 27,);
复制代码
另外一种分类方式是编码方式,基本上有两类,一个是十六进制类,一个是明码类(多为utf-8)3 `+ X, k- Y) f* X

0 I) A8 U- Q+ C$ d我的想法是让玩家输入脚本,类似下面一段:
  1. char id=&N x=&X y=&Y width=&W height=&H
复制代码
+ G* k! h$ H5 g5 c) Y7 ~
程序读到&时,看到后面一个是N,就填入字符编码,看到是W,就填入宽度,这比使用编译原理来得简单,不知可不可行。
作者: shane007    时间: 2010-4-25 22:25
谢谢楼上rendu2mai 的资料,其实,part2的类型有好多的。: G5 L, p. P" h& H, O5 S
远远不止2种,还有bin格式的,所以,是需要做模版的。




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