1

ここの例に従って、省略記号を使用してテキストをトリミングしました: http://cx5software.sakura.ne.jp/blog/2011/01/18/directwrite-ellipsis-trimming-sign/

英語のテキストには問題なく機能しますが、日本語のテキストには機能しません。誰も理由を知っていますか?

テキストを書き込もうとする私のコードのスニペットは次のとおりです。

                m_dwrite_factory->CreateTextFormat(L"Arial Unicode MS", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 14.0f * 96.0f/72.0f, L"ja-JP", m_dwrite_text_format.GetAddressOf());

                std::wstring text(L"日本語English");

                IDWriteInlineObjectPtr trimming;
                m_dwrite_factory->CreateEllipsisTrimmingSign(m_dwrite_text_format.Get(), trimming.GetAddressOf());

                IDWriteTextLayoutPtr layout;
                m_dwrite_factory->CreateTextLayout(text.c_str(), (UINT32)text.length(), m_dwrite_text_format.Get(), 50.0f, 100.0f, layout.GetAddressOf());

                DWRITE_TRIMMING trimmingOpt = {DWRITE_TRIMMING_GRANULARITY_CHARACTER, 0, 0};
                layout->SetTrimming(&trimmingOpt, trimming.Get());

                d2d->DrawTextLayout(D2D1::Point2F(0, 0), layout.Get(), m_d2d_brush_2.Get());

そして、これが結果のテキストです。省略記号は英語の文字に追加されますが、日本語のテキストには追加されないことに注意してください。

ここに画像の説明を入力

4

1 に答える 1