Se ha lanzado una nueva y significativa versión de la biblioteca de rasterización de SVG — resvg.
Principales cambios:
- Una implementación completamente nueva del renderizado de texto:
- Casi toda la pila desde el carácter hasta la curva Bezier ahora está implementada en Rust:
la selección de fuentes (font matching and fallback), el análisis de TrueType, la disposición de clústeres de glifos según las reglas de SVG (SVG text layout).
La excepción es el shaping de texto (text shaping), para el cual se utiliza
HarfBuzz. - El texto ahora se convertirá en curvas Bezier antes del renderizado.
Es decir, el backend de renderizado ya no está obligado a soportar texto. - Soporte para texto bidireccional (BIDI reordering). Ejemplo.
- Soporte para textPath. Ejemplo 1, ejemplo 2.
- Soporte para writing-mode (texto vertical). Ejemplo.
- Soporte correcto para word-spacing y letter-spacing. Ejemplo.
- Casi toda la pila desde el carácter hasta la curva Bezier ahora está implementada en Rust:
- Un nuevo backend experimental — Raqote (un agradecimiento especial a jrmuizel).
Raqote es una biblioteca gráfica 2D escrita en Rust.
Está en una fase inicial de desarrollo, y sus capacidades ya son suficientes para
su uso en resvg.
Su principal ventaja es que resvg ahora se puede compilar con exactamente una dependencia que no es de Rust — HarfBuzz. - Soporte para shape-rendering, text-rendering e image-rendering.
- Se ha acelerado el renderizado de imágenes rasterizadas.
- El número total de pruebas ha alcanzado 1112.
El número de pruebas superadas con éxito por Inkscape y librsvg ha caído por debajo del 75%. - Un montón de correcciones y mejoras menores.
Resultados de las pruebas. Tabla comparativa.
Fuente: linux.org.ru
