Создание программного обеспечения для настройки кернинга и расстояния между символами в гарнитуре

Как следует из названия, я хочу создать программное обеспечение, которое может читать файлы.ttf и.otf, а затем позволяет пользователю настраивать кернинг, ширину символов и расстояние между символами. Я знаю о проекте freetype, но он написан на C, и я могу писать только на C# и Python. Насколько сложно кодировать логику.otf и.ttf?

Спасибо морф

1 ответ

Вы спросили, насколько сложно написать программное обеспечение для чтения файлов TrueType (.ttf) и OpenType (.otf), что позволяет настраивать кернинг, ширину символов и таблицы интервалов между символами. Ну, я скажу тебе. Это трудно.

Файл шрифтов OpenType от Microsoft Typography - хорошее введение в высокоуровневую структуру файлов шрифтов TrueType и OpenType. Внутренняя структура имеет несколько глобальных полей индексации и контрольной суммы, за которыми следует ряд "таблиц", каждая из которых имеет свои собственные внутренние структуры. Вам нужно будет написать код, чтобы распаковать эту глобальную структуру, проанализировать и изменить таблицы, которые вы хотите изменить, затем перестроить глобальную структуру и пересчитать контрольные суммы.

Чтобы позволить вашим пользователям изменять кернинг, ширину символов и интервал между символами, вам, вероятно, потребуется изменить, по крайней мере, kern, hmtx, а также gpos столы. Изменения в этих таблицах могут повлиять на значения в других таблицах.

Кроме того, у текстовых движков и прикладного программного обеспечения есть свои собственные ожидания относительно содержимого шрифта OpenType или TrueType. Эти взаимодействия сложны и не всегда хорошо документированы. Я ожидаю, что у всех способных, надежных шрифтов, которые работают с требовательным программным обеспечением для разметки текста, есть детали об их содержании, которые отражают большой опыт и болезненный опыт.

Если вы думаете, что изучать язык C с целью использования существующего кода freetype сложно, просто подождите, пока вы не попытаетесь отладить, почему шрифты, измененные вашими инструментами, не будут работать в вашем программном обеспечении для разметки текста.

Вы не говорите, какие изменения вы хотите внести в шрифты. Почему бы не купить существующее программное обеспечение вместо того, чтобы делать свое собственное? Существует прикладное программное обеспечение, такое как TypeTool от FontLab, которое может позволить вам выполнять все необходимые операции редактирования кернинга, ширины символов и межсимвольного интервала. Конечно, это стоит денег, но подумайте, сколько стоит ваше время и сколько времени вам понадобится, чтобы ваш код работал достаточно хорошо для удовлетворения ваших потребностей.

Если вы действительно хотите продолжить писать собственный код, вам может пригодиться Adobe Font Development Kit для Opentype (AFDKO). Удачи.

Другие вопросы по тегам