Entweder man verwaltet jeden Buchstaben als Objekt (dann könnte PtInRect reichen oder noch die Unterscheidung ober rechts oder links von der Mitte) oder jedes einheitlich formatierte Wort wird als Objekt gespeichert, dann muss man später die Länge der einzelnen Buchstaben ermitteln.
Für jeden Buchstaben vllt nicht unbedingt aber für jeden Textabschnitt mit einer bestimmten Formatierung. Also im Prinzip so wie im Eröffnungspost als Bild dargestellt. Man könnte sich die Methodik so ähnlich vorstellen wie beim VirtualTreeview mit aktivierten Gridextensions. Da kann man sich auch für jede Textzelle separat per Canvas-Objekt unterschiedliche Texteigenschaften holen und berechnen.