5

我想通过使用方法在 XNA 中绘制特殊字符,例如:“π,Ω,θ,ξ” SpriteBatch.DrawString(),但我得到一个异常,说这些字符在 SpriteFont 文件中不可用。有什么解决办法吗?

4

1 回答 1

23

您需要在 spritefont中包含这些字符。

在您的 spritefont 文件中,您需要为希腊字母设置另一个“区域”:

<CharacterRegions>
  <CharacterRegion><!-- Normal letters -->
    <Start>&#32;</Start>
    <End>&#126;</End>
  </CharacterRegion>
  <CharacterRegion><!-- Greek letters -->
    <Start>&#913;</Start>
    <End>&#969;</End>
  </CharacterRegion>
</CharacterRegions>

当您包含它时,您应该能够使用该 spritefont 显示这些字符:

spritefont 中希腊字符的示例用法


使用字符映射工具

查找这些字符所在的区域,请使用Character Map,这是一个很好的应用程序All Programs -> Accessories -> System Tools

当您选择一个字符时,它会显示它的字符代码,例如 omega (ω) 是 U+03C9,即 0x03C9 十六进制或 969 十进制。


定义字符区域的不同方法

有 3 种方法可以在 SpriteFont 文件中定义区域,它们与在 XML 中写入字符的三种方法有关:

  • 十进制表示:即&#126;- 格式为&#nnnn;
  • 十六进制表示:ie &#x7E;- 格式为&#xnnnn;
  • 实际性格:即~

这是用 XML 编写相同内容的三种方式,因此您可以使用不同的方式来定义您的区域。以上是区域的十进制表示。

这是十六进制表示,这是最容易从字符映射中获得的:

在此处输入图像描述

最后,您可以使用实际字符来定义您的区域,您可以通过从字符映射工具的文本框中复制粘贴它们来获得它们:

在此处输入图像描述

于 2012-11-06T11:40:50.033 回答