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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:21:04