Por favor no uses librsvg 2.40.x; no puede renderizar el tema de iconos Adaita de forma correcta.
La serie 2.40.x de librsvg es la última que estaba escrita sólo en C; dejé de darle soporte en 2017.
Al hacer el port a Rust, re-escribí el parser de paths para que cumpliera con la especificación de SVG, y le arreglé algunos casos que la versión en C no manejaba. Uno de estos casos es para comandos de Arcos con datos compactos.
La gramática de SVG permite
omitir los espacios en blanco entre dos números si el segundo número
comienza con un signo. Por ejemplo, 23-45
se considera como dos
números 23 -45
.
Además, los argumentos de los comandos de Arcos tienen dos banderas en
medio de unos cuantos números. Las banderas pueden ser 0
ó 1
, y
puede omitirse el espacio entre ellas y el número que les sigue. Por
ejemplo, A1.98 1.98 0 0015 13.96
se considera como A1.98 1.98 0 0 0
15 13.96
— observa las dos banderas 0 0
antes del 15
.
Librsvg 2.40.x no puede parsear esto correctamente. Adwaita-icon-theme-3.36, y seguramente versiones anteriores, usa SVGs minimizados y con espacio en blanco comprimido, y no se renderiza correctamente con la versión de librsvg que está escrita sólo en C.
Éste es help-contents-symbolic.svg
al renderizarse con librsvg 2.40.21:
Y aquí está help-contents-symbolic.svg
renderizado con librsvg 2.50.2:
Éste no es el único icono con comandos de Arcos compactos; hay muchos otros que tampoco van a renderizarse correctamente con librsvg 2.40.x.
No sé cuándo empezó Adwaita a usar SVGs con espacio en blanco minimizado; seguramente no lo hacía cuando librsvg 2.40.x era la última versión disponible, o todo el mundo se habría dado cuenta de los iconos incorrectos.
Detalles: Alguien ingresó un bug sobre uso incorrecto de memoria en el parser de paths de librsvg 2.40.x, que de forma misteriosa sólo se manifiesta en máquinas big-endian. No me sorprendería que también haya bugs escondidos en plataformas little-endian.
Por favor usa por lo menos librsvg 2.48.x; cualquier versión anterior no tiene soporte. Usualmente le echo un ojo a las dos últimas series estables (2.48.x and 2.50.x a la fecha de hoy), pero sólo le pongo correcciones a la última versión estable (2.50.x a la fecha).