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
© Holger Gehringer, Dezember 1998