In a sample application DWriteSimpleHelloWorld I render a text
wszText_ = L"Hello World using Direct\u00ADWrite!";
to a DWrite HwndRenderTarget
-- effectively, to a window of my application. I render text with a DrawText
method of ID2D1HwndRenderTarget
.
I expect a behavior conformant to a rendering of text strings containing entity ­
(soft or syllable hyphen) in web browsers.
If a window is wide enough to fit the width of the rendered phrase, I see a text like
Hello World using DirectWrite!
But when I resize my window so that the tail of a phrase fails to fit into the window, I see :
Hello World using Direct
Write!
while web browsers would render this text with a hyphen at the end of a first line:
Hello World using Direct-
Write!
My purpose is to let users insert hyphenation hints for long words in my DWrite
application, but what I see is as if \u00AD
works as a "hidden" whitespace.
I have read of subtleties concerning a soft hyphen definition and usage (for example, https://www.cs.tut.fi/~jkorpela/shy.html), so I humbly ask : is the observed behavior of DWrite
"by design"? If so, how one can implement hyphenation hints that would produce hyphens at the end of lines when needed?
Notice that when I use glyph indices of my wszText_
string to draw text as a geometry created with a method GetGlyphRunOutline
of IDWriteFontFace
, I see a string containing a hyphen in its due position:
Hello World using Direct-Write!