我认为“用户感知字符”(以下称为UPC)迭代器在unicode库中非常有用。UPC是指unicode标准附件29中讨论的意义,即用户将其视为字符,但是可能以unicode表示为代码点或字素簇。因为我通常使用拉丁语言,所以我总是拿出诸如“我想将ü作为一个UPC来处理,而不管UPC是一个字素簇还是单个代码点”之类的示例。
反对UPC迭代器(或字形集群迭代器,请选择)的同事“你可以规范化为NFC,然后使用代码点迭代”和“没有字形集群迭代的用例”。
我一直在思考以拉丁语为中心的用例,这些用例可能无法很好地转换为unicode领域-就像我在做终端输出一样,我想将一列填充为N列宽度,所以我想知道多少个UPC在一串...
我想我想知道的是:
目前尚不清楚UAX#29如何回答你的问题:
即使对于仅使用拉丁字母的语言,也存在许多这样的字素簇,因为并非所有组合标记都具有与所有其他字母/形式的成分-例如,Wikipedia上此表中的空白。UAX#29中的表1a具有几个非拉丁语示例。
这是UAX#29的目的:将字素群集操作概括为Unicode支持的所有语言。
我只是重新阅读了UAX#15 ...您是在指第5节“复合排除表”吗?我必须承认,我难以理解本节的内容并将其应用于我所知道的语言。我想我正在询问文化知识-我需要多久才能知道字素簇?告诉我的客户我们不支持他们是否合理?我公司中有一个因素倾向于忽略他们的存在,直到他们咬我们。我想知道这些风险,并提出令人信服的论据(如果存在)。
wikepedia表似乎是我在寻找拉丁语言的地方。您或其他任何人都可以告诉我这些被排除的集群有多普遍,以及我可能在哪些国家遇到它们?
既然支持字素簇的算法是众所周知的,并且在任何体面的Unicode库中都已实现,那么不支持它们就显得更加困难。