Direct2D widthIncludingTrailingWhitespace == 0, в то время как ширина > 0?

#msdn #directwrite

Вопрос:

Проблема с платформой Microsoft Direct2D.

Как такое возможно width > widthIncludingTrailingWhitespace ? Разве это не должно быть

width == widthIncludingTrailingWhitespace

в случае отсутствия конечных пробелов и

width < widthIncludingTrailingWhitespace .

когда базовая строка содержит конечные пробелы?

В моем случае основная строка — » Информация «. В нем есть конечное пространство, и все равно оно равно widthIncludingTrailingWhitespace нулю. Смотрите скриншот:

введите описание изображения здесь

В документации MSDN говорится:

width

Тип: ПОПЛАВКОВЫЙ

Значение, указывающее ширину отформатированного текста, игнорируя при этом завершающие пробелы в конце каждой строки.

widthIncludingTrailingWhitespace

Тип: ПОПЛАВКОВЫЙ

Ширина форматированного текста с учетом завершающего пробела в конце каждой строки.

Комментарии:

1. У меня была та же проблема, поэтому я просто добавил тест, если widthIncludingTrailingWhitespace.. Для меня это похоже на ошибку, это была большая программа, но, ИМХО, вы должны сообщить об этом в Microsoft, если у вас есть простой воспроизводимый тест.

Ответ №1:

Похоже, это ошибка MSDN.

Проблема возникает только с

 IDWriteTextLayout->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_TRAILING)
 

В случае, если

 IDWriteTextLayout->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_LEADING)
 

значение widthIncludingTrailingWhitespace рассчитано правильно.