不使用像素作为设备单位时,LibGDX缩放字体

时间:2015-10-10 23:28:27

标签: android libgdx

因此,LibGDX在一堆tutorials中大肆宣传如何不建议将设备像素用作您世界中的坐标。我可以理解逻辑并且看起来很合理,所以我正在更新我的相机代码来执行此操作:

    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();

    aspect = h / w;

    camera = new OrthographicCamera(1.0f, aspect);
    camera.setToOrtho(true, 1.0f, aspect);

然而,我所做的很大一部分工作是使用字体。目前我的字体加载器如下所示:

    glyphLayout = new GlyphLayout();

    FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("myfont.ttf"));
    FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();

    parameter.size = 100;
    parameter.characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.!'()>?:";
    parameter.flip = true;
    font = generator.generateFont(parameter);

这会产生巨大的字体。我对LibGDX中明显有冲突的坐标系统感到困惑 - 他们为什么不建议使用像素,但所有字体功能都处理像素?

如何更新此字体加载代码,以便获得大约占屏幕尺寸20%的字体?

1 个答案:

答案 0 :(得分:0)

您可以开发一种分辨率(使用视口)并设置首选字体大小。 在运行时,您可以根据新的屏幕宽度缩放字体大小。

1920x1080, parameter.size = 16 => 1280x720, parameter.size = 16 / 1920 * 1280 

此外,使用distance field fonts,您可以在运行时不使用字体ganerator来渲染平滑字体。