我目前正在与libgdx的FreeTypeFontGenerator进行大量努力。
这是我的代码:
$validate()
我的问题如下: 如果我正确地理解了视口哲学,我应该摆脱像素的概念。如果我的世界有单位的仪表,那么,不要用像素思考我应该使用视口来设置我的世界坐标。在我的例子中,我的世界将是100米高。我想打印一个大小为10米的文本。问题是文本确实是像素化的,不可读的。如果我将world_height更改为1000而不是10,并尝试打印大小为100而不是10的文本,则文本不再像素化。 纹理不会发生这种情况!当只有比例应该具有重要性时,为什么我必须努力?
我发现更合乎逻辑的答案是我做错了。所以请帮助我理解处理字体的正确方法。
答案 0 :(得分:2)
您的视口以米(或其他)为单位。但FreeTypeFontGenerator使用像素,因为它将像素绘制到位图中以创建字体。因此,请使用您希望字体的像素数。
在您的情况下,因为您希望字体是屏幕高度的1/10:
private static final float FONT_SCREEN_HEIGHT_FRACTION = 1/10f;
//...
parameter.size = (int)(FONT_SCREEN_HEIGHT_FRACTION * Gdx.graphics.getHeight());
然后缩放生成的字体,使其以世界单位而不是像素单位:
font = fontGenerator.generateFont(parameter);
font.getData().setScale(WORLD_HEIGHT / Gdx.graphics.getHeight());