LINUX.ORG.RU

libresvg 0.1 — новая альтернатива librsvg

 , , ,


4

7

libresvg 0.1 представляет собой первый экспериментальный выпуск новой библиотеки для отрисовки (рендеринга) SVG.

Основная цель проекта — заменить librsvg и QtSvg, и стать альтернативой Inkscape для тех, кто использует его для конвертирования SVG в PNG.

В текущей версии новая библиотека уже превосходит QtSvg, но не дотягивает до librsvg по возможностям (нет filter, clipPath, mask, marker, pattern). Тем не менее, поддержка стандарта в libresvg намного лучше, из-за чего базовые элементы, такие как path, gradients, shapes, text, поддерживаются лучше (у librsvg множество ошибок отрисовки).

Основные отличия от librsvg:

  • Возможность использовать несколько бекэндов (сейчас реализованы Qt и cairo). librsvg привязан к cairo и glib, из-за чего использовать его вне Linux — проблематично.
  • В отличии от librsvg, в libresvg стадии разбора и отрисовки полностью разделены, что позволяет легко добавлять новые бекэнды. Также это позволяет реализовать множество алгоритмов препроцессинга и валидации SVG, что, в свою очередь, позволяет избежать большого количества ошибок отрисовки.
  • Полная поддержка градиентов. rsvg не умеет наследовать атрибуты, проверять атрибуты на корректность, не поддерживает градиенты без дочерних или с одним дочерним элементом (swatches).
  • Хорошая поддержка отрисовки текста. rsvg не понимает xml:space, text-decoration, не всегда верно отрисовывает многострочный текст, плохо поддерживает tspan.
  • Поддержка CSS намного лучше, но полной поддержки всё ещё нет.

В разделе Releases можно скачать демо-приложение для оценки отрисовки для тех, кто не хочет собирать библиотку из исходников. Также в архиве находится консольное приложение для конвертации, альтернатива rsvg-convert.

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

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от RazrFalcon

Следует уточнить, что либа удаляет элементы помеченные как невидимые (ну или просто кривые), но не те, что перекрываются другими элементами (ибо такой необходимости нет).

Тогда их следует удалять при подготовке к печати? И тупой драйвер оказывается непригоден?

question4 ★★★★★
()

Спасибо, братан. Джва года ждал.

Надо будет пробнуть написать Opengl бекенд для полного счастья.

q0tw4 ★★★★
()
Последнее исправление: q0tw4 (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Выше Dark_SavanT хочет печатать SVG. Я вспомнил свои проблемы при печати векторных изображений под Windows (WMF, вставленных в Word). Было 2 круга с надписями. При выводе на экран один круг частично закрывал другой, и была видна только одна надпись — как и было задумано. При печати надпись на частично скрытом круге тоже была видна, из-за этого обе становились нечитаемы. Если библиотека не умеет удалять невидимые точки, это должен сделать, например, драйвер принтера (или какая программа переводит это в понятный принтеру формат).

P.S. Или программа, конструирующая SVG, должна обеспечить отсутствие перекрывания. Походе, у него будет именно так.

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Это была попытка предсказать возможный баг до того, как его обнаружат.

P.S. Доберусь до инкскейпа, попробую изобразить.

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)

Основная цель проекта — заменить librsvg и QtSvg, и стать альтернативой Inkscape для тех, кто использует его для конвертирования SVG в PNG.

ImageMagic же умеет, можно еще и с настроечками поиграться:

convert -depth 32 -define png:compression-level=0 define png:compression-filter=0 -background none image.svg PNG32:image.png

deep-purple ★★★★★
()
Ответ на: комментарий от RazrFalcon

Я про основную цель проекта — «Inkscape для конвертирования SVG в PNG». Показал что скейп для этого не нужен.

Но, если ответвиться сюда, то, вопрос в воздух — интересно, захочет ли автор меджика переехать на эту новую либу?

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Показал что скейп для этого не нужен.

Иксперты в треде. У Inkscape лучше поддержка SVG.

захочет ли автор меджика переехать на эту новую либу?

Без понятия.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

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

deep-purple ★★★★★
()
Ответ на: комментарий от RazrFalcon

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

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Или не увидел ошибку.

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

AP ★★★★★
()
Последнее исправление: AP (всего исправлений: 1)
Ответ на: комментарий от deep-purple

У меня голова немного опухшая сейчас. Слишком много писанины. Попозже гляну.

AP ★★★★★
()
Ответ на: комментарий от deep-purple

Патчи с заливкой

Что это такое?

слои

В svg нет слоёв.

текст тоже умеет

Только самый примитивный.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Что это такое?

Не знаешь как описывается path в свг: m, h, v, l, c, z?

В svg нет слоёв

Зато есть порядок объявления элементов, их позиционирование в координатах, что визуально воспринимается как слои.

Только самый примитивный

Возможно.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Не знаешь как описывается path в свг: m, h, v, l, c, z?

Это шутка такая? И это не «патчи», а path (паф). Выучите терминологию, или хотя бы англ. язык для начала.

Зато есть порядок объявления элементов

Вообще-то самый близкий аналог слоёв - это 'g'. Но там всё устроенно намного сложнее, чем вам кажется.

Возможно.

Инфа 146%.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Word 6.0 и WMF :) К данной библиотеке не относятся.

question4 ★★★★★
()

В README:

One of the main difference from other rendering libraries is that libresvg do a lot of preprocessing before rendering.

Надо

does a lot of preprocessing

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.