Slide 1

Slide 1 text

Postscript madness Leonidas µC3 19. August 2010 This work is licensed under the Creative Commons Attribution 3.0 License. Leonidas Postscript madness

Slide 2

Slide 2 text

Disclaimer: Leonidas Postscript madness

Slide 3

Slide 3 text

Disclaimer:I’m mad Leonidas Postscript madness

Slide 4

Slide 4 text

Warum PostScript PostScript ist überall dein Drucker dein CUPS deine Type1 Fonts Leonidas Postscript madness

Slide 5

Slide 5 text

Warum PostScript PostScript ist überall dein Drucker dein CUPS deine Type1 Fonts deine Mutter! Leonidas Postscript madness

Slide 6

Slide 6 text

Warum PostScript PostScript ist überall dein Drucker dein CUPS deine Type1 Fonts deine Mutter! Über PostScript von Adobe anno dazumal für Drucker entworfen stackbasiert wie viele VMs, etwa JVM man programmiert indem man „Wörter“ auf den Stack wirft Referenz und viele Bücher verfügbar Leonidas Postscript madness

Slide 7

Slide 7 text

PostScript nutzen Software Adobe Acrobat (proprietär) GhostScript (GPLv3+) Poppler (GPLv2+) Hardware KPDL 2 & 3 (Kyocera) PhoenixPage, OakPage (HP) Brotherscript (Brother) PageStyler TrueImage TurboPS Leonidas Postscript madness

Slide 8

Slide 8 text

Ein einfaches Beispiel 1 2 add pstack pstack zeigt Stackinhalt an pop wirft obersten Wert auf dem Stack weg clear leert Stack exch vertauscht die beiden obersten Werte dup dupliziert den obersten Wert Leonidas Postscript madness

Slide 9

Slide 9 text

Eigene Wörter definieren /2dup { dup 2 index exch } def Definiert ein Wort, das die obersten 2 Werte dupliziert 23 42 2dup pstack Parameter: Auf dem Stack, beliebig viele Rückgabewerte: Auf dem Stack, beliebig viele Leonidas Postscript madness

Slide 10

Slide 10 text

Datenstrukturen Zahlen 1.337 (Strings sind in runden Klammern) { (in) (executable) (Arrays) (kann) (beliebiges) (stehen) 42 } [(in) (literate) (Arrays) (auch) 23 ] Dictionaries % Kommentar { 3 2 add } [ 3 2 add ] Leonidas Postscript madness

Slide 11

Slide 11 text

Grafikausgabe Konzept: Zeichenfläche mit Stift moveto Stift an bestimmte Stelle setzen rmoveto Stift relativ zur aktuellen Stelle verschieben lineto Pfad von aktuellem Punkt zu Endpunkt setzen rlineto Äquivalent zu rmoveto stroke aktuellen Pfad zeichnen gsave aktuellen Grafikkontext abspeichern grestore vorherigen Grafikkontext laden scale Skalieren, in X und Y-Richtung rotate Rotieren Leonidas Postscript madness

Slide 12

Slide 12 text

Textausgabe PostScript-Interpreter bringen einige Fonts mit. 300 200 t r a n s l a t e 0 0 moveto /Times−Roman f i n d f o n t 25 s c a l e f o n t s e t f o n t ( A l l h a i l E r i s ! ) show Leonidas Postscript madness

Slide 13

Slide 13 text

Demo: Rekursion Leonidas Postscript madness

Slide 14

Slide 14 text

Demo: Koch Leonidas Postscript madness

Slide 15

Slide 15 text

Demo: Daumenkino Leonidas Postscript madness

Slide 16

Slide 16 text

Ressourcen Bücher PostScript Language Reference, third edition PostScript Language Tutorial and Cookbook Thinking in PostScript Alle frei (wie Bier) verfügbar Webseiten http://www.tailrecursive.org/postscript/ KTHXBAI! Leonidas Postscript madness