%! % slovník písma bude mít 10 položek 10 dict dup begin % Type 3 /FontType 3 def % základní velikost písma /FontMatrix [0.02 0 0 0.02 0 0 ] def % ohraničující rám písma /FontBBox [0 0 39.5444 39.355] def % kódování písma - pole 256 položek /Encoding 256 array def % vyplníme jej hodnotou .notdef 0 1 255 {Encoding exch /.notdef put} for % dáme kódovací tabulku na zásobník Encoding % pod písmenem "a" bude symbol telefon dup (a) 0 get /telefon put % zrušíme ze zásobníku % (pro jediný znak to lze napsat jednodušeji) pop % slovník metriky bude obsahovat dva znaky /Metrics 2 dict def Metrics begin /.notdef 0 def /telefon 39.5444 def end % ohraničující rámy jednotlivých znaků /BBox 5 dict def BBox begin /.notdef [0 0 0 0] def /telefon [0 0 39.5444 39.355] def end % slovník vlastních definic znaků /CharacterDefs 2 dict def CharacterDefs begin /.notdef { } def % vlastní definice znaku telefon /telefon { -15.7606 -35 translate newpath 46.3294 35 moveto 29.2607 39.8018 16.8406 59.5148 15.7606 65.2856 curveto 17.6206 70.885 22.9607 73.9362 25.5407 74.355 curveto 27.5207 73.0986 31.7207 67.0067 32.5607 64.2173 curveto 31.3007 62.3182 29.0207 61.0105 27.4007 60.3524 curveto 27.8207 58.6772 35.5594 48.1696 41.1854 46.6044 curveto 41.7839 48.2297 43.1597 50.5775 45.0735 51.8417 curveto 47.8843 51.0591 53.9883 46.8451 55.305 44.9188 curveto 54.9459 42.3302 51.8936 36.9724 46.3294 35 curveto closepath fill } bind def end % funkce BuildChar je vlastní výkonná funkce, vyhledává a kreslí znak /BuildChar { 0 begin /char exch def /fontdict exch def /charname fontdict /Encoding get char get def fontdict begin Metrics charname get 0 BBox charname get aload pop setcachedevice CharacterDefs charname get exec end end } def /BuildChar load 0 3 dict put % číselná identifikace v uživatelském rozsahu /UniqueID 4000001 def end % vlastní definice písma /Telefon exch definefont pop % a zde je zakomentovaný kód, který ověří, že písmo funguje %/Telefon findfont 200 scalefont setfont 20 20 moveto (a) show showpage