Fonts Libgdx处理字体的好方法

Fonts Libgdx处理字体的好方法,fonts,libgdx,Fonts,Libgdx,处理字体是一场噩梦 在libgdx中,bitmapfont似乎是在屏幕上书写的唯一方式 我试过几种方法 1) 应用程序启动时使用FreetypeFontGenerator生成字体 (+)完美缩放,字体呈现完美 (-)我的应用程序需要14秒才能启动 2) 为我需要的每个不同的ttf字体只生成一个bitmapFont,然后在标签中缩放它们 (+)更快 (-)丑陋。而且速度更快,因为我只有两种不同的字体。如果我有更多,每一个事件中的一个都会花费很长时间才能生成 3) 用hiero高级生成它们

处理字体是一场噩梦

在libgdx中,bitmapfont似乎是在屏幕上书写的唯一方式

我试过几种方法

1) 应用程序启动时使用FreetypeFontGenerator生成字体

  • (+)完美缩放,字体呈现完美

  • (-)我的应用程序需要14秒才能启动

2) 为我需要的每个不同的ttf字体只生成一个bitmapFont,然后在标签中缩放它们

  • (+)更快

  • (-)丑陋。而且速度更快,因为我只有两种不同的字体。如果我有更多,每一个事件中的一个都会花费很长时间才能生成

3) 用hiero高级生成它们

  • (+)我想它可能会很好用

  • ()

4) 使用png而不是字体

  • (+)我想更快

  • (-)与2相同的缩放问题,并且显然无法在运行时更改文本

这(3)真的让我觉得,如果专用于bitmapfont的软件不允许我创建大于t 256的字体,那就意味着我是做错事情的人

但我就是不知道该怎么办。我的意思是以网络浏览者为例。如果需要,我可以按f12,选择一个文本并设置字体大小:1000px。它将立即呈现一个完美的文本。没有像素化,没有永无止境的加载

我知道,chrome和我的游戏不是用相同的技术、相同的库创建的

但这真的是问题所在吗?图书馆

我真的,真的希望不是,我希望我是问题所在,我希望我做错了什么,我可以从中学到什么

因此,问题是:


处理字体的最佳方法是什么?

我不知道有哪个游戏引擎像web浏览器一样支持字体矢量。第一次加载应用程序时生成字体,并将其保存到内部。直接从所有后续加载的文件中加载位图字体。对于非常大的字体,如倒计时计时器,请使用Heiro并创建距离场字体,这样它就可以在不进行像素化的情况下无限放大。然后,字体的实际图像文件可能非常小,占用的内存很少。根据您使用的字体,您可能可以简单地对所有内容执行此操作,这将是最干净的解决方案。如果您想知道为什么游戏从来没有矢量字体渲染支持,这是因为GPU不太适合它:非常感谢。我将试用距离字段字体。谢谢你的链接,我真的很好奇。我不会用字体来显示这么大的倒计时计时器。如果我想买这么大的东西,我会花时间手工画出数字或一个花哨的计时器,让它看起来很漂亮。对于我个人使用hiero和普通字体的所有其他任务,稍微缩小一点就可以了。我从来没有使用过ftf生成器,因为位图字体对我来说是完美的,即使是一些花哨的文本。无论如何,创建游戏,特别是独立游戏,需要做出很多妥协。我不知道有哪款游戏引擎像web浏览器那样支持字体矢量。第一次加载应用程序时生成字体,并将其保存到内部。直接从所有后续加载的文件中加载位图字体。对于非常大的字体,如倒计时计时器,请使用Heiro并创建距离场字体,这样它就可以在不进行像素化的情况下无限放大。然后,字体的实际图像文件可能非常小,占用的内存很少。根据您使用的字体,您可能可以简单地对所有内容执行此操作,这将是最干净的解决方案。如果您想知道为什么游戏从来没有矢量字体渲染支持,这是因为GPU不太适合它:非常感谢。我将试用距离字段字体。谢谢你的链接,我真的很好奇。我不会用字体来显示这么大的倒计时计时器。如果我想买这么大的东西,我会花时间手工画出数字或一个花哨的计时器,让它看起来很漂亮。对于我个人使用hiero和普通字体的所有其他任务,稍微缩小一点就可以了。我从来没有使用过ftf生成器,因为位图字体对我来说是完美的,即使是一些花哨的文本。不管怎样,制作游戏,尤其是独立游戏,需要做出很多妥协。