RetroArch 中文显示异常修复方法
RetroArch 中文显示为 ??? 的排查与修复教程
适用现象
RetroArch 已经切换为中文,但菜单、提示或部分界面文字显示为 ???、方框,或完全无法正常显示中文。

这类问题通常不是翻译文件损坏,而是字体没有正确加载,或者当前菜单驱动没有使用包含中文字形的字体。
1. 确认 RetroArch 配置文件存在
先确认当前用户的 RetroArch 配置文件位置:
1 | test -f ~/.config/retroarch/retroarch.cfg && echo "配置文件存在" |
如果没有输出,说明当前用户可能还没有生成配置文件,或者 RetroArch 使用了其他配置路径。
也可以查看 RetroArch 版本:
1 | retroarch --version |
本机版本为:
1 | RetroArch 1.20.0 |
2. 查看语言、菜单驱动和字体配置
用下面的命令一次性查看和中文显示相关的关键配置:
1 | grep -En "^(user_language|menu_driver|menu_font_path|xmb_font|video_font_path|assets_directory)" ~/.config/retroarch/retroarch.cfg |
本机修复前的关键输出是:
1 | assets_directory = "/usr/share/libretro/assets/" |
判断方式:
user_language = "12":RetroArch 已设置为简体中文。menu_driver = "xmb":当前使用的是 XMB 菜单。menu_font_path已指向中文字体,但这不一定会覆盖 XMB 的专用字体设置。xmb_font = "":XMB 菜单没有显式指定字体,这是本次异常的关键可疑点。video_font_path = "":游戏内提示/OSD 没有显式指定字体,也可能导致中文提示显示异常。
如果你看到 menu_driver = "xmb" 且 xmb_font = "",同时中文显示为 ???,应优先按 XMB 字体未正确绑定来处理。
3. 排除系统缺少中文字体的问题
先检查系统能否匹配到中文字体:
1 | fc-match sans:lang=zh-cn |
本机输出:
1 | NotoSansCJK-Regular.ttc: "Noto Sans CJK SC" "Regular" |
这说明系统字体层面可以提供中文字体。
再确认目标字体文件可读:
1 | test -r /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc && echo "字体文件可读" |
如果没有输出,需要先安装中文字体,或换成系统里实际存在的中文字体路径。
可以搜索系统已有的常见中文字体:
1 | find /usr/share/fonts ~/.local/share/fonts ~/.fonts -type f \ |
本机可用字体包括:
1 | /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc |
4. 判断是不是 RetroArch 菜单字体绑定问题
如果满足以下条件,基本可以判断问题在 RetroArch 菜单字体绑定,而不是系统编码:
1 | RetroArch 语言已是中文 |
也可以继续检查 RetroArch 资源目录下有哪些字体:
1 | find /usr/share/libretro/assets -maxdepth 4 -type f \ |
如果资源目录内没有合适的中文字体,或者配置没有明确让 XMB 使用中文字体,就容易出现 ???。
可以用下面的命令粗略查看某个字体是否包含中文字符区间:
1 | fc-query --format='%{family}\n%{charset}\n' /path/to/font.ttf | head -2 |
如果 charset 中看不到类似 4e00-9fff、4e00-9fc3 这样的 CJK 汉字区间,该字体大概率不能完整显示中文。
5. 修复前先备份配置
1 | cp -p ~/.config/retroarch/retroarch.cfg ~/.config/retroarch/retroarch.cfg.pre-cjk-font-fix |
本机备份文件为:
1 | /home/kris/.config/retroarch/retroarch.cfg.pre-cjk-font-fix |
6. 修复 XMB 菜单中文字体
将 XMB 菜单字体明确指定为系统已有的 Noto CJK 字体:
1 | sed -i 's|^xmb_font = .*|xmb_font = "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"|' ~/.config/retroarch/retroarch.cfg |
同时修复游戏内提示/OSD 字体:
1 | sed -i 's|^video_font_path = .*|video_font_path = "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"|' ~/.config/retroarch/retroarch.cfg |
如果你的系统没有这个字体,请把路径替换成第 3 步中找到的中文字体路径。
7. 验证配置是否写入
再次检查关键配置:
1 | grep -En "^(menu_driver|menu_font_path|xmb_font|video_font_path|user_language|assets_directory)" ~/.config/retroarch/retroarch.cfg |
修复后的关键配置应类似:
1 | assets_directory = "/usr/share/libretro/assets/" |
确认字体仍然可读:
1 | test -r /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc && echo "字体文件可读" |
然后完全退出 RetroArch,再重新启动。只在菜单中来回切换页面,可能不会重新加载字体配置。
8. 本次实际修改
本次实际只改了两个配置项:
1 | -video_font_path = "" |
核心原因是:当前菜单驱动为 XMB,但 xmb_font 没有显式绑定中文字体。虽然 menu_font_path 已经指向 Noto CJK,但 XMB 菜单仍可能不使用这个通用字体项。显式设置 xmb_font 后,XMB 菜单可以直接加载包含中文字形的字体。
9. 回滚方法
如需恢复修复前的配置:
1 | cp -p ~/.config/retroarch/retroarch.cfg.pre-cjk-font-fix ~/.config/retroarch/retroarch.cfg |
然后重新启动 RetroArch。

10. 如果仍然显示异常
继续按下面顺序检查:
- 确认 RetroArch 已完全退出并重新启动。
- 确认
xmb_font指向的字体路径真实存在且可读。 - 尝试换用另一个中文字体,例如
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc。 - 尝试改用其他菜单驱动,例如
ozone,再重启 RetroArch。 - 检查是否存在多个 RetroArch 配置文件,当前启动的 RetroArch 可能没有读取
~/.config/retroarch/retroarch.cfg。
