Windows 字符之间有额外空格的Xna文本

Windows 字符之间有额外空格的Xna文本,windows,fonts,xna,spritefont,Windows,Fonts,Xna,Spritefont,我正在制作一个新游戏,我想用我自己的纹理来制作文本。我遇到了一个叫做SpriteFont 2.0的很酷的工具,它就像一个WYSIWYG编辑器,用于在XNA中为SpriteFont文件创建纹理文件。我制作了这种字体: 但我的问题是,当我把它放到XNA中时,字母之间有很多额外的空间。例如,这本应该是说,“这是一个测试”,但结果是这样的: 我的纹理文件有问题吗,或者我的编程需要做些什么。我刚刚在SpriteBatch对象中使用了第一个DrawString方法。我也将纹理文件的内容导入更改为Sprite

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

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

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

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

SpriteFont myFont = ...;
myFont.Spacing = -10;
或者,如果编辑器有紧排设置,这就是您真正想要的。字距是定义字母之间的间距,如下所示:


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

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

SpriteFont myFont = ...;
myFont.Spacing = -10;
或者,如果编辑器有紧排设置,这就是您真正想要的。字距是定义字母之间的间距,如下所示:



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

但我不使用.spritefont文件。可以在绘制编辑器中创建字体纹理,有点像精灵表。然后改变VisualStudio构建它的方式。因为VisualStudio对.spritefont文件所做的就是将它们转换为位图。SpriteFont 2.0有一个spacing属性,但据我所知,它并没有改变任何东西。@Cakeisa不幸的是,
SpriteFont
s的构建时设置非常有限。但Ricket链接的是运行时设置。加载后,您可以在
SpriteFont
对象上设置它。。。通过一些技巧,您可以构建定制的
SpriteFont
内容,完全控制间距、字距等,即使XNA中没有官方的方法。以Nucleux字体为例。当然,@Ricket所写的关于修改
.spritefont
文件的内容根本不适用于您的问题。而且没有运行时方法来修改紧排设置。也许是编辑,Ricket?@Cakeisahock正如Andrew指出的,间距也是一个运行时属性。我编辑了一个示例来演示如何设置它。也许对你有用?嘿!您的权利,我可以通过更改我加载的变量来更改一些SpriteFont属性。谢谢但是我没有使用.spritefont文件。可以在绘制编辑器中创建字体纹理,有点像精灵表。然后改变VisualStudio构建它的方式。因为VisualStudio对.spritefont文件所做的就是将它们转换为位图。SpriteFont 2.0有一个spacing属性,但据我所知,它并没有改变任何东西。@Cakeisa不幸的是,
SpriteFont
s的构建时设置非常有限。但Ricket链接的是运行时设置。加载后,您可以在
SpriteFont
对象上设置它。。。通过一些技巧,您可以构建定制的
SpriteFont
内容,完全控制间距、字距等,即使XNA中没有官方的方法。以Nucleux字体为例。当然,@Ricket所写的关于修改
.spritefont
文件的内容根本不适用于您的问题。而且没有运行时方法来修改紧排设置。也许是编辑,Ricket?@Cakeisahock正如Andrew指出的,间距也是一个运行时属性。我编辑了一个示例来演示如何设置它。也许对你有用?嘿!您的权利,我可以通过更改我加载的变量来更改一些SpriteFont属性。谢谢