Нужно взять размер текста, вычесть половину ширины/выысоты текста из половины ширины / высоты квадрата, получите центрированную позицию текста по отношению к квадрату.
local tw, th = surface.GetTextSize(text)
local tx, ty = qw / 2 - tw / 2, qh / 2 - th / 2
surface.DrawText(tx,ty, text)