我想通过使用方法在XNA中绘制特殊字符,如:“π,Ω,θ,ξ”
SpriteBatch.DrawString()
,但我在SpriteFont文件中说“字符不可用”。对此有什么解决方案吗?
答案 0 :(得分:21)
你需要在你的spritefont中包含那些字符。
在你的spritefont文件中,你需要为希腊字母设置另一个“区域”:
<CharacterRegions>
<CharacterRegion><!-- Normal letters -->
<Start> </Start>
<End>~</End>
</CharacterRegion>
<CharacterRegion><!-- Greek letters -->
<Start>Α</Start>
<End>ω</End>
</CharacterRegion>
</CharacterRegions>
当你包含它时,你应该能够用那个spritefont显示那些字符:
要找到这些字符所在的区域,请使用Character Map,这是All Programs -> Accessories -> System Tools
中的一个不错的应用程序。
当你选择一个字符时,它会显示它的字符代码,例如omega(ω)是U + 03C9,它是0x03C9十六进制或969十进制。
有三种方法可以在SpriteFont文件中定义您的区域,它们与三种用XML编写字符的方式有关:
~
- 格式为&#nnnn;
~
- 格式为&#xnnnn;
~
这是用XML编写相同内容的三种方法,因此您可以使用不同的方法来定义区域。以上是地区的十进制表示。
这是十六进制表示,最容易从字符映射中获取:
最后,您可以使用实际字符来定义您的区域,然后通过从字符映射工具中的文本框中粘贴它们来获取这些区域: