Как получить текстовый экстент с DirectWrite? .Net предоставляет его как часть класса FormattedText, например.
Создайте IDWriteTextLayout, настройте по своему усмотрению, а затем используйте методы, такие как DetermineMinWidth() и GetMetrics(), для получения расчетов макета.
IDWriteTextLayout
DetermineMinWidth()
GetMetrics()