应用中的自定义字体

时间:2013-01-15 12:55:59

标签: c# c++ xna windows-phone-8 monogame

在我的应用程序中,我想添加使用自定义字体的功能。

用户从我服务器上的列表中选择字体,下载并在app中使用。

如何处理将呈现字体的应用程序部分? 如何在不使用xaml的应用程序中执行此操作?

1 个答案:

答案 0 :(得分:0)

您即将开始的任务可能涉及相当数量的代码,因为字体中的字符需要首先渲染到纹理才能作为SpriteBatch的一部分呈现。

通常,这可以通过内容管道在XNA中运行。您选择一个字体文件并在XML中设置字体属性,然后内容内容管道将此信息编译为可以加载和呈现的xnb资源。问题是,这一切都发生在编译时,因此在运行时很难做到。

参考:http://rbwhitaker.wikidot.com/drawing-text-with-spritefonts

另一种方法是使用像BMFont这样的工具将字体预渲染到纹理并编写自己的渲染器。我使用这种技术编写过一次教程。但是,它与使用BMFont工具替换XNA内容管道完全相同。

http://www.craftworkgames.com/blog/tutorial-bmfont-rendering-with-monogame/

考虑到这一点,如果你想实现这一点,你可能需要编写自己的代码,以便在运行时加载它后将每个字体呈现给纹理。当您在字体中加载时,您还需要在每个字形上跟踪纹理上的矩形。要节省纹理空间并支持更大的字体大小,您可能还需要考虑纹理打包并排除某些字符。