我认为“用户感知字符”(下文称为 UPC)迭代器在 unicode 库中非常有用。我所说的 UPC 是指 unicode standard annex 29 中讨论的意义。 ,这是用户所感知的字符,但可能在 unicode 中表示为代码点或字素簇。由于我通常使用拉丁语言,因此我总是会提出诸如“我想将 ü 作为一个 UPC 处理,无论 UPC 是字素簇还是单个代码点”之类的示例。
反对 UPC 迭代器(或字形簇迭代器,您可以选择)的同事反驳道“您可以规范化为 NFC,然后使用代码点迭代”,以及“没有字形簇迭代的用例”。
我一直在思考以拉丁语为中心的用例,这可能不能很好地转化为unicode宇宙——就像我正在做终端输出一样,我想将一列填充到N列宽度,所以我想知道字符串中有多少个 UPC...
我想我想知道的是:
- 是否存在无法标准化为单个代码点的有意义的字素簇?西方用户中是否有可能出现这种情况?我假设韩语或阿拉伯语就是这种情况,但我必须承认我对此一无所知。
- 是否有其他语言提供 UPC/grapheme 集群迭代/操作? Unicode 规范有什么建议吗?
最佳答案
目前还不清楚 UAX #29 为何没有回答您的问题:
存在很多这样的字素簇,即使对于仅使用拉丁字母的语言也是如此,因为并非所有组合标记都与所有其他字母/形式组成,例如 this table on Wikipedia 中的间隙。 UAX #29 中的表 1a 有几个非拉丁语示例。
这就是 UAX #29 的目的:将字素簇操作推广到 Unicode 支持的所有语言。
关于unicode - unicode 中不可还原的字素簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985210/