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

pygame调用内置可用字体时报FileNotFoundError错误如何解决

问题成因

pygame.font.get_fonts() 返回的是当前系统中pygame可识别的字体别名列表,不是本地字体文件的路径。
pygame.font.Font() 构造方法接收字符串作为第一个参数时,默认会将该字符串作为 字体文件的本地路径 去寻址,你直接传入字体别名comicsansms时,pygame会在程序运行的当前工作目录下查找名为comicsansms的文件,找不到对应文件就会抛出FileNotFoundError。
另外要注意:get_fonts()返回的字体 不是pygame内置自带的,全部是读取你当前运行系统里已经安装的字体,换设备运行如果对应字体没装在系统里,也会出现加载失败的问题。

修复方案

根据使用场景选对应方法即可:

  • 直接加载系统匹配的字体:用专门对接系统字体的pygame.font.SysFont()方法,这个方法原生支持传入get_fonts()返回的字体别名,会自动搜索系统路径匹配对应字体文件,写法如下:
# 参数依次为:字体别名、字号,可选传bold=是否粗体、italic=是否斜体
font = pygame.font.SysFont('comicsansms', size)
  • 如果要坚持用pygame.font.Font()加载,可以先通过pygame.font.match_font()获取字体文件的绝对路径,再传入构造方法:
# 先匹配字体文件路径
font_abs_path = pygame.font.match_font('comicsansms')
# 再传入路径加载
font = pygame.font.Font(font_abs_path, size)
  • 如果要做跨设备兼容,避免不同系统字体差异导致的加载问题,建议把需要用到的字体.ttf文件放到项目目录下,直接传入项目内的相对路径加载,这种方式最稳定:
# 例:字体文件存放在项目根目录的fonts文件夹下
font = pygame.font.Font('./fonts/ComicSansMS.ttf', size)

排查小技巧:如果调用match_font()传入字体别名后返回None,说明当前系统里没有安装对应字体,要么换其他可用字体,要么手动把字体文件放到项目目录内加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 12:45:27