LibGDX (Freetype) 字体丑陋且难以辨认
LibGDX (Freetype) font ugly and unreadably
我正在使用 Freetype 字体来显示文本。但字体总是看起来:
#1 不可读(通过减小字体大小):
generator = new FreeTypeFontGenerator(Gdx.files.internal("Fonts/LDFComicSans.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 5;
font = generator.generateFont(parameter); // font size 12 pixels
font.setColor(Color.BLACK);
font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
generator.dispose();
或#2 丑(通过缩放):
generator = new FreeTypeFontGenerator(Gdx.files.internal("Fonts/LDFComicSans.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 30;
font = generator.generateFont(parameter); // font size 12 pixels
font.setColor(Color.BLACK);
font.getData().setScale(0.15F, 0.15F);
font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
generator.dispose();
这些是我使用的 camera/viewport 设置:
camera = new OrthographicCamera(1280, 720);
batch = new SpriteBatch();
viewport = new StretchViewport(100,100,camera);
viewport.apply();
我想是因为视口太小了,但我真的不想改变它。有谁知道如何解决这个问题?
根据您的#2 版本,对字体调用 setUseIntegerPositions(false)
。默认情况下,它将字符位置四舍五入到最接近的整数,这在很小的视口中看起来很糟糕。您可能希望为其提供 mip 贴图并使用 MipMapLinearLinear 作为最小过滤器以补偿未与屏幕像素对齐的字符(以减少模糊度)。
我正在使用 Freetype 字体来显示文本。但字体总是看起来:
#1 不可读(通过减小字体大小):
generator = new FreeTypeFontGenerator(Gdx.files.internal("Fonts/LDFComicSans.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 5;
font = generator.generateFont(parameter); // font size 12 pixels
font.setColor(Color.BLACK);
font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
generator.dispose();
或#2 丑(通过缩放):
generator = new FreeTypeFontGenerator(Gdx.files.internal("Fonts/LDFComicSans.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 30;
font = generator.generateFont(parameter); // font size 12 pixels
font.setColor(Color.BLACK);
font.getData().setScale(0.15F, 0.15F);
font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
generator.dispose();
这些是我使用的 camera/viewport 设置:
camera = new OrthographicCamera(1280, 720);
batch = new SpriteBatch();
viewport = new StretchViewport(100,100,camera);
viewport.apply();
我想是因为视口太小了,但我真的不想改变它。有谁知道如何解决这个问题?
根据您的#2 版本,对字体调用 setUseIntegerPositions(false)
。默认情况下,它将字符位置四舍五入到最接近的整数,这在很小的视口中看起来很糟糕。您可能希望为其提供 mip 贴图并使用 MipMapLinearLinear 作为最小过滤器以补偿未与屏幕像素对齐的字符(以减少模糊度)。