#python #matplotlib #fonts #adobe
#python #matplotlib #шрифты #adobe
Вопрос:
Я хочу добавить текст к рисунку, используя шрифт AFM. Я знаю, что могу передать fontproperties
fontname
аргумент ключевого слова или при создании текста.
Что касается использования шрифтов AFM в matplotlib, я нашел это и это.
Я не могу передать экземпляр шрифта, созданный matplotlib.font_manager.afmFontProperty
как fontproperties
kwarg.
Шрифт, который я намерен использовать, называется URW Chancery L и находится в /usr/share/fonts/type1/gsfonts/z003034l.afm
. Как я могу заставить matplotlib использовать этот шрифт?
Также я искал конвертеры из afm в ttf, но не смог найти ни одного, может быть, у вас есть предложения?
Я использую matplotlib 1.5.3 в Ubuntu 16.04.
Ответ №1:
Что такое «шрифт AFM»? Файлы AFM — это обычные электронные файлы, которые содержат только метаданные вокруг границ символов, пар кернинга и т. Д. В качестве удобного механизма поиска, когда вы не хотите использовать файл реального шрифта для этой информации (удобно для набора текста, где наличие метрик, доступных в качестве отдельного ресурса, превращает все в аднамного быстрее), они сами по себе никак не являются шрифтами. Вам все равно понадобится (в настоящее время в основном несуществующий) .pfa
или .pfb
файл шрифта («шрифт принтера; ascii» и «шрифт принтера; двоичный» соответственно) для выполнения любого реального рендеринга текста. Без них все, что вы можете сделать, это отметить соответствующую область, в которой будет отображаться текст, если у вас также будет доступен сам шрифт =)
(на самом деле это то, что делают TeX и PDF — они используют метрики шрифтов для создания «пустых полей», внутри которых текст в конечном итоге будет отображаться, как только будет определен весь набор текста, и поля больше не перемещаются)
Комментарии:
1. Спасибо за ответ и за устранение моей путаницы. У меня также есть
.pfb
доступный файл шрифта. Могу ли я использовать его в matplotlib так же, как.ttf
файл?2. Я только что проверил себя. Я могу настроить
FontProperties
экземпляр, используя путь к файлу pfb какfname
. Передача этого экземпляраfontproperties
дляplt.text()
построения всего желаемого. Еще раз спасибо!