冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2010-4-25 15:17
标题: 图片字库定义文件通用制作工具的设计思路
最近,大量的汉化项目都涉及到了图片字库。2 e9 P5 L9 G! e$ N$ ^+ R
要用图片字库自然离不开编程制作图片字库的定义文件。0 [1 O! I9 O; B1 o) V, o  g
图片字库我们可以用Photoshop来快速制作,请看如下帖子。
$ l9 `0 d" ]/ T  v3 Y$ d用Photoshop制作图片字库简易教程
; g3 Z" |: Z7 A' Chttps://www.chinaavg.com/read.php?tid=22020
% Z* @$ x1 d' _  M4 Y1 O6 H3 Y# M
那图片字库定义文件是否有什么快捷的办法来生成呢?
6 \( L% u) n4 M4 x5 i% U, d办法都是人想出来的,我想了个如下的办法:
: X: m& [7 |+ \$ |" S) ~9 m# o1 f1 U( p: i. Z# d4 V
我们可以发现,虽然图片字库的定义多种多样。
. c! E9 v8 z  |1 h) n, R% A但是,大致都可以归纳为如下的样子
: t1 R" v# [: X- v8 V; |" ^* P) g* k+ J
1. 头部信息1 {. a3 w& w! Y# l) [
    记录了图片的高度,宽度,字符数等信息
. I# J) H. {/ j; Z" I2 `2. 每个字符的位置信息x字符数) P0 q' W! \& ]) V
3 @. Q5 H9 ?' c( v4 m
对于第2个部分来说,我们可以设计一个通用工具来生成。( [5 Y! X) ^0 @4 }# o
下面说说这个通用工具的设计思路。0 q+ e; _" a# \9 a& c" @3 B! N
+ C! v4 I6 }& }1 N1 F
我们先输入一些必要的参数,比如字符的高度,宽度,首行字符的上边界及左边界坐标等等。
4 K' V( x3 p+ M; {就可以确定每一个字符的范围,这每一个字符都会对应1组参数,比如x,y,,left,top以及UV坐标系的x/width 等等/ S: P" r( I  O
我们可以预先定义一个字符的位置信息的模版。
+ ~* p. V2 ]3 H程序会按模版的定义,选取我们需要的参数,按游戏的图片字库定义文件的格式,生成上面的part2.8 B7 S, ^1 g, I! m% _* n
那part1我们只要简单地手工修改一下即可。$ C$ {1 S4 _( P& L! s' a% E2 r- s5 ?7 G
0 S/ ^' n7 K; [7 h; t8 ~4 ?
有了这样的1个工具的话,我们可以快速地制作出各种类型的图片字库的定义文件。" h: m! o. i) e  Q2 y, g/ R7 L
希望各位懂技术的朋友给提提意见,参与讨论。
作者: rendu2mai    时间: 2010-4-25 22:18
标题: 小小的想法
之前完成作业碰到了不少的字库定义文件,也有过这方面的考虑,汇报一下自己的想法,但愿有所裨益。9 t5 t# x. {3 {9 v/ l' ^
part2的字库定义基本分两类6 @7 L" z# d* w2 Z' 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)9 r; n; O% `, Z

2 ]% q6 t+ `2 ?1 J/ j我的想法是让玩家输入脚本,类似下面一段:
  1. char id=&N x=&X y=&Y width=&W height=&H
复制代码
2 c6 i0 l8 }( B, \) G% i# X
程序读到&时,看到后面一个是N,就填入字符编码,看到是W,就填入宽度,这比使用编译原理来得简单,不知可不可行。
作者: shane007    时间: 2010-4-25 22:25
谢谢楼上rendu2mai 的资料,其实,part2的类型有好多的。  y8 g: q; p/ {
远远不止2种,还有bin格式的,所以,是需要做模版的。




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