BitmapFontCache和BitmapFont生成的奇怪行为?

时间:2016-11-23 23:46:27

标签: fonts libgdx

enter image description here

如您所见,数字未正确显示。他们应该看起来像:173和15.4,但他们不是。为什么会这样?我真的不知道。它只发生在较大的字体上,而不是较小的字体。

此外,该错误仅出现在具有更高分辨率的智能手机上。当我将应用程序作为桌面应用程序或较低分辨率(480 x 800)的手机启动时,它不会出现。

我正在使用TTF字体动态生成字体。 我的代码:

生成:

public static BitmapFont generateFont(int size, String fontPath) {
    float scale = 1.0f * Gdx.graphics.getWidth() / Game.WIDTH;

    if(scale < 1)
        scale = 1;

    FreeTypeFontGenerator.FreeTypeFontParameter params = new FreeTypeFontGenerator.FreeTypeFontParameter();
    generator = new FreeTypeFontGenerator(Gdx.files.internal(fontPath));

    params.size = (int) (size * scale);

    BitmapFont font = generator.generateFont(params);
    font.getData().setScale((float) (1.0 / scale));
    font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);

    dispose();

    return font;
}

然后我生成字体:

FONT_115 = FontGenerator.generateFont(115, FONT_TTF_DEFAULT);

然后我用这个字体制作一个文本:

layout = new GlyphLayout(font, "");
fontCache = new BitmapFontCache(font);
layout.setText(font, text);
fontCache.setText(layout, position.x - layout.width / 2, position.y);

所以我的问题: 为什么较大字体的文字无法正确显示?

1 个答案:

答案 0 :(得分:0)

以下解决了这个问题:

FreeTypeFontGenerator.setMaxTextureSize(FreeTypeFontGenerator.NO_MAXIMUM);

然而,有一些文物(见图)。

enter image description here