Чтобы разделить существующие текстовые контуры и сохранить отверстия в буквах, используйте Контур → Разделить контур. Если команда Разбить уже заполнила отверстия, отмените действие или объедините внешний контур каждой буквы с её внутренними контурами.

Это руководство посвящено существующим векторным контурам текста на Mac: их разделению на удобные для работы объекты, восстановлению залитых просветов — замкнутых пространств внутри букв — и проверке того, что эти пространства остаются прозрачными. Здесь используются команды меню, поэтому можно следовать инструкциям, не подбирая сочетания клавиш.

Почему команда «Разбить» заполняет отверстия в буквах?

Контур буквы может содержать несколько подобъектов внутри одного объекта-контура. Например, очерченная O обычно состоит из внешнего и внутреннего контуров. Вместе они образуют залитое кольцо с пустым центром. В расширенном руководстве Inkscape объясняется, как несколько подобъектов образуют составной контур и как перекрывающиеся подобъекты могут создавать отверстия.

Команда Контур → Разбить отделяет каждый подобъект в самостоятельный объект. Поэтому внутренний контур становится отдельной залитой фигурой, вместо того чтобы формировать отверстие в окружающей букве. Обычно сам контур сохраняется, но его связь с внешним контуром меняется. В официальном руководстве «Логические операции» описано разделение на независимые объекты.

Изменение правила заливки отдельных объектов не восстановит связь между ними. Нужно либо вернуться к составному контуру, либо снова объединить нужные контуры. Правила заливки определяют залитые области фигуры с учётом её подобъектов, как указано в спецификации SVG по отрисовке.

Какая команда даст нужный результат?

Выберите операцию в зависимости от того, какую структуру хотите получить. Группа, составной контур и набор отдельных контуров могут выглядеть одинаково, но ведут себя по-разному.

Исходное состояние и цель Команда Результат для структуры
Составной текстовый контур; разделить его несвязанные фигуры, сохранив отверстия Контур → Разделить контур Связанные контуры остаются вместе в полученных контурах
Группа, содержащая уже разделённые контуры букв; получить доступ к буквам Объект → Разгруппировать Удаляет группу, не разделяя подобъекты каждой буквы
Составной контур; получить каждый отдельный контур Контур → Разбить Внешние границы и границы отверстий становятся отдельными объектами
Отдельные контуры; восстановить букву с отверстиями Контур → Объединить Создаёт один составной контур из выбранных контуров

В официальном справочнике по клавиатуре и мыши прямо указано, что команда Разделить контур сохраняет вместе части с отверстиями. В руководстве «Группировка объектов» описана отмена группировки, удаляющая контейнер вокруг существующих объектов. Эти команды решают разные задачи, связанные со структурой.

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

Это различие также объясняет расхождения между старыми уроками и новыми документами. В примечаниях к выпуску Inkscape 1.3 описано изменение: вместо преобразования текста в группу контуров букв весь текст теперь преобразуется в один контур. Поэтому для существующего файла может понадобиться отмена группировки или разделение контура — в зависимости от того, как он был создан.

Как разделить текстовые контуры, сохранив просветы

Если отверстия в составном контуре выглядят правильно, выполните следующие действия:

  1. Сохраните рабочую копию документа.
  2. Выберите инструмент Выделение и выделите только существующий текстовый контур.
  3. Выберите Контур → Разделить контур.
  4. Снимите выделение, щёлкнув по пустому месту на холсте.
  5. Выделите одну из получившихся фигур и немного сдвиньте её для проверки.
  6. Убедитесь, что просветы перемещаются вместе с внешним контуром и остаются открытыми. Отмените пробное перемещение, если хотите вернуть исходное расположение.

Команда Разделить контур появилась в Inkscape 1.2. Она разделяет подобъекты на связанные объекты, сохраняя отверстия. В примечаниях к выпуску версии 1.2 описано её геометрическое правило: разделять непересекающиеся части, оставляя пересекающиеся вместе.

У этого правила есть важное ограничение: оно не восстанавливает исходные символы текста. Соприкасающиеся или перекрывающиеся контуры букв могут остаться вместе, а отделённый элемент буквы может стать отдельным объектом. Поэтому в примечаниях к выпуску версии 1.3 разделение очерченного текста описано как приблизительное восстановление отдельных букв.

Если отделённый элемент нужно перемещать вместе с буквой, выделите оба получившихся объекта и выберите Объект → Сгруппировать. Группировка сохраняет их как отдельные объекты и позволяет преобразовывать их вместе, как описано в руководстве «Группировка объектов».

Как восстановить отверстия после команды «Разбить»

Если нежелательная операция была выполнена недавно, выбирайте Правка → Отменить, пока исходные просветы не восстановятся, а затем примените Контур → Разделить контур. Если отмена удалит нужные изменения, восстановите контуры по одной букве за раз.

