Der Druck
Der Strich allein macht noch keine Zeichnung. Was in den ersten Fassungen nach Vektorgrafik aussah, waren nicht die Linien – es waren die Flächen und das Blatt darunter.
Drei Handgriffe machen daraus einen Druck: die Farbfläche sitzt nicht exakt in ihrer Kontur, sie blutet an ihrem Rand ins Papier aus, und das Papier ist nie gleichmäßig. Dazu kommt die Frage, wer die Farben überhaupt kennt – und die Antwort ist: niemand außer der Palette.
Fehlregister
flaeche() legt die Fläche nicht dorthin, wo ihre Kontur
ist. Sie wird um 0.008 bis 0.016
Einheitsmaß verschoben und um bis zu 1,5 % anders groß gezeichnet: die
Farbplatte trifft die Strichplatte nicht genau. Mal steht die Farbe
über die Linie, mal bleibt auf der anderen Seite ein heller Saum.
Richtung und Maß hängen am Seed, also am Kopf –
einmal je Stift aus der Spur 'register' gezogen. Ein
Blatt, auf dem jede Fläche in eine andere Richtung rutscht, wäre kein
Fehlregister, sondern ein Wackelkontakt.
Ausbluten
Unter jeder Druckfläche liegt dieselbe Fläche noch einmal: 3 % größer,
bei 14 % Deckung. Die Farbe läuft ein wenig ins Papier, und der Rand
ist dadurch ein Saum statt einer Kante. Es ist derselbe Handgriff wie
der Saum um einen punkt() – dort mit 7 % und 16 %, weil
eine Sommersprosse kleiner ist als eine Wange.
Wofür der Druck NICHT gilt
Gedruckt wird von selbst: der Stift druckt, und eine Fläche muss darum
nicht bitten. Nur wer trocken bleiben will, sagt es –
trocken: true. Umgekehrt herum stand die Regel einmal als
druck: true an siebzehn einzelnen Aufrufen, und eine
Gegenprobe ohne Druck war nur über einen nachgebauten Zeichenweg zu
haben. Jetzt ist sie das letzte Argument von macheStift.
Zwei Arten von Flächen bleiben trocken:
| Fläche | Grund |
|---|---|
| Hals, Ohr, Hutband | Sie müssen an etwas anschließen. Ein Hals, der um ein Prozent verrutscht, ist ein Spalt unter dem Kinn; ein Band, das von der Krone rutscht, hängt in der Luft. |
| Pflaster, Zähne, Zunge | Zierrat, klein genug, dass ein Versatz nicht nach Druck aussieht, sondern nach Fehler. |
Das Papier
Das Korn wird einmal in eine 128er-Kachel gezeichnet und danach als Muster über das ganze Blatt gefüllt. Neu gewürfelt sähe es bei jedem Bild anders aus – aus Papier würde Fernsehrauschen. Davon abgesehen wären ein paar tausend Punkte je Bild teurer als der ganze Rest der Zeichnung.
Im Korn liegen zwei Dinge: Punkte (900, sehr blass) und Fasern (70 kurze Striche in zufälliger Richtung, noch blasser). Nur Punkte sind Rauschen. Fasern sind Papier.
Dazu wird das Blatt zu den Rändern hin um zwei, drei Prozent dunkler – ein radialer Verlauf, dessen Mitte etwas oberhalb der Blattmitte sitzt, dort, wo das Licht herkäme. Ein Papier, das überall exakt denselben Ton hat, ist ein Bildschirm.
Farbe als Rollen
Kein Zeichenschritt nennt je einen Hexwert. Er fragt nach
p.tinte oder p.akzent. Das ist dieselbe
Trennung wie bei den CSS-Tokens dieser Seite – nur dass Canvas keine
Variablen kennt und die Auflösung deshalb in
palette.ts passieren muss.
| Rolle | wofür |
|---|---|
| tinte | der Strich. Alles Gezeichnete außer Haar und Akzent. |
| tinteWeich | zurückgenommener Strich: Ohrmuschel, Fältchen, Sommersprossen. |
| haut | die Kopffläche. Sehr hell – sie trägt keine Farbe, sie trägt einen Hauch. |
| hautTief | der Schatten der Kopffläche an ihrer Unterkante. |
| schatten | der weiche Schatten IM Kopf, zur abgewandten Seite. Halbdurchsichtig, weil er über der Haut liegt und ihren Ton behalten soll. |
| akzent | Wangen, Lippen, Zunge – der einzige warme Ton im Gesicht. |
| haar | Haar und Bart teilen sich eine Farbe: zwei Töne im selben Gesicht lesen sich als zwei Personen. |
| stoff | Kopfbedeckung. Setzt sich vom Haar ab, sonst verschwindet sie darin. |
| stoffTief | derselbe Stoff, dunkler und etwas bunter: das Band am Hut. Eine eigene Farbe wäre ein zweites Kleidungsstück am Kopf. |
| pflaster | ein Pflaster: heller als die Haut, mit einem Hauch Sand. |
haarDunkel ist keine Farbe
Neben den zehn Farben steht ein boolean. Auf schwarzem
Haar ist ein Strich in Tinte nichts; dort muss die Zeichnung
ausgespart werden – hell statt dunkel. Die Frage, ob
das nötig ist, beantwortet die Palette selbst
(haarDunkel: hl < 0.5).
Symptom: Die Strähnen auf dunklem Haar sind unsichtbar, auf blondem viel zu hart.
Ursache: Die Zeichnung wollte die Helligkeit aus der
Farbe ablesen. Die Farbe ist zu diesem Zeitpunkt aber ein
CSS-String – wer sie befragen will, müsste
rgb(…) parsen und nach OKLCH zurückrechnen, in jedem
Bild, für jede Strähne.
Lösung: Der Merker wird dort gesetzt, wo die
Helligkeit noch eine Zahl ist – in machePalette.
OKLCH: gleiche Helligkeit, wandernder Ton
Die sechs Hauttöne unterscheiden sich nur im Farbton:
L = 0.955, C = 0.007 für alle,
H zwischen 22 und 310. Lavendel, Papier, Sand, ein Hauch
Grün. Die Buntheit ist absichtlich winzig – im Raster nebeneinander
wird aus einem Hauch Farbe schnell ein Sortiment.
Sonst wäre ein Kopf im Raster hell und der daneben grau, und aus
Variation würde ein Fehler. OKLCH ist die Voraussetzung dafür: es
macht die Ableitung wahrnehmungs-linear, also heißt gleiches
L auch gleich hell.
Haar: sechs Naturtöne, fünf gefärbte
Ab BUNT_AB = 0.82 greift die zweite Liste – knapp ein
Fünftel der Köpfe. Die gefärbten dürfen poppig sein, aber sie dürfen
das Blatt nicht sprengen: dieselbe Helligkeit wie die hellen
Naturtöne und höchstens die Buntheit des Akzents (0.115). Ein Neonpink
mit C = 0.25 wäre auf einem Blatt aus Papier und
Bleistift ein Aufkleber.
Und selten. Neun gefärbte Köpfe nebeneinander sind kein Merkmal mehr, sondern die Regel.
Die Grenze der CSS-Rollen
Die Seite hat ihre eigenen Rollen-Token
(--flaeche, --vordergrund, …). Sie decken die
Seite ab, nicht das Canvas: dort löst kein Browser
eine Variable auf. Deshalb gibt es die Rollen zweimal – in CSS für das
Dokument, in palette.ts für die Zeichnung.
Über die Brücke gehen genau zwei Rollen:
--marke-canvas für die Beschriftung unter den Köpfen und
--flaeche für den Schleier über dem Raster. Beide stehen
namentlich in scripts/check-rollen.mjs, und eine dritte
kommt nicht dazu, ohne dass jemand sie dort einträgt. Mehr dazu bei
den Schichten und den
Fallen.