Uma nova e significativa versão da biblioteca de rasterização SVG foi lançada - resvg.
Grandes mudanças:
- Implementação completamente nova de renderização de texto:
- Quase toda a pilha, desde o símbolo até a curva de Bezier, agora é implementada em Rust:
seleção de fontes (correspondência de fontes e substituto), análise TrueType, organização de clusters de glifos de acordo com regras SVG (layout de texto SVG).
Uma exceção é a modelagem de texto, para a qual é usado
HarfBuzz. - O texto agora será convertido em curvas Bizeux antes da renderização.
Ou seja, o back-end de renderização não é mais necessário para suportar texto. - Suporte de texto bidirecional (reordenação BIDI). Exemplo.
- suporte a textPath. Exemplo 1, Exemplo 2.
- Suporte para modo de escrita (texto vertical). Exemplo.
- Suporte correto para espaçamento entre palavras e entre letras. Exemplo.
- Quase toda a pilha, desde o símbolo até a curva de Bezier, agora é implementada em Rust:
- Novo back-end experimental - Raqote (agradecimentos especiais para jrmuizel).
Raqote é uma biblioteca gráfica 2D escrita em Rust.
Está nos estágios iniciais de desenvolvimento, mas suas capacidades já são suficientes para
usar em resvg.
Sua principal vantagem é que o resvg agora pode ser construído com exatamente uma dependência não-Rust - HarfBuzz. - Suporta renderização de formas, renderização de texto e renderização de imagens.
- A renderização de imagens raster foi acelerada.
- O número total de testes chegou a 1112.
O número de testes bem-sucedidos do Inkscape e do librsvg caiu 75%. - Muitas pequenas correções e melhorias.
Resultado dos testes. Tabela de comparação.
Fonte: linux.org.ru