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

如何在Pygame中加载使用本地.ttf格式自定义字体?

运行环境
  • 操作系统:MacOS Monterey
  • Python版本:3.10.4
  • Pygame版本:2.1.2
Pygame加载本地.ttf自定义字体实现方案

你已经掌握内置字体显示逻辑的话,换自定义ttf的学习成本很低,核心是选对加载接口,注意路径问题即可,不需要额外安装第三方依赖。

标准实现步骤

  1. 先做路径兼容处理
    MacOS环境下最常见的加载失败问题就是相对路径写死,运行目录变了就找不到字体文件,建议用绝对路径拼接的方式定位ttf文件:
    import os
    import pygame
    
    # 必须先初始化pygame,字体模块才能正常工作
    pygame.init()
    
    # 假设你的自定义ttf放在项目目录下的 assets/fonts 文件夹,文件名为 game_font.ttf
    # 下面的写法会自动根据当前脚本的位置拼出字体文件的绝对路径,不受运行目录影响
    FONT_FILE_PATH = os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "assets",
        "fonts",
        "game_font.ttf"
    )
    
  2. 加载字体并渲染文本
    自定义字体要用pygame.font.Font接口加载,不要用专门调用系统字体的SysFont接口,加载完成后的渲染逻辑和你用内置字体完全一致:
    # 第一个参数是字体路径,第二个参数是要使用的字号,比如这里用32号字
    my_custom_font = pygame.font.Font(FONT_FILE_PATH, 32)
    
    # 渲染文本:参数依次为 文本内容、是否开启抗锯齿、文字RGB颜色、背景色(背景色可省略)
    text_surface = my_custom_font.render("自定义字体测试文本", True, (255, 255, 255))
    
    # 之后把text_surface blit到屏幕对应位置就行,和普通文本渲染逻辑没有区别
    

常见踩坑说明

  • 接口用错是最高发的问题:pygame.font.SysFont只会搜索系统已经安装的字体,你直接把ttf文件名传给它是找不到目标字体的,而且它不会抛出报错,会静默回退到Pygame默认字体,很多人卡很久都没发现字体根本没加载成功。
  • 加载字体前一定要先执行pygame.init(),如果不想全局初始化也可以单独调用pygame.font.init(),否则会报字体模块未初始化的错误。
  • 如果加载时报文件解析错误,先双击ttf文件打开MacOS自带的字体册,看能不能正常预览——如果系统都识别不了损坏的字体文件,Pygame也没法正常加载。
  • 如果你不想把ttf文件打包进项目,也可以先把ttf安装到MacOS系统字体册,之后直接用SysFont调用即可,注意这里传的参数是字体册里显示的字体正式名称,不是ttf的文件名,否则会匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:12:51