问题描述
我正在使用 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 (将#修改为@)