经过一些研究,我发现我可以为当前用户安装一个truetype字体,只需在HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts中创建一个新的字符串值,将名称设置为字体的名称,并将数据设置为字体的路径。删除字体也是类似的,首先删除指定字体的字符串值,然后删除字体文件本身。
我尝试手动操作,它确实起作用了(包括安装和删除字体)。但是在python中重新创建所有内容会让我陷入一个问题。我可以使用上面的方法安装字体,但是当我尝试删除字体时,windows会告诉我the font file is currently being used by "System"。我的程序可以删除注册表值,但无法删除字体文件。
我的助手注册表编辑器函数可以在-> https://github.com/nk521/phonts/blob/07a4d6de5165d5c19861c2f28708c60d52f33df9/core/helpers/win.py中找到
此函数用于安装字体-> https://github.com/nk521/phonts/blob/07a4d6de5165d5c19861c2f28708c60d52f33df9/core/win.py#L15
此函数用于删除字体-> https://github.com/nk521/phonts/blob/07a4d6de5165d5c19861c2f28708c60d52f33df9/core/win.py#L35
此行将生成一个PermissionError -> https://github.com/nk521/phonts/blob/07a4d6de5165d5c19861c2f28708c60d52f33df9/core/win.py#L41
发布于 2021-06-09 23:46:43
在Windows上,GDI可能会锁定已使用的字体文件。在该用户会话结束之前,您可能无法删除字体文件。如果您删除了注册表项,那么字体将不会在下一次会话中加载到GDI中。尝试删除reg条目,然后注销并重新登录,这可能会解锁该文件;或者,如果它已在不同的会话中将其锁定,则可能需要重新启动。
https://stackoverflow.com/questions/67903821
复制相似问题