Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调用DrawText时,DT_NOFULLWIDTHCHARBREAK的效果如何?_C++_C_Winapi_Gdi_Win32gui - Fatal编程技术网

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
将允许在每个字符后面加一个中断。