Articles of spritefont

如何正确使用SpriteFont测量文字高度?

我正在使用MonoGame并试图测量一个string。 显而易见的方法是使用SpriteFont.MeasureString ,但该函数似乎始终返回错误的高度。 具体来说,虽然文本宽度似乎是准确的,但文本高度是衡量整个行的高度,包括间距,而不是文本本身的高度。 这里有一些我使用Consolas字体的例子。 我testing了其他字体以及类似的结果。 字体大小: 10 – 测量身高: 15 字体大小: 12 – 测量身高: 18 字体大小: 20 – 测量身高: 31 字体大小: 32 – 测量身高: 50 我的问题是, 我怎样才能准确地测量文字高度没有行距?

Xna Spritefont从安装的字体

我在我的游戏中使用了Spritefont,我已经下载了一个.ttf字体并将其安装在我的机器上。 我现在在我的游戏中使用这个字体。 我的问题是,如果这个游戏是在另一台机器上运行的.ttf字体需要安装在该机器上工作?

为什么不用线和/或多边形绘制自定义字体?

我看到的原因/优点: 程序animation更加灵活。 完全自定义的字体。 性能(没有纹理或高聚)? 没有资产(除非数据驱动)。 与精灵字体/精灵相比,多分辨率。 下面我看到: 努力和时间来定义每个字符。 努力和时间来执行一般的代码。 未来的本地化痛苦 例如: https : //youtu.be/Tz7L-92Bo-M?t = 2m13s 这是不合理的,为什么? 与通用多核移动设备上的精灵字体相比,我能获得渲染性能胜利吗?

与VB的DrawFont

我遇到字体问题。 就我从SpriteFont的非常有限的信息中可以看到,我应该可以添加一个字体到我的内容作为一个SpriteFont。 但是,添加新项目菜单中不存在SpriteFont。 有没有其他人解决这个问题?

如何在MonoGame 3.5中绘制不平滑的字体?

我不想平滑我正在建立的微小的字体,但即使禁用ClearType系统范围不让我创建具有尖锐的字符的SpriteFont文件。 似乎没有可以设置为“禁用”的.spritefont文件中的平滑选项。 有没有影响spritefonts生成的configuration? 我在Visual Studio 2015中使用了MonoGame 3.5,并通过Content.mgcb构建了自动添加到MonoGame项目中的spritefonts。 我尝试使用给你的字体单声道(间距)工具,但它没有一个选项来禁用平滑。 试图按照BMFont生成器的本教程 ,并在示例中添加了引用,但是MonoGame.Extended东西不会出现,而不是自动识别的导入器,我得到[missing] [null] 。 之后,我尝试添加一些MonoGame管道DLL附带的包,但没有运气。 试图使用XNA内容编译器,但它引发了一个exception,一些重要的对象contentBuilder为空。 安装XNA框架不能解决问题。 如果有方法来绘制文本,而不使用允许使用非平滑字符的SpriteFonts,我想知道如何。

加载“SpriteFont1”时出错。 文件未find

我在尝试加载扩展名为“.xnb”的字体文件时遇到了问题,并收到以下错误消息: Error loading "SpriteFont1". File not found. 对于以下代码: public static Dictionary<string, T> LoadListContent<T>(this ContentManager contentManager, string contentFolder) { DirectoryInfo dir = new DirectoryInfo(contentManager.RootDirectory + "/" + contentFolder); if (!dir.Exists) throw new DirectoryNotFoundException(); Dictionary<String, T> result = new Dictionary<String, T>(); FileInfo[] files = dir.GetFiles("*.*"); foreach (FileInfo file in files) { string key = Path.GetFileNameWithoutExtension(file.Name); result[key] = […]

在Monogame中加载字体

这个问题可能是重复的,但我仍然在问,因为昨天我试图完成这个任务没有任何成功。 我遵循了许多解决scheme,并尝试了更多过时的库,或者他们根本就没有工作。 现在我find的最合理的方法是 打开内容管道; 创建一个新的内容,如果没有任何; 右键点击内容 – >添加 – >新建项目 – > SpriteFont描述 – >给它一个名字; 点击Build; 转到输出目录,抓住已创建的XNB文件,并把它放在项目的某个文件夹中,在Content下; 将属性更改为内容并复制(如果更新); 我这样使用它: private SpriteFont font; font = Content.Load<SpriteFont>("NameOfXNBFile"); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, null, null, null, Global.Camera.TranslationMatrix); spriteBatch.DrawString(font, "Some Text", new Vector2(100, 100), Color.White); spriteBatch.End(); 我没有任何错误,文本是根本没有显示。 我想我可以接近一个解决scheme,因为只有一个单一的文本出现,但作为傻瓜,我很高兴地closures了无数教程的标签,并作出一些改变,导致文本再也没有显示。

基于PNG源创建和编辑.fnt文件

我目前正在用LIBGDX Java库制作一个游戏(显然)。 我已经做了一个字体(这是一个PNG文件,而不是一个TTF或RTF),看起来像这样: (这是一个模型,顺便说一下。) 我试过像Shoebox这样的程序来自动创建我的字体,但是它不能识别我的字体。 有人可以解释我如何才能使自己的.FNTconfiguration文件? 提前致谢! 插头

在MonoGame中更改Spritefont大小而不用抗锯齿

我在MonoGame中为一个小游戏使用自定义字体,它是在8×8的网格上制作的,所以我必须调整它以使其变大。 目前,我正在缩放spriteBatch.Begin()方法中的缩放比例,但这意味着我必须为每个我想要的字体调用End()和Begin()方法,效率非常低。 我发现了一个在线的解决scheme来防止Begin()方法的反锯齿,但我想知道的是:有没有办法通过更改spritefont的XML文件进行缩放时防止锯齿? 任何帮助,将不胜感激! :d

如何保持非等宽字体的字符宽度?

有一个字体通过spritesheet(PNG),最简单的方法来显示字体只是显示为等宽字符,但正如你可以想像,看起来不漂亮的字符,如l , i ,等等。 是否有一个光滑的方式来保持每个字符的宽度? 我已经想过把它存储到一个额外的文件中,用像素来表示每个字符的宽度。 Pro:快速渲染。 Con:这是大约100个字的一个工作量。 我给了“计数”每个字符的像素宽度的思想。 临:一旦这个algorithm做到了,那么之后就没有任何工作了。 Con:由于每帧都有很多的字体渲染,这是纯粹的废话 – performance力。 我接受建议和/或已知的algorithm来解决这个问题。 编辑: TTF或一些其他的真正的字体是不是一个选项,因为它们呈现在需要的小尺寸像素化。 编辑:感谢lorenzo-gatti,在spritesheet中制作简单的标记像素,如下所示: 在游戏启动时计算这些距离之间的距离,并将标记replace为透明像素。 所以在渲染速度减慢和启动时间方面没有太多额外的逻辑,并不比以前慢,谢谢!