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