![](/img/trans.png)
[英]Choosing a PIL.ImageFont by font name rather than filename, and cross-platform font
[英]PIL.ImageFont cannot open font with space in name
我正在嘗試使用 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)
錯誤在這里:
文件“B:\\Python\\lib\\site-packages\\PIL\\ImageFont.py”,第 145 行,在init layout_engine=layout_engine 中)
OSError:無法打開資源
我試過以下
1)重命名文件(無論如何都不是一個優雅的解決方案)
2)將字體移動到與python腳本相同的目錄
3)添加/內部空間(建議)
我還通過使用不同的字體名稱多次嘗試來檢查錯誤,並且發生了相同的錯誤。
到目前為止沒有任何效果
提前致謝
好的,
我可能有解決辦法。 當我輸入字體文件名並出現上下文菜單時,提示出現了。
在上下文菜單中有一個字體列表。 所有字體名稱都更改為一個名稱。 例如“Time New Roman”改為“times”
我很想知道這個列表在哪里。 我試圖找到它,但空空如也。
此外,此外,我想使用未列出的自定義字體。 下載字體后,我將其重命名為單字字體。 然后我將字體放在與我的 python 腳本相同的目錄中。 這工作正常。
我想我會發布這個以防其他人遇到同樣的問題
這不是您認為的字符串:
"C:\Windows\Fonts\Times New Roman.ttf"
反斜杠是轉義字符。 您需要轉義反斜杠才能獲得真正的反斜杠,如下所示:
"C:\\Windows\\Fonts\\Times New Roman.ttf"
如果您願意,也可以這樣做:
os.path.join('C:\\', 'Windows', 'Fonts', 'Times New Roman.ttf')
我在網上找到了一個列表,其中字體名稱映射到文件名。 您可以使用文件名作為相應的字體名稱。
例如:對於“Times New Roman”,我們可以使用“Times.ttf”
請在以下鏈接中找到完整列表
https://docs.microsoft.com/en-us/typography/fonts/windows_10_font_list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.