原文
H; j! a: M- r% g9 g# ?0 l8 \http://dearymz.blog.163.com/blog/static/2056574201012483533257/
4 k, N4 |0 `9 J) X: J9 m7 k
# z4 Q+ x1 Z- \; L! z* {& L" u[译]Bitmap fonts in XNA
( B* h$ ~, P mXNA 2010-02-24 20:38:19 阅读88 评论1 字号:大中小 - z" l) u! C8 i- U( \
Bitmap fonts in XNA XNA中的图片字体
, U* p! U$ b9 L& Z, K XNA字体系统通常从头XML文件所描述的TrueType字体字提取数据,但同时也能直接从手绘的位图中抓取字符图片。
* @. v$ ~1 n4 g2 ?4 a TrueType字体用起来很方便,但有时候你会发现需要一种更具特色的文字外观。 你可以将一系列的字符图片排列到一张位图中来创建自定义的字体,每个字符图片中间的分割需要用纯的品红色(0xFFFF00FF)。: o1 M& r9 |- `
N0 _2 C9 c! v9 F! ^) `+ K
这张图片必须包含alpha通道来描述区域的不透明或透明,品红边框区域的alpha通道必须被设置成不透明。! F9 B& U9 [+ N& S Q
当你把该文件加入Game Studio Express工程后,默认的Content Importer为“Texture”,默认的Content Processor为“Texture (Sprite, 32bpp)”。为了指出这是一张需要转换成字体的特殊图片,你需要将Content Processor改为“Font Texture”:2 a: F9 K1 r9 _9 Z. f+ b! e1 K
! D& x; `' O9 G0 J: l* Q4 S; H& n. P6 ?$ i
4 g8 h# I# J! X* o4 }# V, K7 Y! p
SpriteFont类对从位图创建而来的字体的加载和显示方式和从XML描述文件转换来的字体完全一致。我可以通过上面所示的浮雕图片来渲染时髦的浮雕效果:
" a% F! N X/ c- v; d' h/ y, ^) @: {1 i
这时,你也许会担忧手工将全部的字体画到位图中一点也不好玩。你是正确的,我也不喜欢这么干。
6 _6 f! Z% r& }; e 幸运的是,有个在XNA CGP GSE Samples & Utilities, Inc工作的热心家伙也发现了这个现象,并写了个小工具搞定了该问题。该程序从选择你想要用的TrueType字体界面开始: X/ ?4 J' m/ K1 X3 n
2 d' F1 R7 {& L. p0 \; R
0 `7 K6 w. R r
# a% z9 f: N! j
! y# P# a. c7 _2 q 当点击Export按钮后,工具做了和标准的XML字体描述处理器类似的工作,并将字符图片输入到一张以品红区域隔开的位图文件中。% {) d2 j/ H! F5 X& Q
上面的浮雕字体我是通过ttf2bmp工具创建的,然后将输出的图片放到Photoshop中,选中除品红区域外的部分,然后运行浮雕过滤器,最终将这幅修改过的图片送给Content Pipeline的“Font Texture”处理器。
! g8 G) m8 r: F6 y ShawnHargreaves 2007年4月26日 下午3:44 星期四 发布。
' K# P, C2 C" K. r! c0 Q[完]
# D+ T5 @! `/ A* H/ g
( r/ ?0 O! J1 M" C译注:
8 }+ S9 ? ?. o5 e' o* z( C XNA通过简单的图片就可以直接生成字体,非常简捷。通过XML的 SpriteFont配置文件生成字体是一种选择,但直接通过图片创建字体可以提供更大的灵活性,比如文中提到用PS对图片进行深度加工。由此看到明文(或可理解)资源格式的重要性。通过明文文本或者其他标准的、流行的或可被理解的方式保存资源对游戏的制作非常重要,自定义资源格式是将自己一步步陷入不毛之地。
, |- r7 }8 N, A0 r' c4 p 标准化,而不是去创造标准。' ^, {' P7 }) M' Q
* l# J7 @/ S1 f8 h* j4 v原文地址:http://blogs.msdn.com/shawnhar/archive/2007/04/26/bitmap-fonts-in-xna.aspx
* x7 u* i8 T$ a) Z. kttf2bmp XNA字体图片生成器下载地址:http://creators.xna.com/en-US/utilities/bitmapfontmaker
! O. q4 t7 o8 a9 I6 z$ V另外推荐一款强大的XNA字体图片生成器:SpriteFont 2/ @- k9 D2 d, @) Z2 p9 j3 d `* k
中文字体的显示可以参考SpriteFontX。原理:在运行时采用GDI+系统将TrueType字体渲染到Bitmap再导到Texture2D,实现TTF字体的动态光栅化。 |