Свойство FormattedText Width не учитывает конечные пробелы - PullRequest
2 голосов
/ 08 января 2010

Я использую System.Windows.Media.FormattedText, чтобы сделать низкоуровневый рендеринг (в частности, пытаюсь представить математические уравнения типографски приятным способом). Для этого важны точные метрики для текстовых блоков, которые я использую.

Я создаю несколько FormattedText объектов и использую их на самом низком уровне рендеринга. Проблема заключается в том, что если какой-либо из них содержит конечные пробелы, это пространство не учитывается при вычислении свойства FormattedText.Width. Например, если я напишу:

double w1 = new FormattedText ("Hello", ...).Width;
double w2 = new FormattedText ("Hello    ", ...).Width;

w1 и w2 оказываются одинаковыми. Ведущие пробелы измерены правильно. Как заставить FormattedText также измерить эти конечные пробелы?

1 Ответ

4 голосов
/ 08 января 2010

Переход от использования свойства Width к использованию свойства WidthIncludingTrailingWhitespace.

double w1 = new FormattedText ("Hello", ...).WidthIncludingTrailingWhitespace;
double w2 = new FormattedText ("Hello    ", ...).WidthIncludingTrailingWhitespace;

С этим кодом вы должны увидеть два разных значения ширины.

...