Python 按字体名称而不是文件名选择PIL.ImageFont,以及跨平台字体

Python 按字体名称而不是文件名选择PIL.ImageFont,以及跨平台字体,python,fonts,python-imaging-library,Python,Fonts,Python Imaging Library,ImageFont.truetype需要文件名才能工作,例如: font = ImageFont.truetype("ariblk.ttf") # Arial Black 使用PIL是否有办法按名称而不是文件名加载字体 上下文:我想加载一个粗体(有很重的重量)无衬线字体,它可以在任何Windows、Linux和Mac平台上使用 我不认为ImageFont.truetype(“ariblk.ttf”)可以跨平台工作,是否可以加载ImageFont.truetype(“Ari

ImageFont.truetype
需要文件名才能工作,例如:

font = ImageFont.truetype("ariblk.ttf")  # Arial Black
使用
PIL
是否有办法按名称而不是文件名加载字体

上下文:我想加载一个粗体(有很重的重量)无衬线字体,它可以在任何Windows、Linux和Mac平台上使用


我不认为
ImageFont.truetype(“ariblk.ttf”)
可以跨平台工作,是否可以加载
ImageFont.truetype(“Arial Black”)
或者更好的是,
ImageFont.truetype(“sans serif;bold”)
可以在所有平台上工作?

查看枕头模块的文档,没有这样的选项,没有

一个方便的解决方法可能是使用Matplotlib的模块:一个跨平台查找、管理和使用字体的模块。使用and,您应该获得具有给定属性的字体的有效路径,然后可以在公共
ImageFont.truetype
调用中使用该路径

下面是一个小示例,它在我的Windows机器上运行得非常好。不幸的是,我附近没有任何其他操作系统可供测试

从matplotlib导入字体管理器
从PIL导入图像、ImageDraw、ImageFont
font=font\u manager.FontProperties(family='sans-serif',weight='bold')
file=font\u manager.findfont(字体)
打印(文件)
img=Image.new('RGB',(400300),(255255255))
draw=ImageDraw.draw(img)
font=ImageFont.truetype(文件,48)
text((20,20),“Hello World”,font=font,fill=(255,0,0))
保存('test.png')
打印
输出:

…\Lib\site packages\matplotlib\mpl data\fonts\ttf\DejaVuSans-Bold.ttf
图像输出:

----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.9.1
Matplotlib:3.3.4
枕头:8.1.0
----------------------------------------

查看枕头模块的文档,没有这样的选项,没有

一个方便的解决方法可能是使用Matplotlib的模块:一个跨平台查找、管理和使用字体的模块。使用and,您应该获得具有给定属性的字体的有效路径,然后可以在公共
ImageFont.truetype
调用中使用该路径

下面是一个小示例,它在我的Windows机器上运行得非常好。不幸的是,我附近没有任何其他操作系统可供测试

从matplotlib导入字体管理器
从PIL导入图像、ImageDraw、ImageFont
font=font\u manager.FontProperties(family='sans-serif',weight='bold')
file=font\u manager.findfont(字体)
打印(文件)
img=Image.new('RGB',(400300),(255255255))
draw=ImageDraw.draw(img)
font=ImageFont.truetype(文件,48)
text((20,20),“Hello World”,font=font,fill=(255,0,0))
保存('test.png')
打印
输出:

…\Lib\site packages\matplotlib\mpl data\fonts\ttf\DejaVuSans-Bold.ttf
图像输出:

----------------------------------------
系统信息
----------------------------------------
平台:Windows-10-10.0.16299-SP0
Python:3.9.1
Matplotlib:3.3.4
枕头:8.1.0
----------------------------------------

好建议好建议