Зачем добавлять точки экстремума при разработке шрифтов?

9

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

Но иногда проще и естественнее рисовать такие пути:

введите описание изображения здесь

Обратите внимание на различные углы и отсутствие точек на большинстве экстремумов.

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

введите описание изображения здесь

Так почему же нам даже нужно добавлять точки экстремумов и с какими практическими проблемами я столкнусь, если не сделаю?

Cai
источник

Ответы:

7

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

Чтобы понять это, давайте сначала посмотрим, что примерно происходит при автоподстановке глифа с экстремумами в виде якорей (зеленого цвета) в регулярной пиксельной сетке¹: чтобы шрифт выглядел красиво и четко, вертикальные и горизонтальные обводки должны точно попадать в пиксельную сетку. Произвольно размещенный глиф² обычно не будет соответствовать этому критерию, и поэтому средство визуализации будет слегка искажать его до конца, а именно, перемещая экстремумы, поскольку они определяют вертикальные и горизонтальные штрихи:

иллюстрация важной части процесса намека

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

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

Наконец, мы можем вернуться к вопросу и рассмотреть, что произойдет, если мы не определим какие-либо якоря в экстремумах. В этом случае средство визуализации должно автоматически определить экстремумы (что он может легко сделать) перед перемещением их и всех других якорей вместе с ним. Так как то, что вы, естественно, выбрали бы в качестве привязки, близко к экстремуму для многих типов гарнитур, это может привести к неправильной догадке по причинам, изложенным выше.

Чтобы подвести итог вышесказанному: экстремумы играют решающую роль при рендеринге, и поэтому лучше, если ваш глиф построен на них, так что рендерер не должен догадываться.

Котировки

Из патента US 7068276 B2 - Способы и системы для намека шрифтов :

Алгоритмический подход, описанный ниже, пытается сопоставить явные узлы на кривой, используя такие особенности, как направление контура и наличие экстремумов.

Из вики FontForge по намекам :

Контуры должны иметь правильное направление, в противном случае привязка к синим зонам нарушается. Чем меньше точек образуют (точную) форму, тем лучше. Но кривые, на которые намекаются стержни H / V, должны иметь точки экстремумов, иначе они не будут привязаны. Нелегко, если такая точка зрения неявна.


Sub для субпиксельного хинтинга он мало чем отличается
², что является широким упрощением, поскольку размещение глифов с хинтингом более сложное; но для этого примера достаточно

Wrzlprmft
источник
3

Вот три причины, почему «точки в экстремумах» является предпочтительным методом при работе с кривыми Безье. На самом деле, когда я работал над буквами в частности, я видел, что это описывается как существенное :

  1. Это улучшает (значительно) автохинтинг и интерпретацию PostScript . Действительно, установка точек на экстремумы является одним из первых шагов при настройке подсказок вручную.
  2. Гораздо проще редактировать фигуру позже . Редактировать кривые позже намного проще с точками в экстремумах. Перемещение точек в экстремальных условиях позволяет сохранять кривые в форме с минимальными дополнительными усилиями.
  3. Меньше очков в целом . Точки экстремума также имеют тенденцию достигать тех же форм с меньшим количеством дополнительных точек ... что также приводит к меньшему размеру файла

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

Сказав все это, я долго трудился, чтобы поставить все свои точки в крайности, и никогда не преуспел, но я не считаю себя ниндзя Безье!

mayersdesign
источник
Я получаю подсказку, хотя мое чтение спецификаций заставляет меня поверить, что это проблема симметричного округления. В несвязанных новостях следует избегать точек перегиба. Однако я не понимаю 2 другие причины. Они часто цитируются, но все же. Если бы это было правдой, то повернутые предметы имеют разные оптимальные ручки Безье, что не соответствует действительности, учитывая, что объект постоянен во всех ориентациях. Таким образом, эти пункты действительно являются дефектами в инструментах авторинга и / или дефектами человеческого мозга.
Джуджаа
Если вы выберете 2 и 3, вы бы предпочли использовать точки перегиба и, возможно, точки самой высокой кривизны (см. Мой ответ ). (CC @joojaa)
Wrzlprmft
@Wrzlprmft Да, с этим я согласен, поскольку точки перегиба имеют глобальный характер. Также движкам шрифтов действительно не нравятся кривые, которые затрагивают, поэтому он убивает 2 птицы одновременно.
Джуджаа