调用 DrawText 时DT_NOFULLWIDTHCHARBREAK的效果是什么?
What is the effect of the DT_NOFULLWIDTHCHARBREAK when calling DrawText?
DrawText
的 MSDN 文档对 DT_NOFULLWIDTHCHARBREAK
标志不是特别清楚。
它是否仍然允许DT_WORDBREAK
使用非 CJK 语言?它如何打破中日韩语言?如果我理解正确,这些语言不会像英语那样使用空格。DT_NOFULLWIDTHCHARBREAK
是否有特殊的规则来识别中日韩单词,或者它会在片假名单词中间中断?
文档说明了它的作用,尽管它使用了旧术语。"防止 DBCS(双宽字符串)处出现换行符,以便换行规则等效于 SBCS 字符串。"DBCS 是从代码页时代继承下来的旧术语。您可以将其视为"全角字符"的意思。全角字符的示例包括 CJK 统一表意文字、平假名、片假名和韩文字符。
默认情况下,全角字符被视为有效的断字符点。使用 DT_NOFULLWIDTHCHARBREAK
禁用此行为。
换句话说:
-
DT_WORDBREAK
未设置:不发生断字。 -
DT_WORDBREAK
已设置,但未设置DT_NOFULLWIDTHCHARBREAK
:在空格和全角字符处创建分词符。 -
DT_WORDBREAK
和DT_NOFULLWIDTHCHARBREAK
都设置:分词符仅在空格处进行。
该代码不进行任何语言分析来识别片假名单词的开始和结束位置。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 文件系统:复制功能的速度秘诀是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么