You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibGDX加载TTF字体报错‘Invalid padding’的解决求助

解决LibGDX中BitmapFont加载TTF字体报"Invalid padding"错误

错误原因

BitmapFont的BitmapFont(FileHandle)构造函数是用于加载**预先生成的BitmapFont描述文件(.fnt格式)**的,并非直接加载TTF(TrueType)字体文件。直接传入TTF文件会导致解析逻辑错误,触发"Invalid padding"异常。

解决方法

方法1:使用FreeTypeFontGenerator动态生成BitmapFont(推荐开发阶段使用)

LibGDX的FreeType扩展支持直接加载TTF并动态生成BitmapFont,步骤如下:

  1. 添加依赖(Gradle项目):

    • 核心模块(core)添加:
      api "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
      
    • 桌面模块(desktop)添加:
      api "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
      

    其他平台(Android、iOS等)需添加对应平台的natives依赖。

  2. 修改加载代码:

    private SpriteBatch batch;
    private BitmapFont font;
    private FreeTypeFontGenerator fontGenerator;
    
    @Override
    public void create() {
        batch = new SpriteBatch();
        // 初始化TTF生成器
        fontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/PlaypenSans-ExtraLight.ttf"));
        // 设置字体参数
        FreeTypeFontParameter fontParams = new FreeTypeFontParameter();
        fontParams.size = 32; // 字体像素大小
        // 可选:设置字体颜色、描边、阴影等
        // fontParams.color = Color.WHITE;
        // fontParams.borderWidth = 1;
        // 生成BitmapFont
        font = fontGenerator.generateFont(fontParams);
        // 释放生成器资源(生成字体后不再需要)
        fontGenerator.dispose();
    
        this.setScreen(new MainMenuScreen(this));
    }
    
    @Override
    public void dispose() {
        batch.dispose();
        font.dispose(); // 记得释放字体资源
    }
    

方法2:预先生成BitmapFont文件(适合发布阶段)

使用工具将TTF转换为LibGDX支持的.fnt格式文件和对应纹理:

  • 使用LibGDX自带的Hiero工具(需引入gdx-tools依赖),或第三方工具如BMFont
  • 导入TTF字体,设置字体大小、字符集、纹理参数等,生成.fnt文件和对应的PNG纹理
  • 将生成的两个文件放入assets/fonts目录,然后用BitmapFont加载:
    font = new BitmapFont(Gdx.files.internal("fonts/PlaypenSans-ExtraLight.fnt"));
    

补充说明

默认构造函数new BitmapFont()能正常运行,是因为它加载的是LibGDX内置的预生成BitmapFont资源,并非TTF文件,因此不会触发解析错误。

内容的提问来源于stack exchange,提问作者Copha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:53:27