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