我正在尝试使用PIL.ImageFont.truetype打开字体 这是用于OCR项目
到目前为止,我一直无法在Google或此站点中找到解决方案。 当我尝试打开名称中带有空格的字体时,会出现问题。 任何没有空格的字体名称都可以正常工作
from PIL import ImageFont
#This Works
ImageFont.truetype("C:\Windows\Fonts\Arial.ttf", 12)
#This does not
ImageFont.truetype("C:\Windows\Fonts\Times New Roman.ttf", 12)
错误在这里:
init 中的文件“ B:\ Python \ lib \ site-packages \ PIL \ ImageFont.py”,第145行 layout_engine = layout_engine)
OSError:无法打开资源
我尝试了以下
1)重命名文件(无论如何都不是一个优雅的解决方案)
2)将字体移到与python脚本相同的目录中
3)添加/内部空间(建议)
我还通过多次尝试使用不同的字体名称来检查错误,并且发生了相同的错误。
到目前为止没有任何作用
预先感谢
答案 0 :(得分:0)
这不是您认为的字符串:
"C:\Windows\Fonts\Times New Roman.ttf"
反斜杠是转义字符。您需要转义反斜杠以拥有真实的反斜杠,如下所示:
"C:\\Windows\\Fonts\\Times New Roman.ttf"
如果您愿意,也可以这样做:
os.path.join('C:\\', 'Windows', 'Fonts', 'Times New Roman.ttf')
答案 1 :(得分:0)
好吧
我可能有解决办法。当我输入字体文件名并出现上下文菜单时,提示就出现了。
在上下文菜单中是一个字体列表。 所有字体名称都更改为一个名称。 例如,“ Time New Roman”更改为“ times”
我很想知道这个列表在哪里。 我试图找到它,但是空了出来。
此外,此外,我想使用未列出的自定义字体。 下载字体后,我将其重命名为单个单词字体。 然后,将字体放在与python脚本相同的目录中。 这样就可以了。
我以为我可以在其他人遇到相同问题的情况下发布此信息
答案 2 :(得分:0)
我在网上找到了一个将字体名称映射到文件名的列表。您可以使用文件名作为相应的字体名称。
例如:对于“Times New Roman”,我们可以使用“Times.ttf”
请在以下链接中找到完整列表
https://docs.microsoft.com/en-us/typography/fonts/windows_10_font_list