Добрый день,
Пока, к сожалению, нету поддержки стиля верхнего и нижнего регистров для текста. Поэтому вместо жонглирования TText, я бы сделал свой компонент. В нем достаточно будет только определить метод Paint для отрисовки текста. Дальше просто:
TTextLayout используем для измерения размеров текста.
Потом согласно расчетам, просто выводим в нужные позиции текст.
Для вдохновения можно сделать по образу и подобию TText.
Расчет размеров текста:
ATextLayout.BeginUpdate;
try
ATextLayout.Text := Text;
ATextLayout.WordWrap := False;
ATextLayout.MaxSize := TSizeF.Create(1000, 1000);
finally
ATextLayout.EndUpdate;
end;
Result := ATextLayout.TextRect.Size;
Вывод текста:
либо так:
AContext.Canvas.FillText(Bounds, Text, False, 1, [], TTextAlign.Leading);
Либо через TTextLayout:
ATextLayout.Render;
Вам остается только добавить логику по вычислению позиции верхнего или нижнего регистра относительно основного текста.