Czcionka PostScriptowa (zar≤wno Type1/ATM jak i Type3) jest
skomplikowan▒ struktur▒ danych kt≤ra zawiera (miΩdzy innymi) dwie
wa┐ne tablice. Po pierwsze, tablicΩ znak≤w (glyph table),
indeksowan▒ nazwami znak≤w (takimi jak A
lub
space
), i zawieraj▒c▒ informacje potrzebn▒ do rysowania
pojedy±czych znak≤w. Po drugie, wektor koduj▒cy (encoding
vector), indeksowany ma│ymi (o╢miobitowymi) liczbami ca│kowitymi,
i zawieraj▒cy nazwy znak≤w.
W uproszczeniu, gdy system ma wydrukowaµ znak o kodzie n.p. 65,
najpierw wyszukuje odpowiedniej pozycji w wektorze koduj▒cym, gdzie
znajduje nazwΩ odpowiedniego znaku (w tym przypadku, prawdopodobnie
A
); uzbrojony t▒ informacj▒, wyszukuje odpowiedniej
informacji w tablicy znak≤w, za pomoc▒ kt≤rej rysuje znak na
papierze.
Tablica znak≤w czΩsto zawiera wiΩcej znak≤w ni┐ wektor koduj▒cy. Te dodatkowe znaki nie s▒ dostΩpne bez przekodowania czcionki, czyli zmiany wektora koduj▒cego. (Nie jest to czysta prawda, ale na razie wystarczy).
Czcionka z polskimi znakami, to po prostu czcionka kt≤rej tabela znak≤w (ale nie koniecznie wektor koduj▒cy) zawiera, poza znakami ASCII, nastΩpuj▒ce znaki:
Czcionki z polskimi znakami najczΩ╢ciej zawieraj▒ wszystkie znaki z ISO-8859-2 (ISO Latin-2, Eastern Europe).
O ile wiem, istnieje tylko jedna darmowa czcionka dobrej jako╢ci z
ogonkami; jest to
IBM
Courier,
kt≤r▒ IBM zaofiarowa│ (zaofiarowa│a? zaofiarowa│o?) X consortium.
Jest ona zawarta w ka┐dej dystrybucji X11R6, w plikach
X11R6/fonts/Type1/cour*.pfa
, oraz w dystrybucji czcionek
dla GhostScripta w plikach ncr*.pfa
Inn▒, niestety komercyjn▒ (czytaj: drog▒), czcionk▒ z polskimi znakami jest Bigelow & Holmes Lucida Casual, dostΩpna jako czΩ╢µ `Lucida Bright Expert Set'.
Times
, ale jest dodanie danych
do dowolnej czcionki nie jest trudne. Dodatkowe informacje mo┐esz
znale╝µ tutaj.
WiΩkszo╢µ program≤w umie drukowaµ tylko w
AdobeStandardEncoding
lub
ISOLatin1Encoding
. Interesuj▒cymi wyj▒tkami s▒ TeX
(kt≤ry nawet stworzy znaki kt≤rych nie ma w tablicy znak≤w czcionki)
i GNU Genscript.
(Dodatki do listy program≤w prawid│owo przekodowuj▒cych czcionki bardzo mile widziane).
Przekodowanie czcionki nie jest trudne. Trzeba najpierw zdefiniowaµ poprawny wektor koduj▒cy:
/MyEncoding
[
/.notdef /.notdef ...
...
/space /exclam ...
...
] def
Potem trzeba zdefiniowaµ kopiΩ naszej czcionki z nowym zakodowaniem:
/Courier findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding ISOLatin2Encoding def currentdict end
/Courier-L2 exch definefont pop
Nowa czcionka jest gotowa do u┐ytku:
/Courier-L2 findfont 12 scalefont setfont
72 72 moveto
(Czy pami\352tasz jak ze mn\261 ta\361czy\263a\266 walca) show
showpage.
Oto ca│y przyk│ad. Powinien dzia│aµ na ka┐dej drukarce, o ile czcionki Courier i Courier-Italic maj▒ polskie znaki. W odwrotnym przypadku, wystarczy dodaµ czcionki IBM Courier i Courier-Italic do pliku ╝r≤d│owego tam, gdzie jest to zaznaczone.
Juliusz Chroboczek