原文
( n/ t. L/ A1 }: e7 W# Ihttp://dearymz.blog.163.com/blog/static/2056574201012483533257/3 `7 E1 U. v/ Y; a6 ^7 ?1 @
: C! p4 b: b+ f3 E
[译]Bitmap fonts in XNA* H% y% ]4 d" n% q- @* E L% l
XNA 2010-02-24 20:38:19 阅读88 评论1 字号:大中小
& A) Q; `& A% p' `! a( G% p: V: JBitmap fonts in XNA XNA中的图片字体 9 x& L/ D# A, h/ ?+ q" X; x4 a, ]- z
XNA字体系统通常从头XML文件所描述的TrueType字体字提取数据,但同时也能直接从手绘的位图中抓取字符图片。3 b. G6 n# R9 J7 b, U& P
TrueType字体用起来很方便,但有时候你会发现需要一种更具特色的文字外观。 你可以将一系列的字符图片排列到一张位图中来创建自定义的字体,每个字符图片中间的分割需要用纯的品红色(0xFFFF00FF)。& _1 C4 D4 n4 {" v# [ e1 J
" I7 t" Y6 q) r8 L- c 这张图片必须包含alpha通道来描述区域的不透明或透明,品红边框区域的alpha通道必须被设置成不透明。
" r, k9 u4 |+ |0 X/ E1 }8 o 当你把该文件加入Game Studio Express工程后,默认的Content Importer为“Texture”,默认的Content Processor为“Texture (Sprite, 32bpp)”。为了指出这是一张需要转换成字体的特殊图片,你需要将Content Processor改为“Font Texture”:
. m- e. u) M( b, o7 s5 D
3 h: r5 o g/ \6 c# [: k1 j0 l
, q6 L8 e. N6 z x1 K
% [" ] X/ Y0 {" M9 L SpriteFont类对从位图创建而来的字体的加载和显示方式和从XML描述文件转换来的字体完全一致。我可以通过上面所示的浮雕图片来渲染时髦的浮雕效果:0 \8 H$ A# o/ o: P1 X H$ i
8 D& a2 k7 } M$ g- n 这时,你也许会担忧手工将全部的字体画到位图中一点也不好玩。你是正确的,我也不喜欢这么干。
' a1 g5 V: a* |" d* h 幸运的是,有个在XNA CGP GSE Samples & Utilities, Inc工作的热心家伙也发现了这个现象,并写了个小工具搞定了该问题。该程序从选择你想要用的TrueType字体界面开始:! F: J) j4 o1 M" m
8 k" Y: J0 ]2 N- a7 p2 C* c7 G+ K2 p }* {8 I2 a/ Q
6 v. e) L1 P A( Q+ d0 y% n! b$ ]2 T0 O2 w: f
当点击Export按钮后,工具做了和标准的XML字体描述处理器类似的工作,并将字符图片输入到一张以品红区域隔开的位图文件中。/ t) n. ~9 j8 S: \, y9 y: v
上面的浮雕字体我是通过ttf2bmp工具创建的,然后将输出的图片放到Photoshop中,选中除品红区域外的部分,然后运行浮雕过滤器,最终将这幅修改过的图片送给Content Pipeline的“Font Texture”处理器。3 M5 ]5 M4 u/ S$ m" w1 p# O
ShawnHargreaves 2007年4月26日 下午3:44 星期四 发布。
; \0 U* \# `/ b5 s M3 c[完]
6 X9 ~* |) |+ F) O& W% \' [
6 _0 [2 z: O$ @3 Q) C+ O0 G译注:
. O. e( o# H0 g; S, b XNA通过简单的图片就可以直接生成字体,非常简捷。通过XML的 SpriteFont配置文件生成字体是一种选择,但直接通过图片创建字体可以提供更大的灵活性,比如文中提到用PS对图片进行深度加工。由此看到明文(或可理解)资源格式的重要性。通过明文文本或者其他标准的、流行的或可被理解的方式保存资源对游戏的制作非常重要,自定义资源格式是将自己一步步陷入不毛之地。
p7 E$ H1 E# P+ e0 ?( j# n 标准化,而不是去创造标准。, H8 o( h7 a( E) I3 F* F6 p
: U. |: ^; I$ N: r$ s
原文地址:http://blogs.msdn.com/shawnhar/archive/2007/04/26/bitmap-fonts-in-xna.aspx : E2 I8 }4 i* A) w9 H$ e; ]
ttf2bmp XNA字体图片生成器下载地址:http://creators.xna.com/en-US/utilities/bitmapfontmaker: l8 V: g6 ^9 J( i
另外推荐一款强大的XNA字体图片生成器:SpriteFont 2
# V, G* L" `; Y: \" ^/ b. z中文字体的显示可以参考SpriteFontX。原理:在运行时采用GDI+系统将TrueType字体渲染到Bitmap再导到Texture2D,实现TTF字体的动态光栅化。 |