在 QString 中查找“实际”字符(字素)

Seb*_*zus 5 unicode qt utf-16

假设我有一个 QString 可能包含任何 Unicode 字符,我想遍历它的字符或计算它们。“字符”是指用户感知的内容(大致相当于“字形”),而不仅仅是 QChars(16 位 Unicode 字符)。一些“实际”字符由几个 QChars(代理对;基本字符 + 组合标记)构成。对于一些组合字符,我可能会通过规范化字符串来创建复合字符,但这并不总是有帮助。

我是否忽略了将 QString 拆分为“实际”字符的内置函数?

或者如果我必须自己解析它,这是结构(在 EBNF 中)还是我遗漏了什么?

character = ((high_surrogate, low_surrogate) | base_character), {combining_mark}
Run Code Online (Sandbox Code Playgroud)

base_character作为不是代理或组合字符的每个 QChar)

Seb*_*zus 5

经过更多的研究,我找到了“实际字符”的术语,字形,以及用于查找字形边界的 Qt 类:QTextBoundaryFinder