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

汉化资料 图片字库定义文件通用制作工具的设计思路

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

[汉化资料] 图片字库定义文件通用制作工具的设计思路

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

图片字库定义文件通用制作工具的设计思路

最近,大量的汉化项目都涉及到了图片字库。- G1 A5 W0 `. j/ e% i
要用图片字库自然离不开编程制作图片字库的定义文件。- H. n' h5 P2 q0 {
图片字库我们可以用Photoshop来快速制作,请看如下帖子。! a& Y7 S4 h: ?, A
用Photoshop制作图片字库简易教程
( w1 u6 t+ ]7 O. i* dhttps://www.chinaavg.com/read.php?tid=22020
- b- N! ]2 l7 y7 B0 `2 m& e- b' U
- A# G0 V/ M7 r! f1 }$ v8 z那图片字库定义文件是否有什么快捷的办法来生成呢?# ]* E8 Y/ J" `! @8 E0 `/ s* k
办法都是人想出来的,我想了个如下的办法:0 `$ _0 b+ W; u5 I0 ~- j$ i
: \2 @0 A8 j3 E7 l: G6 h
我们可以发现,虽然图片字库的定义多种多样。3 {6 T+ ?8 [3 \6 |8 H
但是,大致都可以归纳为如下的样子
" o! j4 F3 G. e0 `2 L4 [& u7 e6 W8 v/ j6 [! J% l9 \7 o2 U
1. 头部信息
1 ^' U+ x  e) ?8 M; J2 J    记录了图片的高度,宽度,字符数等信息
: T0 S& z# `& ^0 R7 w6 r2. 每个字符的位置信息x字符数' i0 [7 g2 O6 I& O* i: ?
; n; w2 U4 i2 F) G; R4 ^: b
对于第2个部分来说,我们可以设计一个通用工具来生成。
! t/ D, B7 T2 e- N% ~* T0 R下面说说这个通用工具的设计思路。0 b5 ?7 q% ?7 K3 i8 ~9 |( U
  v. ]; ^. T) P: g' _# ^7 T, D
我们先输入一些必要的参数,比如字符的高度,宽度,首行字符的上边界及左边界坐标等等。
, e" r3 h, e$ w0 }# i  g, K就可以确定每一个字符的范围,这每一个字符都会对应1组参数,比如x,y,,left,top以及UV坐标系的x/width 等等
3 _! S7 {& Q# X$ C: c) d; l我们可以预先定义一个字符的位置信息的模版。5 D! P6 E- y# ?# ?/ p1 Y# A
程序会按模版的定义,选取我们需要的参数,按游戏的图片字库定义文件的格式,生成上面的part2.; s0 n6 d6 y) @0 P
那part1我们只要简单地手工修改一下即可。
" U" r" S( [: k1 V8 t* z
; J* F, E  H4 I有了这样的1个工具的话,我们可以快速地制作出各种类型的图片字库的定义文件。
; E3 D" F6 l" m# h$ v希望各位懂技术的朋友给提提意见,参与讨论。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-25 22:18 | 只看该作者

小小的想法

之前完成作业碰到了不少的字库定义文件,也有过这方面的考虑,汇报一下自己的想法,但愿有所裨益。
+ C$ [6 U; w: Z8 y' @0 X' k/ lpart2的字库定义基本分两类
, j0 {& i: J1 g4 }9 I一是字符集中型,就是第一行定义第一个字符的所有信息,第二行定义下一个的,比如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)7 d3 W" {+ \+ D

1 Z' M% A$ I0 O2 \+ ~我的想法是让玩家输入脚本,类似下面一段:
  1. char id=&N x=&X y=&Y width=&W height=&H
复制代码

  Z3 g8 w5 X  s  I& D程序读到&时,看到后面一个是N,就填入字符编码,看到是W,就填入宽度,这比使用编译原理来得简单,不知可不可行。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-25 22:25 | 只看该作者
谢谢楼上rendu2mai 的资料,其实,part2的类型有好多的。
3 Q3 L" O8 E# ]; [0 h8 g/ v远远不止2种,还有bin格式的,所以,是需要做模版的。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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