调用 DrawText 时DT_NOFULLWIDTHCHARBREAK的效果是什么?

What is the effect of the DT_NOFULLWIDTHCHARBREAK when calling DrawText?

本文关键字:是什么 NOFULLWIDTHCHARBREAK DrawText DT 调用      更新时间:2023-10-16

DrawText的 MSDN 文档对 DT_NOFULLWIDTHCHARBREAK 标志不是特别清楚。

它是否仍然允许DT_WORDBREAK使用非 CJK 语言?它如何打破中日韩语言?如果我理解正确,这些语言不会像英语那样使用空格。DT_NOFULLWIDTHCHARBREAK是否有特殊的规则来识别中日韩单词,或者它会在片假名单词中间中断?

文档说明了它的作用,尽管它使用了旧术语。"防止 DBCS(双宽字符串)处出现换行符,以便换行规则等效于 SBCS 字符串。"DBCS 是从代码页时代继承下来的旧术语。您可以将其视为"全角字符"的意思。全角字符的示例包括 CJK 统一表意文字、平假名、片假名和韩文字符。

默认情况下,全角字符被视为有效的断字符点。使用 DT_NOFULLWIDTHCHARBREAK 禁用此行为。

换句话说:

  • DT_WORDBREAK未设置:不发生断字。
  • DT_WORDBREAK已设置,但未设置DT_NOFULLWIDTHCHARBREAK:在空格和全角字符处创建分词符。
  • DT_WORDBREAKDT_NOFULLWIDTHCHARBREAK都设置:分词符仅在空格处进行。

该代码不进行任何语言分析来识别片假名单词的开始和结束位置。