The following was posted on comp.text.pdf. I confirm that this problem exists in the current CVS version. -DNOCACHE restores the correct rendering. Here is a minimal example: %!PS-Adobe-2.0 %%BoundingBox: 0 0 100 100 /Helvetica findfont 20 scalefont setfont gsave 20 50 moveto 45 rotate (Test)show grestore 20 20 moveto (Test)show showpage gs -dBATCH -dNOPAUSE -sDEVICE=bmp16m -dDEVICEWIDTHPOINTS=100 -dDEVICEHEIGHTPOINTS=100 -r300 -dGraphicsAlphaBits=4 -dTextAlphaBits=4 -sOutputFile=bg815.bmp bg.eps GPL Ghostscript 8.15 (2004-09-22) /usr/bin/gs -dBATCH -dNOPAUSE -sDEVICE=bmp16m -dDEVICEWIDTHPOINTS=100 -dDEVICEHEIGHTPOINTS=100 -r300 -dGraphicsAlphaBits=4 -dTextAlphaBits=4 -sOutputFile=bg707.bmp bg.eps ESP Ghostscript 7.07 (2003-07-12) bg707.bmp looks much better then bg815.bmp (similarly with other raster devices).
The problem happens due to is_matrix_good_for_caching returns 'false'. There is a comment in gxchar.c ln 1463 : /* Oversampling rotated characters doesn't work well. */ I do not know why such solution has been taken a long ago. Likely Raph knows. If we don't longer need this constraint, is_matrix_good_for_caching should always return true. Passing the bug to Raph for obtaining his response.
Fixed in revision 9465, patch at: http://ghostscript.com/pipermail/gs-cvs/2009-February/009042.html