Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Postscript madness

Postscript madness

Some introduction into PostScript, presented at µC³ in Munich

Marek Kubica

August 19, 2010
Tweet

More Decks by Marek Kubica

Other Decks in Programming

Transcript

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

    View Slide

  2. Disclaimer:
    Leonidas Postscript madness

    View Slide

  3. Disclaimer:I’m mad
    Leonidas Postscript madness

    View Slide

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

    View Slide

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

    View Slide

  6. 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

    View Slide

  7. 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

    View Slide

  8. 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

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

  11. 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

    View Slide

  12. 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

    View Slide

  13. Demo: Rekursion
    Leonidas Postscript madness

    View Slide

  14. Demo: Koch
    Leonidas Postscript madness

    View Slide

  15. Demo: Daumenkino
    Leonidas Postscript madness

    View Slide

  16. 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

    View Slide