Выпущен Inkscape 0.48

Как мало нужно для счастья: выпущена новая версия популярного редактора векторной графики Inkscape. Подробности как всегда есть в традиционном обзоре. Менее терпеливые приглашаются на страницу закачки.

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

Основные новшества этой версии:

  • новый инструмент Аэрограф;
  • одновременное редактирование нескольких контуров;
  • улучшенное редактирование выделенных узлов контура;
  • улучшенный инструмент соединительных линий;
  • целый ряд принципиальных улучшений в инструменте ввода текста;
  • ещё более удобное прилипание;
  • улучшенная работа с растром;
  • новые расширения эффектов.

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

Аэрограф

Новый инструмент Аэрограф (вызывается клавишей A), распыляющий выделение, был написан группой студентов лионского политеха под руководством Седрика Жеми весной прошлого года. За основу взят код инструмента Корректор. Исходная реализация была достаточно сложной и включала специальный диалог с расширенными параметрами, где можно было переключаться между способами рассеивания и менять прочие параметры алгоритма. После длительного обсуждения было решено упростить инструмент.

Пример использования аэрографа

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

После удаления уже упомянутого диалога со спецпараметрами у инструмента осталось несколько достаточно понятных регуляторов:

  • Относительная ширина охватываемой зоны. Управляется с клавиатуры стрелками влево и вправо и может учитывать силу нажатия пером планшета.
  • Количество объектов, размещаемых одним щелчком.
  • Степень варьирования вращения распыляемых объектов.
  • Степень варьирования масштаба распыляемых объектов.
  • Рассеивание объектов, регулирует скученность.
  • Фокус распыления — ближе к центру или краям зоны распыления.

В целом инструмент можно считать несколько упрощённым аналогом инструмента «Распыление символов» (Symbol Sprayer) из Adobe Illustrator. Немного жаль, что была убрана функция раскрашивания создаваемых копий (всплывающая подсказка к инструменту по ошибке до сих пор напоминает о ней). С другой стороны, с задачей перекрашивания хорошо справляется Корректор.

Редактирование узлов

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

Теперь вы наконец-то можете выделить несколько контуров, видеть и иметь возможность редактировать узлы каждого из них. Разумеется, поскольку инструментом можно редактировать и градиенты контуров, вы заодно получаете доступ и к градиентам каждого из выделенных контуров.

Одновременное редактирование контуров

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

Объединение концевых узлов разных контуров

В будущем Кшиштоф планирует добавить поддержку одновременного редактирования фигур.

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

Рамка выделения узлов контура

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

Здесь есть один важный момент: у инструмента выделения для переключения режима рамки с масштабирования на вращение и искажение используется комбинация клавиш Shift+S. Но у инструмента редактирования узлов эта комбинация уже занята под смену типа выделенных узлов на сглаженные, поэтому для переключения режима рамки используется свободная комбинация Shift+H. Поначалу может быть непривычно.

Ещё одно небольшое, но полезное новшество — визуализация направления контура при отображении абриса контура («Файл > Настроить Inkscape… > Инструменты > Узлы > Показывать направление контура на абрисе»). Эта функция может быть полезна, к примеру, в шрифтовом дизайне. В принципе, FontForge умеет находить и исправлять неправильное направление контура, но намного лучше сразу делать всё правильно, не правда ли? Ну и кроме того, направление контура полезно видеть при назначении маркеров начала и конца, когда вы рисуете стрелки.

Улучшенный ввод текста

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

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

Индексы и числовой ввод

Этого Таву показалось мало, и по настойчивым просьбам общественности он добавил поддержку верхних и нижних индексов. Так что теперь можно набирать простые физические формулы:

Физические формулы, нижний индекс

Или химические формулы:

Химические формулы, нижний индекс

А вот свежий пример использования инструмента в веб-дизайне:

Пример использования инструмента в веб-дизайне

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

Остаётся лишь добавить, что в новой версии появился диалог вставки спецсимволов:

Диалог вставки глифов

Вы можете отфильтровать глифы по нужной письменности или блоку юникода.

Соединительные линии

Давно начатый инструмент соединения объектов линиями никак не удавалось домучить. Наконец, в прошлом году Аркадий Кракан в рамках проекта Google Summer of Code неплохо доработал его. Часть изменений успела попасть в версию 0.47, но основные изменения стали доступными только сейчас.

Ломаные и ортогональные соединительные линии

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

Прилипание

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

В новой версии прилипание работает и перед началом рисования: достаточно просто включить нужные варианты прилипания и перенести указатель инструмента к той или иной точке.

Встраивание растра

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

Запрос о способе импорта

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

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

Расширения эффектов

В новую версию добавлено восемь новых расширений, из которых наибольший интерес представляют следующие три:

  • «Отрисовка > Матричный штрих-код», создаёт штрих-коды по стандарту BS ISO/IEC 16022:2006;
  • «Создание презентации», популярное расширение JessyInk, с помощью которого можно создавать презентации прямо в Inkscape и показывать их в браузере;
  • «Веб > Нарезка макета», название говорит само за себя.

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

Помимо того, в уже существовавшее расширение «Измерить контур» добавлена функция вычисления площади контура. Правда, точно она работает только с многоугольниками. Для окружностей площадь может быть больше реальной на 0,03%.

Недостатки

Помимо уже упомянутых мелочей хочется обратить внимание на несколько моментов.

Во-первых, в отличие от нескольких предыдущих версий в новой не оптимизировалась отрисовка. То есть совсем. Так что редактировать сложные рисунки по-прежнему придётся в режимах «Без фильтров» и «Каркас». С другой стороны, в 0.49 применительно к скорости ожидаются серьёзные сдвиги, о чём написано чуть ниже.

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

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

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

Google Summer of Code 2010

В этом году проект получил пять слотов в ежегодной программе Google Summer of Code. К сожалению, два проекта — переписывание диалога экспорта и новый динамический контурный эффект PowerStroke — были завалены студентами ещё на этапе промежуточной оценки. Ещё один проект, в рамках которого Inkscape должен был научиться работать только с видимыми в окне объектами и не пытаться объять необъятное, был завален ближе к концу программы ввиду неназванных личных обстоятельств.

К счастью, реализацией PowerStroke занялся Йохан Энгелен — руководитель неудачливого студента и создатель собственно технологии динамических контурных эффектов. Интерфейс этого LPE был проработан на конференции Libre Graphics Meeting при участии нескольких пользователей и члена рабочего комитета W3C SVG Дуга Шепарда. Что касается последнего проваленного проекта, Вангелис выдал написанный им код и пообещал доработать его осенью.

Два успешных проекта действительно успешны. Кшиштоф Косинский реализовал рендеринг через Cairo для объектов со сплошной, градиентной и текстурной заливкой, а также текст, обтравочные контуры, маски и прозрачность. По предварительным тестам ускорение отрисовки объектов со сплошной заливкой составило около 50%, градиентная заливка отрисовывается ещё быстрее.

Кроме того, Кшиштоф научил программу распараллеливать отрисовку фильтров SVG и планирует переписать фильтры SVG на OpenCL, чтобы отрисовку можно было выполнять на GPU через cairo-gl.

Ветку gsoc-cairo можно вытащить командой

bzr branch lp:~tweenk/inkscape/gsoc-cairo

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

Планы на будущее

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

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

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