Искривление текста в Inkscape
В графическом дизайне периодически возникает необходимость изогнуть текст похитрее, например, трепещущим на ветру флагом или иной нетипичной фигурой. Рассмотрим такой простой пример:
Ни направление текста по контуру, ни обычные трансформации здесь не помогают. Привычным решением является расширение «Перспектива», которое впишет текст в другую фигуру. Но у него целых два крупных недостатка: текст оконтуривается и становится нередактируемым, а кроме того, фигуру, в которую он вписывается, впоследствии отредактировать невозможно. Есть ли иные способы?
Самые любопытные пользователи Inkscape наверняка уже обнаружили динамический контурный эффект «Деформации по огибающей», который даёт возможность менять фигуру объекта на лету. Однако и здесь текст оконтуривается. А между тем решение есть — неочевидное, но вполне работающее. Давайте изучим парочку асан. Начнём с основ.
Почему при использовании динамических контурных эффектов (далее LPE, т.е. Live Path Effects) приходится оконтуривать текст? Дело в принципе работы LPE: эффект получает на вход контур, совершает с ним некоторые действия и выводит новый контур. В файл SVG пишутся все три типа данных: входной контур, описание изменений (параметры эффекта) и выходной контур. Поскольку LPE являются собственным изобретением Inkscape, это позволяет видеть результат эффекта в любом опирающемся на стандарт SVG просмотрщике, которому просто виден конечный контур.
Значит ли это, что текст невозможно редактировать? Вовсе нет. Есть небольшая и почти неизвестная хитрость.
Наберите произвольный текст произвольным шрифтом и под ним нарисуйте прямой (Ctrl) контур с длиной, равной тексту, или чуть больше.
Через меню «Контур» или комбинацией Ctrl+Shift+7 вызовите диалог редактора контурных эффектов, выберите в списке и примените эффект «Текстура по контуру». Теперь откройте встроенный редактор XML, который автоматически покажет атрибуты текущего выделенного объекта. Вас интересует атрибут "inkscape:path-effect". Посмотрите его значение и найдите в разделе "defs" (определения) описание эффекта с таким же идентификатором.
Теперь давайте откроем параметры этого эффекта и внимательно посмотрим на атрибуты. Нас интересует атрибут "pattern":
Эффект «Текстура по контуру» работает следующим образом. Некий векторный объект помещается в начало контура и далее по выбору пользователя копируется с указанным интервалом и смещением от начала и/или от ведущего контура.
Обычно текстурой выступает другой контур, который копируется в буфер обмена, а затем вставляется нажатием кнопки вставки содержимого буфера. В этом случае в атрибут "pattern" попадает разметка, описывающая эту кривую Безье. Выглядит это так:
Собственно хитрость заключается в том, что это совершенно необязательно должно быть описание кривой. Вы можете просто сослаться в этом атрибуте на другой векторный в своей основе объект, такой как текст.
Найдите текстовый объект, который хотите изогнуть, скопируйте его идентификатор (id) и вставьте в атрибут "pattern" в описании эффекта, не забыв вставить знак решётки:
Посмотрим на результат:
Вы видите, что на месте контура появился наш заранее набранный текст. Если вы переключитесь на инструмент редактирования текста и измените исходный текстовый объект, контур с эффектом автоматически перерисуется, поскольку кривые Безье будут браться из исходного текстового объекта.
Почему текст, расположенный текстурой по контуре, другого цвета? Дело снова в механизме LPE. Как вы помните, любой контурный эффект даёт на выход просто контур, у которого может быть только один стиль. Поэтому просто выделите контур, к которому применён эффект, и измените его стиль. Можно повторить градиент исходного текста, можно назначить совсем другую заливку и добавить обводку:
В принципе, начать изгибать текст можно сразу. Достаточно с нажатой клавишей Shift вытянуть рычаги оконечных узлов контура и переместить их:
Но это не очень-то спортивно. Вместо этого добавим эффект «Деформация по огибающей». Этот эффект даёт нам четыре соприкасающихся контура (так называемые огибающие), очерчивающих площадку (bounding box) объекта. Этими огибающими объект и трансформируется. В параметрах добавленного эффекта снимем флажок «Использовать левый и правый контуры».
Для редактирования той или иной огибающей нужно щёлкнуть по значку, помеченному окружностью на скриншоте выше.
Зачем нужно снимать упомянутый выше флажок? При искажении учитываются все четыре контура, гнущих объект. Это не всегда нужно. Например, если вы ходите создать эффект текста, уходящего в горизонт, т.е. превратить прямоугольник огибающих контуров в трапецию, левый и правый контуры будут вносить свои коррективы, а в данном случае они не нужны:
Соответственно, при вертикальном размещении текста убирать нужно верхний и нижний контуры. Ну а поскольку огибающие — самые обычные контуры, их можно произвольно менять, искривляя, добавляя новые узлы и так далее:
Думаю, что вы без труда найдёте этому трюку немало применений. Не забывайте экспериментировать с отключением тех или иных огибающих:
На примере вверху нижний и верхний контуры отключены, а левый и правый растягивают текст по вертикали и гнут его внутрь себя самого, выталкивая центр наружу.
Источник: http://linuxgraphics.ru