Вышел новый, значительный релиз библиотеки для растеризации 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%.
- Множество мелких исправлений и улучшений.
>>> Репозиторий