python - 如何使用 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 重新加载字体缓存(或者是否有更好的解决方案)?
解决方案
推荐阅读
- java - Android中没有预期的输出
- javascript - 点击事件不适用于仅使用 Javascript 的轮播
- docker - Hortonworks HDP docker如何公开端口
- typescript - Typescript 中的动态键
- python - 无法从外部应用程序发送 JSON,但我的 Django 测试有效
- python - 删除 XML 声明标记的 Python 代码
- asp.net - Razor 和 MVC 页面的 Asp.net Core 应用程序问题
- c - 相同的 C 程序但不同的执行时间
- ios - XCode 调试器不会显示所有变量内容。它是一个错误吗?
- postgresql - 在更新我们读取的行时从 Postgres 只读副本进行缓慢的批量读取