CEGUI是一个开放源码的开发游戏界面的库,如果你在游戏里发现CEGUIBase_d.dll之类以CEGUI开头的DLL的话,这个游戏的界面就是CEGUI做的,游戏字幕的输出自然也是用它。 ! J% @, P* q6 [& L: n
. D0 T S5 ~; p8 ?$ f
CEGUI有0.4.1,0.5.X,0.6.X等几个版本,从0.5.X开始就对中文完美支持了。
" D7 \: N8 _% o6 _/ g1 {问题是0.4.1这个版本,对中文的支持不太完美,说是不能换页之类的。 2 z. L. n0 L, O, [# Q
现阶段,不少AVG游戏中还是用CEGUI0.4.1这个版本,比如安徒生童话这个AVG游戏. . k1 z, C# s" N) h6 n
因为FONT字体定义文件的格式不同,所以可以判断出是0.4.1这个版本 " @* x' U) E: L7 U* K" t- w
. t) J% b2 N- F- F解决方法 : I V) {( c" N3 [9 r
关于解决方法,我查了不少资料,大致有2个
) k' Z. I5 Q$ R* E: I1。改造0.4.1的DLL文件,参照0.5.X的代码,把关键地方进行修改。
9 O; r& M4 L# N, Q 这个方法较难,暂不讨论。
( e: V2 b: ]" g9 R/ a8 y; U9 _) U( v2 R, a3 I
2。0.4.1的字体定义文件还是为中文留了一条路的。 ( F3 E% g" k9 {% M9 D( s
可以用GlyphSet这个属性只生成要用到的字体的图片。 ' m+ p) h* N, k5 c& ^4 ~8 a9 `
中文汉字有6000多个,但是在一个AVG里用到的中文可能只有1000多个。 1 I# u- X( d9 R5 w& N
把这些中文汉字定义到GlyphSet这个属性,也许就能正常显示了。 ) G, O& P8 l9 w& @
这个方法尚未做实际测试,效果未知。
: g8 E7 [8 W2 V& R z1 d8 m; T# l {$ q
相关资料
3 c% U, L/ F5 m8 w9 @
8 F1 [, T, W+ d& X; `" mCEGUI0.4.1字体定义文件说明 : f8 ?$ Y+ M, ^
http://www.cegui.org.uk/wiki/index.php/Font_files $ t) M3 e2 I/ D9 T; M6 [! N5 m" A- H
! P! |2 D+ P4 Z! Q3 S9 \+ V! a! hCEGUI0.5.X关于字体定义文件的变更点 ! y2 G* E$ F: L
原文 - [5 ^' W/ L; u% I9 n" P0 W
http://www.cegui.org.uk/wiki/index.php/Release_Notes_0.5.X0 F/ V; m9 A( k$ D6 _; O+ ?
& F+ ]5 Y D1 l+ i" F! ]% ~" J* }! J
A FontDemo sample which shows several properties of the new Font class.
3 V$ f# X9 i; W- T( T2 J. x# cThe above changes resulted in some slight changes to the format of the XML .font files: % g! N! ]7 ^. a, j- D7 z' a/ |
9 q# G6 u: N; n; R- D% q5 [: v7 |# A) P
GlyphSet, GlyphRange, Glyph sections of the Font are gone
2 j3 N+ b, z, U% F) ?' J) eThe possible values of the Type attribute are now:
/ E, t! s2 m! s9 ]3 SFreeType (instead of Dynamic)
1 ? ~% f& j8 C( Z" ePixmap (instead of Static)
1 K) E5 _1 U6 y6 l MThe FirstCodepoint and LastCodepoint attributes of the Font section were removed ' `) y# j/ r& u; Z% j, Z# h, ]
After you change your .font files as mentioned above, they should work without problems.
/ ~" C0 r. e% _ 9 b' Q' ]" ?5 S
下面这篇文章应该是针对CEGUI0.4.1这个版本来说的。 $ a( P Q3 W* Q, c* L) [& H
: R4 K; |5 f9 u
如何让CEGUI显示出中文 / L: n; C1 X9 Y- u7 x
原文
. |% |/ E$ c' ~$ I8 Y3 Z3 ihttp://blog.csdn.net/khzide/archive/2005/09/07/473765.aspx
, }$ | u& v/ \; I3 O' e- Z3 R
# _" Y$ C# o( r; v3 `% SCEGUI(Crazy Eddie's GUI System ) 是一个免费并开放源码的图形(GUI API库),写于C++, 并且面向对象。你可以用它来创建游戏中的GUI部分,而不用再自已动手去实现。 5 i# A, J( K3 O3 z1 f* J7 J
8 t5 Z) N& i) p; \% s
管方网站:http://www.cegui.org.uk/ 上面有很多有用的信息,如果你要详细了解它的话,可以常去这上面逛逛。
$ x: x6 E% B: e3 j) f) E, k, o# \8 C' u! y$ k* ~
发现有好多战友与我一样,一开始用它的时候不知道如何显示出中文,只是听说很easy,但却自已试不出来。我走了一些弯路,希望别人不要再跟我一样了。其实它实现起来真是是很easy. CEGUI是基于utf8格式的,所以可以显示出中文,但需要注意的是这里面烦是设及到汉字的地方都要保存成(utf8)格式,或者在程序中动态转换成utf8字符串也行。至于如何保存在utf8格式,有很多哟,可以用EditPlus, uedit32, 更酷的一个就是vs.net了。哈哈,可惜它太大了,携带起来不方便。 . [ ~& x) T+ F" w
( q6 v1 E4 Z1 Y9 f; R/ O- d6 n6 Q1.你要指定一种中文字体文件(*.ttf) 例如我选用的simhei.ttf, 这可以在window目录中的font文件夹中找到一些。 这就是CEGUI中我们要用到的中文字体来源。
" i$ D, m: r( w: {- m p
4 U7 e# Z d- M2. 需要定义一个 (.font)文件, 这个文件其实是CEGUI用于生成字符映射图片的一个索引文件(xml格式),在<Font> 节下面定义一个子项<GlyphSet> 并指定其属生 Glyphs="所有需要用到的中文字符集" CEGUI会根据它而生成最终字符映射图片,如果你这里没有将用到的汉字全部列出,没关系,大不了就是CEGUI不会显示出你的字符或者显示成乱码^-^,系统不会崩的。
1 t2 B6 _/ L; I, u7 v; b6 r& E+ O
3.字个(.font)文件一定要保存成(utf8)格式,这是很重要的哟。
- I- h& A+ f+ k: a6 `& R, n3 T" I6 Y# q7 r% B
4.如果你的程序中用到了汉字,那么这个文件最好也要保存成(utf8)格式,当然你也可以去进行ascii<->utf8的转换,都一样的。 {1 B/ q! R, Z, S6 c
8 a' b) W i' J
& e0 D# @. b6 ^1 B) ~这就完事了,怎么样,很简单吧。至于如何去载入字体文件,如何使用CEGUI,就不关吾的事了。相信你即然看了这遍文件,那些也一定会了吧。 + \: T, {! y5 S
' A& ^: B" E$ `6 ] _; X* ^
{% l3 p* w' U3 ` s7 d; n5 p, j9 H+ q5 E5 q) g/ K Y
) |! J+ g4 H/ [; o% m+ N5 B- B" h2 M; f) s- B
- H( h5 J0 R9 J" Z2 s0 J& @
|