Делается это в два этапа для каждой строчки:
1. замер текста w и вычисление смещения x (TCanvas.GetTextExtent)
2. печать текста (TCanvas.TextOut) со смещением x
для левого выравнивания x=0, для правого x:=w0-w, по центру: x:=(w0-w) div 2
Full Justify делается немного сложнее. Нужно разбить текст на слова, узнать сколько в строчке свободного места и равномерно разделить место (смещения) между пробелами.
Всё это можно не делать, а воспользоваться функцией (winapi) DrawText или DrawTextEx
Неужели пару строчек написать лень?