C++ 调用DrawText时,DT_NOFULLWIDTHCHARBREAK的效果如何?
C++ 调用DrawText时,DT_NOFULLWIDTHCHARBREAK的效果如何?,c++,c,winapi,gdi,win32gui,C++,C,Winapi,Gdi,Win32gui,DrawText的MSDN文档对于DT_NOFULLWIDTHCHARBREAK标志不是特别清楚 它是否仍然允许DT_WORDBREAK使用非CJK语言?它是如何打破CJK语言的?如果我理解正确的话,这些语言不会像英语那样使用空格。 dtnnFululdWulthCalFrace是否有特殊的规则来识别CJK单词,或者它会在片假名单词的中间断裂吗? < P>文档会说它所做的,尽管它使用了旧的术语。“防止在DBCS(双宽字符串)处换行,以便换行规则等同于SBCS字符串。”DBCS是代码页中沿用的旧术
DrawText
的MSDN文档对于DT_NOFULLWIDTHCHARBREAK
标志不是特别清楚
它是否仍然允许
DT_WORDBREAK
使用非CJK语言?它是如何打破CJK语言的?如果我理解正确的话,这些语言不会像英语那样使用空格。<代码> dtnnFululdWulthCalFrace是否有特殊的规则来识别CJK单词,或者它会在片假名单词的中间断裂吗? < P>文档会说它所做的,尽管它使用了旧的术语。“防止在DBCS(双宽字符串)处换行,以便换行规则等同于SBCS字符串。”DBCS是代码页中沿用的旧术语。你可以把它看作是“全宽字符”的意思。全宽字符的示例包括CJK统一表意文字、平假名、片假名和韩文字符
默认情况下,全宽字符被视为有效的分词点。使用DT_NOFULLWIDTHCHARBREAK
禁用此行为
换言之:
未设置:未发生分词DT_分词
- 设置了
,但未设置DT_分词符
:分词在空白和全宽字符处进行DT_NOFULLWIDTHCHARBREAK
和DT_WORDBREAK
两组:仅在空白处进行分词DT_NOFULLWIDTHCHARBREAK
代码没有进行任何语言分析来识别片假名单词的开始和结束位置。谢谢您的回答。因此,通常CJK文本不使用空格,这是否意味着,例如,日文文本在指定DT_NOFULLWIDTHCHARBREAK时永远不会中断?建议使用什么方法来分隔无空格文本?如果在日语或中文文本上使用
DT_NOFULLWIDTHCHARBREAK
,它将永远不会中断(因为日语和中文文本不使用空格分隔单词)。因此,将其用于日文或中文文本可能不是一个好主意。文档中描述的用例是韩语,它使用空格分隔单词。对于日文和中文文本,DT_WORDBREAK
不带DT_NOFULLWIDTHCHARBREAK
将允许在每个字符后面加一个中断。