【问题标题】:Java - LibGDX gdx-freetype fails to load two font sizes from single TTFJava - LibGDX gdx-freetype 无法从单个 TTF 加载两种字体大小
【发布时间】:2018-01-02 08:37:21
【问题描述】:

我正在尝试使用 LibGDX 的 gdx-freetype 扩展名加载两种不同大小的相同字体:大小 24 和 72。无论出于何种原因,它都无法正确加载 24,因为它看起来像 garbage。这很奇怪,因为当我不加载 72 时它看起来是正确的。

在我的代码中,我尝试使用相同的 FreeTypeFontGenerator 和两个不同的生成器加载两种字体。据我所知,它们都产生相同的结果。此外,我加载这两种字体的顺序似乎并不重要:24 总是看起来很糟糕的那个。这是我加载字体的代码:

FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fontFile.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter param = new FreeTypeFontGenerator.FreeTypeFontParameter();
param.size = 72;
font = generator.generateFont(param);
generator.dispose();

FreeTypeFontGenerator generator2 = new FreeTypeFontGenerator(Gdx.files.internal("fontFile.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter param2 = new FreeTypeFontGenerator.FreeTypeFontParameter();
param2.size = 24;
smallFont = generator2.generateFont(param2);
generator2.dispose();

是我做错了什么还是 gdx-freetype 扩展有错误?感谢您的帮助。

【问题讨论】:

  • 我好像也有这方面的经历,我做的就是把dispose评论出来,我的生成器工作正常。但也许不适合你的情况。
  • @Tokenyet 我尝试注释掉dispose,但我仍然得到相同的结果。如果这对你有用,那么也许我在代码的其他地方做错了,虽然我无法想象它会是什么。

标签: java fonts libgdx truetype


【解决方案1】:

好的,我解决了我自己的问题,它与我加载字体的方式无关,而是我渲染它们的方式。我正在创建一个GlyphLayout,如下所示:

textLayout = new GlyphLayout(smallFont, "Sample Text");

然后像这样渲染它:

font.draw(spriteBatch, textLayout, width, height);

问题是我绘制文本时使用的字体与用于生成布局的字体不同。如果有人在阅读本文时遇到了与 gdx-freetype 类似的问题,请确保您正确渲染了字体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2018-09-27
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多