PIL.ImageFont не может открыть шрифт с пробелом в имени - PullRequest
0 голосов
/ 27 марта 2019

s Я пытаюсь использовать 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) добавление / внутри пробела (предлагается)

Я также проверил ошибку, пытаясь несколько раз с разнымивстречаются имена шрифтов и те же ошибки.

пока ничего не работает

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Хорошо,

У меня может быть решение. Подсказка пришла ко мне, когда я набирал имя файла шрифта, и появилось контекстное меню.

В контекстном меню был список шрифтов. Все имена шрифтов были изменены на одно имя. Например, «Time New Roman» был изменен на «times»

Мне было бы интересно узнать, где этот список существует. Я пытался найти его, но ничего не получилось.

Кроме того, я также хотел работать с нестандартным шрифтом, которого нет в списке. После загрузки шрифта я переименовал его в шрифт одним словом. Затем я поместил шрифт в тот же каталог, что и мой скрипт на python. Это работало хорошо.

Я думал, что опубликую это на тот случай, если у кого-то будет такая же проблема

0 голосов
/ 27 марта 2019

Это не та строка, о которой вы думаете:

"C:\Windows\Fonts\Times New Roman.ttf"

Обратная косая черта является escape-символом.Вы должны избежать обратной косой черты, чтобы иметь настоящую обратную косую черту, например:

"C:\\Windows\\Fonts\\Times New Roman.ttf"

Вы также можете сделать это, если предпочитаете:

os.path.join('C:\\', 'Windows', 'Fonts', 'Times New Roman.ttf')
...