Scribus 1.3.5

Новую нестабильную версию Scribus пришлось ждать ни много ни мало два года. Стоило ли оно того? Давайте разбираться.

Основные изменения:

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

Должен предупредить заранее, что обзор достаточно критический.

Переход на Qt4 и рефакторинг кода

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

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

Ускорение отрисовки и загрузки документов

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

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

Инструменты

Вменяемое редактирование текста прямо в блоке

Рядом со всеми предыдущими версиями программы, включая недоразумение по имени 1.3.4, возможность спокойно редактировать текст прямо в текстовом блоке, без запуска StoryEditor, воспринимается не иначе как чудо. Для тех, кто не осознал всю торжественность момента: да, теперь вы можете спокойно выделять и удалять фрагменты текста, перемещаться между словами и добавлять текст.

Новый тип объектов — блок визуализации

Новый тип объектов, блок визуализации (render frame), родился как проект GSoC2007 XYZ. Идея заключается в том, что такой блок может хранить описание на любом языке разметки и указатель, каким приложением визуализовать это описание. В настоящее время реализована визуализация:

  • LaTeX
  • Gnuplot
  • LilyPond
  • Dot (GraphViz)
  • POV-Ray

Содержимое блока всегда можно повторно отредактировать. Для этого вы просто вызываете контекстное меню блока, в котором выбираете пункт «Изменить исходник» и получаете следующий диалог:

Диалог редактора

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

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

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

Вниманию тех, кому в LaTeX нужна поддержка юникода и кириллицы в частности: не забудьте в диалоге редактирования исходника на вкладке «Шрифты и заголовки» добавить дополнительный заголовок «\usepackage[utf8]{inputenc}» в поле ввода «Дополнительные заголовки». Заголовок «\usepackage[T2A]{fontenc}» тоже не помешает.

Предустановки фигур

У инструмента фигур появилось заметно больше готовых предустановок:

предустановки фигур

Это, впрочем, не решает проблему отсутствия нормальных инструментов рисования примитивов с редактируемыми параметрами.

Многоугольник

Добавлено регулируемое искривление многоугольника:

искривление многоугольника

Неплохо, но после Inkscape, где подобные вещи делаются прямо на холсте, смотрится такое новшество не очень серьезно.

«Липкие» инструменты

Если раньше после рисования того или иного объекта Scribus автоматически менял инструмент на выделитель и выбирал только что нарисованный объект, то сейчас это назойливое поведение можно убрать. Для этого достаточно в меню «Вставка» поставить флажок напротив пункта «Липкие инструменты» («Sticky tools»). Даже и не знаю: после работы во все том же Inkscape подобная возня вокруг инструментов кажется надуманной.

Новые функции отображения документа

Эти новшества, доступные из меню «Вид», достаточно перечислить тезисно:

  • Режим предпросмотра. Отключает отображение сетки, направляющих, линий шрифта и прочих вспомогательных индикаторов. Также доступен из нижней панели инструментов (кнопка со значком глаза внизу справа).
  • Показывать непечатаемые символы. Функция, хорошо знакомая пользователям OpenOffice.org Writer и Microsoft Word: включает и отключает индикаторы пробела, неразрывного пробела, мягкого переноса и т.д.
  • Линейки относительно страницы. Если вы меняли точку начала координат страницы, повторное включение этого пункта возвращает начало координат на место.
  • Индикатор перемещения и масштабирования. При перемещении или смене размера объекта рядом с курсором появляется индикатор текущей координаты левого верхнего угла объекта или новой ширины и высоты объекта соответственно.

Новые функции редактирования контуров

Весной прошлого года на конференции Libre Graphics Meeting во Вроцлаве впервые попавший на нее Франц Шмид продемонстрировал первый инструмент, использующий библиотеку lib2geom: деформацию по сетке.

