在 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 中缩放位图字体的主要内容,如果未能解决你的问题,请参考以下文章