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

问题描述 投票:1回答:1

我需要在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)));

有人可以帮我这个吗?

问候,

directx-11 direct2d directwrite
1个回答
0
投票

在这种情况下,我不认为旋转角度对用户来说是不应该的。它是布局过程的一部分,你不需要干涉,它是关于显示水平脚本和垂直脚本,见[1]。

关于变换的视觉伪像,这听起来很正常,看看考虑到变换的CreateGlyphRunAnalysis()方法,也许这会给你更好的结果。

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

© www.soinside.com 2019 - 2024. All rights reserved.