LINUX.ORG.RU

resvg 0.2 — теперь лучше librsvg

 ,


3

9

resvg — библиотека отрисовки SVG.

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

  • Библиотека была почти полностью переписана.
  • Добавлена поддержка clipPath, mask, pattern и preserveAspectRatio.
  • Новый, написанный с нуля, набор тестов: сайт, репозиторий. На данный момент содержит 539 тестов/файлов svg.
  • Добавлена поддержка отрисовки элементов по ID.
  • Препроцессор был вынесен в отдельный проект: usvg.
  • Новая реализация C-API с полноценной документацией.
  • Множество мелких исправлений.

Краткую сводку о результатах тестирования можно посмотреть здесь.

В двух словах: на данный момент resvg не хуже librsvg, если вам не нужны фильтры (в любом случае тот же blur реализован в librsvg неверно). Производительность приблизительно одинаковая.

Inkscape, с другой стороны, в среднем в 10 раз медленнее и хотя поддерживает больше возможностей SVG (фильтры, маркеры и прочее редко используемое), при этом содержит массу ошибок в реализации базовых примитивов.

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

★★★★★

Проверено: jollheef ()
Последнее исправление: cetjs2 (всего исправлений: 2)

resvg 0.2 — теперь лучше чем librsvg

В двух словах: на данный момент resvg не хуже librsvg если вам не нужны фильтры <...>. Производительность приблизительно одинаковая.

Гораздо лучше тем что не хуже если отбросить часть задач?

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

Конечно. Ведь либа написана на божественном Rust.

Кроме того, по заявлениям ТС, который специально изучал данный вопрос, librsvg грешит неточностями в реализации стандарта SVG. Если ты можешь аргументированно оспорить эту точку зрения чем-то, кроме «лишь бы работало», то приступай.

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

Если ты можешь аргументированно оспорить эту точку зрения чем-то, кроме «лишь бы работало», то приступай.

Я про сам текст новости и его заголовок. Что там внутри библиотеки и на чем она написана мне вообще все равно - если ее будут использовать значит она нужна, все остальное (скорость, соответствие стандартам и прочее) - удел олимпиадных программистов.

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

Тогда откуда ты взял

Гораздо лучше тем что не хуже если отбросить часть задач?

? В ОП нет ничего такого. librsvg — популярная библиотека, использующаяся, в частности, в Gimp (поэтому ТС и скастовал лоровца, состоящего в команде разработчиков Гимпа), — сравнение с ней как с фактическим эталоном неизбежно.

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

Лично меня просто смутило прямое «лучше, чем librsvg» в заголовке и «не хуже librsvg» в тексте, плюс:

  • «если вам не нужны фильтры»
  • «Производительность приблизительно одинаковая»

собственно, что ввиду-то имелось: лучше, хуже или монописсуально?

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

Ну а по ощущению из текста, получается: resvg = librsvg - фильтры (пусть и с багами где-то), при сходной скорости, но на Rust. А чем лучше (согласно заголовка) - не видно.

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

resvg = librsvg - фильтры (пусть и с багами где-то), при сходной скорости, но на Rust. А чем лучше (согласно заголовка) - не видно.

Просто у растабоев NIH синдром или просто хотели доказать что Rust крутой язычок. Не получилось, но это не умаляет проделанной работы, а наоборот, теперь все знаю что Rust ни о чем.

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

Ну а по ощущению из текста, получается: resvg = librsvg - фильтры (пусть и с багами где-то), при сходной скорости, но на Rust. А чем лучше (согласно заголовка) - не видно

как бы об этом написано в репозитории, а не в посте. Убрали зависимости от cairo и gnome, добавили препроцессинг вроде удаления невидимых элементов, покрыли все кучей тестов.

А что до скорости, то librsvg саму переписывают на rust, так что результат ожидаемый. https://github.com/GNOME/librsvg/tree/master/rsvg_internals

anonymous
()
Ответ на: комментарий от sniper21

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

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

Ты и твой единомышленник, фигурально выражаясь, допытываетесь до солнца, что оно жёлтое. Ну пристрастен ТС, что тут поделаешь. Но и ваши претензии к стилистике и подаче новости не тянут на контр-аргументы. У нас тут Союз Писателей, что ли?

Virtuos86 ★★★★★
()

Пора добавлять тег resvg!

Аффтар, кастани andreyu, если считаешь, что твою либу уже можно юзать.

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

Некоторым лишь бы кастануть. Уже разбирались, что нет у resvg такого бэкенда, который устроит andreyu.

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

все остальное (скорость, соответствие стандартам и прочее) - удел олимпиадных программистов.

Всё перечисленное «остальное» — причина, по которой этот проект вообще имеет смысл.

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

все остальное (скорость, соответствие стандартам и прочее) - удел олимпиадных программистов.

Соответствие стандартам - удел олимпиадных программистов? Ты либо упорот, либо ничего не понимаешь в ремесле. Ну, или и то, и другое вместе.

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

Так что только сравнительная таблица и сравнение по общим критериям.

К этому я готов: https://razrfalcon.github.io/resvg-test-suite/svg-support-table.html

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

Пока рано.

Ну и ему не нравится зависимость от Qt/cairo. Но это, на данный момент, невозможно обойти.

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

Глядя на элементы вида

[RED, ?, ?, ?, ?]
создаётся впечатление, что resvg лучше большинства (кроме Chrome) других движков в тех аспектах, которые он реализует (и которые были, соответственно, протестированы). Но реализует он не все.

P.S.: Но, вообще, конечно, классно (только поддерживаю появление таких библиотек с таким подходом на таких языках).

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

