为什么LATIN SMALL LETTER DOTLESS I,上面结合点并没有被标准化为" i"在NFC形式?

时间:2018-04-29 12:59:55

标签: unicode unicode-normalization

Python中的示例:

>>> s = 'ı̇'
>>> len(s)
2
>>> list(s)
['ı', '̇']
>>> print(", ".join(map(unicodedata.name, s)))
LATIN SMALL LETTER DOTLESS I, COMBINING DOT ABOVE
>>> normalized = unicodedata.normalize('NFC', s)
>>> print(", ".join(map(unicodedata.name, normalized)))
LATIN SMALL LETTER DOTLESS I, COMBINING DOT ABOVE

如您所见,NFC标准化不会将无点i +点组成正常i。这有什么理由吗?这是疏忽吗?或者它不包括在内,因为NFC应该是NFD的完美反转(并且不希望将i分解为无点i +点)。

1 个答案:

答案 0 :(得分:3)

虽然NFC不是完美的反转"对于NFD,这是根据与NFD相同的分解映射来定义NFC。 NFC基本上定义为NFD,然后重新组合某些NFD分解对。由于LATIN SMALL LETTER I没有分解映射,因此它永远不会是重组的结果。