【问题标题】:Xna text having extra space between charactersXna 文本在字符之间有额外的空格
【发布时间】:2012-10-04 02:24:58
【问题描述】:

我正在制作一个新游戏,我想使用我自己的纹理来制作文本。我遇到了这个很酷的工具,叫做 SpriteFont 2.0,它就像一个所见即所得的编辑器,用于为 XNA 中的 SpriteFont 文件制作纹理文件。我做了这个字体:

但我的问题是,当我将它放入 XNA 时,字母之间有很多额外的空间。例如,这应该说“这是一个测试”,但结果是这样的:

我的纹理文件是否有问题,或者我的编程需要做些什么。我刚刚在SpriteBatch 对象中使用了第一个DrawString 方法。我也将纹理文件的内容导入更改为 Sprite Font Texture。我不知道为什么文本的字符之间有这么多的空间。

【问题讨论】:

    标签: windows fonts xna spritefont


    【解决方案1】:

    您可以在运行时更改 SpriteFont 对象的 Spacing property。将其设置为负值,看看字母是否靠得更近。

    SpriteFont myFont = ...;
    myFont.Spacing = -10;
    

    或者,如果编辑器有字距调整设置,那就是您真正想要的。 Kerning 定义字母之间的间距,如下所示:


    还有一个LineSpacing property 表示垂直高度,如果您在屏幕上打印多行(作为一个绘图调用),您可能还需要调整它。

    【讨论】:

    • 但我没有使用 .spritefont 文件。您可以在绘图编辑器中制作字体纹理,有点像精灵表。然后只需更改 Visual Studio 构建它的方式。因为 Visual Studio 对 .spritefont 文件所做的只是将它们转换为位图。 SpriteFont 2.0 有一个间距属性,但据我所知,这并没有改变任何东西。
    • @cakeisajoke 不幸的是,SpriteFonts 的构建时设置非常有限。但是 Ricket 所链接的是 runtime 设置。您可以在加载后在 SpriteFont 对象上设置它...通过一些技巧,您可以构建自定义的 SpriteFont 内容 - 完全控制间距、字距调整等 - 即使 XNA 中没有官方方法。以 Nuclex 字体为例。但它相当复杂 - 所以运行时解决方案可能是您最好的选择。
    • 当然,@Ricket 写的关于修改.spritefont 文件的内容根本不适用于您的问题。并且没有运行时修改字距设置的方法。也许是编辑,佝偻病?
    • @cakeisajoke 正如 Andrew 所指出的,间距也是运行时属性。我进行了编辑以显示您如何设置它的示例。也许它对你有用?
    • 嘿!你说得对,我可以通过更改加载它的变量来更改一些 SpriteFont 属性。谢谢!
    猜你喜欢
    • 2021-02-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多