我想在Windows中使用Python 2.7安装新字体。首先,我将
有没有办法使用Python在Windows上安装ttf字体?我搜索了一下,但是在Python方面找不到有用的数据。
myFont.ttf
复制到Windows的Fonts
文件夹,然后我向注册表(HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
)添加了“My Font (True Type)”键。现在,我想通知系统已经安装了新字体。为此,我发现应该使用win32api.SendMessage
,但是我不知道如何为此方法提供所需的参数。有没有办法使用Python在Windows上安装ttf字体?我搜索了一下,但是在Python方面找不到有用的数据。
ctypes.windll
(在全局缓存函数指针对象中使用是一个坏主意);避免使用传统的[A]NSI API(Windows文件系统路径本地支持UTF-16;不要将自己置于20世纪80年代的8位代码页框中);并检查返回值:gdi32 = ctypes.WinDLL('gdi32');
result = gdi32.AddFontResourceW(u"C:\\Users\\Username\\Desktop\\fontname.ttf")
。 - Eryk Sunctypes.CDLL
的子类ctypes.WinDLL
。如果函数指针的argtypes
属性未设置,则Unicode参数将作为wchar_t *
字符串传递,无论如何都必须这样做。在3.x中,ctypes调用PyUnicode_AsWideCharString
并在胶囊对象中保留内存引用,直到调用返回(即,如果库将保留对字符串的引用,请不要依赖此自动转换)。在Windows中,宽字符字符串将是UTF-16,非BMP代码将使用代理对。 - Eryk Sun