#python #python-imaging-library
#python #python-imaging-library
Вопрос:
Я пытаюсь использовать PIL.ImageFont.truetype для открытия шрифта Это для проекта OCR
Пока мне не удалось найти решение в Google или на этом сайте. Проблема возникает, когда я пытаюсь открыть шрифт с пробелами в имени. Любое имя шрифта без пробела работает нормально
from PIL import ImageFont
#This Works
ImageFont.truetype("C:WindowsFontsArial.ttf", 12)
#This does not
ImageFont.truetype("C:WindowsFontsTimes New Roman.ttf", 12)
Ошибка здесь:
Файл «B:Pythonlibsite-packagesPILImageFont.py «, строка 145, в инициализации layout_engine=layout_engine)
Ошибка операционной системы: не удается открыть ресурс
Я попробовал следующее
1) переименовать файл (в любом случае, это не элегантное решение)
2) переместить шрифт в тот же каталог, что и скрипт python
3) добавить / inside пробел (предлагается)
Я также проверил ошибку, попробовав несколько раз использовать разные названия шрифтов, и возникают одни и те же ошибки.
пока ничего не работает
Заранее спасибо
Ответ №1:
ОК,
Возможно, у меня есть решение. Подсказка пришла ко мне, когда я вводил имя файла шрифта и появилось контекстное меню.
В контекстном меню был список шрифтов. Все названия шрифтов были изменены на одно имя. Например, «Time New Roman» был изменен на «times»
Мне было бы любопытно узнать, где существует этот список. Я попытался найти его, но ничего не вышло.
Кроме того, в дополнение я хотел поработать с пользовательским шрифтом, которого не было в списке. После загрузки шрифта я переименовал его в шрифт single word. Затем я поместил шрифт в тот же каталог, что и мой скрипт на python. Это сработало нормально.
Я подумал, что опубликую это на случай, если у кого-нибудь еще возникнет такая же проблема
Ответ №2:
Это не та строка, о которой вы думаете:
"C:WindowsFontsTimes New Roman.ttf"
Обратная косая черта — это экранирующий символ. Вам нужно экранировать обратную косую черту, чтобы получить настоящую обратную косую черту, вот так:
"C:\Windows\Fonts\Times New Roman.ttf"
Вы также можете сделать это, если хотите:
os.path.join('C:\', 'Windows', 'Fonts', 'Times New Roman.ttf')
Ответ №3:
Я нашел в Интернете список с именами шрифтов, сопоставленными имени файла. Вы можете использовать имя файла для соответствующего названия шрифта.
Например: для «Times New Roman» мы можем использовать «Times.ttf»
Пожалуйста, найдите полный список по ссылке ниже
https://learn.microsoft.com/en-us/typography/fonts/windows_10_font_list