logo_90

Der Operator makefont

PostScript beschreibt grundsätzlich zweidimensionale Grafiken. Das folgende Beispiel, das auf dem Font Korinna-Regular beruht, stammt aus der Adobe-Zeitung Colophon. CUBIC B

Der Operator makefont kann jeden PostScript-Font auf verschiedene Arten verändern. Im Beispiel hat Adobe die Illusion einer Dreidimensionalität geschaffen, indem der Buchstabe B mit makefont schmaler gemacht und schief gestellt wird; die Operanden: sx = Skalierung des Buchstaben horizontal, sy = Skalierung vertikal, stan = Neigung. Achtung: Neigung eines Buchstaben um 45 Grad und Rotation des Buchstaben um 45 Grad sind zwei verschiedene Dinge. makefont wird von der Routine getfont aufgerufen. Ferner dient der Operator moveto dazu, die verschiedenen Varianten richtig zu plazieren.

 
%!PS-Adobe Systems Inc. -Colophon 3
%%DocumentFonts: Korinna-Regular
%%Title: makefont.ps
 
% Das Programm zeichnet einen Kubus (Wuerfel),
% dessen Seiten aus Buchstaben bestehen.
 
/cube {
        /masterfont /Korinna-Regular findfont def
 
        % Als Operanden muessen 6 Buchstaben
        % angegeben werden.
 
        /front exch def
        /leftside exch def
        /back exch def
        /rightside exch def
        /top exch def
        /bottom exch def
 
        % Berechnung von stan:
        % Der Quotient sin a / cos a
        % wird mit der Buchstabenhoehe
        % multipliziert.
 
        /stan {a sin a cos div sy mul} def
        /getfont {masterfont [sx 0 stan sy 0 0]
                              makefont setfont}  def
 
        % Variable a = Neigungswinkel

        gsave
                /sy 100 def
                /sx 100 def
                /a 0 def    % nicht geneigt
                getfont
                40 50 moveto
                .75 setgray
                back show   % Buchstabe         hinten 
        grestore
 
        gsave
                /a 45 def   % um 45 Grad geneigt
                /sy sy 2 sqrt div def
                /sx 70 def
                getfont
                0 0 moveto
                .60 setgray
                bottom show   % Buchstabe	unten
        grestore
 
        gsave
                getfont
                70 0 moveto
                45 rotate   % um 45 Grad rotiert
                        % und um 45 Grad geneigt
                .1 setgray
                rightside show   % Buchstabe	rechts
        grestore
 
        gsave
                getfont
                0 7 moveto
                45 rotate   % um 45 Grad rotiert
                        % und um 45 Grad geneigt
                .40 setgray
                leftside show   % Buchstabe	links
        grestore
 
        gsave
                /a 0 def   % nicht geneigt
                /sy 100 def
                /sx 100 def
                getfont
                0 0 moveto
                .20 setgray
                front show   % Buchstabe	vorne
        grestore

        gsave
                /sy sy 2 sqrt div def
                /a 45 def   % um 45 Grad geneigt
                /sx 70 def
                getfont
                0 70 moveto
                top show   % Buchstabe          oben
        grestore
} def   % Ende von cube
%%EndProlog
Somit ist die Prozedur cube definiert und kann aufgerufen werden:
 
gsave
   200 300 translate
   2.0 2.0 scale
   (B) (B) (B) (B) (B) (B) cube
grestore
showpage
%%Trailer
Mit dem Operator makefont lässt sich ein Schrifttyp also unabhängig von der Höhe schmaler oder breiter machen und beliebig neigen.

Das Beispiel Das kubische "B" beruht statt auf Korinna-Regular auf dem Universalfont Helvetica-Bold.


HTML 3.2 Last update: 14-JUL-97/vo