原文9 u/ d8 f1 X6 g( ]
http://dearymz.blog.163.com/blog/static/2056574201012483533257/
5 `5 Z8 \7 j$ h L2 @$ N
: ?$ w0 x+ Y( ?- {. O% p[译]Bitmap fonts in XNA
5 }9 J: h8 Y( o' S0 NXNA 2010-02-24 20:38:19 阅读88 评论1 字号:大中小 ) @7 t5 s# T# R0 i8 p. s o
Bitmap fonts in XNA XNA中的图片字体 - X. V2 k: f5 B: L: {. C
XNA字体系统通常从头XML文件所描述的TrueType字体字提取数据,但同时也能直接从手绘的位图中抓取字符图片。% h! r8 ~* ~7 ~; G% L0 H
TrueType字体用起来很方便,但有时候你会发现需要一种更具特色的文字外观。 你可以将一系列的字符图片排列到一张位图中来创建自定义的字体,每个字符图片中间的分割需要用纯的品红色(0xFFFF00FF)。: g/ Z d' t; v) P8 {+ y
: e3 v; X1 a+ ^% Q2 Z) s2 K 这张图片必须包含alpha通道来描述区域的不透明或透明,品红边框区域的alpha通道必须被设置成不透明。, ^4 _# w: ]# A* G9 \8 r
当你把该文件加入Game Studio Express工程后,默认的Content Importer为“Texture”,默认的Content Processor为“Texture (Sprite, 32bpp)”。为了指出这是一张需要转换成字体的特殊图片,你需要将Content Processor改为“Font Texture”:
6 H* m2 ?- w: ?
, q8 ~' I' x- b: I
% L: T3 }+ x( b# y7 Z+ c* N
, O. v9 q' q ?2 ` b; w) T SpriteFont类对从位图创建而来的字体的加载和显示方式和从XML描述文件转换来的字体完全一致。我可以通过上面所示的浮雕图片来渲染时髦的浮雕效果:
& _8 m- R; ~$ A6 I3 z& I7 i5 b- Y: t/ d, q9 G* e
这时,你也许会担忧手工将全部的字体画到位图中一点也不好玩。你是正确的,我也不喜欢这么干。
: |- e+ N% C3 V; p3 B 幸运的是,有个在XNA CGP GSE Samples & Utilities, Inc工作的热心家伙也发现了这个现象,并写了个小工具搞定了该问题。该程序从选择你想要用的TrueType字体界面开始:
# P6 l- \7 ?% a. l1 k! h1 V- m- h) j C o" L. Z
9 {/ @! C7 `2 g; @9 Q/ V5 \8 c8 Y * Y/ J! t. q, d. {& I% p7 H8 x( P( b
; n5 j: h; U# b" R w
当点击Export按钮后,工具做了和标准的XML字体描述处理器类似的工作,并将字符图片输入到一张以品红区域隔开的位图文件中。# Q9 x8 Y8 Q) \( U# Q4 _. |
上面的浮雕字体我是通过ttf2bmp工具创建的,然后将输出的图片放到Photoshop中,选中除品红区域外的部分,然后运行浮雕过滤器,最终将这幅修改过的图片送给Content Pipeline的“Font Texture”处理器。
% {% y9 G1 h* D) B; q& |" y. z ShawnHargreaves 2007年4月26日 下午3:44 星期四 发布。& t: y8 I' w6 y, L c
[完]
& J% i! a/ L) F! c* s% N
7 t! _" Y% F' ]+ k6 y( O! c译注: 6 M9 C |( R9 a6 f- k5 A
XNA通过简单的图片就可以直接生成字体,非常简捷。通过XML的 SpriteFont配置文件生成字体是一种选择,但直接通过图片创建字体可以提供更大的灵活性,比如文中提到用PS对图片进行深度加工。由此看到明文(或可理解)资源格式的重要性。通过明文文本或者其他标准的、流行的或可被理解的方式保存资源对游戏的制作非常重要,自定义资源格式是将自己一步步陷入不毛之地。) _6 q& g! p' i# U# t* `
标准化,而不是去创造标准。9 C: r* Z" _7 a$ k) S) {6 s
1 w+ ~1 ^0 S4 J8 t& A0 z2 c& N7 T( {原文地址:http://blogs.msdn.com/shawnhar/archive/2007/04/26/bitmap-fonts-in-xna.aspx
* x$ e1 t( @& T- i B, A% n% sttf2bmp XNA字体图片生成器下载地址:http://creators.xna.com/en-US/utilities/bitmapfontmaker
7 {5 M/ l0 p. w0 [+ M另外推荐一款强大的XNA字体图片生成器:SpriteFont 2: W: u p" n- M/ A
中文字体的显示可以参考SpriteFontX。原理:在运行时采用GDI+系统将TrueType字体渲染到Bitmap再导到Texture2D,实现TTF字体的动态光栅化。 |