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

Python Arcade 3.3.0无法使用从TTF文件加载的自定义字体问题求助

Python Arcade 3.3.0无法使用从TTF文件加载的自定义字体问题求助

嘿,我之前也碰到过Arcade自定义字体的坑!你现在的问题其实出在Arcade加载自定义字体的逻辑上——当你用arcade.load_font()加载TTF文件时,它并不会把这个字体注册到系统的字体列表里,所以你不管用字体显示名、文件名还是属性里的名称去指定,Arcade根本找不到它,只会 fallback 到系统默认的Segoe UI。

给你个直接能用的解决方法:

  1. 先把arcade.load_font()的返回值存成一个变量,这个返回值就是可以直接用的字体对象:
# 保存加载后的自定义字体对象
custom_copperplate = arcade.load_font("Assets/Fonts/CopperplateGothic.ttf")
  1. 然后创建arcade.Text的时候,别传字符串当font_name,直接把这个字体对象传进去:
self.actionsLabel = arcade.Text(
    "Actions",
    font_name=custom_copperplate,  # 这里用加载好的对象,不是任何字符串名称!
    color=highlightColour,
    font_size=32,
    x=0,
    y=buttonY+buttonHeight+20,
    batch=self.headingTexts
)

为什么之前的方法都不行呢?因为你尝试的各种字符串名称,Arcade都会去系统已安装的字体池里查找,而你加载的自定义字体并没有被注册到这个池子里,所以自然找不到。而像"MS Comic Sans"这种系统预装字体,用字符串就能匹配到,这也和你遇到的情况完全吻合。

另外再给你两个小提醒:

  • 既然arcade.load_font()没报错,说明你的文件路径是对的,这一步不用纠结
  • 不需要转成OpenType格式,TTF文件直接用就没问题
  • 如果之后还要复用这个字体,把custom_copperplate存在类属性或者全局变量里就行,不用重复加载文件

你试试这个方法,我之前就是这么解决同款问题的,应该能顺利显示你的自定义字体!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 06:40:28