Python Arcade 3.3.0无法使用从TTF文件加载的自定义字体问题求助
Python Arcade 3.3.0无法使用从TTF文件加载的自定义字体问题求助
嘿,我之前也碰到过Arcade自定义字体的坑!你现在的问题其实出在Arcade加载自定义字体的逻辑上——当你用arcade.load_font()加载TTF文件时,它并不会把这个字体注册到系统的字体列表里,所以你不管用字体显示名、文件名还是属性里的名称去指定,Arcade根本找不到它,只会 fallback 到系统默认的Segoe UI。
给你个直接能用的解决方法:
- 先把
arcade.load_font()的返回值存成一个变量,这个返回值就是可以直接用的字体对象:
# 保存加载后的自定义字体对象 custom_copperplate = arcade.load_font("Assets/Fonts/CopperplateGothic.ttf")
- 然后创建
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
相关产品推荐
相关产品推荐

