this occur because depends of printer DPI, for example
the Printer.Canvas.Font.Size := 8 works on a printer with 300 DPI a printer with 600 DPI needs .Size := 4 for the same result.
try this before Printer.beginDoc
Printer.Canvas.Font.PixelsPerInch := GetDeviceCaps(Printer.Handle,LOGPIXELSY);
or try this function always you need to change font size:
procedure TForm1.SetPixelsPerInch;
var
FontSize: integer;
begin
FontSize := Printer.Canvas.Font.Size;
Printer.Canvas.Font.PixelsPerInch := GetDeviceCaps(Printer.Handle,LOGPIXELSY);
Printer.Canvas.Font.Size := FontSize;
end;
See more details in http://www.delphigroups.info/2/e7/314459.html