LINUX.ORG.RU

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

 , ,


1

4

Вышел новый, значительный релиз библиотеки для растеризации SVG - resvg.

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

  • Полностью новая реализация отрисовки текста:
    • Почти весь стек от символа до кривой Безье теперь реализован на Rust: подбор шрифтов (font matching and fallback), парсинг TrueType, расстановка кластеров глифов по правилам SVG (SVG text layout). Исключением является шейпинг (text shaping), для которого используется HarfBuzz.
    • Текст теперь будет конвертироваться в кривые Безье до рендеринга. То есть бекенд отрисовки теперь не обязан поддерживать текст.
    • Поддержка двунаправленного текста (BIDI reordering). Пример.
    • Поддержка textPath. Пример 1, пример 2.
    • Поддержка writing-mode (вертикальный текст). Пример.
    • Корректная поддержка word-spacing и letter-spacing. Пример.
  • Новый, экспериментальный бекенд - Raqote (отдельное спасибо jrmuizel). Raqote - это графическая 2D библиотека, написанная на Rust. Она находится в начальной стадии разработки, при этом её возможностей уже достаточно для использования в resvg. Основным её преимуществом является то, что resvg теперь можно собрать ровно с одной не-Rust зависимостью - HarfBuzz.
  • Поддержка shape-rendering, text-rendering и image-rendering.
  • Ускорена отрисовка растровых изображений.
  • Общее количество тестов достигло 1112-х. Количество успешно пройденных тестов у Inkscape и librsvg упало за 75%.
  • Множество мелких исправлений и улучшений.

Результаты тестирования. Сравнительная таблица.

>>> Репозиторий

★★★★★

Проверено: Shaman007 ()

Ответ на: комментарий от baist

А при чем тут это? Не вижу смысла переписывать старые библиотеки проверенные временем на новом языке чтобы получить грубо говоря ту же so-шку, но вижу смысл писать новый код на rust, по уже описанным причинам. Никакого противоречия.

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

старые библиотеки проверенные временем

А на C/C++ нет прикладного софта!? Только одни библиотеки?!

Ты не хочешь переписывать библиотеки, но ты хочешь переписывать готовый софт на раст?

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

Что же вас так качает из стороны в сторону, изначально ваша претензия была к тому что у rust-крах по причине того, что он юзает библиотеки из С. Теперь вы уже хотите переписывать не только библиотеки, но и весь софт. Зачем вообще что-то переписывать на rust? Зачем что-то переписывать на новый язык если оно нормально работает и на старом? Нет можно конечно в этом есть конечно какой-то смысл, но я бы не хотел таким заниматься. У вас логика высказываний такая, как будто у вас есть все время мира и можете позволить себе его потратить на переписывание всего и вся на каждый новый язык который выходит, это странно честно... Просто поймите что С исторически язык по умолчанию и все современное IT в той или иной мере на нем завязано, все мы стоим на плечах гигантов (с) Но это не говорит о том, что надо продолжать писать все на С, есть куча языков которые делают написание софта более безопасным, быстрым и удобным, вот и все.

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

Да вас никто и не заставляет, хотите пользуйтесь чем удобно. Но это не значит что в rust нет смысла, смысл есть, какой - уже описано. Eсли для вас это не выглядит как смысл, ну ок.

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

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

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

То, что на языке делают биндинги, не является крахом языка. Rust для вас «молоток», для кого-то он может быть и «ножом». Не пытайтесь навязывать кому-то свое видение языка. Это просто инструмент (не какой-то конкретно), каждый его использует так, как считает нужным в соответствии с тем функционалом, который он предоставляет как язык.

abcq ()