Впоследствии на основе этой библиотеки, разрабатываемой, между прочим, авторами Inkscape, был написан еще один инструмент, а затем еще несколько, но уже не использующих lib2geom. Все они реализованы как расширения и доступны через вложенное меню «Объект > Изменение контуров».

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

Поскольку разработчики Scribus не добавили всплывающие подсказки, придется вкратце объяснить, как эти инструменты работают.

Оптические эффекты

Применяет эффект искажения, создаваемого одним из двух типов линз: увеличительным стеклом или объективом класса «рыбий глаз», с изменяемым радиусом (также меняется перетаскиванием за углы линзы) и условной силой действия. Работает с кривыми Безье, фигурами и многоугольниками, выделениями и группами, сочетающими любые из этих типов объектов.

диалог оптических эффектов

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

Деформация по сетке

Выделенная фигура, контур или группа контуров или фигур деформируется по сетке, определенной 16 перемещаемыми узлами. Вот так выглядит диалог:

диалог деформации по сетке

Контур вдоль контура

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

исходные объекты

Вызываем диалог, указываем параметры:

диалог эффекта

Результат:

результат эффекта

Соединить контуры

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

Результат предсказуем.

Разрезать многоугольник

Команда разрезает любой замкнутый контур/фигуру любым незамкнутым контуром (кривой Безье или линией от руки).

Если незамкнутый контур пересекает замкнутый несколько раз, количество разрезов, само собой, будет равно количеству пересечений.

Операции с контурами

Выполняет логические операции с фигурами. По каким-то причинам любит работать только с фигурами и многоугольниками, а кривые Безье не признает. Логику понять сложно: вероятно, это расширение просто не любит незамкнутые фигуры.

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

Вызываете диалог:

Получаете единую редактируемую фигуру:

Ну а если, паче чаяния, нужно этой тарелочке добавить как бы габаритные огни, поступаем просто:

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

Номер спасен, благодарный начальник кормит вас пирожком с кикиморой.

Два замечания по функциональности:

  1. В Scribus вы можете выполнять операции только с двумя выделенными фигурами. В Inkscape хотя бы можно складывать и исключать неограниченное количество объектов.
  2. В диалоге Scribus нет операции разрезания контура, которая есть в меню «Контур» Inkscape. Она вынесена в отдельное расширение (см. выше про разрезание многоугольника).
  3. Scribus позволяет сохранить копии обоих исходных объектов после выполнения операции, чего в Inkscape нет.

Оконтурить обводку

Эффект превращает обводку в контур. К сожалению, действие этого эффекта далеко от совершенства. Смотрите сами. Берем вот такой незамысловатый объект:

Получаем:

А теперь сравните то же самое с результатом аналогичной команды в Inkscape:

Заметили разницу? Нет? Смотрим ближе:

С внутренними углами в исполнении Scribus как-то нехорошо вышло, придется ручками дорабатывать. К тому же, обе программы создали по лишнему узлу с каждой стороны каждого внешнего угла. И если в Inkscape они убираются однократным упрощением контура, то в Scribus такой команды пока нет. Так что снова ручками… По счастью, в ветке разработки следующей версии эта ошибка уже исправлена. Надеюсь, исправление будет перенесено в 1.3.6.

Уточнить контур

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

В остальном…

Появление этих инструментов несомненно радует. К сожалению, базовые инструменты рисования и редактирования кривых Безье за последние семь лет изменений не претерпели, и пользоваться ими не слишком удобно. Ну что тут можно сказать: друзья, скопируйте их по возможности из Inkscape!

Улучшенная работа с текстами на разных языках

Здесь два основных изменения.

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

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

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

Диалог вызывается командой F7 при выделенном текстовом блоке, либо из меню «Объект > Проверка орфографии».

Типографика

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

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

Возможность использовать файлы EPS и AI как файлы палитр

