Может это поможет
function CalcTextSize(text: string; Font: TFont; Size: single = 0): TSizeF;
var
TextLayout: TTextLayout;
begin
TextLayout := TTextLayoutManager.DefaultTextLayout.Create;
try
TextLayout.BeginUpdate;
try
TextLayout.text := text;
TextLayout.MaxSize := TPointF.Create(9999, 9999);
TextLayout.Font.Assign(Font);
if not SameValue(0, Size) then
begin
TextLayout.Font.Size := Size;
end;
TextLayout.WordWrap := False;
TextLayout.Trimming := TTextTrimming.None;
TextLayout.HorizontalAlign := TTextAlign.Leading;
TextLayout.VerticalAlign := TTextAlign.Leading;
finally
TextLayout.EndUpdate;
end;
Result.Width := TextLayout.Width;
Result.Height := TextLayout.Height;
finally
TextLayout.DisposeOf;
TextLayout := nil;
end;
end;