原文
$ j: p* Y" k! S. Yhttp://dearymz.blog.163.com/blog/static/2056574201012483533257/6 k6 y2 Y# H+ S5 B2 L. n/ J
9 c7 `( [% F+ L N) a1 T8 s7 u$ X
[译]Bitmap fonts in XNA7 F* e! x8 c) H! w. J+ J$ h
XNA 2010-02-24 20:38:19 阅读88 评论1 字号:大中小
) A- \! j b* q R ^% v9 MBitmap fonts in XNA XNA中的图片字体 ) U4 E7 h# Y/ p! t) N" S
XNA字体系统通常从头XML文件所描述的TrueType字体字提取数据,但同时也能直接从手绘的位图中抓取字符图片。4 D1 K8 I" E+ z" {/ `, z2 s) g( X
TrueType字体用起来很方便,但有时候你会发现需要一种更具特色的文字外观。 你可以将一系列的字符图片排列到一张位图中来创建自定义的字体,每个字符图片中间的分割需要用纯的品红色(0xFFFF00FF)。# e! ~0 z9 t- R9 l4 A7 V% _3 J" {" L
- l) Y1 I7 t4 I3 _. d! | 这张图片必须包含alpha通道来描述区域的不透明或透明,品红边框区域的alpha通道必须被设置成不透明。0 c" }, F9 ]8 F# P& U* _5 R/ ]
当你把该文件加入Game Studio Express工程后,默认的Content Importer为“Texture”,默认的Content Processor为“Texture (Sprite, 32bpp)”。为了指出这是一张需要转换成字体的特殊图片,你需要将Content Processor改为“Font Texture”:
( N, D- c2 B! I+ Y/ y. f; A3 Z" H
8 `2 I' O$ L1 y. r/ d
$ |& {' f" e2 T4 V, d: w. [7 B
9 k7 p9 }0 ^+ i SpriteFont类对从位图创建而来的字体的加载和显示方式和从XML描述文件转换来的字体完全一致。我可以通过上面所示的浮雕图片来渲染时髦的浮雕效果:7 z: E# Y& ^- B+ A! U1 u$ j7 |
2 D) M1 _: }3 m
这时,你也许会担忧手工将全部的字体画到位图中一点也不好玩。你是正确的,我也不喜欢这么干。+ I) T2 |* j5 n& S, \- i; g4 i
幸运的是,有个在XNA CGP GSE Samples & Utilities, Inc工作的热心家伙也发现了这个现象,并写了个小工具搞定了该问题。该程序从选择你想要用的TrueType字体界面开始:% w/ f) Z( Y; o& h2 \; \' S
# h* {6 n6 X8 w3 P7 i) H+ x- t
! W- n9 j/ ]$ f# [: J$ j 7 A2 l8 x0 R6 m$ d" m
" Q" f) \+ z$ r2 S. K$ y 当点击Export按钮后,工具做了和标准的XML字体描述处理器类似的工作,并将字符图片输入到一张以品红区域隔开的位图文件中。" e3 F! [6 g+ s1 n; v
上面的浮雕字体我是通过ttf2bmp工具创建的,然后将输出的图片放到Photoshop中,选中除品红区域外的部分,然后运行浮雕过滤器,最终将这幅修改过的图片送给Content Pipeline的“Font Texture”处理器。1 x7 ]" l5 H7 E4 O7 l; y
ShawnHargreaves 2007年4月26日 下午3:44 星期四 发布。
: y b6 {5 [- n: L* w) b2 m# ?[完] 3 H4 {5 _+ T9 g
+ j! L/ E! W- [9 V
译注:
8 e) ]. t2 h9 Z. Z6 ?' ^ XNA通过简单的图片就可以直接生成字体,非常简捷。通过XML的 SpriteFont配置文件生成字体是一种选择,但直接通过图片创建字体可以提供更大的灵活性,比如文中提到用PS对图片进行深度加工。由此看到明文(或可理解)资源格式的重要性。通过明文文本或者其他标准的、流行的或可被理解的方式保存资源对游戏的制作非常重要,自定义资源格式是将自己一步步陷入不毛之地。
6 T) O1 r- u, n 标准化,而不是去创造标准。 a3 E# `% J9 _) [- I7 c
) Y( y: ]5 L& L" _原文地址:http://blogs.msdn.com/shawnhar/archive/2007/04/26/bitmap-fonts-in-xna.aspx + f1 M2 U# S, g# v
ttf2bmp XNA字体图片生成器下载地址:http://creators.xna.com/en-US/utilities/bitmapfontmaker" W/ b* {$ L4 {
另外推荐一款强大的XNA字体图片生成器:SpriteFont 2
6 R) Q/ q" ~9 W7 q& ~1 c中文字体的显示可以参考SpriteFontX。原理:在运行时采用GDI+系统将TrueType字体渲染到Bitmap再导到Texture2D,实现TTF字体的动态光栅化。 |