SVG- und viewBox-Werte

Ich bin nur neugierig, ob jemand weiß, wie viewBoxWerte (dh viewBox="a b c d") bestimmt werden.

Ich versuche, die SVG-Funktionalität von Inkscape zu verstehen, also habe ich ein Dokument in Inkscape erstellt, das 100pxx 100pxist, eine Linie von der linken Seite des Ansichtsfensters (dh 0horizontaler Wert) zur rechten Seite (dh 100horizontaler Wert) gezogen. .

Wenn ich dieses Dokument jedoch als einfache SVG-Datei speichere und die Datei dann in einem Texteditor öffne, werden die viewBoxWerte seltsamerweise auf viewBox="0 0 26.458333 26.458334"statt beispielsweise viewBox="0 0 100 100".

Weiß jemand, wie diese Werte ( 0 0 26.458333 26.458334) bestimmt werden und warum es scheinbar keine Beziehung zwischen ihnen und den Abmessungen des Ansichtsfensters gibt?

PS Ich weiß, dass Sie die viewBoxEigenschaft in den Dokumentoptionen manuell bearbeiten können, aber ich bin immer noch neugierig, warum Inkscape sie auf funky Werte setzt.

vielen Dank für diese Frage und die Art und Weise, wie Sie sie gestellt haben. Es ist genau das, was ich mich gefragt habe, bis hin zum PS unten.
@Corey froh, dass es mehr als nur mir geholfen hat

Antworten (1)

Inkscape verwendet mm als Standardanzeigeeinheit oder Benutzereinheit für Ihr Dokument. Benutzereinheiten werden verwendet, um Werte in der SVG-Datei zu speichern.

<svg width="100" height="100" viewBox="0 0 26.458333 26.458333">

Dieses Tag beschreibt eine Zeichnungsgröße von 100px x 100px. Das Attribut viewBox definiert das 100px x 100pxÄquivalent zu 26.458333 x 26.458333 user units.

Der SVG-Skalierungsfaktor wäre , der von einem SVG -Renderer verwendet werden kann, um alle in Benutzereinheiten1px / 0.2645 user-unit gespeicherten Werte in die realen Zeichnungsabmessungen umzuwandeln.


In diesem Fall möchte Inkscape die Werte in speichern mm, also muss es wissen, wie sich das pxauf bezieht mm. Die CSS-Spezifikation beschreibt, dass absolute Längeneinheiten in Relation zueinander festgelegt sind:96px = 1in

Das heisst100px = 1.041666667in = 2.645833333cm = 26.45833333mm

Daher 26.45833333kommt die also.


Wenn Sie möchten, dass Inkscape alle Ihre Werte in speichert px, können Sie die standardmäßigen Anzeigeeinheiten oder Benutzereinheiten in pxden Dokumenteigenschaften ändern (Datei > Dokumenteigenschaften > Registerkarte: Seite > Allgemein > Anzeigeeinheiten).

  1. Standard, mm:

Dokumenteigenschaften mm

  1. Geändert: px:

Dokumenteigenschaften px

Das Exportieren desselben Dokuments führt zu folgendem SVG-Tag:

<svg width="100" height="100" viewBox="0 0 100 100">

Jetzt ist der SVG-Skalierungsfaktor 1px / 1 user-unit.

Wenn Sie mehr zu diesem Thema wissen möchten, gibt es eine ausführlichere Erklärung im Inkscape-Wiki

Bemerkungen:

  • Inkscape v0.92 verwendet eine Beziehung von 96px/in, Inkscape v0.91 und früher verwendeten einen Wert von90px/in
Wow. Sehr interessant. Es gab also einen Reim und einen Grund dafür. Vielen Dank für das Teilen Ihres Wissens!
Ich werde mich an die Whiteout-Technik erinnern, die Sie verwendet haben. Normalerweise setze ich rote Quadrate um die wichtigen Teile von Screenshots, deins ist so viel schöner.