#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
рассчитано правильно.