在LibGDX中缩放位图字体

20

我该如何在LibGDX中缩放Bitmapfont对象? 看起来setScale方法不再可用。

4个回答

38

使用 bitmapFont.getData().setScale(float x, float y)


其中,bitmapFont = new BitmapFont(); - Kamran Bigdely

14

不建议对位图字体进行缩放,因为当放大时会出现像素化的效果(我认为很难看)

推荐使用FreeType字体生成器来调整字体大小

如果您仍然想使用bitmapFont,则Tenfour04是正确的选择


1
我可以使用足够大的字体,以便在使用getData().setScale(...,...)调整大小时不会显得丑陋吗? - Pedro Romano Barbosa
当然可以,只需使用更大的字体,并确保在加载纹理时打开 mip-mapping 并使用过滤器(MipMapLinearLinear、Linear)。 - Tenfour04
我正在使用Freetype生成器,但似乎它在小分辨率屏幕上运行时不会自动缩小。如何根据屏幕分辨率缩小Freetype字体? - Vipul Behl
我正在使用freetype生成器,但由于它创建了一个全新的纹理,所以我会不断地调用大量的刷新操作,因为它不断在我的包含所有图像的TextureAtlas和字体纹理之间切换。有没有办法在运行时将它们合并成一个TextureAtlas? - Russ Wheeler

4
如Fish所提到的,建议使用以下方式的freetype generator:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/timesBold.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();

然后在参数中更改字体大小并初始化BitmapFont:
fontParameter.size = 18;
BitmapFont font = fontGenerator.generateFont(fontParameter);

您需要将libgdx-freetype.so文件放置在您的项目armeabi文件夹中。

请问您能否澄清如何确定设备上实际可用的TTF字体以及它们的位置在哪里?这些是GDX字体还是Android系统字体?谢谢。 - rockhammer
你可以在Windows操作系统的字体文件夹中找到.ttf文件。然后复制你想要的字体文件并将其定位到Libgdx项目的资源文件夹中。 - Nasser Tahani

0

在加载字体时,您可以为FreeTypeFontParameter分配字体大小

 FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("Lobster.ttf"));
    FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
    parameter.size = 50; // font size
     BitmapFont lobster= generator.generateFont(parameter);
    generator.dispose();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接