Bezüglich der eventuell breiteren Breite ist es egal? (durch das Leerzeichen)
Ansonsten gibt es auch Zero-Width Whitespaces / 0-breite Leerzeichen (
https://de.wikipedia.org/wiki/Breitenloses_Leerzeichen).
Für DrawTextEx+DT_CALCRECT ist die letzte Zeile halt 0 hoch, wenn da keine Zeichen drin sind.
Das ist wohl einfach so.
PS: Beim Delphi-
IDE-Property-Editor sind die Zeilen auch 0 hoch (ClientHeight + einen Offest/Abstand zu den Trennlinien), wenn das Ding keinen Namen und keinen Value zum Anzeigen findet.
Gibt es ein AutoLineBreak? (maximale Breite des CalcRects)
Wenn nicht, dann einfach
(1 + CountLineBreaks(DeinText)) * TextHeight('X')
.