冒险解谜游戏中文网 ChinaAVG

标题: 【汉化资料】关于CEGUI研究的阶段性成果 [打印本页]

作者: shane007    时间: 2008-11-17 12:10
标题: 【汉化资料】关于CEGUI研究的阶段性成果
CEGUI是一个开放源码的开发游戏界面的库,如果你在游戏里发现CEGUIBase_d.dll之类以CEGUI开头的DLL的话,这个游戏的界面就是CEGUI做的,游戏字幕的输出自然也是用它。 $ g& @5 ?! V4 I6 R- V
9 y! h  m: ~2 n5 f6 D3 ^+ U$ g' Z
CEGUI有0.4.1,0.5.X,0.6.X等几个版本,从0.5.X开始就对中文完美支持了。 9 j1 S# h. Q6 x2 K, p" |0 Z% b6 k
问题是0.4.1这个版本,对中文的支持不太完美,说是不能换页之类的。
9 i! Z8 c5 p% l& {( a: B( ~) b现阶段,不少AVG游戏中还是用CEGUI0.4.1这个版本,比如安徒生童话这个AVG游戏.
: w0 V- D3 C; S# C& L因为FONT字体定义文件的格式不同,所以可以判断出是0.4.1这个版本
! t2 k. S8 r3 x1 ]6 Y% f

" H5 R# ]; v! h5 R; K解决方法 5 ?- _* E" C7 u, J  V$ x
关于解决方法,我查了不少资料,大致有2个
( l5 T* d( p- ~1 i% }5 y/ ]: i/ @) H1。改造0.4.1的DLL文件,参照0.5.X的代码,把关键地方进行修改。 + D9 q' q' e3 D: K' }
  这个方法较难,暂不讨论。 $ p4 \# Q% ?0 b8 V0 X! H

! V: i/ |; B' A/ q1 L( R2。0.4.1的字体定义文件还是为中文留了一条路的。
' a$ |$ p9 g1 t4 p4 A0 ]; t& X  可以用GlyphSet这个属性只生成要用到的字体的图片。
" ]% i& g& m' Q1 _0 y' T  中文汉字有6000多个,但是在一个AVG里用到的中文可能只有1000多个。 " w* K' p% M. Q0 n( O
  把这些中文汉字定义到GlyphSet这个属性,也许就能正常显示了。
