Umlaute


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

% Das Programm zeigt, wie am Codierungsvektor eines Fonts kleinere Aenderungen
% vorgenommen werden koennen. Mit dieser Methode ist es einfach, die Standard-
% Codierung um die deutschen Umlaute zu erweitern.

/Reencsmalldict 12 dict def      % Lokaler Speicher fuer ReEncodeSmall

% ReEncodeSmall kopiert einen existierenden Font, nimmt die angegebenen Aender-
% ungen am Codierungsvektor vor und speichert die geaenderte Kopie unter einem
% neuen Namen ab. Die Prozedur benoetigt drei Argumente: den Namen des Fonts,
% der abgeaendert werden soll, den Namen des neuen Fonts und ein Array mit
% Code/Zeichen-Paaren.
/ReEncodeSmall
{ Reencsmalldict begin
    /NewCodesAndNames exch def
    /NewFontName exch def
    /BaseFontName exch def
    /BaseFontDict                % Basis-Font suchen
    BaseFontName findfont def
    /NewFont BaseFontDict        % Neues Dictionary in ausreichender Groesse
    maxlength dict def           % schaffen

    BaseFontDict                 % Alle Eintraege des Basis-Fonts, bis auf FID-
    { exch dup /FID ne           % Feld, werden kopiert.
      { dup /Encoding eq
        { exch dup
          length array copy
          NewFont 3 1 roll put
        }
        { exch NewFont
          3 1 roll put
        } ifelse
      }
      { pop pop                  % FID-Eintrag ignorieren
      } ifelse
    } forall

    NewFont
    /FontName NewFontName put    % Neuen Namen eintragen
    NewCodesAndNames aload pop   % Wertepaare fuer Aenderung des Codierungsvek-
                                 % tors laden.
    NewCodesAndNames             % Fuer jedes Wertepaar auf dem Stack wird der
    length 2 idiv                % der neue Name in den Vektor eingetragen.
    { NewFont /Encoding get
      3 1 roll put
    } repeat

    NewFontName NewFont          % aus neuem Font wird POSTSCRIPT-Font; das von
    definefont pop               % definefont gelieferte Diction. wird ignoriert
  end
} def

% Das Array dient als Parameter fuer ReEncodeSmall: es enthaelt sieben Paare,
% die jeweils aus dem Code (in Oktalform) und dem Namen des Zeichens bestehen.
% Die Codes wurden dem Zeichensatz des IBM-PC angepasst - bis auf das scharfe s
% liegen sie in Positionen, die in der Standard-Codierung nicht besetzt sind.
/GermanVec
[ 8#201 /udieresis
  8#204 /adieresis
  8#216 /Adieresis
  8#224 /odieresis
  8#231 /Odieresis
  8#232 /Udieresis
  8#341 /germandbls
] def

%%EndProlog

%%Page: 1 1
/Times-Roman                     % Times-Roman umcodieren, so dass neuer Font
/Times-Roman-German              % mit deutschen Umiauten entsteht.
GermanVec ReEncodeSmall

/Times-Roman-German findfont     % Den neuen Font auswaehlen.
18 scalefont setfont

200 400 moveto
(\232berm\204\341iger Lik\224rkonsum in der ) show
200 380 moveto
(\231ffentlichkeit f\201hrt zu \216rger.) show
                                 % Da Codes der Umlaute > 127, koennen sie nur
                                 % als oktale Konstanten angesprochen werden.
showpage

%%Trailer
%%Pages: 1


Vorschau:

Download PostScript-File

© Holger Gehringer, Dezember 1998