原文- B; X+ G$ S2 w6 m+ \
http://dearymz.blog.163.com/blog/static/2056574201012483533257/% _) j2 a4 V$ Y" ]6 F8 c- o
& h! f8 j& B, M% I6 P1 e3 ?6 X
[译]Bitmap fonts in XNA
u$ a9 j; ]0 o+ @ _+ D: x, m; t& hXNA 2010-02-24 20:38:19 阅读88 评论1 字号:大中小
/ f4 k/ o, ^4 OBitmap fonts in XNA XNA中的图片字体
& }7 S, j, t) h1 y s/ }( [2 f/ t XNA字体系统通常从头XML文件所描述的TrueType字体字提取数据,但同时也能直接从手绘的位图中抓取字符图片。
, w$ r L5 A. h$ f. Y0 I TrueType字体用起来很方便,但有时候你会发现需要一种更具特色的文字外观。 你可以将一系列的字符图片排列到一张位图中来创建自定义的字体,每个字符图片中间的分割需要用纯的品红色(0xFFFF00FF)。
( l* I( M" J7 \/ I) r
5 U9 C) j% y9 Y j) [ P5 \ 这张图片必须包含alpha通道来描述区域的不透明或透明,品红边框区域的alpha通道必须被设置成不透明。
4 ]9 J4 { g4 |. m7 M$ R0 P 当你把该文件加入Game Studio Express工程后,默认的Content Importer为“Texture”,默认的Content Processor为“Texture (Sprite, 32bpp)”。为了指出这是一张需要转换成字体的特殊图片,你需要将Content Processor改为“Font Texture”:; L2 t4 N j5 Z" N
Z' l1 |: F1 Q7 k$ F' F8 f
/ H7 h: G" {# _9 A& U
' G. y$ I* y8 F9 w" F, l+ @% k' j
SpriteFont类对从位图创建而来的字体的加载和显示方式和从XML描述文件转换来的字体完全一致。我可以通过上面所示的浮雕图片来渲染时髦的浮雕效果:
; m; ^: A$ I# e! J$ `, \7 v2 o4 V7 {% U, P3 E6 y/ \3 `
这时,你也许会担忧手工将全部的字体画到位图中一点也不好玩。你是正确的,我也不喜欢这么干。4 P$ {$ c" Z2 ~
幸运的是,有个在XNA CGP GSE Samples & Utilities, Inc工作的热心家伙也发现了这个现象,并写了个小工具搞定了该问题。该程序从选择你想要用的TrueType字体界面开始:
& u* v% `0 P) ]! t7 `% H8 v) G- m( `( B" V+ T, T. v
/ ^+ U/ ?2 n0 a% U; G$ L
4 v4 F2 Y1 S8 s* @/ u( j1 D, Z1 X0 S5 @+ t
当点击Export按钮后,工具做了和标准的XML字体描述处理器类似的工作,并将字符图片输入到一张以品红区域隔开的位图文件中。
5 H' p, c& |( ] 上面的浮雕字体我是通过ttf2bmp工具创建的,然后将输出的图片放到Photoshop中,选中除品红区域外的部分,然后运行浮雕过滤器,最终将这幅修改过的图片送给Content Pipeline的“Font Texture”处理器。, n& J$ ^/ B! r- b2 `. c
ShawnHargreaves 2007年4月26日 下午3:44 星期四 发布。0 v, u1 J3 y- N/ j) z
[完] 3 M3 k6 k9 r; p! z5 E
5 S* b/ E# ^6 s译注: + @$ [; w% x5 \: O
XNA通过简单的图片就可以直接生成字体,非常简捷。通过XML的 SpriteFont配置文件生成字体是一种选择,但直接通过图片创建字体可以提供更大的灵活性,比如文中提到用PS对图片进行深度加工。由此看到明文(或可理解)资源格式的重要性。通过明文文本或者其他标准的、流行的或可被理解的方式保存资源对游戏的制作非常重要,自定义资源格式是将自己一步步陷入不毛之地。
* g+ c% }/ U6 f" ^5 J* R3 M 标准化,而不是去创造标准。
; q* b( P% E: f7 u# ~
& b( V; e5 I F" @* ]原文地址:http://blogs.msdn.com/shawnhar/archive/2007/04/26/bitmap-fonts-in-xna.aspx
+ v4 h- Y0 v% H. p. Mttf2bmp XNA字体图片生成器下载地址:http://creators.xna.com/en-US/utilities/bitmapfontmaker
: x, H+ L, f, o& J# w0 ^另外推荐一款强大的XNA字体图片生成器:SpriteFont 2" B7 B1 M: E4 d& _9 P
中文字体的显示可以参考SpriteFontX。原理:在运行时采用GDI+系统将TrueType字体渲染到Bitmap再导到Texture2D,实现TTF字体的动态光栅化。 |