Intento generar automáticamente un archivo SVG destinado a imprimirse en un tamaño determinado (A4). Deseo usar un camino en él, que solo permita 'unidades de usuario', no 'unidades absolutas'.SVG y DPI, unidades absolutas y unidades de usuario: Inkscape vs. Firefox vs. ImageMagick
Me parece que es imposible 'publicar' un archivo SVG que tenga unidades absolutas (por ejemplo, tamaño del documento) y una ruta en cualquier parte, porque no puedo hacer que funcione correctamente en todos los visores.
¿Hay alguna manera de obtener consistencia en la representación, como especificar un 'PPP predeterminado'?
O pongo otra cosa: ¿Puedo obtener mi ejemplo a continuación para renderizar el mismo en todos los visores sin abandonar en absoluto las unidades absolutas?
Relacionado: ¿Hay alguna manera de forzar cualquiera de las siguientes aplicaciones para representar la imagen de la misma forma que una de las otras? (Por ejemplo, he intentado la opción -density
de 'convertir', pero no pude obtener la salida para que coincida con la salida de Firefox o Inkscape'.)
Ejemplo:
He creado un archivo SVG, con tres cuadrados negros (rect) con una diagonal de color rojo (ruta):
- izquierda: cuadrado y diagonal en unidades de usuario
- Medio: cuadrado y diagonal en pulgadas (me parecía la opción más lógica, pero es no permitido)
- Derecha: cuadrado en mm, diagonal en unidades de usuario
que hace de manera diferente en diferentes espectadores:
- Inkscape: 90 DPI, todos los cuadrados mismo tamaño, los partidos diagonales rojas
- Firefox: 96 DPI ?, últimas cuadrados a grande (o diagonal a corto)
- convertir: 72 DPI, este último cuadrados a pequeña (o diagonal a largo)
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="200mm"
height="100mm"
>
<g transform="translate(50,50)">
<rect
width="100."
height="100."
x="10"
y="10" />
<path style="stroke: #ff0000" d="M 10 10 L 110 110" />
</g>
<g transform="translate(200,50)">
<rect
width="1.111in"
height="1.111in"
x="0.1111in"
y="0.1111in" />
<path style="stroke: #ff0000" d="M 0.1111in 0.1111in L 1.111in 1.111in" />
</g>
<g transform="translate(350,50)">
<rect
width="1.111in"
height="1.111in"
x="0.1111in"
y="0.1111in" />
<path style="stroke: #ff0000" d="M 10 10 L 110 110" />
</g>
</svg>
Inkscape (mi defecto 'espectador'):
Firefox (tenga en cuenta que la línea roja no llega a la esquina inferior derecha. Hice una captura de pantalla y recortada especie de forma arbitraria):
ImageMagick (convertir, no hay opciones además de los nombres de archivos dados):
Encontré http://stackoverflow.com/questions/1132269/can-i-use-mixed-units-with-path-element útil para explicar el problema. – BlackShift
Inkscape [0.92] (http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92#Important_changes): la resolución predeterminada se cambió de 90 ppp a 96 ppp, para que coincida con el estándar de CSS. – qwert2003