WSL环境SFML加载TTF字体报错failed to create the font face求助
解决方案
- 补全SFML字体渲染依赖库
WSL环境默认可能缺少字体渲染必要的依赖包,执行以下命令安装:
如果你是手动编译安装的SFML,安装完上述依赖后需要重新编译SFML,确认编译配置项中sudo apt update && sudo apt install -y libfreetype6 libfreetype-dev fontconfigFreetype状态为found,否则编译出的SFML版本本身就不支持字体加载功能。 - 检查字体文件权限
从Windows侧拷贝到WSL目录的文件可能出现权限异常,执行以下命令给字体文件开放读权限:chmod 644 Graphics/fonts/fff-forward-regular.ttf - 验证路径有效性
你确认的路径可能是相对于源码目录的路径,而程序运行时的工作目录是执行二进制文件的目录,你可以先替换为绝对路径测试加载是否正常:- 终端进入字体存储目录,执行
pwd获取绝对路径 - 把代码中
loadFromFile的参数替换为"/你的绝对路径/fff-forward-regular.ttf"
如果绝对路径可正常加载,后续可以在编译配置中固定工作目录,或者拼接正确的相对路径即可。
- 终端进入字体存储目录,执行
- 验证字体文件完整性
跨系统传输可能导致字体文件损坏,你可以:- 把该ttf文件拷贝到Windows侧,双击打开看是否能正常预览字体样式
- 替换为WSL系统自带字体测试加载,示例:
如果系统自带字体可正常加载,说明你使用的自定义字体文件损坏,重新下载对应字体即可。pixel_font.loadFromFile("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf");
内容的提问来源于stack exchange,提问作者Dummy Jimmy
相关产品推荐
相关产品推荐

