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