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