Только большинство (не считая хрома), такие же унылые. Сотрите на первый график в https://github.com/RazrFalcon/resvg#svg-support Это официальный SVG test suite. По нему чётко видно, что из-за фильтров, маркеров и прочей мелочи inkscape вырвался вперёд.

Ну и тут тонкий момент. Да, на данный момент resvg реализует не весь стандарт, но то что уже реализовано - реализовано лучше чем у других. Это и было целью проекта.

Толку от того, что librsvg «поддерживает» фильтры, если он всё равно их криво рисует. Он даже пути криво парсит.

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

Да, точно. Не заметил, что Inkscape тоже опережает. Но всё равно круто (Inkscape — редактор, ему положено, я даже удивлён, что он от Chrome отстаёт), особенно если сравнивать между либами.

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

Самое печальное, что даже хром не набирает 100%...

Inkscape — редактор, ему положено

Но xml:space они так и не осилили =)

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

круто, конечно, но без блёра, в моём случае, не юзабельно. у меня почти в каждой иллюстрации блёр есть. рисую и рендерю в инкскейпе. а ещё в инке есть меши, не знаю уж как там это реализовано и соответствует ли стандарту, но фича удобная. resvg может в такие меши?

anonymous
()
Ответ на: комментарий от anonymous

круто, конечно, но без блёра, в моём случае, не юзабельно.

Согласен. Это главная цель следующего релиза. Но там очень много подводных камней (librsvg не умеет нормально, inkscape, в некоторых случаях, - тоже). Поэтому не попало в этот релиз.

соответствует ли стандарту

Нет. Это предложили в 2.0, который по-прежнему draft.

resvg может в такие меши?

Нет. Как только завезут в cairo/Qt - так сразу.

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

Шта? librsvg/QtSvg вообще LGPL/GPL.

Ты нам сказал, что «resvg лучше librsvg».

Лицензия у «resvg» Mozilla Public License 2.0 По моему это типичная пермиссивка-разрешиловка. Почему resvg ты не выложил под GNU GPL v3 Ты наверно хочеь потом поменять лицензию на приприетарную?

Короче, пацаны встревожены.

anonymous
()
Ответ на: комментарий от Dark_SavanT

Может потому что либа делается для работы, а не для вскукареков анонимуса?

Вскукареки бывают разные. Питухи спрашивают: «почему у либы бздуноподобная разрешительная лицензия»? Может потому, что автор хочет со временем переиначить куски кода под проприетарную лицензию.

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

anonymous
()
Ответ на: комментарий от anonymous

Мнение «пацанов» меня мало волнует. Тем более никто не мешает менять GPL на что-то другое.

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

Руки не дошли. Нужно будет потыкать. Это же касается и фурифокса.

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

Просто с хромом тягаться бессмысленно, поэтому я его редко упоминаю =)

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

Уже разбирались, что нет у resvg такого бэкенда, который устроит andreyu.

Пардон, упустил этот момент…

r3lgar ★★★★★
()

Вот мне тут Федерико на IRC пишет:

resvg's test suite is fan-tas-tic
but unless it exports librsvg's API (... or every app gets modified to use resvg's C API) and it can render the icon themes, well...

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

but unless it exports librsvg's API (... or every app gets modified to use resvg's C API) and it can render the icon themes, well...

Как говорится, «hint, hint».

Впрочем, даже с совместимым API шансы заменить librsvg невелики.

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

Угу. Я с ним переписывался. У них цель переписать librsvg на раст c полным сохранением совместимости. При этом целей вылезти из гномо-мирка - нет. У меня же изначально всё наоборот.

Почему он не хочет использовать куски resvg и реализует всё с нуля сам - я хз.

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

Такой цели и нет.

У меня есть прототип-форк QtSvg который уже очень хорошо работает. Но подменить системный QtSvg пока не получается. Причину багов пока не нашел. Времени не было. Видимо слишком многое в KDE завязано на кривость QtSvg.

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

Такой цели и нет.

А кака цель есть - потренироваться в Rust, просто написать полезную библиотеку для SVG, заменить QtSvg, еще что-то?

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

Текущая цель - написать либу с самой лучшей поддержкой SVG, которую легко тягать с собой.

QtSvg убог, librsvg немногим лучше но тянет пол гнома, Inkscape/WebKit/Blink - монстры, batik - жаба. Остаётся моя либа.

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

Вот во времена Флеша такой фигни не было. Она просто была не нужна в принципе. Впрочем, так как СВГ себя давно скомпрометировал и используется примерно там же, где используется формат АИ от Адоб Иллюстратора, наверное кому-то оно и надо.

Зато флеш мертв. Его место правда почему-то заняла Юнити, а не эти ваши открытые стандарты поганый ХТМЛ5.

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

ЧЯДНТ?

А вот хз, это же надо смотреть. Возможно jre поднимаешь на каждый тест. Она очень жирная. Но это как вариант.

Может openjdk криво собран (в некоторых дистрах его так уделывают, что он не юзабелен и тормозит). (upd. а так у тебя icedtea, у меня на ней даже ide не работали во времена 7-ой явы, но не факт что дело в этом)

Короче вариантов много, когда-то давно (лет десять назад) батик был очень быстрым, но с тех поря с ним не работал, возможно его поломали или всё остальное ускорилось.

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

Ясно. Попробую с офф. джавой потестить. Установить её под генту тот ещё квест.

Возможно jre поднимаешь на каждый тест.

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

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

Типа того.

Тогда разницы особой нет, официальная или не очень.

Судя по доке: https://xmlgraphics.apache.org/batik/tools/rasterizer.html растеризатор там умеет пачку файлов за раз принимать:

generate ... images for all the SVG files found in the samples directory.

Deleted
()
Ответ на: комментарий от Deleted

Хм, посмотрю умеет ли оно в рекурсию.

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