The question is simple. How to draw following text into TStringGrid cell?

Operating system is Windows XP (or Windows Vista or Windows 7). Preferred development environment is C++ Builder 6, but I will accept also solutions for C++ Builder XE of Delphi. Preferred API function is DrawText, but if better function exists than this no problem. Font name is Times New Roman, font size is 11. Currently I am using this method to render cell content (simplified):
void __fastcall TForm_Main::StringGrid_DrawCell(TObject *Sender,
int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
TStringGrid *grid = (TStringGrid*)Sender;
if (grid == NULL) return;
// 1. BACKGROUND
grid->Canvas->Brush->Color = grid->Color;
grid->Canvas->FillRect(Rect);
// 2. TEXT
grid->Canvas->Font->Assign(grid->Font); // Times New Roman, 11pt
// horizontal centering
RECT RText = static_cast<RECT>(Rect);
AnsiString text = grid->Cells[ACol][ARow];
if (!text.IsEmpty()) {
int text_len = strlen(text.c_str());
SIZE size;
memset(&size, 0, sizeof(SIZE));
GetTextExtentPoint32(grid->Canvas->Handle, text.c_str(), text_len, &size);
int offset_x = (Rect.Width() - size.cx) >> 1;
RText.left += offset_x; RText.right += offset_x;
// rendering
DrawText(grid->Canvas->Handle, text.c_str(), text_len, &RText, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
}
}
Some characters have subscript glyph as special unicode character (for example code 0x2081 is assigned to subscript one) but unfortunately this is not case for capital letter U. Also these characters are not supported by all fonts (for example Times New Roman font doesnt support code range 0x2070 – 209F), see this Wikipedia article. I am searching for a more general solution like those implemented by Microsoft Word. MS Word doesn’t have problem to render capital letter U as subscript using Times New Roman font.
If you want some char to render as superscript you must prefix it with ^. Likewise subscript characters must be prefixed with _.