在示例应用程序 DWriteSimpleHelloWorld 中,我呈现了一个文本
wszText_ = L"Hello World using Direct\u00ADWrite!";
到 DWrite HwndRenderTarget
- 有效地,到我的应用程序的窗口。我DrawText
使用ID2D1HwndRenderTarget
. 我希望行为符合 ­
在 Web 浏览器中呈现包含实体(软连字符或音节连字符)的文本字符串。
如果窗口足够宽以适合呈现的短语的宽度,我会看到如下文本
Hello World using DirectWrite!
但是,当我调整窗口大小以使短语的尾部无法放入窗口时,我看到:
Hello World using Direct
Write!
而网络浏览器会在第一行的末尾用连字符呈现此文本:
Hello World using Direct-
Write!
我的目的是让用户在我的DWrite
应用程序中为长词插入连字符提示,但我看到的好像\u00AD
是一个“隐藏”的空格。
我读过关于软连字符定义和使用的微妙之处(例如,https://www.cs.tut.fi/~jkorpela/shy.html),所以我谦虚地问:观察到的DWrite
“设计”行为是? 如果是这样,如何实现在需要时在行尾产生连字符的连字符提示?
请注意,当我使用wszText_
字符串的字形索引将文本绘制为使用 方法创建的几何图形GetGlyphRunOutline
时IDWriteFontFace
,我看到一个字符串在其应有的位置包含一个连字符:
Hello World using Direct-Write!