PySide6中添加Gotham Narrow字体失败,寻求解决建议
解决PySide6加载Gotham Narrow字体返回-1的问题
以下是针对你的问题的具体解决建议:
检查字体文件完整性
用macOS字体册或预览工具打开GothamNarrow-Bold.otf,确认文件未损坏、能正常显示字符。如果文件损坏,重新获取完好的字体文件。修正字体参数错误
QFontDatabase.font()的第二个参数是样式名称(如Bold、Regular),不是完整的字体名称。你当前传入的"Gotham Narrow Bold"是错误的。另外,加载字体后可以通过QFontDatabase.applicationFontFamilies(_id)获取正确的字体族名称,避免手动输入错误。改用绝对路径加载
虽然QFile.exists()返回True,但相对路径可能因运行环境的工作目录差异导致加载失败,改用绝对路径确保定位准确:import os fontpath = os.path.abspath("GothamNarrow-Bold.otf")检查文件权限(macOS)
在Sonoma系统中,右键点击字体文件→「显示简介」→「共享与权限」,确认当前用户拥有该文件的读取权限,无权限会导致字体无法加载。
修正后的示例代码
import sys import os from PySide6.QtWidgets import QApplication from PySide6.QtGui import QFontDatabase, QFont from PySide6.QtCore import QFile app = QApplication(sys.argv) # 生成绝对路径 fontpath = os.path.abspath("GothamNarrow-Bold.otf") font_id = QFontDatabase.addApplicationFont(fontpath) if font_id != -1: # 获取加载后的字体族名称 family_list = QFontDatabase.applicationFontFamilies(font_id) if family_list: family_name = family_list[0] # 使用正确的样式名称"Bold" target_font = QFont(family_name, "Bold", 120) print(f"成功加载字体: {family_name}") else: print("字体加载失败,请检查文件或权限") print("系统已加载字体族列表:", QFontDatabase.families()) print(f"加载返回ID: {font_id}") print(f"文件是否存在: {QFile.exists(fontpath)}")
内容的提问来源于stack exchange,提问作者slawalata
相关产品推荐
相关产品推荐

