簡體   English   中英

PIL.ImageFont 無法打開名稱中有空格的字體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM