Вертикальный текст с DirectWrite (повернут на + 270 °) - PullRequest
1 голос
/ 07 марта 2019

Мне нужно показать вертикальный текст в моем приложении direct2d.Следующий код форматирования текста поворачивает текст на + 90 °.

m_textFormat->SetReadingDirection(DWRITE_READING_DIRECTION_BOTTOM_TO_TOP));
m_textFormat->SetFlowDirection(DWRITE_FLOW_DIRECTION_RIGHT_TO_LEFT));

enter image description here

Но я хочу повернуть текст на + 270 °, как показано ниже:

enter image description here

Существует множество других опций в SetReadingDirection и SetFlowDirection.Но никто из них не работает.В следующем примере также поворачивается только на + 90 °: Пример вертикального текста DirectWrite

Если я поверну текст вручную, он выглядит размытым:

renderTarget->SetTransform(Matrix3x2F::Rotation(m_rotation, Point2F(left + height / 2.0f, top + (bottom - top) / 2.0f)));

Может кто-нибудь помочь, пожалуйстамне с этим?

С уважением,

1 Ответ

0 голосов
/ 08 марта 2019

Я не думаю, что угол поворота для пользователя в этом контексте, и это не должно быть.Это часть процесса компоновки, в которую вам не нужно вмешиваться, речь идет об отображении горизонтальных сценариев наряду с вертикальными, см. [1].

Относительно визуальных артефактов преобразований, которые звучат нормально, посмотрите на CreateGlyphRunAnalysis() метод, который учитывает преобразование, возможно, он даст вам лучшие результаты.

[1] https://www.unicode.org/reports/tr50/

...