✏️Content-Stream: wie eine Seite gezeichnet wird

Der Inhalt einer Seite ist ein kleines Programm in Postfix-Notation: erst die Operanden, dann der Operator. Der Debugger führt es Befehl für Befehl aus und zeigt Grafik- und Textzustand – mit einem eigenen Mini-Renderer für eine Teilmenge der Operatoren.

✏️ Content-Stream bearbeiten

Unterstützt: q Q cm w g G rg RG m l h re f F S s B n BT ET Tf Td TD TL T* Tj. Schrift /F1 = Helvetica.

Live-Vorschau · MediaBox [0 0 300 144]Ursprung unten links
0367210814418021625228803672108144
━ x-Achse der CTM━ y-Achse der CTM┆ Textposition (Tm)┄ aktueller, noch ungemalter Pfad
Schritt 1 / 6 · Tasten ← →
Schritt 0
Start

Ausgangszustand: CTM = Einheitsmatrix, Füll- und Strichfarbe schwarz, Linienbreite 1.

Grafikzustand
CTM [1 0 0 1 0 0]
Füllen0 0 0
Strich0 0 0
Linienbreite 1 · Stapeltiefe q/Q 0
Textzustand (außerhalb eines Textobjekts)
Schrift – · TL 0
Tm –
Tlm –
Gezeichnete Formen: 0 · Punkte im offenen Pfad: 0

🧠Drei Dinge, die man verstanden haben sollte

💡 Erst Pfad, dann malen
re, m und l beschreiben nur Geometrie – sichtbar wird erst mit einem Mal-Operator wie f (füllen) oder S (Strich).
✅ Koordinaten: unten links, 1/72 Zoll
Der Standard-Nutzerraum hat den Ursprung unten links, y wächst nach oben. cm verändert die Current Transformation Matrix (CTM) – verschieben, skalieren, drehen; q/Q sichern und restaurieren den Zustand.
⚠️ Text braucht Schriftmetrik
Nach Tj rückt die Textposition um die Breite der Glyphen vor – sie stehen in der Schrift (/Widths oder AFM-Metrik der Standardschrift). Für „Hello World“ in Helvetica 24 pt sind das 5167/1000 × 24 = 124,008 pt.

📋Operatoren dieses Debuggers

Grafikzustand
  • qGrafikzustand auf den Stapel legen (sichern)
  • QGrafikzustand vom Stapel holen (wiederherstellen)
  • cmMatrix a b c d e f mit der CTM verketten (verschieben, skalieren, drehen)
  • wLinienbreite setzen
Farbe
  • gFüllfarbe Grau (0 = schwarz, 1 = weiß)
  • GStrichfarbe Grau
  • rgFüllfarbe RGB (je 0 … 1)
  • RGStrichfarbe RGB
Pfad
  • mNeuen Teilpfad beginnen (moveto)
  • lLinie zum Punkt (lineto)
  • reRechteck x y Breite Höhe an den Pfad anhängen
  • hTeilpfad schließen
Malen
  • fPfad füllen (Nonzero-Regel)
  • Fwie f (veraltet)
  • SPfad nachziehen (Strich)
  • sPfad schließen und nachziehen
  • BPfad füllen und nachziehen
  • nPfad verwerfen, ohne zu malen
Text
  • BTTextobjekt beginnen (Tm = Tlm = Einheitsmatrix)
  • ETTextobjekt beenden
  • TfSchrift (Ressourcenname) und Größe setzen
  • TdZum Anfang der nächsten Zeile, versetzt um tx ty
  • TLZeilenabstand (Leading) setzen
  • T*Zur nächsten Zeile (0 −TL Td)
  • TjString zeigen und Textposition weiterschieben

Die vollständige Liste (Anhang A von ISO 32000-1) umfasst rund 70 Operatoren, u. a. Bézierkurven (c, v, y), Clipping (W), Bilder und Formulare (Do), Farbräume (cs, scn) und Text mit Einzelabständen (TJ).