Индивидуальные манипуляции с размером глифа для динамически генерируемого шрифта

Есть ли простой способ манипулирования размером отдельных глифов в шрифте? Другими словами, я хотел бы динамически генерировать шрифт, который имеет разный размер (или внешний вид размера) для отдельных глифов в шрифте на основе указанной формулы.

Например, «A» может иметь размер 150% от исходного, а «B» может иметь размер 50% от исходного.

Сгенерированный шрифт будет использоваться на веб-странице. Это позволило бы мне влиять на размер символов даже для того же размера шрифта и без дополнительной стилизации отдельных букв в CSS. (Создание отдельных букв с помощью CSS было бы излишним с точки зрения производительности/парсера для веб-страницы с большим количеством текста.)

Я не уверен, возможно ли это преобразование размера глифа каким-то простым способом или потребуется написать индивидуальную формулу преобразования контуров глифа для каждого затронутого глифа.

Написание формулы преобразования контуров (на основе отдельных контуров глифа) для каждого глифа, вероятно, будет зависеть от шрифта и не стоит в моем случае использования.

Шрифт можно сгенерировать/обработать один раз (предпочтительна библиотека JS/Java/Python или подход), после чего шрифт можно будет использовать на веб-странице.

У вас есть какие-нибудь идеи, пожалуйста? Заранее спасибо.


person Zbynek R    schedule 29.05.2017    source источник


Ответы (1)


Я не понимаю, почему вы хотите это сделать, и это звучит некрасиво, но вот:

FontForge (бесплатный инструмент) позволяет масштабировать отдельные глифы. Вы должны открыть файл, выбрать глиф, который хотите масштабировать, нажать Ctrl-Backslash (или выбрать «Элемент»> «Преобразования»> «Преобразование» в меню). Происхождение должно быть «Происхождение глифа»; выберите «Масштаб» и установите процент масштабирования; оставьте два других раскрывающихся списка «Ничего не делать». И отметьте «Преобразовать ширину тоже», если можете.

Кажется, есть ошибка, которая означает, что опция «Transform Width Too» иногда отключена. Если это так, вам нужно будет вручную настроить расширенную ширину после того, как вы выполнили преобразование («Метрики»> «Установить ширину»> «Масштабировать ширину по» и введите то же значение в процентах).

Если вы используете FontForge в Linux, вы даже можете создавать сценарии на Python, если хотите сделать это программно. Поскольку вы говорите, что это одноразовый процесс, вероятно, гораздо проще сделать это вручную, как я описал.

С точки зрения дизайнера, иногда есть причины для смешивания текста разных размеров вместе, но в этих ситуациях необходимо подумать о том, чтобы ширина штриха также работала вместе. Крупный текст должен быть светлее/тоньше, а мелкий текст – жирнее. Это тот же аргумент, который люди приводят в отношении использования настоящих маленьких шрифтов. заглавные буквы, а не просто уменьшать размер текста. Ознакомьтесь с функцией FontForge Element>Style>Change Weight.

person Ben Whitmore    schedule 16.08.2017