Briefing: Gesichtsausdrücke fürs Maskottchen¶
Zum Weitergeben an jemanden, der zeichnen kann. Ausgangsdatei ist
web/static/img/mascot.svg — bitte damit anfangen, nicht neu zeichnen.
Warum es das Dokument gibt: die Ausdrücke sind der eine Teil von #64 und #102,
den kein Skript erledigen kann. Alles andere daran ist gebaut — die Grafik ist
längst SVG, die Schlägerfarbe kommt aus CSS, und PageMascot nimmt bereits
eine Klasse entgegen. Was fehlt, sind Formen. Die Anforderungen unten sind
deshalb keine Wunschliste, sondern das, woran ein Export sonst scheitert.
Das Wichtigste in drei Sätzen¶
Eine einzige SVG-Datei, die alle Ausdrücke enthält — nicht eine Datei pro Ausdruck. Jeder Ausdruck ist eine benannte Gruppe; die Anwendung blendet per CSS eine davon ein. Farben, Maße und IDs der bestehenden Datei bleiben unangetastet.
Format¶
| Dateityp | .svg, eine Datei, UTF-8 |
| Koordinatensystem | viewBox="0 0 420 420" — exakt so, sonst passt nichts mehr |
width / height |
weglassen. Die Größe kommt aus CSS |
Transform auf <svg> |
keins. Innerhalb von Gruppen ist es erlaubt |
Erlaubt: <path>, <g>, <circle>, <ellipse>, Präsentationsattribute
wie fill= und fill-rule=.
Nicht erlaubt: Verläufe, Filter, Masken, <image>, echter Text
(<text>), externe Referenzen, eingebettete Schriften, <style>-Blöcke oder
style="…"-Attribute. Das Aussehen steuert die Anwendung, nicht die Datei.
Konturen bitte in Flächen umwandeln (Strich → Pfad). Die bestehende Datei
besteht ausschließlich aus gefüllten Pfaden; ein stroke würde bei 28 px
anders skalieren als der Rest.
Farben — genau diese fünf, keine neuen¶
| Wert | Wofür |
|---|---|
#f89828 |
Fell |
#b85818 |
dunkles Fell: Ohreninnenseite, Schnauze, Schatten |
#080808 |
Konturen, Pupillen, Mund |
#f8f8f8 |
Augenweiß |
var(--paddle, #c82828) |
die Schlägerfläche |
Der letzte Punkt ist der einzige, bei dem ein Fehler etwas kaputt macht: die
Schlägerfläche muss fill="var(--paddle, #c82828)" behalten. Daran hängt, dass
jeder Spieler seine eigene Schlägerfarbe bekommt. Ein Zeichenprogramm schreibt
dort beim Export gern #c82828 hinein — bitte danach von Hand zurückstellen.
Aufbau: eine Datei, alle Ausdrücke¶
Die bestehenden IDs bleiben, wie sie sind:
#fur #fur-dark #ink #eyes #paddle-face
Dazu kommen die Ausdrücke als Geschwister-Gruppen, alle in derselben Datei, alle mit eigener ID:
<g id="face">
<g id="face-neutral"> … </g>
<g id="face-happy"> … </g>
<g id="face-wow"> … </g>
<g id="face-focus"> … </g>
</g>
Jede Gruppe enthält das komplette Gesicht dieses Ausdrucks — Augen, Pupillen und Mund zusammen. Nicht Augen und Mund getrennt kombinierbar machen: das vervielfacht die Fälle und niemand prüft sie alle.
Wenn Augen und Mund heute in #ink und #eyes stecken (tun sie), müssen die
beiden Pfade so aufgeteilt werden, dass das Gesicht herauslösbar ist. Das ist
der eigentliche Handgriff und der Grund, warum das kein Skript kann.
Alternative, falls das Zerlegen zu aufwendig ist: die Ausdrücke als Overlays obendrauf legen, ohne die bestehenden Pfade anzufassen. Funktioniert auch, sieht aber schnell aufgeklebt aus — die saubere Variante ist die Zerlegung.
Welche Ausdrücke¶
Vier bis sechs. Vorschlag als Ausgangspunkt, gern anders:
| ID | Anlass in der App |
|---|---|
face-neutral |
Standard, Rangliste, Profil |
face-happy |
ein Ergebnis wurde bestätigt |
face-wow |
ein knappes Spiel, Verlängerung |
face-focus |
Kiosk-Seite, es wird gerade gespielt |
Wichtig: kein trauriger Ausdruck nach einer Niederlage. Die Anwendung soll Leute zum Eintragen bringen; ein Maskottchen, das nach jedem verlorenen Spiel enttäuscht guckt, arbeitet dagegen. Reagiert wird auf etwas ist passiert, nicht auf wer gewonnen hat.
Die zwei Prüfungen, an denen es scheitert¶
Beide bitte selbst machen, bevor abgegeben wird — sie fallen sonst erst im Betrieb auf.
1. Bei 28 Pixel. So groß ist das Maskottchen in der Kopfzeile. Jeder Ausdruck muss dort von jedem anderen unterscheidbar sein. Feine Striche verschwinden.
2. In Graustufen auf Weiß. Der Aushang unter /qr wird gedruckt, schwarz
auf weiß. Farbe überlebt das nicht, ein Ausdruck schon — das ist überhaupt das
beste Argument für Gesichter. Also: Datei in Graustufen umwandeln, auf 40 px
verkleinern, ansehen. Wenn zwei Ausdrücke dann gleich aussehen, ist einer
davon zu subtil.
Abgabe¶
- Die
.svgist das Ergebnis. Kein.ai,.sketchoder.figals Lieferung — die dürfen gern dazu, aber die SVG ist das, was eingebaut wird. - Gern mit SVGO optimiert, aber: die Standardeinstellung von SVGO
löscht IDs. Die IDs sind hier der ganze Punkt. Also
cleanupIdsausschalten (--disable=cleanupIds) oder unoptimiert abgeben — die Datei ist ohnehin nur wenige Kilobyte. - IDs eindeutig halten. Die Grafik wird direkt in die HTML-Seite eingebettet, eine doppelte ID kollidiert dort mit der Seite.
Was nicht dazugehört¶
Animation, ein zweites Maskottchen, Avatare pro Person, alles was die Grafik aus einer externen Quelle nachlädt.