3

NFC で正規化された文字列が与えられ、その文字列に完全な大文字と小文字の折り畳みを適用すると、結果も NFC で正規化されていると想定できますか?

この引用で Unicode 標準が何を伝えようとしているのか理解できません。

正規化は、大文字と小文字の折り畳みとも相互作用します。任意の文字列 X について、Q(X) = NFC(toCasefold(NFD(X))) とします。つまり、Q(X) は、X を正規化し、その結果をケース フォールディングし、その結果を正規化形式 NFC 形式にした結果です。正規化とケース フォールディングの定義方法により、Q(Q(X)) = Q(X) となります。Q を繰り返し適用しても結果は変わりません。ケース フォールディングは、NFC または NFD の正規化形式の正規正規化の下で閉じられます。

4

2 に答える 2

2

Unicode 文字列は、大文字と小文字を折り畳んだ後、NFC にない場合があります。例としては、U+00DF(LATIN SMALL LETTER SHARP S) の後にU+0301(COMBINING ACUTE ACCENT) が続きます。

X = U+00DF U+0301
NFC(X) = U+00DF U+0301
toCasefold(NFC(X)) = U+0073 U+0073 U+0301
NFC(toCasefold(NFC(X))) = U+0073 U+015B
于 2013-08-23T16:31:29.577 に答える
1

次の 2 つの質問をしました。

質問 1:toCasefold(NFC(X))バイナリは と等しいNFC(toCasefold(NFC(X)))ですか?

標準は、この質問に明示的に答えていません。(答えはイエスだと思います。ケースの折りたたみは正規化に影響しませんが、証拠はありません。)

質問 2: 引用文で教えてくれる Unicode 標準とは何ですか?

標準は、標準正規化後に再度大文字小文字の折り畳みを行う必要はないと言っているだけです。つまり、標準的な正規化 (NFC または NFD 形式への) では、文字の大文字と小文字が大文字から小文字に、またはその逆に変更されることはありません。これはあなたの最初の質問には答えません。

ケースフォールディングの後に再度標準正規化を行う必要があるかどうかを述べているわけではありません。

于 2013-08-23T14:35:25.773 に答える