Лишние узлы и незакрытые контуры

Если вы переносили глифы из Illustrator в FontLab, то наверняка сталкивались с ситуацией когда в импортируемых контурах были лишние узлы и незакрытые контуры. В этой статье пойдёт речь как отслеживать подобные контуры и узлы.
Вот вам простой пример разорванного контура:

FontLab отображает конечный узел незакрытого контура немного иначе

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

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

Оставляем всё так как на скриншоте. Самое главное это отмеченный пункт: Highlight glyphs that contain open contours.
После отметки этого пункта в нашем файле .vfb, все знакоместа с проблемными контурами будут помечены красным цветом.

Идём в меню Tools > Options > Пункт Glyph window > раздел Outline drawing.
Проверяем, что бы не был отмечен пункт Fill open contours. Если он отмечен, отметку нужно снять и сохранить настройки.

Далее, иду в один из проблемных символов и по двойному щелчку на символе открываю окно Glyph.
Попеременно нажимая и отпуская кнопку ~ я смотрю какой контур отображается, а какой нет:

Тот контур который при нажатой клавише ~ не отображается - разомкнут.
Останется найти конечные узлы разомкнутого контура и соединить их.
Данный пример справедлив относительно контура, но если попадается лишний отдельный узел или несколько, то данный пример нам не поможет.
Боремся с бесхозными узлами
Для примера я взял сложный контур у которого есть один бесхозный узел.

Перед началом работы нужно сделать маску, что бы мы смогли легко контролировать произошедшие изменения.
На клавиатуре жмём Ctrl+A и Ctrl+M.
Только что при помощи клавиатурных сокращений я выделил все контуры и создал для них маску. Снимаем выделение с контуров и используя нажатую клавишу Shift, и щёлкая попеременно на каждом контуре, производим выделение всех видимых контуров.
Далее выполняем команду Ctrl+X - вырезать.
В результате у нас остаётся только маска, хотя не только маска... на маске расположен бесхозный узел:)

Выделяем и удаляем этот узел.
Нажатием Ctrl+V я возвращаю вырезанный контур на прежнее место. Теперь нужно сохранить результат.
Вместо послесловия:
В FontLab есть и автоматические команды для борьбы с лишними узлами - Contour > Optimize Ctrl+E и команда для автоматического закрытия всех контуров - Contour > Close Open Contours.
Не использовал я их по двум причинам:
- Цель статьи научить вас работать с контурами самостоятельно
- Иногда, использование этих команд даёт не совсем ожидаемый результат.
Удачи!
- Раздел: Библиотека
- Просмотров: 1714
- Автор: Denisbox