带有DirectWrite的垂直文本(旋转+ 270°)

时间:2019-03-07 11:51:09

标签: directx-11 direct2d directwrite

我需要在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 vertical text sample

如果我手动旋转文本,看起来会模糊:

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

有人可以帮我吗?

此致

1 个答案:

答案 0 :(得分:0)

在这种情况下,我不认为旋转角度对用户有用,也不应该。这是布局过程的一部分,您无需干预,它与同时显示水平脚本和垂直脚本有关,请参阅[1]。

关于转换的视觉伪像,听起来很正常,请考虑将转换考虑在内的CreateGlyphRunAnalysis()方法,也许会为您带来更好的结果。

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