【问题标题】:Managing font installation/removal on Windows using python使用 python 在 Windows 上管理字体安装/删除
【发布时间】:2021-08-26 10:31:35
【问题描述】:

经过一番研究,我发现我可以为当前用户安装一个 truetype 字体,只需在HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts 中创建一个新的字符串值,并将 NAME 设置为字体的名称,并将 DATA 设置为字体的路径。删除字体也类似,首先删除指定字体的字符串值,然后删除字体文件本身。

我尝试手动完成,它确实有效(安装和删除字体)。但是在 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

【问题讨论】:

    标签: python windows fonts


    【解决方案1】:

    在 Windows 上,GDI 可能会锁定已使用的字体文件。在该用户会话结束之前,您可能无法删除字体文件。如果您删除注册表项,则字体不会在下一个会话中加载到 GDI 中。尝试删除 reg 条目,然后注销并重新登录,这可能会解锁文件;或者如果它已将其锁定在不同的会话中,您可能需要重新启动。

    【讨论】:

    • 彼得,是的,你是对的。我可以在重新启动/注销后删除它们。非常感谢:)
    猜你喜欢
    • 2013-11-15
    • 2017-06-09
    • 2021-02-26
    • 2018-03-07
    • 2018-12-17
    • 2018-12-31
    • 2018-07-13
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多