matplotlib.afm
Интерфейс Python для файлов метрик шрифтов Adobe.
Несмотря на то, что существует несколько других реализаций на Python, которые могут быть более полными, было решено не использовать их, потому что они либо:
- были защищены авторским правом или использовали лицензию, несовместимую с BSD
- имели слишком много зависимостей, и нужен был независимый lib
- делали больше, чем нужно, и было проще написать заново, чем разбираться, как получить только необходимое.
Он довольно прост в использовании и не имеет внешних зависимостей:
>>> import matplotlib as mpl
>>> from pathlib import Path
>>> afm_path = Path(mpl.get_data_path(), 'fonts', 'afm', 'ptmr8a.afm')
>>>
>>> from matplotlib.afm import AFM
>>> with afm_path.open('rb') as fh:
... afm = AFM(fh)
>>> afm.string_width_height('What the heck?')
(6220.0, 694)
>>> afm.get_fontname()
'Times-Roman'
>>> afm.get_kern_dist('A', 'f')
0
>>> afm.get_kern_dist('A', 'y')
-92.0
>>> afm.get_bbox_char('!')
[130, -9, 238, 676]
Как и в спецификации формата файла метрик шрифтов Adobe, все размеры заданы в единицах 1/1000 от масштабного коэффициента (размер шрифта) используемого шрифта.
- класс
matplotlib.afm.AFM(fh)[source] -
Базируется на
objectОбработка файла AFM в объекте файла fh.
- свойство
family_name -
Название семейства шрифтов, например, 'Times'.
-
get_angle()[source] -
Возвращает угол шрифта как число с плавающей точкой.
-
get_bbox_char(c, isord=False)[source]
-
get_capheight()[source] -
Возвращает высоту верхнего отрезка как число с плавающей точкой.
-
get_familyname()[source] -
Возвращает имя семейства шрифтов, например, 'Times'.
-
get_fontname()[source] -
Возвращает имя шрифта, например, 'Times-Roman'.
-
get_fullname()[source] -
Возвращает полное имя шрифта, например, 'Times-Roman'.
-
get_height_char(c, isord=False)[source] -
Получить высоту рамки (чернил) символа c (пробел равен 0).
-
get_horizontal_stem_width()[source] -
Возвращает стандартную горизонтальную ширину штриха как число с плавающей точкой или None, если это не указано в файле AFM.
-
get_kern_dist(c1, c2)[source] -
Возвращает расстояние между парами символов (возможно 0) для символов c1 и c2.
-
get_kern_dist_from_name(name1, name2)[source] -
Возвращает расстояние между парами символов (возможно 0) для символов name1 и name2.
-
get_name_char(c, isord=False)[source] -
Получить имя символа, например, ';' — это 'semicolon'.
-
get_str_bbox(s)[source] -
Возвращает рамку строки.
-
get_str_bbox_and_descent(s)[source] -
Возвращает рамку строки и максимальное нисхождение.
-
get_underline_thickness()[source] -
Возвращает толщину подчеркивания как число с плавающей точкой.
-
get_vertical_stem_width()[source] -
Возвращает стандартную вертикальную ширину штриха как число с плавающей точкой или None, если это не указано в файле AFM.
-
get_weight()[source] -
Возвращает вес шрифта, например, 'Bold' или 'Roman'.
-
get_width_char(c, isord=False)[source] -
Получить ширину символа из поля метрики символа WX.
-
get_width_from_char_name(name)[source] -
Получить ширину символа из имени символа type1.
-
get_xheight()[source] -
Возвращает xheight как число с плавающей точкой.
- свойство
postscript_name
-
string_width_height(s)[source] -
Возвращает ширину строки (включая кернинг) и высоту строки в виде кортежа (w, h).
- свойство
- класс
matplotlib.afm.CharMetrics(width, name, bbox) -
Базируется на
tupleПредставляет метрики символа для одного символа.
Примечания
Поля в настоящее время описывают только подмножество информации о метрике символов, определенной в стандарте AFM.
Создает новый экземпляр CharMetrics(width, name, bbox)
-
bbox -
Рамка символа (B) в виде кортежа (llx, lly, urx, ury).
-
name -
Имя символа (N).
-
width -
Ширина символа (WX).
-
- class
matplotlib.afm.CompositePart(name, dx, dy) -
Основы:
tupleПредставляет информацию об элементе составного символа.
Создаёт новый экземпляр CompositePart(name, dx, dy)
-
dx -
Смещение по оси x части от начала координат.
-
dy -
Смещение по оси y части от начала координат.
-
name -
Имя части, например, 'острая'.
-
© 2012–2021 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.4.3/api/afm_api.html