Объедините внешний контур со всеми отверстиями буквы

  1. Выберите инструмент Выделение.
  2. Обведите прямоугольной рамкой одну целую букву, захватив её внешний контур и все внутренние контуры. Соседние буквы не должны попасть в рамку.
  3. Выберите Контур → Объединить.
  4. Снимите выделение, затем снова выделите букву и проверьте, что теперь её контуры принадлежат одному контуру.
  5. Повторите действия для остальных букв с просветами.

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

Команда Объединить оставляет выбранные части в одном контуре, а не вычисляет их объединение. У объединённого объекта одна заливка и одна обводка; в расширенном руководстве указано, что он наследует стиль самого нижнего из выбранных объектов. Поэтому объединение контуров с разными стилями может изменить их внешний вид.

Проверьте правило заливки, если просвет остаётся залитым

Выделив восстановленную букву, откройте Объект → Заливка и обводка, а затем найдите переключатели правила заливки на вкладке Заливка. В справочнике по клавиатуре Inkscape они называются переключателями «ненулевое правило/чередующееся правило»; значения SVG — nonzero и evenodd. Расположение команды в меню описано в руководстве «Диалоговое окно “Заливка и обводка”».

Для простого внешнего контура с меньшим непересекающимся внутренним контуром чередующееся правило evenodd превращает внутреннюю область в отверстие независимо от направления контура. При ненулевом правиле nonzero направление тоже учитывается. Это поведение описано в определении fill-rule в SVG.

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

Небольшое упражнение с абстрактными фигурами, объясняющее разницу

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

  1. В отдельном документе нарисуйте большой прямоугольник, а внутри него — меньший. Оставьте заметный отступ со всех сторон.
  2. Поместите меньший прямоугольник выше большого. Выделите оба и выберите Контур → Разность, чтобы получить прямоугольную рамку.
  3. В другом месте нарисуйте большой эллипс, а внутри него — меньший. Выделите оба, оставив меньший эллипс сверху, и примените Контур → Разность, чтобы создать кольцо.
  4. Разместите рамку и кольцо отдельно друг от друга. Выделите их оба и выберите Контур → Объединить.
  5. Сохраните этот составной контур из двух фигур — он понадобится как исходный вариант для упражнения.

В руководстве «Логические операции» описаны вычитание, объединение и значение порядка наложения. Здесь верхняя меньшая фигура задаёт область, вычитаемую из нижней большой фигуры.

На этом исходном варианте примените Контур → Разбить: внешние и внутренние контуры обеих фигур превратятся в четыре объекта. Отмените действие, затем примените Контур → Разделить контур: должны получиться две полые фигуры, каждая со своей внутренней границей, сохранённой вместе с внешней. Это сравнение соответствует описанному в примечаниях к выпуску версии 1.2 поведению, сохраняющему отверстия.

Можно также потренироваться восстанавливать результат из четырёх объектов. Выделите только прямоугольную пару, объедините её и проверьте правило заливки. Повторите то же для пары эллипсов. Так становится ясно, что именно нужно выделить: для каждой полой фигуры требуются её внешний и внутренний контуры.

Что остаётся редактируемым после этих операций?

Перед выбором способа восстановления учитывайте различия между операциями:

  • Разгруппировать удаляет контейнер; его объекты-элементы остаются доступными для отдельного редактирования.
  • Объединить создаёт один контур с редактируемыми подобъектами и общим стилем. Отдельные стили объектов не сохраняются.
  • Разбить отделяет подобъекты в самостоятельные объекты и меняет взаимодействие их заливок.
  • Разделить контур перестраивает существующую геометрию в отдельные контуры, сохраняя связанные с ними контуры отверстий.
  • Разность создаёт новый контур, вычитая верхний объект из нижнего. Сначала сохраните копию, если исходные объекты нужны вам в дальнейшем.

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

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

Как проверить отверстия в готовых буквах

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

Затем ненадолго выделите и переместите одну восстановленную букву. Её внешний контур и просветы должны перемещаться вместе. Отдельно проверьте все отделённые элементы, а перед удалением временного фонового прямоугольника верните букве нужное положение.

Если вложенные фигуры ведут себя неожиданно, прежде чем вручную перестраивать рисунок, проверьте установленную версию программы. В примечаниях к выпуску версии 1.4.3 описаны улучшенная обработка вложенных отверстий в команде Разделить контур и изменение, при котором после Разбить маленькие объекты снова размещаются над окружающими их более крупными объектами. При вычитании явно проверяйте порядок наложения, а не полагайтесь на то, что нужный контур уже находится сверху.

Работая с существующим очерченным текстом, начните со структуры выделенного объекта: разгруппируйте имеющиеся объекты букв, разделите составной контур с сохранением просветов или объедините ранее разъединённые контуры. Затем проверьте прозрачность и совместное перемещение: эти две проверки подтверждают, что отверстия выглядят правильно и принадлежат нужным для редактирования объектам.

Источники