Я привел пример, чтобы обрезать тексты с использованием знака с многоточием: http://cx5software.sakura.ne.jp/blog/2011/01/18/directwrite-ellipsis-trimming-sign/IDWriteTextLayout не обрезает японское слово?
Он отлично подходит для текста на английском языке, но для японского текста он не работает. Кто-нибудь знает, почему?
Вот фрагмент моего кода, который пытается написать текст: «日本語 английский»
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());
А вот полученный текст. Обратите внимание, что знак эллипса добавляется на английском языке, но не по японскому тексту.
Вы должны показать тест с гораздо более длинным текстом, который будет иметь значение. – CodeAngry
Это не имеет значения. Я попытался с более длинным текстом, более длинным макетом, но японский текст никогда не обрезается. – nikoniko