The following is a slightly modified version of a Jan. 7, 99 post by Joe Hecht: procedure TForm1.Button2Click(Sender: TObject); var lf : TLogFont; OldFont : hFont; NewFont : hFont; begin Printer.BeginDoc; Printer.Canvas.Font.Name := 'Arial'; Printer.Canvas.Font.Size := 24; Printer.Canvas.Font.PixelsPerInch:= GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY); GetObject(Printer.Canvas.Font.Handle, sizeof(lf), @lf); lf.lfEscapement := 450; lf.lfOrientation := 450; // Check here that lf is properly filled out! NewFont := CreateFontIndirect(lf); OldFont := SelectObject(Printer.Canvas.Handle, NewFont); Windows.TextOut(Printer.Canvas.Handle, // 2.5" over 3.0" down ROUND(2.5*GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY)), ROUND(3.0*GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY)), 'Rotated Text!', 13); SelectObject(Printer.Canvas.Handle, OldFont); DeleteObject(NewFont); Printer.EndDoc; end;