1. Товары
  2.   Font
  3.   Python
  4.   FontTools
 
  

Библиотека Python для чтения шрифтов

Открытый Python API, который дает возможность разработчикам программного обеспечения и дизайнерам легко манипулировать, редактировать и анализировать шрифты.

FontTools играет важную роль в дизайне, брендинге и коммуникации, а шрифты являются строительными блоками визуальной эстетики. В цифровую эпоху управление шрифтами и их манипуляция становятся всё более важными. Одним из мощных инструментов, завоевавших популярность среди разработчиков и дизайнеров, является библиотека FontTools. FontTools — это универсальная открытая библиотека Python, предоставляющая полный набор инструментов для работы со шрифтами и ставшая мощным решением для энтузиастов шрифтов, дизайнеров, разработчиков и типографов. Ее обширный набор функций в сочетании с интерфейсом на основе Python делает её отличным выбором для задач и проектов, связанных со шрифтами.

FontTools — это библиотека с открытым исходным кодом, позволяющая разработчикам программного обеспечения программно взаимодействовать с файловыми шрифтами. Она предлагает широкий набор функций для манипуляции, редактирования и анализа шрифтов. Поддерживает такие возможности, как различное манипулирование шрифтами, базовые операции редактирования глифов, улучшенное объединение шрифтов, удаление отдельных глифов, поддержка таблиц SFNT, идентификация и реализация различных значений SFNT, изменение контуров глифов, настройка метрик шрифта, изменение кодировки шрифта, добавление или удаление таблиц, конвертация определений макета между различными системами макета, поиск и редактирование строк имени и т.д.

Библиотека FontTools позволяет программистам программно получать доступ, редактировать и анализировать различные аспекты файлов шрифтов. Она поддерживает несколько форматов шрифтов, включая TrueType (TTF), OpenType (OTF), AFM, в некоторой степени Type 1 и некоторые форматы, специфичные для Mac, что делает её универсальным выбором для работы с разными типами шрифтов. FontTools пользуется живым и поддерживающим сообществом. Проект является открытым исходным кодом и активно поддерживается, с регулярными обновлениями и исправлениями ошибок. Независимо от того, автоматизируете ли вы манипуляцию шрифтами, тонко настраиваете типографику или проводите детальный анализ шрифтов, FontTools предоставляет необходимые инструменты и гибкость для эффективного достижения ваших целей.

Previous Next

Начало работы с FontTools

FontTools требует Python 3.8 или новее. Рекомендуемый способ установки FontTools — использовать PyPI. Пожалуйста, используйте следующую команду для плавной установки.

Установить FontTools через NuGet

 pip install fonttools 

Вы также можете установить его вручную; загрузите последние файлы релиза напрямую из репозитория GitHub.

Редактирование и манипуляция шрифтами через Python API

Открытая библиотека FontTools очень проста в использовании и включает несколько важных функций, которые позволяют разработчикам программного обеспечения манипулировать шрифтами различными способами в их Python‑приложениях. Она позволяет извлекать информацию из файлов шрифтов, изменять контуры глифов, управлять метриками и даже создавать новые шрифты с нуля, автоматизировать повторяющиеся задачи, связанные со шрифтами, и т.д. Используя библиотеку FontTools, разработчики могут также изменять контуры глифов, корректировать метрики, менять кодировку и добавлять или удалять таблицы. Такая гибкость позволяет дизайнерам точно настраивать шрифты в соответствии с конкретными требованиями или создавать кастомные версии для своих проектов.

Как изменить контурные пути через Python API?

path_orig = get_outline(font, "a")
startdraw(200,200)

paths = []
for i in path_orig:
    if i[0] == 'moveTo':
        path = draw.BezierPath()
        path.moveTo((i[1][0]))
    if i[0] == 'lineTo':
        path.lineTo((i[1][0]))
    if i[0] == 'qCurveTo':
        path.qCurveTo(*(i[1]))
    if i[0] == 'closePath':
        path.closePath()
        paths.append(path)

finalpath = paths[0].difference(paths[1])
finalpath.scale(0.3) #let's scale it down!
draw.fill(0.5)
draw.stroke(0)
draw.drawPath(finalpath)
show()

Манипуляция глифами через Python API

Библиотека с открытым исходным кодом FontTools упрощает разработчикам программного обеспечения программное манипулирование отдельными глифами. Она предоставляет методы доступа и изменения контуров глифов, метрик и атрибутов, давая пользователям гибкость настраивать шрифты в соответствии с их конкретными потребностями. Будь то настройка пар кернинга, изменение форм глифов, добавление лигатур или сравнение контуров глифов, FontTools упрощает процесс манипулирования глифами. Ниже приведён пример, показывающий, как сравнить контуры двух глифов и отобразить результаты с помощью кода на Python.

Как сравнить контуры двух глифов с помощью Python API?

from fontTools.ttLib import TTFont
from fontTools.pens.recordingPen import RecordingPen

font = TTFont(filename)
cmap = font.getBestCmap()
gs = font.getGlyphSet()

g1 = gs[cmap[ord("A")]]
g2 = gs[cmap[ord("B")]]

p1 = RecordingPen()
p2 = RecordingPen()

g1.draw(p1)
g2.draw(p2)

print(p1.value == p2.value)

Создание и конвертация шрифтов через Python API

Библиотека с открытым исходным кодом FontTools предоставляет возможности создания новых файлов шрифтов или конвертации существующих в различные форматы. Эта функция особенно полезна для дизайнеров и разработчиков, которым необходимо создавать пользовательские шрифты или адаптировать шрифты для конкретных платформ. С помощью FontTools пользователи могут генерировать экземпляры шрифтов с разными весами, стилями и вариациями, а также бесшовно конвертировать шрифты между форматами TrueType и OpenType. Ниже приведён пример, показывающий, как преобразовать формат CFF в формат CFF2 с использованием команд Python.

 Русский