如何使用 Python 在 OS X 中重新加载已安装的字体?

问题描述

我正在使用 wxPython 开发一个项目,其中包含非标准字体。在 Windows 上没有问题,因为我可以只使用 wx.AddPrivateFont,但是,macOS (OS X) 不支持功能,并且必须已安装该字体。我发现这可以通过将文件放在用户的 Fonts 目录中来完成,如下所示:(我当然要确保这只能在 OS X 下运行)

user_font_directory = f"/Users/{getpass.getuser()}/Library/Fonts"
shutil.copyfile(path,f"{user_font_directory}/{file_name}")

这确实有效,并且在此之后运行的任何程序都能够使用该字体。但是,安装它的程序本身在手动重新启动之前无法使用它,因为似乎有某种字体缓存仅在启动时才提供给进程。为了解决这个问题,我首先尝试重新初始化 wx.App,但这没有任何区别。然后我尝试使用 this 方法让 Python 自行重启:

def restart_program():
    python = sys.executable
    os.execl(python,python,*sys.argv)

但还是无济于事。然后我尝试将安装本身分离到另一个脚本中,完成后将主脚本作为子进程启动:

subprocess.run([sys.executable,"main.py"])

这没有效果

那么有没有办法让 Python 以编程方式从 OS X 重新加载字体缓存(或者有更好的解决方案)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)