В реальности это означает ровно следующее: вы можете совершенно легально подключать библиотеки Pantone сами. Делается это так:

  1. Регистрируетесь на сайте Pantone.
  2. Скачиваете установочный пакет палитр.
  3. Запускаете его (под Linux — при помощи WINE), устанавливаете.
  4. Идёте в меню Правка > Цвета.
  5. В открывшемся диалоге нажимаете кнопку Импортировать.
  6. Указываете установленный файл EPS с нужной палитрой.

Результат:

Палитра Pantone в диалоге управления набором цветов

Различные улучшения в интерфейсе программы

Здесь тоже тезисно:

  • Опциональное компактное отображение элементов интерфейса (галка «Экономный интерфейс» на вкладке «Общие» в диалоге настройки Scribus).
  • Более подробная информация в диалоге истории действий.
  • Долгожданная навигация по странице перетаскиванием с нажатой средней клавишей/колесом мыши.
  • Параметры текстовых блоков в палитре свойства функционально сгруппированы.
  • Диалог управления направляющими «Страница > Управление направляющими») заметно переработан.
  • Добавлен диалог параметрической вставки текстовых блоков и блоков изображений.
  • В диалоге выравнивания и распределения можно управлять выделенными направляющими линиями, а также менять местами выделенные объекты.
  • Заметно улучшен интерфейс плавающей палитры альбома.

К этому стоит добавить, что Пьер Маршан наконец-то занялся разбиванием диалога свойств на произвольно объединяемые блоки. Изменения будут доступны в версии 1.5.0.

Новые и улучшенные фильтры импорта и экспорта

PDF

Здесь несколько заметных изменений и вагон мелких, а также рефакторинг кода.

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

Во-вторых, исправлен ряд ошибок, касающихся экспорта текста, размещенного на кривой.

В-третьих, файлы PDF и EPS теперь можно внедрять в экспортируемые документы PDF как есть. Эта функция пока что считается экспериментальной, поскольку при смешивании в документе данных в RGB и CMYK на выводе скорее всего будет кукиш.

Scalable Vector Graphics

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

Adobe Illustrator

Этот формат файлов в особом представлении не нуждается. В нашем случае подразумевается поддержка AI на основе PDF (AI 9 и выше). Реализовано благодаря использованию библиотеки PoDoFo.

Читаются только файлы, сохраненные с флажком обратной совместимости через PDF («Create PDF Compatible File»). Следует отметить следующее: несмотря на то, что при импорте программа спрашивает, какие шрифты использовать вместо тех, что есть в документе и нет в текущей системе, весь текст импортируется кривыми.

Это же касается импорта из всех прочих векторных документов за исключением SVG. Зато используемое для векторных объектов цветовое пространство сохраняется.

Пример сохранения цветов в CMYK при импорте из AI

Извините за навязчивую рекламу :)

Windows Meta File

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

Интереса ради я прогнал Scribus сначала по сделанным два года назад командой sK1 тестовым файлам, а затем по собственной небольшой коллекции. По итогам теста могу сказать, что с типовым клипартом проблем быть не должно. В качестве примера:

Пример импорта WMF

XFig

Этот формат файлов и одноименное приложение хорошо известны юниксовым программистам и практически неизвестны пользователям Windows и Mac OS X.

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

Поддержка была реализована ровно потому, что у одного из авторов Scribus было много иллюстраций в Xfig, а формат оказался достаточно простым для разбора.

Пример импорта иллюстраций в формате Xfig

На самом деле, в Xfig отдельные функции, связанные с рисованием, сделаны даже лучше, чем в Inkscape. Так что если вы найдете в своей системе некоторое их количество, не удивляйтесь.

Стенсилы Dia/Kivio

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

Документация

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

 

Безумие с номерами версий

