关于DrawText标志的MSDN文档不是特别清楚。

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

最佳答案

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

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

换一种说法:

未设置

  • DT_WORDBREAK:没有断字。
  • 设置了
  • DT_WORDBREAK,但未设置DT_NOFULLWIDTHCHARBREAK:换行符在空格和全角字符处进行。
  • DT_WORDBREAKDT_NOFULLWIDTHCHARBREAK都设置了:仅在空白处才进行分词。

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

    关于c++ - 调用DrawText时DT_NOFULLWIDTHCHARBREAK有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29640012/

    10-11 22:45