File talk:SporadicGroups.svg
•== Konzept zur Erstellung mittels Texteditor ==
Die erste Version (1. September 2020) mittels Inkscape benötigte 131 KB; das ließ sich mit manueller Nachbearbeitung auf 9 KB verringern.
Es sind noch weitere Reduktionen möglich, doch hat das zwangsläufig Grenzen und es wird auch immer aufwendiger.
Ein völlig anderer Ansatz ist es, diese Grafik von Anfang an mit einem Texteditor zu zeichnen.
Im wesentlichen handelt es sich um 26 Ellipsen: 5 rote, 6 weiße, 7 grüne, 8 blaue.
Jede Ellipse enthält einige Zeichen Text, und sie sind mit Linien verbunden.
In der ursprüngliche Version hatten diese Linien Pfeilspitzen.
Zwei der Linien verlaufen nicht direkt sondern mit einem Knick.
Unabhängig von den verschiedenen Möglichkeiten, wie die Ellipsen gezeichnet werden, könnten sie mittels Kloning vervielfacht werden.
Die 26 Ellipsen können als 26 SVG-Elemente <ellipse
erstellt werden: dieser SVG-Code ist am besten lesbar. Um ein Ellipsenelement zu zeichen sind mindestens 44 bytes erforderlich.
Weniger gut lesbar ist die Methode mit Kloning; da aber jede einzelne Klonanweisung mindestens 53 bytes benötigt ist das nicht sinnvoll.
Eine Ellipse als Pfad zu zeichnen ist mit ca. 23 bytes pro Element (mit noch ein wenig einleitendem Zusatz) möglich - mit dem Nachteil, dass der Code schwerer lesbar ist.
Die Zeichnung wird also aus folgenden Elementen aufgebaut:
- zuerst die Verbindungslinien, immer vom ersten zum letzten Mittelpunkt (alle Linien mit einem einzigen SVG-Pfad)
- die 26 Ellipsen in ihren Farben werden darüber gelegt (4 Farben, also 4 SVG-Pfade)
- die Textelemente werden zuletzt eingefügt (das benötigt 26 Textanweisungen, zB
<text x=".." y="..">Li</text>
) - Falls Pfeilspitzen gezeichnet werden sollen: das wäre der aufwendigste Teil der Zeichnung!
Im Prinzip etwa so wie es in Greedy colourings.svg: codiert wurde (siehe Code-Display).
Beispiel: Die sieben grünen Ellipsen werden als ein Pfad so gezeichnet:
<path fill="#0F0" d=" m49,233a24,17 0 1,0 2,0z m100-100a24,17 0 1,0 2,0z m0,100a24,17 0 1,0 2,0z m0,100a24,17 0 1,0 2,0z m0,100a24,17 0 1,0 2,0z m100,0a24,17 0 1,0 2,0z m0-100a24,17 0 1,0 2,0z"/>
Hier als Beispiel in 8 Zeilen, als Code besser in einer einzigen Zeile zu schreiben:
<path fill="#0F0" d="m49,233a24,17 0 1,0 2,0zm100-100a24,17 0 1,0 2,0zm0,100a24,17 0 1,0 2,0zm0,100a24,17 0 1,0 2,0zm0,100a24,17 0 1,0 2,0zm100,0a24,17 0 1,0 2,0zm0-100a24,17 0 1,0 2,0z"?>
Die anderen drei Farben sind analog zu zeichnen.
- Danke für die Anregungen.
- Ich sehe in der jetzigen Stufe den Unterschied hauptsächlich in dem, was "vor die Klammer" gezogen werden kann, und dem, was pro Objekt erforderlich ist.
- "Vor der Klammer", also beim inkscape:groupmode="layer" steht noch ziemlich viel von der alten Inkscape-Spezifikation. (Merkwürdigerweise hat die Angabe text-align:center;text-anchor:middle erst dann auf alle gewirkt, wenn ich sie fast ganz nach hinten geschoben habe.)
Es ist gut möglich, dass hier einige Angaben widersprüchlich, überflüssig oder unwirksam sind. - Du erwähnst pro Objekt noch einige Möglichkeiten, die mir nicht bekannt sind/waren. M.E. ist <ellipse gut genug. Allerdings hätte ich gerne die Gleichheit der Form, nämlich rx="24" ry="17", noch vor die Klammer gezogen, bin aber gescheitert.
- Die handbuchmäßige Aufarbeitung von SVG resp. W3C ist in meinen Augen noch sehr bescheiden (obwohl 20 Jahre Zeit). Das dt. wikibooks:SVG gefällt mir nicht besonders. (Ich weiß nicht, wie du zu deiner Kenntnis der Schlüsselwörter gekommen bist.) Für mich korreliert das Chaos der unterschiedlichen Interpretation derselben Source hochgradig mit dieser schlechten Aufarbeitung.
- Inkscape war mir ein guter Einstieg, die Schlüsselwörter habe ich durch Klicken auf XML-Editor kennen gelernt. Aber ein großer Nachteil (evtl gibt es noch mehr) ist, dass Inkscape allen Müll drinlässt und dass bei Änderungen der Müll kaskadiert.
Der Tipp von Quibik mit dem "Optimized SVG (*.svg)" funktioniert weder bei der alten noch bei der neuen Datei. - Meine Hoffnung, dass ich mit dem Hilfsmittel librsvg weniger Uploads korrigieren muss, ist gering. Ich hab's mal runtergeladen, kann aber noch nichts damit anfangen: Wie wird es entpackt? Ist es vom Typ LINUX? –Nomen4Omen (talk) 16:31, 21 April 2021 (UTC)
librsvg ist kein Hilfsmittel sondern das Wikimedia-Tool zur Anzeige von SVG-code; unser Renderer - mit noch einigen bugs.
Nein, vieles kann nicht als Gruppenattribut vorangestellt werden - cx, cy, rx, ry und anderes widersetzt sich.
Inkscape (und andere) definieren vieles expizit das ohnehin default wäre, also redundant und sinnlos - dafür aber immer und immer wieder, statt es einmal als Gruppenattribut zu setzen.
Es erscheint mir auch nicht sinnvoll, jede Ellipse und jedes Textelement auf vier Zeilen zu verteilen, es wird dadurch jedenfalls nicht leserlicher.
Zu Pkt 2: Mitten in all den vielen (meist überflüssigen) Attributen der Text-Präambel steht noch einmal text-anchor:, mit "end"; bei widersprüchlichen Anweisungem gilt die letzte.
Statt
<g inkscape:groupmode="layer" id="layer3" inkscape:label="names" style="font-size:18.6667px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';color:#000000;font-style:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:end;white-space:normal;clip-rule:nonzero;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-solid-vector-effect:none;fill:#000000;fill-fill-rule:nonzero;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;text-align:center;text-anchor:middle;display:inline" transform="translate(2,7)">
reicht
<g fill="#000" font-size="19" font-family="Liberation Sans" text-anchor="middle">
und die Koordinaten-Verfälschung mit transform="translate(2,7)"
würde ich unterlassen; text-align
ist nur für Blocksatz.
Ich habe schon mal Optimierungen versucht, mit gutem Erfolg; ist mir nicht schwierig erschienen -- sarang♥사랑 17:37, 21 April 2021 (UTC)