GetObject 〜 CreateFontIndirect の間を次のようにしてみて。

GetObject(Canvas.Font.Handle, SizeOf(TLogFont), @lfText);
// 回転角の指定
lfText.lfEscapement := 270 * 10;
// フォント名を 1 バイト後ろにずらす
StrMove(@lfText.lfFaceName[1], @lfText.lfFaceName[0], LF_FACESIZE - 2);
// フォント名の先頭に '@' を入れる (縦書きフォント)
lfText.lfFaceName[0] := '@';
// 変更したフォント情報を用いて、新しいフォントハンドルを作成
hfNew := CreateFontIndirect(lfText);