5 N# {& r' ]& x, Y1 _3 h  这个方法尚未做实际测试,效果未知。
) o" `" f3 i( ^% V6 L1 w( p
$ S% p4 o7 V: |/ D& d( b8 b相关资料 * q9 j1 n% x& w6 Y$ x; H, K
: B4 \! W& l+ b) i- W# }
CEGUI0.4.1字体定义文件说明 0 [0 E9 r0 a8 B5 j
http://www.cegui.org.uk/wiki/index.php/Font_files
0 Y! h: B" W  m  U; }" c) C, J9 S7 U! D9 h7 F( b" c* Q/ _# u8 Q+ l( {3 c; T
CEGUI0.5.X关于字体定义文件的变更点
: ?  t" i7 J, k+ C
原文
* J4 }  S; \. F8 g* v4 d0 _$ Ahttp://www.cegui.org.uk/wiki/index.php/Release_Notes_0.5.X

' o* p. J, Y" x& A# n4 U% k# a2 Q+ {# t* D. X( X6 Z
A FontDemo sample which shows several properties of the new Font class.
8 N/ A! K4 B% D2 sThe above changes resulted in some slight changes to the format of the XML .font files:
5 X9 S  t% f& m! v& C, S) J; K
( i+ C+ i/ L1 |! T( rGlyphSet, GlyphRange, Glyph sections of the Font are gone
0 |9 g) I# r# U# R# dThe possible values of the Type attribute are now:
) z" ~0 X. u) V5 |5 `$ X) YFreeType (instead of Dynamic)
1 p, ?& i0 T$ u1 h& \1 j$ o& tPixmap (instead of Static) , _( j  [8 B! r, B8 R! ?
The FirstCodepoint and LastCodepoint attributes of the Font section were removed ' B: m  }& d+ a, b
After you change your .font files as mentioned above, they should work without problems.
; U4 {7 E, I: @& _# V( O 9 W6 T  U$ T9 @" X+ C5 |+ p
下面这篇文章应该是针对CEGUI0.4.1这个版本来说的。
  I8 f: d' p( Y4 E: @
9 y2 m5 M5 w4 P8 V4 m1 s7 {如何让CEGUI显示出中文 - H" D2 z9 V  h: D+ ?7 y! x. I
原文
, o. K* z* d; W# x1 `; ^- Thttp://blog.csdn.net/khzide/archive/2005/09/07/473765.aspx / \) y9 _4 s0 C+ b" t, c6 M$ a: r% O0 T
2 s* |) ^7 f+ V; x
CEGUI(Crazy Eddie's GUI System ) 是一个免费并开放源码的图形(GUI API库),写于C++, 并且面向对象。你可以用它来创建游戏中的GUI部分,而不用再自已动手去实现。
+ e# t! @: x' j/ D  Y* c
; y! V  A& m9 G' K  d管方网站:http://www.cegui.org.uk/ 上面有很多有用的信息,如果你要详细了解它的话,可以常去这上面逛逛。
; d1 F" h: ?& z1 _6 {
( U* q' X" C9 d6 Y' D; ^发现有好多战友与我一样,一开始用它的时候不知道如何显示出中文,只是听说很easy,但却自已试不出来。我走了一些弯路,希望别人不要再跟我一样了。其实它实现起来真是是很easy. CEGUI是基于utf8格式的,所以可以显示出中文,但需要注意的是这里面烦是设及到汉字的地方都要保存成(utf8)格式,或者在程序中动态转换成utf8字符串也行。至于如何保存在utf8格式,有很多哟,可以用EditPlus, uedit32, 更酷的一个就是vs.net了。哈哈,可惜它太大了,携带起来不方便。
; |8 A# {' |$ K; ]- X+ o1 L
% q" `8 Z" m. z7 B- k) |, \: @1.你要指定一种中文字体文件(*.ttf) 例如我选用的simhei.ttf, 这可以在window目录中的font文件夹中找到一些。 这就是CEGUI中我们要用到的中文字体来源。 $ u( Y  v/ R+ c. r/ p

# S; J: V. S4 ^) p& _0 h2. 需要定义一个 (.font)文件, 这个文件其实是CEGUI用于生成字符映射图片的一个索引文件(xml格式),在<Font> 节下面定义一个子项<GlyphSet> 并指定其属生 Glyphs="所有需要用到的中文字符集" CEGUI会根据它而生成最终字符映射图片,如果你这里没有将用到的汉字全部列出,没关系,大不了就是CEGUI不会显示出你的字符或者显示成乱码^-^,系统不会崩的。 / g: A! b- J2 p! k! W; Y$ Y

0 m: D- J! M3 m5 Y5 N3.字个(.font)文件一定要保存成(utf8)格式,这是很重要的哟。
# c, n; K' W/ i, R
6 s; L$ G1 S2 y- E- B4.如果你的程序中用到了汉字,那么这个文件最好也要保存成(utf8)格式,当然你也可以去进行ascii<->utf8的转换,都一样的。
9 _, d* \7 F' A% q
3 V/ z$ o* ^' a  |/ A+ o/ a1 Y4 l( Y4 I1 @& f# n7 z
这就完事了,怎么样,很简单吧。至于如何去载入字体文件,如何使用CEGUI,就不关吾的事了。相信你即然看了这遍文件,那些也一定会了吧。
. o( f6 h; @7 c/ R1 c( D2 J6 v: c) D% T, V, f
  
3 d. Q) u* E, c9 U$ k/ Q0 d2 Z8 Z9 x% B# S+ _/ S; Z$ g6 g
, H' }" C2 b  k5 }: j' `

1 K( T" \/ s- O% l: V6 h( |# L) D/ B, `  E9 l2 Z. K1 D, H





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