%!PS-Adobe-2.0
%%Title: Blue Book Program 19, on page 215
%%Creator: Adobe Systems Incorporated
%%CreationDate: Fri Dec 29 14:05:03 PST 1989
%%EndComments
/modwidthsdict 8 dict def
/ModifyWidths
{ modwidthsdict begin
/uniqueid exch def
/newwidths exch def
/newfontname exch def
/basefontname exch def
/basefontdict basefontname findfont def
/numentries basefontdict maxlength 1 add def
basefontdict /UniqueID known not
{ /numentries numentries 1 add def } if
/newfont numentries dict def
basefontdict
{ exch dup dup /FID ne exch
/FontBBox ne and
{ exch newfont 3 1 roll put }
{ pop pop }
ifelse
} forall
/newFontBBox basefontdict /FontBBox get
aload length array astore def
newfont /FontBBox newFontBBox put
newfont /FontName newfontname put
newfont /Metrics newwidths put
newfont /UniqueID uniqueid put
newfontname newfont definefont pop
end
} def
/roundwidthsdict 13 dict def
roundwidthsdict /showstring 1 string put
/roundwidths
{ roundwidthsdict begin
/ptsize exch def
/resolution exch def
/fontname exch def
/thefont fontname findfont def
/newwidths thefont /CharStrings get length
dict def
/pixelsperem ptsize 72 div resolution mul def
/unitsperpixel 1000 pixelsperem div def
gsave
nulldevice
thefont 1 scalefont setfont
/charcount 0 def
thefont /Encoding get
{ /charname exch def
charname /.notdef ne
{ /charwidth showstring dup 0 charcount
put stringwidth pop 1000 mul def
/multiples charwidth unitsperpixel div
round cvi def
/newcharwidth unitsperpixel multiples
mul def
newwidths charname newcharwidth put
} if
/charcount charcount 1 add def
} forall
grestore
newwidths
end
} def
/findresdict 4 dict def
findresdict begin
/tempmatrix matrix def
/epsilon 0.001 def
end
/findresolution
{ findresdict begin
72 0 tempmatrix defaultmatrix dtransform
/y exch def /x exch def
x abs epsilon gt y abs epsilon gt and
{ stop }
{ x dup mul y dup mul add sqrt }
ifelse
end
} def
/showstring
{ (HOHOHOHO oaobocodoeofogohoiojoko) show
(lomonopoqorosotouovowoxoyoz) show } def
/res findresolution def
/uid /Times-Roman findfont dup /UniqueID known
{/UniqueID get} {pop 0} ifelse def
/rwid /Times-Roman res 6 roundwidths def
/Times-Roman /TR6 rwid uid 1 add ModifyWidths
/Times-Roman findfont 6 scalefont setfont
130 560 moveto showstring
/TR6 findfont 6 scalefont setfont
130 560 6 sub moveto showstring
/rwid /Times-Roman res 7 roundwidths def
/Times-Roman /TR7 rwid uid 2 add ModifyWidths
/Times-Roman findfont 7 scalefont setfont
130 500 moveto showstring
/TR7 findfont 7 scalefont setfont
130 500 7 sub moveto showstring
/rwid /Times-Roman res 8 roundwidths def
/Times-Roman /TR8 rwid uid 3 add ModifyWidths
/Times-Roman findfont 8 scalefont setfont
130 440 moveto showstring
/TR8 findfont 8 scalefont setfont
130 440 8 sub moveto showstring
showpage
% But what does it do?