Ich bin mir basierend auf Deiner Beschreibung nicht ganz sicher, ob ich verstanden habe wie Du genau vorgehst. Was spricht denn dagegen Leerzeichen zu verwenden?
Aufsummieren von Wortbreiten und Abstandsbreiten ist nicht alltagstauglich, sobald Kerning stattfinden sollte (will man aus optischen Gründen!).
Du musst bei gutem Textrendering von nicht dicktengleichen Schriftarten davon ausgehen, dass im allgemeinen
breite("wort1")+breite(abstand)+breite("wort2") != breite("wort1"+abstand+"wort2")
gilt. Tendenziell ist hier >= zu erwarten, weil die bei der Ausgabe ineinander ragen können (ohne, dass sich Linien überlagern).
Du musst also jeweils den Platzbedarf einer kompletten Textzeile berechnen. Eine Berechnung allein auf Wortebene kannst Du höchstens als erste Näherung verwenden (wenn Du nicht Wort für Wort verlängert den Platzbedarf aller Variante berechnen willst; Eine Näherung auf Zeichenanzahl ist dann aber wahrscheinlich noch schneller. Wenn Performance ein Thema ist, dann kannst Du das immer noch benchmarken.)