next up previous contents
Nächste Seite: Portable Document Format (PDF) Aufwärts: Grafische Datenverarbeitung Vorherige Seite: PGPLOT   Inhalt


PostScript

Die Sprache PostScript ist eine Programmiersprache, die entworfen wurde, um eine Beschreibung nahezu jeder gewünschten Seite an einen Drucker übermitteln zu können. Sie wurde als moderner Druckstandard entworfen und im Jahre 1985 von der Firma Adobe Systems veröffentlicht. Ihr Ursprung reicht bis ins Jahr 1972 zurück.

PostScript besitzt ein weites Spektrum von grafischen Operatoren, die beliebig kombiniert werden können. Sie enthält Variablen und gestattet die Kombination von Operatoren zu komplexeren Prozeduren und Funktionen.

Seitenbeschreibungen in PostScript sind Programme, die von einem Interpreter verarbeitet werden. PostScript-Programme werden normalerweise von Anwendungsprogrammen (Grafik-Programmen, Textverarbeitungssystemen) erzeugt, die auf anderen Computern laufen können. Man kann PostScript als Allzweck-Programmiersprache mit mächtigen eingebauten Grafik-Primitiven bezeichnen; genauso gut trifft die Definition ,,Seitenbeschreibungssprache mit Merkmalen einer Programmiersprache`` zu. Ein Bild von der Mächtigkeit und Flexibilität von PostScript sollen die folgenden Absätze vermitteln (nach [#!c_t!#, 7/88]).

Die Eigenschaften einer strukturierten Programmiersprache besitzt PostScript durch das Vorhandensein von Kontrollstrukturen wie Verzweigungen, Schleifen und Unterprogrammen in seiner Syntax. Diese Syntax ist nur minimal festgelegt und daher ungeheuer flexibel und anpassungsfähig an unterschiedlichste Anforderungen. PostScript ist wie erwähnt eine Interpretersprache und verwaltet Objekte. Bei den Objekten wird nicht zwischen Befehlen (Operatoren) und Daten (Operanden) unterschieden. Jedes Objekt wird vom Interpreter grundsätzlich sofort ausgeführt, und zwar nicht nur Operatoren, sondern auch Operanden. Das Ausführungsverhalten eines Operanden besteht nur darin, sich selbst auf einen der für ihn bestimmten Stapel (stacks) abzulegen. Andere Objekte (Operatoren) nehmen sich benötigte Parameter von diesem Stapel herunter und legen dort Ergebnisse ab, oder aber sie haben 'Seiteneffekte' wie z.B. den Ausdruck einer Textseite.

PostScript-Objekte haben einen Datentyp (z.B. integer, real, string, array, dictionary (Symboltabelle), fontID (Zeichensatz-Datenstruktur) und verschiedene Attribute (z.B. executable (als Befehl ausführbar), literal (nur als Operand nutzbar), read only (nicht veränderbar) ).

Zeichensätze sind bei PostScript grundsätzlich vektoriell, also mit Polygonzügen, realisiert. Sie lassen sich daher stufenlos vergrößern und verkleinern, es gibt also keine quantisierbaren Sprünge, wie sie irgendein vorgegebenes Raster erzwingt.

Das grafische Konstruktionsprinzip geht von einer weißen Seite aus, auf die mit deckenden Farben grafische Objekte gemalt werden, d.h. neu gemalte Objekte können bereits existierende überdecken. Ein sichtbares Ergebnis erhält man erst, wenn nach dem kompletten Aufbau der Seite der Befehl 'showpage' ausgeführt wird.

Das Koordinatensystem und sein Ursprung können beliebig skaliert (vergrößert/verkleinert, Operator 'scale'), gedreht ('rotate') und verschoben ('translate') werden. Erst durch die Skalierung geben später angegebene Koordinaten und Größenangaben einen Sinn. Zu Beginn liegt der Ursprung in der linken unteren Ecke, die Maßeinheit ist ein 'Pica Point' (1/72 Zoll).

Für ein grafisches Objekt ist zunächst dessen Umriß, der 'Pfad' ('path') zu definieren. Das geschieht mit (den wohl selbsterklärenden) Operatoren wie 'newpath', 'moveto', 'lineto', 'curveto' und 'closepath'. Bevor der so definierte Weg sichtbar gemacht werden kann, müssen noch Grafik-Attribute wie Liniendicke, Farbe, Füllmuster und Zeichensätze definiert worden sein. Erst nach Definition von Pfad und Attributen kommt eine Zeichenoperation zum Einsatz. Dabei führt 'fill' zum Darstellen der Fläche mit dem durch den Pfad beschriebenen Umriß unter Berücksichtigung von aktueller Farbe und momentanem Füllmuster. 'stroke' zeichnet eine Linie entlang des Pfades mit der aktuellen Linienstärke. Mit 'image' lassen sich Rastergrafiken (z.B. Fotos) und mit 'show' Texte darstellen.

Daneben läßt sich mit 'clip' ein Pfad erzeugen, der die Grenzen der nutzbaren Zeichenfläche definiert. Objekte, die diese Grenze überschreiten, werden abgeschnitten. Clip-Pfade können beliebige Formen (wie etwa auch die Umrisse von Buchstaben) haben, die Gestaltungsmöglichkeiten sind nahezu unbegrenzt. Auch die Grundlinie für Schriften kann damit festgelegt werden, womit die eigenwilligsten Entwürfe realisierbar sind.

Schriften und Zeichensätze und damit verbundene Operatoren nehmen bei PostScript breiten Raum ein. Zeichen sind ebenfalls grafische Objekte, die in speziellen Font-Dictionaries abgelegt sind. In jedem Font-Dictionary ist für jeden Zeichencode eine eigene Prozedur (Operator) abgelegt, welche das Zeichen darstellt.

Der PostScript-Befehlssatz umfaßt Operatoren zur Manipulation des Parameterstapels, arithmetische Operatoren und transzendente Funktionen, Operatoren für Felder, Dictionaries und Zeichenketten, Vergleichs- und Bit-Operatoren, Operatoren zur Programm-Ablaufsteuerung und zur Manipulation des 'Graphic State' (Zusammenfassung aller Attribute, Pfade, Koordinatensysteme etc.), Operatoren für Typkonvertierung und Attribut-Funktionen, Koordinatensystem-, Datei- und Pfad-Operatoren, Zeichen-, Ausgabe- und Geräte-Befehle sowie Zeichensatz-Operatoren.

Wer sich genauer für PostScript interessiert, sei auf die Literatur verwiesen (z.B. [#!SaS!#], [#!Ado!#], [#!c_t!#, 7/88]). Ein einfaches Beispiel in Abb. 10.4 soll diesen Abschnitt über PostScript beschließen.

1mm

Abbildung 10.4: Output des PostScript-Programm
\begin{figure}\begin{center}
\begin{picture}(80,60)
\linethickness{2.5mm}\put(10...
...
\multiput(40,31)(0,1){19}{\line(1,0){20}}
\end{picture}\end{center}\end{figure}

$-105_{10} = 0001\ 
0110_2 = 16_{16}$



Unterabschnitte
next up previous contents
Nächste Seite: Portable Document Format (PDF) Aufwärts: Grafische Datenverarbeitung Vorherige Seite: PGPLOT   Inhalt
Lars Tornow 2003-04-02