Here's a routine which may help:
/currentchar ( ) def
/charkern 1 72 mul 300 div def
/spacekern 1 72 mul 300 div def
/pixel {72 mul 300 div} def
/tinyprint
{
{currentchar exch 0 exch put currentpoint
dtransform exch ceiling exch idtransform moveto
currentchar show currentchar ( ) eq
{currentpoint exch spacekern add exch moveto}
{currentpoint exch charkern add exch moveto}ifelse}
forall
}def
/Palatino-Roman findfont [3 0 0 3 0 0] makefont setfont
72 500 moveto (Palatino in 3 point can be legible!) tinyprint
showpage
This routine should be able to help resolve the 300 dpi/roundoff problem.
Dick tenEyck
Boston Computer Society