Введение
В этом практическом занятии мы рассмотрим пример взаимосвязи таблиц шрифтов с использованием библиотеки Matplotlib для Python.
Советы по работе с ВМ
После запуска виртуальной машины кликните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и приступить к практике в Jupyter Notebook.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Загрузка шрифта
Во - первых, нам нужно загрузить файл шрифта. В этом примере мы будем использовать файл шрифта DejaVuSans.ttf.
import os
import matplotlib
from matplotlib.ft2font import FT2Font
font = FT2Font(os.path.join(matplotlib.get_data_path(), 'fonts/ttf/DejaVuSans.ttf'))
Установка карты символов
Далее мы устанавливаем карту символов в стандартную карту символов Unicode.
font.set_charmap(0)
Получение кодов символов и глифов
Мы получим коды символов и соответствующие глифы в шрифте и сохраним их в двух словарях coded и glyphd.
codes = font.get_charmap().items()
coded = {}
glyphd = {}
for ccode, glyphind in codes:
name = font.get_glyph_name(glyphind)
coded[name] = ccode
glyphd[name] = glyphind
Загрузка глифа
Теперь мы загрузим глиф, букву 'A', из шрифта и выведем его ограничивающий прямоугольник с использованием атрибута glyph.bbox.
code = coded['A']
glyph = font.load_char(code)
print(glyph.bbox)
Получение значений кернинга
Мы можем получить значения кернинга между двумя глифами, используя метод font.get_kerning(). В этом примере мы получим значение кернинга между глифами для 'A' и 'V' и между глифами для 'A' и 'T'.
## kerning values for 'AV'
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_DEFAULT))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNFITTED))
print('AV', font.get_kerning(glyphd['A'], glyphd['V'], KERNING_UNSCALED))
## kerning value for 'AT'
print('AT', font.get_kerning(glyphd['A'], glyphd['T'], KERNING_UNSCALED))
Резюме
В этом практическом занятии мы узнали, как загружать файл шрифта, настраивать карту символов, получать коды символов и глифы, загружать глиф и получать значения кернинга между глифами. Эти полезные навыки пригодятся любому, кто хочет работать с шрифтами и текстом в своих проектах на Python.