冒险解谜游戏中文网 ChinaAVG
标题:
Flash游戏嵌入字体的方法详解
[打印本页]
作者:
davidgbl
时间:
2011-4-5 18:04
标题:
Flash游戏嵌入字体的方法详解
本帖最后由 davidgbl 于 2011-4-5 18:06 编辑
$ T: f/ }3 T, z4 ?2 p& F
, j0 g' | i0 e' K
说明:
; f/ O2 }, l9 v8 U! P, Z
本文只说明嵌入字体的方法,用于动态文本的汉化,对静态文本直接修改成中文输出swf即可,不需要嵌入字体,这里不再讨论。给出swf实例文件是Murder Island Secret of Tantalus游戏中的minigame中的mg_gui.swf文件。
! C) ~8 J3 Z9 K, Y
实例文件:[attach]19999[/attach]
2 j' b/ n4 x% L3 w! N i
" H2 X4 u t w* ]3 g
准备工作:
; c5 c, ^, Z) W. T, v% d) [% J
需要用到的工具软件:
G" y9 U7 T7 |. j* ]
硕思6.0或5.0 - 用于反编译swf文件。
* `8 g6 V: l) q8 J: A( v5 F. O+ d
Action Script Viewer201006 - 用于查看输出字体文件,以下简称ASV。
4 }* k5 r1 L2 n; r: h
Font Creator Program4.1中文版 – 修改字体内部名称。
0 z$ o5 F, ?8 N1 n: R% N& |4 M5 a
& C A* z! D/ y( |+ x4 c
嵌入字体的详细步骤:
! V2 C$ x- {3 i8 Q* s- }
1、先将swf反编译成fla文件
# {) |5 Q% x9 q6 v$ G* C8 \
用硕思6.0,根据我使用的经验,现在并没有一个软件可以非常好的反编译swf文件,硕思算是比较不错的东西,但反编译后的脚本也可能出一些奇奇怪怪的问题,特别是对于动态文本和比较复杂的swf文件,不过如果你能看懂脚本的话,一些反编译中出现的非致命性错误还是可以解决问题的。
' {* S' b6 r& l; ^7 E i
同时我建议用同时用ASV也输出脚本,以便将两个软件输出的脚本进行比较和查错。还有一款叫Flash Decompiler Trillix的软件和硕思的功能类似(因为没有注册码,所以无法输出flash文件,如果谁有注册码给我一个,先谢了!我很想试试这个软件),但非注册版可以查看脚本,也可以作为辅助查错来用。
/ [: D; h% F1 @; O# [
- }) v! v) E2 [/ P& y( A
2、找出swf文件中使用的英文字体名称和数量
/ {6 ~" a1 Y( W
用ASV输出全部字体。用ASV打开swf文件,菜单---文件---提取资源---保存所有的字体为ttf—选择输出路径即可。(建议不要用硕思输出字体)
) X% ^$ }/ O- ^0 |- B
4 v1 Z. R$ B( B4 t
3、将中文ttf字体改名成为英文字体,然后放入到win的font中
9 Y/ [& `1 ?: W* Z. \
用Font Creator Program4.1打开输出的字体(例如:Arial),同时打开一个中文ttf字体(看个人喜欢,可以是宋体也可以是楷体等等)。
0 b& |& G/ d* O+ p; V
在Font Creator Program4.1文件的菜单 格式---修改管理平台和命名两项,修改中文ttf字体的内容与用ASV输出的字体格式一致。
# Z7 Y8 M6 j* S* c, h
注意:管理平台中应该包含Macintosh 罗马语和 Microsoft Unicode两项
; o& l1 r# t8 P# X+ H- f. L8 p; x! K
[attach]19992[/attach]
2 M- [/ T5 ]2 S; {
命名修改注意事项:
& ?* v2 b3 q' e8 i2 j% u
1、Macintosh 罗马语下的语音包含英文
7 [0 ]% Z2 H* N2 N. g [# A: O
2、Microsoft Unicode下的语言应该包含英语和中文两项,如下图。
* n) n( w# |! z& Q6 o$ T7 D
3、修改右侧的打钩的四项与ASV输出的字体一致就可以了,但ASV输出的字体这四项中如果包含ASV字符可以去除。
9 U8 w: p+ B6 E% \4 i
[attach]19993[/attach]
3 w! K8 V- v3 }) y
将修改好的中文ttf字体“文件名”改名,例如改成Arial,然后复制该文件到win的font目录中,如果win中有同名文件要删除(建议保持备份,这样在汉化完成后可以恢复win的设置)后再复制过去。
/ N) S# w- X. [0 M
/ t2 O/ z- O. f
4、用flash cs3或cs4打开反编译后的flash文件
1 r1 @" C; n7 E# { g
首先在右侧的库中加入字体,如图选择新建字型,
. N- A0 \9 v. L; U" `/ o
[attach]19994[/attach]
1 U- ~2 o. G% j1 M0 C
在弹出的窗口中选择字体,并将名称改成与字体名称一致,然后确定。
- I6 N) s1 Z( @
[attach]19995[/attach]
. [5 b' `2 H. k; u9 A( l# [
在库中右键点击加入的字体,点击链接,设置好链接属性(如果是CS4可以在加入字体的时候直接设置链接)
3 T0 U% |: q( H& _- m
[attach]19996[/attach]
# W2 M/ F% b" R1 A
[attach]19997[/attach]
9 }/ l9 P: p0 o' l' v- R$ W' E
现在加入了一个字体,以此类推加入其它字体。
( O* P* }# I' d+ q% m) r4 E
' S$ {2 l! C% h. A4 ]5 A- p
5、加入所有字体后,逐条修改库中的中包含文本的所有影片剪辑(注意:修改按钮的文本有四个关键帧要逐一修改。)
* o' | z! w7 N2 v" d, }
,例如:symbol39调整文字的大小,位置等等内容(注意动态文本的实际内容不要修改)
9 i! j4 l' Y& B* z$ S7 u
[attach]19998[/attach]
* J- \* ^3 u) r4 C3 ?4 a# K
点击嵌入按钮,选择嵌入中文字库和英文字库,数字等(在CS4中不需要此步骤)。
( _1 \0 B: J' z- g( ]) l
[attach]19991[/attach]
, F/ K; V% z$ b
6、全部影片剪辑中的文本修改完成后就可以存盘输出swf文件了,注意输出flash的版本和脚本的版本,原则上是与原来的版本相一致,如果输出的文件有问题可以考虑输出高一级版本的swf文件。在一项的设置在菜单:文件----发布设置项里。
+ i) s, S+ s$ \, o' c w
- `9 G! N* O; z; U' K. d
7、汉化flash游戏比较费时,需要有毅力和坚持,同时如果能懂脚本语言就更好了。而且flash游戏的汉化,一般一个游戏有很多个swf文件包含字体,都要注意,有的是包含静态文本的字体,有的是包含动态文本的字体。凡是包含动态文本的都要嵌入中文字体,这样游戏汉化才能完成,反编译后需要调整文本的位置、大小等参数,以便游戏美观亮丽。
8 [& V: H) }4 U( _/ B3 K( J
5 I! v( q2 @* ]; K
8、鉴于现在反编译软件的缺陷,最好能学会脚本语言,硕思遇到编译出错的就说是加密文件,其实也不一定,有很大一部分都是硕思软件的问题。
, g* m2 R; F' h, l
作者:
bmwmj
时间:
2011-4-5 20:17
本帖最后由 bmwmj 于 2011-4-5 20:27 编辑
4 M8 j; B0 V6 p5 R% U9 ` B% M1 L1 N3 v
* X, R/ n- ]6 ?
你不嫌麻烦吗?在fla里直接嵌入更换不就行了。
# p E. p" `( n& u1 L
! ~' Y) r/ U6 D! h) m# o- {
前面的步骤都不需要,直接反编译后,在flash里打开。
* k, L& j7 ], E) r- O# Y
借用你的第5部那个图说一下,点字体的那个下拉框选个中文字体,点嵌入,把顶替掉的英文字体删除,把刚才加进去的字体改名为刚才那个字体的英文Font x,然后记得标上选择全部字符。ok了
作者:
vcddcv
时间:
2011-4-5 21:59
经鉴定确是好贴!
作者:
片翼の鳥
时间:
2011-4-5 22:15
[s:104]好贴mark学习。。。
作者:
bmwmj
时间:
2011-4-5 23:03
本帖最后由 bmwmj 于 2011-4-5 23:15 编辑
; b _& H3 k6 [( Y4 N! M7 u
1 m; v3 f5 T3 f* E! k+ G
回davidgbl,我的方法在绝大多数swf里都是没问题的,除了部分swf是把部分字体作为附件调用时候才有点麻烦,才会用到asv
# q& n, z( O4 K
: F& [7 n4 P' H3 j
以图为例:找到字幕也就找到了字体,点击字幕然后在属性-字符里更换字体,然后点嵌入
- P1 b, L0 w, L
[attach]20012[/attach]
6 m. j6 q' T5 a: Q9 Q
. | O7 f+ O3 [( P- p% U
4 M5 z/ [; t8 T" V
把上面的英文字体删掉,把嵌入的中文字体的名字(字体 1)换为那个英文字体的名字(Font 1),把字符范围选为全部,确定即ok,如果有多个字幕使用同一字体,在其它字幕上点击后,更换为和第一个嵌入的中文字体相同的字体,点嵌入后,直接再点确定即可,多字幕多字体参照单一字体替换执行即可,可以选择不同的中文字体,需要注意的是,你每加一个中文字体,swf的容量就会大上几兆。
7 t* h' @3 u: t9 {
[attach]20013[/attach]
作者:
lytion
时间:
2011-4-5 23:45
非常感谢大家,davidgbl的方法的确是很复杂,看得我有点头晕,刚接触这个一下又要用好几个没接触的软件
# _! T' f" `' D* N5 c8 y" X- g9 x
试过bmwmj的方法的确是可以的,当然只是在谋杀岛这游戏里试过,davidgbl大大的方法等我水平高点在研究,毕竟什么都要会一点
$ p# Y' ~9 P! F
再次谢谢各位了
作者:
bmwmj
时间:
2011-4-6 00:02
本帖最后由 bmwmj 于 2011-4-6 00:13 编辑
" n) J0 B7 [4 {3 T% F' I5 G" O6 W
1 } t* d1 d/ D6 c* P
回davidgbl,拿这个swf来说,这个字体是两用的,游戏里也调用了这个字体,不然有的字幕无法显示,嵌入中文是为了让游戏里也能显示字幕,而不是为了swf里的字幕。
9 ?- Q# Q2 N% T* ]7 L* y! \
ps
* K0 A% j) a$ g, F. H% b# }
我当然知道静态文本不需要嵌入,否则我也没必要讲的这么详细了。
3 E1 G7 ]7 o2 g0 B: r
不是所有在swf的字幕都需要改静态的,调用外部字幕的就得用这个办法了。我前面汉化过的那个传奇之书就是这个情况。
作者:
davidgbl
时间:
2011-4-6 00:12
这方法我以后再试试吧!因为在搞昔日回响的时候用过不成功,所以就用笨办法了。
作者:
kfmafeng
时间:
2011-4-6 08:53
跟各位大大学习了。。。。
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2