Outline Fonts


%!PS-Adobe-1.0
%%Creator: Holger Gehringer
%%Title: Beispiel fuer Outline-Font
%%CreationDate: Mo, 23.11.1998
%%DocumentMedia: A4 595 842 0 () ()
%%Orientation: Portrait
%%Pages: (atend)
%%DocumentFonts: Times-Roman Helvetica
%%EndComments

% Hier wird eine Prozedur vorgestellt, die einen Umrissdefinierten Font in einen
% Outline-Font konvertiert.

/MakeOutlineDict 7 dict def   % Lokaler Speicher fuer MakeoutlineFont
/MakeOutlineFont              % MakeoutlineFont benoetigt 4 Parameter:
{ MakeOutlineDict begin
    /UniqueID exch def        % UniquelD-Nummer
    /Strokewidth exch def     % Strichstaerke
    /NewFontname exch def     % Name des (neuen) Outline-Fonts
    /BaseFontname exch def    % Name des Basis-Fonts

    /BaseFontDict             % Basis-Font
    BaseFontname findfont def

    /NumEntries BaseFontDict  % Laenge des neuen Dictionaries ergibt sich aus
    maxlength 1 add def       % alter Laenge plus Eintrag fuer Strokewidth.

    BaseFontDict              % Falls das alte Dictionary keine UniqueID-Nr.
    /UniqueID known not       % hat, dann schaffe Raum dafuer. (Die eingebau-
    { /NumEntries NumEntries  % ten Fonts in der LaserWriter-Version 23.0
      1 add def               % haben noch keine Nummer)
    } if

    /OutFontDict              % Dictionary fuer neuen Font
    NumEntries dict def

    BaseFontDict              % Alle Eintraege des alten Font-Dictionaries
    { exch dup /FID ne        % werden kopiert. Ausgenommen bleibt der FID-
      { exch OutFontDict      % Eintrag.
   3 1 roll put
      }
      { pop pop
      } ifelse
    } forall

    OutFontDict /FontName     % Der neue Name wird eingetragen.
    NewFontname put
    OutFontDict /PaintType    % Der Zeichen-Modus wird von 0 (fill) auf
    2 put                     % 2 (outline) geaendert.
    OutFontDict /StrokeWidth  % gewuenschte Strichstaerke wird eingetragen
    Strokewidth put
    OutFontDict /UniqueID     % die UniqueID-Nummer wird eingetragen.
    UniqueID put

    NewFontname OutFontDict   % Der neue Font wird definiert
    definefont pop            % Dictionary auf Stack kann geloescht werden
  end
} def

%%EndProlog

%%Page: 1 1
/Helvetica-Bold               % Basis-Font
/Helvetica-Outline            % Name des Outline-Fonts
1000 54 div                   % Die Strichstaerke wird im Zeichen-Koord.s.
                              % (1000 Einheiten) definiert. 1000/54 setzt eine
                              % Strichstaerke fest, die bei einer Schrift-
                              % groesse von 54 Punkt genau 1 Punkt breit wird.
/Helvetica-Bold findfont dup  % Falls der alte Font bereits ueber einen
/UniqueID known               % UniqueID verfuegt, dann wird die neue Unique-
{ /UniqueID get 1 add         % ID-Nummer um eins hoeher.
}
{ pop 1                       % Sonst wird '1' zum UniqueID
} ifelse

MakeOutlineFont               % Outline-Font erstellen

/Helvetica-Outline findfont   % Beispieltext im neuen Font ausgeben.
54 scalefont setfont
200 500 moveto
(Outline) show

showpage

%%Trailer
%%Pages: 1


Vorschau:

Download PostScript-File

© Holger Gehringer, Dezember 1998