首页 > 解决方案 > 如何使用 Python 在 OS X 中重新加载已安装的字体?

问题描述

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

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

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

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

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

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

这没有效果。

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

标签: pythonmacosfontswxpythonwxwidgets

解决方案


推荐阅读