J'essaie de générer automatiquement un fichier SVG destiné à être imprimé sur une certaine taille (A4). Je souhaite utiliser un chemin qui ne permet que des 'unités d'utilisateurs', pas des 'unités absolues'. Il me semble qu'il est impossible de "publier" un fichier SVG qui a des unités absolues (par exemple la taille du document) et un chemin n'importe où, parce que je ne peux pas le faire fonctionner correctement sur les téléspectateurs.SVG et DPI, unités absolues et unités d'utilisateur: Inkscape vs Firefox vs ImageMagick
Existe-t-il un moyen d'obtenir une certaine cohérence dans le rendu, comme spécifier un «DPI par défaut»? Autrement dit: Puis-je obtenir mon exemple ci-dessous pour rendre le même résultat dans tous les visualiseurs sans pour autant abandonner les unités absolues? Relié: Existe-t-il un moyen de forcer l'une des applications ci-dessous à rendre l'image de la même manière que l'une des autres? (Par exemple, j'ai essayé l'option -density
de « convertir », mais je ne pouvais pas obtenir la sortie pour correspondre à la sortie « de Inkscape ou Firefox.)
Exemple:
J'ai créé un fichier SVG, avec trois carrés noirs (rect) avec une diagonale rouge (chemin):
- gauche: carré et diagonale en unités utilisateur
- Moyen: carré et diagonale pouces (me semblait le choix le plus logique, mais est pas autorisé)
- droite: carré en mm, diagonale en unités utilisateur
qui rend différemment dans différents téléspectateurs:
- Inkscape: 90 DPI, tous les carrés de même taille, Allumettes diagonale rouge
- Firefox: 96 DPI ?, derniers carrés à grande (ou diagonale courte)
- Autre: 72 DPI, carrés ci à petit (ou diagonale de long)
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 (mon défaut 'viewer'):
Firefox (notez que la ligne rouge ne parvient pas à le coin inférieur droit. J'ai fait une capture d'écran et recadrée sorte de façon arbitraire):
ImageMagick (conversion, aucune option en plus des noms de fichiers donnés):
J'ai trouvé http://stackoverflow.com/questions/1132269/can-i-use-mixed-units-with-path-element utile pour expliquer le problème. – BlackShift
Inkscape [0.92] (http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92#Important_changes): La résolution par défaut a été modifiée de 90dpi à 96dpi, pour correspondre à la norme CSS. – qwert2003