在 LibGDX 中缩放位图字体

Posted

技术标签:

【中文标题】在 LibGDX 中缩放位图字体【英文标题】:Scale a Bitmapfont in LibGDX 【发布时间】:2015-07-06 13:47:09 【问题描述】:

如何在 LibGDX 中缩放 Bitmapfont 对象?似乎 setScale 方法不再可用。

【问题讨论】:

【参考方案1】:

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

【讨论】:

其中 bitmapFont = new BitmapFont();【参考方案2】:

不建议缩放Bitmap字体,因为放大后看起来像像素化(我认为这很难看)

建议使用freetype generator 调整字体大小

如果还想用bitmapFont Tenfour04 就对了

【讨论】:

我可以使用足够大的字体,这样我就可以用 getData().setScale(...,...) 调整它的大小而不会看起来很丑? 当然,只需使用更大的字体并确保在打开 mip-mapping 的情况下加载其纹理并使用过滤器(MipMapLinearLinear、Linear)。 我正在使用 Freetype 生成器,但它似乎在小分辨率屏幕上运行时不会自动缩小。如何根据屏幕分辨率缩小 Freetype 字体? 我正在使用 freetype 生成器,但是当它创建一个全新的纹理时,我会调用很多刷新,因为它会不断在我的一个大 TextureAtlas 与我的所有图像和字体 Texture 之间切换.有没有办法在运行时将这些组合成一个 TextureAtlas?【参考方案3】:

正如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);

还需要在项目的 armeabi 文件夹中包含 libgdx-freetype.so。

【讨论】:

您能否澄清一下如何确定哪些 ttf 字体实际可用以及它们在设备上的位置?这些是gdx字体还是android系统字体?谢谢 您可以在 Windows 操作系统的字体文件夹中找到 .ttf 文件。然后复制您想要的字体系列文件并将其定位在您的 Libgdx 项目的资产文件夹中。【参考方案4】:

您可以在加载字体时将字体大小分配给 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();

【讨论】:

以上是关于在 LibGDX 中缩放位图字体的主要内容,如果未能解决你的问题,请参考以下文章

如何在 libgdx 的舞台上绘制位图字体?

如何根据屏幕分辨率缩放 libgdx 中的精灵?

Libgdx 未缩放全屏

为啥 Libgdx 的 Table 不接受缩放动作?

我想缩放 ParticleEffect - Libgdx

在画布上绘制位图已缩放