サンプル アプリケーション DWriteSimpleHelloWorld では、テキストをレンダリングします
wszText_ = L"Hello World using Direct\u00ADWrite!";
DWrite にHwndRenderTarget
-- 事実上、私のアプリケーションのウィンドウに。DrawText
のメソッドでテキストをレンダリングしますID2D1HwndRenderTarget
。­
Web ブラウザでエンティティ (ソフト ハイフンまたは音節ハイフン) を含むテキスト文字列のレンダリングに準拠した動作を期待してい ます。
レンダリングされたフレーズの幅にウィンドウが十分に収まる場合、次のようなテキストが表示されます。
Hello World using DirectWrite!
しかし、フレーズの末尾がウィンドウに収まらないようにウィンドウのサイズを変更すると、次のように表示されます。
Hello World using Direct
Write!
Web ブラウザーは、最初の行の末尾にハイフンを付けてこのテキストをレンダリングします。
Hello World using Direct-
Write!
私の目的は、ユーザーDWrite
がアプリケーションに長い単語のハイフネーションのヒントを挿入できるようにすることですが\u00AD
、「隠された」空白として機能するように見えます。
ソフトハイフンの定義と使用に関する微妙な点について読んだことがあります (たとえば、https://www.cs.tut.fi/~jkorpela/shy.html ) DWrite
。 ? もしそうなら、必要に応じて行末にハイフンを生成するハイフネーションのヒントをどのように実装できますか?
文字列のグリフ インデックスを使用して、 のメソッドでwszText_
作成されたジオメトリとしてテキストを描画すると、本来の位置にハイフンを含む文字列が表示されることに注意してください。GetGlyphRunOutline
IDWriteFontFace
Hello World using Direct-Write!