Kompatibilität zu alten Inkscape SVG Dateien
  • Lightmile Oktober 16
    Hallo,

    ich benutze Inkscape als Level-Editor etc für ein von mir entwickeltes Spiel. Übrigens ein super Programm und bestens dafür geeignet. Allerdings hat mir jetzt eine Sache ziemliches Kopfzerbrechen bereitet. Nach einem Upgrade von 0.48 auf 0.91 wurden manche Images in Inkscape anders dargestellt. Zum Glück ist es mir aufgefallen, denn dies passiert nur bei einer kleinen Minderheit.

    Im Netz konnte ich nichts brauchbares finden. Deshalb habe die Sache selbst untersucht und heraus gefunden, dass das neue Inkscape
    in ein Image-XML-Tag preserveAspectRatio="none" schreibt, was die alte Version aber als Default nimmt (und nicht ins XML schreibt).
    Bei der Suche nach preserveAspectRatio im Netz wurde ich dann auch fündig, z.B. hier im Forum :)

    Es gibt wohl nicht einfach eine Option, um preserveAspectRatio="none" als Default festzulegen, oder?
    Ok, ich schreibe ein Programm, was alle meine Dateien konvertiert.
    Es sollte ja ok sein, allen Images (außer in Patterns) preserveAspectRatio="none" hinzuzufügen, richtig?
    (in keiner meiner SVG Dateien wird dieses Attribut bislang benutzt)

    Aber jetzt zu meiner wichtigsten Frage...
    Gibt es noch andere Sachen, die sich geändert haben und die ich beachten muss?

    Das wäre für mich wichtig zu wissen, weil ich die Dateien über viele Jahre entwickelt habe. Und die falsche Darstellung z.B. einiger Images fällt bei einer riesigen Datei mit unzähligen Images nicht unbedingt auf. Ich benutzte neben Images auch andere Objekte, wie Rectangles und Circles.

    Vielleicht gibt es ja einen Experten zu dem Thema hier, der die Format-Unterschiede und potentiellen Probleme kennt oder mir eine Hilfeseite dazu nennen kann.

    Danke!
  • Moin Lightmile.
    Ob es womöglich etwas damit zutun hat dass Inkscape jetzt 96 statt vormals 90dpi benutzt?
    0.48 ist schon verdammt lang her und 0.91 ist auch schon nicht mehr up-to-date.. Kannst Du womöglich eine Beispieldatei zugänglich machen und vorher/nachher zeigen?

    Gruß
    Frank
  • Lightmile Oktober 17
    Hallo Frank,

    danke. Auf meinem System ist 0.91 aktuell. Bin eigentlich auch ganz froh, weil wie ich beim googeln gesehen habe, kommen bei 0.92 vermutlich neue Probleme :)

    Ich hatte es testweise auf einem anderen System mit einem aktuellen 0.92.4 probiert. Dort wird man dann gefragt, wie man konvertieren möchte. Ich habe alle drei Möglichkeiten probiert, mein "preserveAspectRatio Problem" wurde dadurch aber nicht behoben. Vermutlich behebt dies nur den "DPI Änderungs Kram" ab v0.92, den du ja auch ansprachst.

    Am liebsten würde ich als Level-Editor weiter 0.48 benutzen, aber unter Linux scheint ein Downgrade nahezu unmöglich. Windowsnutzer haben es da einfach, da könnte ich dann immer die neueste Inkscape Version benutzen und parallel dazu 0.48 als Level-Editor bei alten Dateien. Blender liefert übrigens auch für Linux den Download als "Binary Archiv", das ist genial weil dann kann man ohne Probleme immer die neuste Version und sogar verschiedene Versionen parallel benutzen. Aber gut, das ist ein anderes Thema... :)

    Den Fall mit der falschen Image-Darstellung hatte ich ja bereits selbst geklärt und kann es gerne genauer erklären:
    Das Problem entsteht, weil neuere Versionen einen anderen Default für preserveAspectRatio bei Image-Tags haben. Vermutlich setzen alte Versionen dieses Attribut nie, es ist ja auch ziemlich überflüssig weil über width/height-Attribute alle nötigen Informationen vorhanden sind.
    Bei neuen Versionen muss aber preserveAspectRatio="none" gesetzt sein, sonst benutzen sie nicht width/height als Image-Dimension, sondern verkleinern es wohl bis es mit seinem originalen Pixel-Aspect-Ratio in width/height rein passt.
    Damit wird der SVG-Standard vermutlich besser unterstützt. Nur hat man leider nicht an all die Leute gedacht, welche bereits mit Inkscape Dateien erstellt haben.

    Die Inkscape-Versionsnummer steckt ja im SVG mit drin, Inkscape müsste also eigentlich nur beim Einlesen einer kleiner-0.91-Datei preserveAspectRatio="none" als Default annehmen, dann wäre alles in Butter.

    Nach dieser Erkenntnis und damit dem Keyword "preserveAspectRatio" war es einfach, im Netz Infos zu finden, siehe z.B. hier im Forum:
    svg-mit-bildern-unter-inkscape-0-48-erstellt-wird-in-0-91-fehlerhaft-dargestellt-bilder-verzerrt

    Ich gehe mal davon aus, dass es keine Option in Inkscape gibt, um preserveAspectRatio="none" als Default zu setzen (wäre sonst der einfachste Workaround gewesen).

    Ich habe jetzt ein Programm geschrieben, welches meine Dateien durchgeht und konvertiert. Es fügt einfach in Image-Tags preserveAspectRatio="none" ein. Und zwar in alle außer den Image-Tags in den Pattern-Definitionen am Anfang des SVG.
    Ist das richtig so? Habe ich noch was übersehen?
    Scheint zu funktionieren, bislang habe ich keine Fehler mehr in der Darstellung gefunden.

    Gibt es vielleicht eine Seite, wo die Veränderungen im SVG-Format der verschiedenen Inkscape-Versionen aufgeführt sind?
    Das wäre super, weil dann könnte ich dort nachschauen, ob ich noch weitere Dinge konvertieren muss.

    Gereon
  • Moini Oktober 18
    Genau, das mit der aspect ratio war ein Darstellungsfehler in der Vorversion. Die aktuelle macht es richtig, da bleibt leider nichts als das Anpassen der Dateien.
  • Lightmile Oktober 21
    Hallo,
    das stimmt schon. Aber ich denke, es nicht ganz richtig, wie Inkscape es macht. Klar, für neue oder fremde SVG-Dateien ist es so richtig, aber nicht beim Einlesen von mit Inkscape (vor Version 0.91) erstellten Dateien.
    Wie ich zuvor schrieb:
    Die Inkscape-Versionsnummer steckt ja im SVG mit drin, Inkscape müsste also eigentlich nur beim Einlesen einer kleiner-0.91-Datei preserveAspectRatio="none" als Default annehmen, dann wäre alles in Butter.

    Hat vielleicht jemand hier einen guten Tipp:
    Gibt es eine Seite, wo solche Veränderungen im SVG-Format der verschiedenen Inkscape-Versionen aufgeführt sind?
  • Moini Oktober 22
    Woher soll Inkscape aber wissen, welcher Wert denn wirklich in der alten Datei gemeint war? In Browsern und anderen Programmen wurden die Dateien schon immer korrekt dargestellt. Mit automatischen Anpassungen kann man auch Dinge kaputtmachen...

    Die Veröffentlichungshinweise helfen oftmals weiter.
    Dieses hier scheint aber nur im alten Bugtracker verewigt zu sein (und in den Foren gibt es irgendwo auch einen langen Thread dazu):
    https://bugs.launchpad.net/inkscape/+bug/616717

    Das Problem ist seit dem 28.1.2015 mit dem Erscheinen von 0.91 behoben.
  • Lightmile Oktober 23
    In einer von Inkscape gespeicherten Datei steht:
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    inkscape:version="..."

    Der Benutzer möchte es in der Regel gerne beim Zurückladen so haben, wie er es erstellt hat (WYSIWYG).
    Im Zweifel mit Dialog (den hat Inkscape 0.92 ja bereits beim Einlesen alter Dateien, aber leider nur für ein anderes Problem).

    https://bugs.launchpad.net/inkscape/+bug/616717
    Da geht es um PDF-Import. Bzw dass preserveAspectRatio an den SVG-Standard angepasst wurde, ist klar und ja auch gut.
    Nur klappt leider nicht die Abwärtskompatibilität von Inkscape mit sich selbst.

    Aber egal, was dieses "preserveAspectRatio"-Problem angeht, habe ich es durch Konvertierung meiner Inkscape-Dateien gelöst. Das klappt so auch gut :)

    Eine Übersichts-Seite solcher Änderungen im Inkscape-Speicher-Format kennt dann wohl leider niemand hier, oder?

    Das wäre meine wichtigste Frage, weil man bei komplexen Inkscape-Dateien beim Zurückladen solche Veränderungen leider nicht unbedingt auf Anhieb sieht.
    (es geht mir nicht um das "preserveAspectRatio"-Problem, da kann man - wenn man es denn erst einmal kennt - Infos zu finden, zB jetzt auch hier :)
  • Moini Oktober 23
    Die Veröffentlichungshinweise sind das, was noch am ehesten weiterhilft.
  • Lightmile Oktober 25
    Danke. Ja das stimmt.
    Im Fall des "preserveAspectRatio Problems" hätten die Release-Notes leider nichts genützt. Egal, Inkscape ist ein super Programm, und ich gehe dann jetzt mal optimistisch davon aus, dass keine weiteren Konvertierungen nötig sind :)

Hey Fremder!

Sieht so aus als wenn du neu hier bist. Wenn du mitmachen willst, drücke einen dieser Buttons!

In dieser Diskussion