兼容性正常形式的字符串是否已经处于相应的规范范式中?

时间:2013-03-28 23:58:22

标签: unicode normalization unicode-normalization

我的测试告诉我,从Unicode 6.2开始,完全兼容性分解中的所有字符都具有NFD_Quick_Check = Yes的属性。

这让我相信isNFKD(x)暗示isNFD(x),而isNFKC(x)暗示isNFC(x)。

我的结论是否正确?稳定性怎么样?这些含义是否可以保证适用于Unicode标准的未来版本?

2 个答案:

答案 0 :(得分:1)

你的结论是正确的。 Unicode标准附件#15的Design Goals部分指出:

toNFKC(x) = toNFC(toNFKC(x))
toNFKD(x) = toNFD(toNFKD(x))

关于稳定性,如果规范化字符串不包含任何未分配的代码点,则将适用于Unicode的未来版本。

答案 1 :(得分:0)

我发现here以下内容表明:

  

换句话说,NFC和NFKC的组成阶段相同 - 它们的分解阶段不同,NFKC应用兼容性分解。

然后还有这个:

  

有两种形式的规范化转换为复合字符:规范化形式C和规范化形式KC。 这些之间的区别取决于生成的文本是否与原始的非标准化文本等效,或者是与原始非标准化文本等效的兼容性。(在NFKC和NFKD中,K用于表示为了兼容性,避免与C代表组成混淆。)两种类型的规范化在不同情况下都有用。

     

在前三个图中, NFKD表格始终与NFD表格相同 NFKC表格始终与NFC表格相同,因此对于简单,这些列被省略。

这是我可以从文本中挑选出来的,这可能会对你问题的至少一部分有所启发。希望它有所帮助

Wikipedia article中还有这个表:

NFD 规范化形式规范分解:字符按规范等价分解,多个组合字符按特定顺序排列。

NFC 规范化形式规范构成:字符被分解,然后通过规范等价重新组合。

NFKD 规范化形式兼容性分解:字符通过兼容性进行分解,多个组合字符按特定顺序排列。

NFKC 规范化形式兼容性组成:字符通过兼容性分解,然后通过规范等价重新组合。

看看这些事情的解释,我认为你不能断定一个暗示另一个。 NFD通过规范等效分解,而NFKD通过兼容性分解。

在同一篇文章中,它还指出:

  

等价标准可以是规范(NF)或兼容性(NFK)。

对我而言,这意味着它的规范或兼容性。 NFD和NFKD做了不同的事情。


在这篇implementation notes文章中,它指出:

  

对于所有版本,即使在Unicode 4.1之前,也遵循以下策略:

     

规范化的字符串保证稳定;也就是说,一旦规范化,就会根据Unicode的所有未来版本对字符串进行规范化。