Как же разобраться, что сейчас стабильно, а что — нет? Давайте смотреть:

  1. Официально стабильная версия 1.3.3.х. Именно она официально рекомендуется к использованию. Основана на Qt3, новая функциональность практически не добавляется. Плюсы: работает практически безотказно, прекрасно документирована. Минусы: крайне медленная, нет огромного количества функциональных возможностей, серьезно упрощающих работу или повышающих ее качество (обрезные метки, символьные стили, висячая пунктуация и т.д.).
  2. Официально нестабильная версия 1.3.5. Преимущества и недочеты подробно описаны выше. По факту эта версия работает достаточно стабильно, и количество отказов невелико. Тем не менее, при переходе на нее стоит прогнать как можно больше примеров через всю технологическую цепочку. Постепенно эта ветка разработки стабилизируется (1.3.6), затем превратится в 1.4.0 и станет официально стабильной, а 1.3.3.х будет объявлена устаревшей и неподдерживаемой веткой.
  3. Официально нестабильная версия 1.5.0. Выпущенных версий пока что нет. Разработка этой версии была начата одновременно с выходом первого кандидата в 1.3.5. Добавлено: импорт и экспорт векторной графики при помощи UniConvertor (проект GSoC2008), встроенный просмотрщик растровой графики (проект GSoC2008). Со временем превратится в 2.0.

Google Summer of Code 2009

Проект Scribus уже в третий раз участвует в программе Google Summer of Code. В этом году проекты следующие:

  • Добавление экспорта в PDF/X-1a и PDF/X-4, улучшение поддержки встроенных PDF, улучшение встраивания подмножества глифов шрифта.
  • Переписывание поиска и замены текста с отделением логики от интерфейса и реализацией регулярных выражений.

Кроме того, найдено финансирование для еще одного проекта — поддержка файлов XTG (QuarkXPress Tags) — основная работа над которым уже завершена.

Результаты будут включены в ветку разработки 1.5.

Итоги

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

В ходе выступления на Libre Graphics Meeting 2009 один из авторов программы, Андреас Фокс, упомянул четыре основных пути дальнейшего развития программы и подробно остановился на одном из них — оптимизации формата Scribus. Вы можете посмотреть видеозапись этого выступления.

С моей точки зрения, хотя новый формат документа (особенно та его часть, которая касается текста) и влияет на функциональные возможности, это не самое главное. Scribus уже давно стал серьезной настольной издательской системой — в нем успешно верстают книги и полноцветные журналы, некоторые работы даже завоевывают призы. На один уровень с нынешним лидером индустрии, InDesign, ее, как мне кажется, выведет решение следующих задач:

  1. Улучшенная управляемость с клавиатуры.
  2. Автоматизация как можно большего числа типовых задач — вставка сносок, синхронизация положения связанных блоков и т.д.
  3. Вменяемые инструменты рисования — создание сложного макета в Inkscape с последующим его переносом в Scribus должно перестать быть нормой.
  4. Упрощение работы со сложными структурированными документами.
  5. Реализация абсолютно работоспособного механизма отмены и возврата действий.
  6. Расширенная поддержка OpenType.

На объективность, разумеется, не претендую. У каждого из нас свои приоритеты.

В заключение хочу сказать вот что. Scribus относится к разряду «тяжелых» приложений, напичканных сложными алгоритмами и подразумевающих вдумчивый подход к работе со стороны пользователей.

Сам факт существования подобных свободных приложений (например, Ardour — программы для записи и сведения звука на студийном уровне, или GRASS — геоинформационной системы) говорит о том, что свободное ПО вполне может быть не игрушкой, а рабочим инструментом.

Но это, в свою очередь, становится серьезным испытанием на прочность для разработчиков: ведь от них ждут (а то и требуют) того же, что делают разработчики аналогичного дорогостоящего закрытого ПО, которых как правило больше и которые получают деньги за эту работу.

Согласитесь — для того чтобы заниматься подобными вещами в свободное время, нужно обладать уникальной смесью упертости, любопытства и умения делиться. И хотя подобная работа зачастую начинается по принципу «мне стало интересно, а что если…», продолжается она во многом благодаря откликам конечных пользователей, содержащим волшебное слово «спасибо».

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

1 Trackback / Pingback

  1. Разъяснения касательно Open Colour Standard - digilinux

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*