Bitmuster Font


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

% Das Programm zeigt die Definition eines Bitmuster-Fonts

9 dict dup begin
  /FontType 3 def                % Typ 3 = benutzerdefinierter Font
  /FontMatrix                    % Matrix transformiert vom Zeichen-Koord.s.
  [1 0 0 1 0 0] def              % ins Benutzer-Koordinatensystem
  
  /FontBBox
  [1.28 1.2 -0.16 -0.24] def     % Bounding-BOX aller Zeichen des Fonts
  /Encoding 256 array def
  0 1 255                        % Codierungsvektor mit .notdef initialisieren
  { Encoding exch
    /.notdef put
  } for
  Encoding
  dup 97 /a put                  % Der Font enthaelt 8 Zeichen
  dup 103 /g put
  dup 104 /h put
  dup 111 /o put
  dup 112 /p put
  dup 114 /r put
  dup 116 /t put
  121 /y put
  
  /BuildChar                     % wird immer aufgerufen, wenn ein Zeichen
  { 0 begin                      % dieses Fonts konstruiert werden muss
      /Char exch def             % Der Zeichencode und das Font-Dictionary
      /FontDict exch def         % werden als Parameter uebergeben.
      /Charname FontDict         % Mit Hilfe des Codes wird der Name des
      /Encoding get Char         % Zeichens ermittelt.
      get def
      /CharInfo FontDict         % Daten fuer das Zeichen holen
      /CharData get
      Charname get def
      /WX CharInfo 0 get def     % Dickte des Zeichens
      /CharBBox CharInfo         % Bounding-BOX des Zeichens
      1 4 getinterval def
      WX 0 CharBBox aload pop
      setcachedevice             % Zeichen in Cache-Speicher bringen
      CharInfo 5 get             % Spaltenanzahl des Bitmusters
      CharInfo 6 get             % Zeilenanzahl des Bitmusters
      true                       % Bits invertieren
      FontDict
      /ImagemaskMatrix get
      dup 4 CharInfo 7 get put   % Translation in x-Richtung
      dup 5 CharInfo 8 get put   % Translation in y-Richtung
      CharInfo 9 1 getinterval
      cvx                        % Bitmuster-Array ausfuehrbar machen
      imagemask                  % Zeichen erstellen
    end
  } def
  
  /BuildChar load 0 6 dict put   % Lokaler Speicher fuer BuildChar
  
  /ImagemaskMatrix               % Bitmuster sind fuer 25 x 25 Zeichengroesse
  [25 0 0 -25 0 0] def           % entworfen (y-Faktor < 0, da Bitmuster zeilen-
                                 % weise von oben nach unten aufgebaut ist)
  /CharData 8 dict def
  CharData begin                 % Die Zeichendefinitionen bestehen aus:
    /a [ 0.64                    % Dickte
         0.04                    % BBox:  x unten links
    0                            % BBox:  y unten links
    0.56                         % BBox:  x oben rechts
    0.56                         % BBox:  y oben rechts
   13                            % Spaltenanzahl des Bitmusters (Zeile besteht
                                 % immer aus ganzen Bytes; hier aus 2B = 16 Bit.
                                 % Die letzten drei Bits jeder Zeile bleiben
                                 % hier ungenutzt.)
   14                            % Zeilenanzahl des Bitmusters
   -1.5                          % Translation in x-Richtung
   13.5                          % Translation in y-Richtung
                                 % Hexadezimaler Bitmuster-String
    <0F983FD870786038C018C018C018
    C018C018C018603870783FD80F98> ] def
    /g [.64 .04 -0.16 .56 .56 13 18 -1.5 13.5
    <0F983FD870786038C018C018C018C018C018
    C018603870783FD80F98601870303FF00FC0> ] def
    /h [.6 .04 0 .52 .76 12 19 -1.5 18.5
     ] def
    /o [.64 .04 0 .56 .56 13 14 -1.5 13.5
    <0F803FE070706030C018C018C018
    C018C018C018603070703FE00F80> ] def
    /p [.64 .04 -.16 .56 .56 13 18 -1.5 13.5
     ] def
    /r [.32 .04 0 .28 .56 6 14 -1.5 13.5
     ] def
    /t [.36 0 0 .32 .76 8 19 -0.5 18.5
    <1818181818FFFF181818181818181818181818> ] def
    /y [.48 0 -.16 .44 .56 11 18 -0.5 13.5
     ] def
  end
  /UniqueID 2 def                % UniqueID-Nummer fuer den Font
end

%%EndProlog

%%Page: 1 1
/BitFont exch definefont pop     % neuer Font wird unter BitFont registriert
gsave
100 700 translate
12 12 72                         % Auch ein Bitmusterfont kann, wie jeder
{ /BitFont findfont              % andere Font, beliebig skaliert werden.
  exch scalefont setfont
  0 0 moveto
  (typography) show
  0 -100 translate
} for
grestore

showpage

%%Trailer
%%Pages: 1


Vorschau:

Download PostScript-File

© Holger Gehringer, Dezember 1998