Expriences setting printer.canvas.PixelsPerInch, font access

Printer PixelsPerInch
------------------------------
I find the default Printer.canvas.PixelsPerInch is 96 when I should be
300 for a particular type of printer. The amazing thing is, if I
specify

Printer.canvas.PixelsPerInch:=300

then this does not work. Fonts still come out the wrong size. However,
this strangely does seem to work:

Printer.canvas.PixelsPerInch:=GetDeviceCaps(Printer.canvas.handle,LOGPIXSY);

GetDeviceCaps(Printer.canvas.handle,:LOGPIXSY) does actually return
300, so I don't see why setting it to 300 with
Printer.canvas.PixelsPerInch:=300 does not appear to have the same
effect as GetDeviceCaps(Printer.canvas.handle,LOGPIXSY).

Does anyone know why this might be?

Email appreciated. I reply to every email.
Matthew