По-видимому, важно добавлять опорные точки на горизонтальных и вертикальных экстремумах ваших путей при разработке глифов шрифта. В большинстве редакторов шрифтов есть функции для их добавления, и если вы их пропустите, вы получите сообщение об ошибке.
Но иногда проще и естественнее рисовать такие пути:
Обратите внимание на разные углы и отсутствие точек на большинстве экстремумов.
Ниже приведен лучший путь, но если вы начинаете с чего-то вроде первого изображения, то переход к этому означает дополнительный шаг в процессе (иногда приходится повторять исходное):
Так зачем нам вообще нужно добавлять точки экстремумов и с какими практическими проблемами я столкнусь, если я этого не сделаю?
Как уже упоминалось, экстремумы нужны для отрисовки шрифта и в частности хинтинга.
Чтобы понять это, давайте сначала посмотрим, что примерно происходит при автоподсказке глифа с экстремумами в качестве якорей (зеленый) в обычной пиксельной сетке¹: чтобы шрифт выглядел красиво и четко, вертикальные и горизонтальные штрихи должны точно попадать в пиксельную сетку. Произвольно размещенный глиф² обычно не удовлетворяет этому критерию, и поэтому рендерер немного искажает его с этой целью, а именно, перемещая экстремумы, так как они определяют вертикальные и горизонтальные штрихи:
Этот процесс требует догадок от рендерера, поэтому дизайнер может определить множество вещей (отмеченные основы, синие значения), которые помогут рендереру в этом процессе. Обратите внимание, что это только один из первых шагов, и после этого происходит много всего, о чем нам не нужно заботиться в этом вопросе.
Теперь давайте сначала предположим, что мы использовали не только экстремумы для определения глифа, но и некоторые диагональные привязки между ними. Тогда эти якоря пришлось бы постепенно перемещать при перемещении экстремумов, что опять же требует догадок, но в отличие от перемещения экстремумов дизайнер шрифта мало чем может помочь в этом из-за сложности ситуации. Поэтому перемещение этих избыточных якорей является значительным источником ошибок, особенно если якоря находятся близко к экстремумам.
Наконец, мы можем вернуться к вопросу и рассмотреть, что произойдет, если мы не определим никаких якорей на экстремумах. В этом случае рендерер должен автоматически определить экстремумы (что он может легко сделать), прежде чем перемещать их и все остальные привязки вместе с ним. Поскольку то, что вы, естественно, выбрали бы в качестве якоря, близко к экстремуму для многих типов шрифтов, это сопряжено с риском неверного предположения по причинам, изложенным выше.
Подводя итог вышеизложенному: экстремумы в любом случае играют решающую роль при рендеринге, и поэтому лучше, если ваш глиф будет построен на них, чтобы рендереру не приходилось угадывать.
Из патента США 7068276 B2 — Методы и системы хинтинговых шрифтов :
Алгоритмический подход, описанный ниже, пытается сопоставить явные узлы на кривой, используя такие функции, как направление контура и наличие экстремумов.
Контуры должны иметь правильное направление, иначе привязка к синим зонам будет нарушена. Чем меньше точек образуют (точную) форму, тем лучше. Но кривые, обозначенные стеблями H/V, должны иметь точки экстремумов, иначе они не будут совмещены. Это неэлегантно, если такая точка является «неявной».
¹ это не сильно отличается для подпиксельного хинтинга
², что является большим упрощением, поскольку размещение глифа с хинтингом более сложно; но этого достаточно для этого примера
Вот три причины, по которым метод «точки экстремума» является предпочтительным при работе с кривыми Безье. На самом деле, работая над надписями, в частности, я видел, что это описывается как важное :
По этим причинам многие программы для разработки шрифтов имеют инструменты для выделения и фиксации точек не на максимумах и минимумах (экстремумах).
Говоря все это, я долго трудился, чтобы установить все свои точки в экстремуме, и никогда не преуспел, но я не считаю себя ниндзя Безье!
джуджа
Врзлпрмфт
джуджа