procedure TForm1.FormPaint(Sender: TObject);
var
  lf: TLogFont;
  tf: TFont;
begin
  with Form1.Canvas do
  begin
    Font.Name := 'Arial';
    Font.Size := 24;
    tf        := TFont.Create;
    try
      tf.Assign(Font);
      GetObject(tf.Handle, SizeOf(lf), @lf);
      lf.lfEscapement  := 320;
      lf.lfOrientation := 320;
      SetBkMode(Handle, TRANSPARENT);
      tf.Handle := CreateFontIndirect(lf);
      Font.Assign(tf);
    finally
      tf.Free;
    end;
    TextOut(10, Height div 2, 'Your Rotated Text!');
  end;
end;

The LOGFONT structure holds information about a logical font.
The various members of the structure specify properties of the logical font:

lfEscapement
The angle between the font’s baseline and escapement vectors,
in units of 1/10 degrees.
Windows 95, 98: This must be equal to lfOrientation.

lfOrientation
The angle between the font’s baseline and the device’s x-axis,
in units of 1/10 degrees.
Windows 95, 98: This must be equal to lfEscapement.

lfWidth
The average width of the font’s characters.
If 0, the font mapper tries to determine the best value

lfWeight
One of the following flags specifying the
boldness (weight) of the font:

FW_DONTCARE = 0 Default weight.
FW_THIN = 100 Thin weight.
FW_EXTRALIGHT = 200 Extra-light weight.
FW_LIGHT = 300 Light weight.
FW_NORMAL = 400 Normal weight.
FW_MEDIUM = 500 Medium weight.
FW_SEMIBOLD = 600 Semi-bold weight.
FW_BOLD = 700 bold weight.
FW_EXTRABOLD = 800 Extra-bold weight.
FW_HEAVY = 900 Heavy weight.

lfItalic
A non-zero value if the font is italicized, 0 if not.

lfUnderline
A non-zero value if the font is underlined, 0 if not.

lfStrikeOut
A non-zero value if the font is striked out, 0 if not.