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