Введение
В этом лабе вы узнаете о свойствах объекта .FT2Font, которые описывают общие свойства шрифта. Также вы научитесь использовать индивидуальные метрики символов с помощью объекта .Glyph, возвращаемого методом .load_char.
Советы по работе с ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике в Jupyter Notebook.
Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
В этом шаге мы импортируем необходимые библиотеки.
import os
import matplotlib
import matplotlib.ft2font as ft
Загружаем шрифт
В этом шаге мы загружаем шрифт, с которым будем работать. Мы будем использовать шрифт, поставляемый вместе с Matplotlib.
font = ft.FT2Font(
os.path.join(matplotlib.get_data_path(),
'fonts/ttf/DejaVuSans-Oblique.ttf'))
Выводим свойства шрифта
В этом шаге мы выведем свойства шрифта.
print('Num faces: ', font.num_faces) ## количество лиц в файле
print('Num glyphs: ', font.num_glyphs) ## количество глифов в лице
print('Family name:', font.family_name) ## имя семейства лица
print('Style name: ', font.style_name) ## имя стиля лица
print('PS name: ', font.postscript_name) ## постскрипт имя
print('Num fixed: ', font.num_fixed_sizes) ## количество встроенных битмапов
Выводим дополнительные свойства шрифта
В этом шаге мы выведем дополнительные свойства шрифта, доступные только для масштабируемых лиц.
if font.scalable:
## глобальная ограничивающая рамка лица (xmin, ymin, xmax, ymax)
print('Bbox: ', font.bbox)
## количество единиц шрифта, охваченных EM
print('EM: ', font.units_per_EM)
## подъем в 26,6 единицах
print('Ascender: ', font.ascender)
## опускание в 26,6 единицах
print('Descender: ', font.descender)
## высота в 26,6 единицах
print('Height: ', font.height)
## максимальный горизонтальный сдвиг курсора
print('Max adv width: ', font.max_advance_width)
## то же для вертикального расположения
print('Max adv height: ', font.max_advance_height)
## вертикальное положение подчеркивания
print('Underline pos: ', font.underline_position)
## вертикальная толщина подчеркивания
print('Underline thickness:', font.underline_thickness)
Выводим стили шрифта
В этом шаге мы выведем стили шрифта.
for style in ('Italic',
'Bold',
'Scalable',
'Fixed sizes',
'Fixed width',
'SFNT',
'Horizontal',
'Vertical',
'Kerning',
'Fast glyphs',
'Multiple masters',
'Glyph names',
'External stream'):
bitpos = getattr(ft, style.replace(' ', '_').upper()) - 1
print(f"{style+':':17}", bool(font.style_flags & (1 << bitpos)))
Резюме
В этом практическом занятии вы узнали о свойствах объекта .FT2Font, которые описывают общие свойства шрифта. Также вы узнали, как использовать метрики отдельных символов с помощью объекта .Glyph, возвращаемого методом .load_char.