调用DrawText时DT_NOFULLWIDTHCHARBREAK有什么影响?

时间:2015-04-15 01:20:42

标签: c++ c winapi gdi win32gui

DrawText的MSDN文档对于DT_NOFULLWIDTHCHARBREAK标记并不是特别清楚。

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

1 个答案:

答案 0 :(得分:4)

文档说它做了什么,虽然它使用了旧的术语。 "防止在DBCS(双宽字符串)处换行,以便换行规则等同于SBCS字符串。" DBCS是从代码页天开始延续的旧术语。您可以将其视为"全角字符"。全角字符的示例是CJK统一表意文字,平假名,片假名和韩文字符。

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

换句话说:

  • DT_WORDBREAK未设置:不会发生任何字断裂。
  • DT_WORDBREAK已设置,但未设置DT_NOFULLWIDTHCHARBREAK:在空格和全角字符处进行分词。
  • 两个
  • DT_WORDBREAKDT_NOFULLWIDTHCHARBREAK都设置:仅在空格处进行单词分隔。

代码不进行任何语言分析来识别片假名词的开头和结尾。