<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> では、実際には同じ意味を表す列を複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の列で表せることがあります。
この時、そのうちの一つの表現を代表として定めた上で、それへの変換方法を規定することができ、
その表現、あるいは変換方法を<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">normalization form</rt></rubyb></dfn>といいます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>に変換することを<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">normalization</rt></rubyb></dfn>といいます。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="en-us">UAX #15: Unicode Normalization Forms</cite> (<time>2010-09-18 09:52:06 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/reports/tr15/">http://www.unicode.org/reports/tr15/</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> <cite><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">The Unicode Standard</anchor>, Version 13.0 - ch02.pdf</cite>, <time>2020-03-09T17:53:32.000Z</time>, <time>2020-12-31T08:27:48.757Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.unicode.org/versions/latest/ch02.pdf#G27986">https://www.unicode.org/versions/latest/ch02.pdf#G27986</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/versions/latest/ch02.pdf#page=41">http://www.unicode.org/versions/latest/ch02.pdf#page=41</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Standard</anchor> (<time>2016-07-19 02:38:02 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/versions/Unicode9.0.0/ch03.pdf#page=69">http://www.unicode.org/versions/Unicode9.0.0/ch03.pdf#page=69</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[164]</anchor-end> <cite>The Unicode Standard, Version 13.0 - ch07.pdf</cite>, <time>2020-03-09T17:53:38.000Z</time>, <time>2020-12-07T09:15:13.901Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.unicode.org/versions/latest/ch07.pdf#M9.37081.HeadingBreak.79.Combining.Marks">https://www.unicode.org/versions/latest/ch07.pdf#M9.37081.HeadingBreak.79.Combining.Marks</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite xml:lang="en-us">Unicode Character Encoding Stability Policy</cite> (<time>2010-12-28 03:43:17 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/policies/stability_policy.html#Normalization">http://www.unicode.org/policies/stability_policy.html#Normalization</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> <cite xml:lang="en-us">UAX #44: Unicode Character Database</cite>, <time>2020-03-06T22:23:11.000Z</time>, <time>2020-10-21T08:38:06.672Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.unicode.org/reports/tr44/#Decompositions_and_Normalization">https://www.unicode.org/reports/tr44/#Decompositions_and_Normalization</anchor-external></li></ul></refs></section><section><h1>正規化形</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>にはいくつかのバリエーションがあります。<figure class="short list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HFS+のNFD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FCC</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FCD</anchor></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>と他の文字列<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>を組み合わせたもの、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>と組み合わせたもの、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>とは異なる適用範囲での<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>などについては、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列正規化</anchor>を参照。</p></section><section><h1>正規化形の性質</h1><section><h1>固有性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">固有性<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">uniqueness</rt></rubyb>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>の最も重要な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">設計目標</anchor>とされています。
2つの等価な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>は完全に一致します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src>。すなわち、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 2つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>正準等価</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">canonical equivalent</rt></rubyb>なら、
両者に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を適用した結果は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>します。また、両者に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>
を適用した結果は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 2つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>が<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>互換性等価</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">compatibility equivalent</rt></rubyb>なら、
両者に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor> を適用した結果は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>します。また、両者に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor>
を適用した結果は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor> はいずれも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">冪等</anchor>です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> これは <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;25</anchor-internal>、<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</anchor-internal> から導かれます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">訂正 #5</anchor> による変更以前は実は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">冪等</anchor>でないケースが存在しました。</li></ul></li></ul></p></section><section><h1>安定性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> ここでいう<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">安定性<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">stability</rt></rubyb>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>に直接関係しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>がそのまま無変更で残ることをいいます。具体的には、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性分解</anchor>を持った<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> を適用しても元の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>のまま結果に含まれます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>が含まれていなければ、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>は変化しないことを原則とします。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成除外表</anchor>に含まれるものは例外です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成</anchor>に無関係な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>が含まれていても、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成</anchor>の結果には影響しません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成済文字</anchor>に対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>に加え、更に別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>があったとしても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>同士の順序の如何を問わず、結局<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成</anchor>は行われ、それに加えてその別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>が残ります。</li></ul></li></ul></p></section><section><h1>効率性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>は<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">効率的<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">efficiency</rt></rubyb>に実装可能であるとされています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src>。
具体的には、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>が効率良く実装可能であって、とりわけ既に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> または <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>
である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>に対して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を高速に得ることが可能です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成</anchor>を行う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>は、必ずしも最初の形を生成するものではありません。
最小形の計算は高価である可能性があるためです。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 7</src></li></ul></p></section></section><section><h1>安定性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Consortium</anchor> の規定する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor> については、<strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">安定性</anchor></strong>、つまり <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 
の改訂を通じて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>に非互換な変更が加わらないことがある程度保証されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> 基本的には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">安定性</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>が定義されている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>に関するものです。
新たな <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicodeの版</anchor>で新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>が追加されると、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>の結果は変化するかもしれません。</p><section><h1>強い正規化安定性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>強い正規化安定性</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">strong normalization stability</rt></rubyb></dfn>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 4.1 とそれ以降において、
ある版で割り当て済みの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>のみから構成される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>した結果は、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>を以降の任意の版で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>した結果と一致します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> そのために、一旦割り当てられた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">分解写像</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準結合クラス</anchor>が改訂によって変化しないことが保証されています。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> この安定性は割り当て済みの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>のみで構成される場合についてのものであり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">未割当</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>が含まれているときには必ずしも保証されません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> この安定性が保証されるのは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 4.1 以降ですが、実際には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 3 以降においても
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Corrigendum #2</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Corrigendum #3</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Corrigendum #4</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Corrigendum #5</anchor>
の影響を受けない範囲では成立します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 11.2</src></p></section><section><h1>弱い正規化安定性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>弱い正規化安定性</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">weak normalization stability</rt></rubyb></dfn>:
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 3.1 とそれ以降において、ある版で割り当て済みの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>のみから構成される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>した結果得られる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>は、
以降の任意の版においても<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>済みです。また、それ以前で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 3.1 までの版であって、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>すべてが含まれる版においてもまた、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>済みです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal>、<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 11.1</src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> そのために、一旦割り当てられた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">分解写像</anchor>がいくつかの例外ケースを除き改訂によって変化しないこと、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準結合クラス</anchor>が改訂によって変化しないことが保証されています。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>の<dfn xmlns="http://www.w3.org/1999/xhtml"><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>合成版</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">composition version</rt></rubyb></dfn>は「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UCD</anchor>
3.1.0」であると規定されています <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 3</src>。これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">弱い正規化安定性</anchor>が 3.1.0 
以降について成立するということです。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強い正規化安定性</anchor>が保証されれていれば、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">弱い正規化安定性</anchor>もまた保証されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 「XY」の2文字から「Z」の1文字への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成</anchor>を追加する場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">弱い正規化安定性</anchor>が満たされるためには、
3文字すべてが新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>であるか、または <var>X</var> と <var>Y</var> 
のどちらかだけが古い<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>であるかでなければなりません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 3</src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> また、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>に影響するような既存の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特性</anchor>の変更も認められないことになります。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 3</src></p><section><h1>例</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 「Q + caron」という<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor> (の列) を考えます。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成版</anchor>である 3.1.0 
にはこれを1<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>で表す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成済文字</anchor>は含まれていません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>の2文字で表すしかなく、これが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規形</anchor>です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> その後の版で、「Q + caron」を1文字で表す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成済文字</anchor>が追加されたとしましょう。
自然に考えれば「Q-caron」 → 「Q」 + 「caron」という<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor>) を追加したいところですが、
そうすると以前の版で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> だった「Q」 + 「caron」の2文字の表現が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>
ではなくなり、新しい「Q-caron」に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>しなければならなくなってしまいます。
これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">弱い正規化安定性</anchor>の定義に反します。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Consortium</anchor> は新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成</anchor>を追加することを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非推奨</anchor>としており、
従って「Q-caron」のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>が後から追加されることは原則として無いようです。 <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 3</src></comment-p></section></section><section><h1>Unicode 3.1 以前の非互換性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 3.1.0 が「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成版</anchor>」ということは、逆にそれまでの版と現在とでは互換性がない変更が行われていることを意味します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> たとえば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 2.1.9 において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル音節</anchor>に関する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性写像</anchor>が削除され、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>の結果が変化しています。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 6</src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 3.0.1 と 3.1 の間に発行された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">訂正 #2</anchor> では、
誤って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成除外表</anchor>から欠落していた1<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成除外表</anchor>に追加され、非互換性が生じています。</p></section><section><h1>Unicode 3.1 から Unicode 4.1 までの非互換性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UAX #15</anchor> では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強い正規化安定性</anchor>が保証されていない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 4.1 
よりも前の版との互換性が必要な時の対処方法として、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 4.1 以前の動作に近づける <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 11.3</src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> 動作が変わってしまった<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の利用を禁止する <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 11.4</src></li></ul></p><p>... の2通りを挙げて説明しています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;41</anchor-internal> は利用頻度が少ない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>だから問題ないことが多かろうなどと説明されていますが、
ひどいもんですなw</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 3.1 と 4.1 の間には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">訂正 #3</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">訂正 #4</anchor>が発行され、
6文字について<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor>が修正されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 4.0.1 と 4.1 の間には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">訂正 #5</anchor> が発行され、「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妨害</anchor>」
の定義が修正されて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">冪等性</anchor> (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;27</anchor-internal>) が保たれるようになっています。
それ以前も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">冪等性</anchor>は設計目標に入っていましたが、定義の誤りにより厳密には成立していませんでした。</p></section></section><section><h1>分解と合成</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化文字列</anchor><var>文字列</var>に対して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準合成</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>といった<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor>が定義されています。
4つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>は、その組み合わせとして次のように定義されています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;54</anchor-internal></src>。</p><figure class="list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>: <var>文字列</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準合成</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>: <var>文字列</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準合成</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>: <var>文字列</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor>: <var>文字列</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> 次のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">手順群</anchor>に整理できます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;54</anchor-internal></src>。<figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> <var>文字列</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">完全分解</anchor>を適用します。 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> なら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準等価性</anchor>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor> なら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換等価性</anchor>を用います。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor> なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> <var>文字列</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準合成アルゴリズム</anchor>を適用します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> それ以外なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <var>文字列</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準再順序付けアルゴリズム</anchor>を適用します。</li></ol></li></ol></figure></p></section><section><h1>大文字・小文字との関係</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;51</anchor-internal> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラミング言語</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">識別子</anchor>について<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字・小文字不区別</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>を両方採用する場合について考察しています。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <cite xml:lang="en-us">UAX #31: Unicode Identifier and Pattern Syntax</cite> (<time>2013-09-30 19:53:19 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/reports/tr31/#normalization_and_case">http://www.unicode.org/reports/tr31/#normalization_and_case</anchor-external></li></ul></refs></section><section><h1>正規化が好ましくない挙動を示すケース</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>は破壊的な演算です。適用は極力避けるべきです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[125]</anchor-end> 
特に、
中長期的に保存する一次データに
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を適用すると、
元データは二度と回復できなくなってしまいますから、
これは絶対に避けるべきです。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor>
は破壊的です。
データの意味を致命的に変化させてしまうことが多いです。
特別に望ましい理由があって避けられない場合を除き、
使うべきではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>
が好ましいとされており、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>
はそれと逆方向の変換であるため、
特に理由がなければ
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>
は使うべきではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> はデータを破壊することがあります。
影響が完全に理解されている場合を除き使うべきではありません。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">常用漢字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">旧字体</anchor>のかなり多くが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK互換漢字</anchor>で表されています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>すると<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">旧字体</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">新字体</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字化け</anchor>が起こります。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK統合漢字</anchor>との<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字形</anchor>差を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK互換漢字</anchor>で表したものが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>で破壊されるケースがあります。
(ありますというか、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号点</anchor>の個数でいえばそのほうが多い。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> 
その対策で導入された
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK互換漢字</anchor>に対応した <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SVS</anchor> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK互換漢字</anchor>と同じものを表しますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>で同一視される関係にはありません。
大元の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK互換漢字</anchor>はただの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK統合漢字</anchor>と同一視されてしまうという、
ねじれた関係にあります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>SVS</anchor> </sw-see></p><p>つまり<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>はデータの破壊には役に立ちますが、
検索の役には立ちません。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル</anchor>に適用すると望ましからざる結果になることがあります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>KS X 1026-1</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル</anchor>以外でも文字の意味を考慮しないで似た文字に変化させてしまうものなので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル</anchor>で適用前後で文意が変わってしまうとしても特別に問題ということでもなさそうです。
(文意が変わってしまうケースは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル</anchor>関係なく <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor> を使うべきではないので。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">古ハングル</anchor>が混じったデータに適用すると<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル音節</anchor>の構造を壊してしまうことがあります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>KS X 1026-1</anchor> </sw-see></p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">combining enclosing mark</anchor>
を使った合成済文字と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字列</anchor>とで挙動が異なり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>の対象から除外されているケースがあります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>combining enclosing mark</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準等価</anchor>な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>により発生する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>の順序の入れ替えが好ましからざる変化をもたらすことがあります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <code xmlns="http://www.w3.org/1999/xhtml" class="charname" xml:lang="en">CGJ</code> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> 
単独の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアクリティカルマーク</anchor>の多くは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>で
<code>U+0020</code> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアクリティカルマーク</anchor>に分解されてしまいます。
<code>U+0020</code>
になることによって都合が悪いケースもあります。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>結合文字</anchor>, <anchor>発音区別符付き仮名</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[85]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合字</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>が付いていた場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適用</anchor>先が変化してしまいます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;164</anchor-internal></src></p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[82]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラテン文字</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キリル文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底文字</anchor>に重ねる形や一部を変形される形の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアクリティカルマーク</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">overlaid diacritics</anchor>)
の扱いは一貫していません。
合成済文字と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底文字</anchor> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>の2種類の表現方法があっても、
大まかにいって、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">数式</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">越南</anchor>用のものは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>され、
それ以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラテン文字</anchor>系のものは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>されないようです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;164</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;88</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> 
上下に付け加える<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアクリティカルマーク</anchor>と違って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字形</anchor>の変化が単純ではないためのようです。
全然<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字形</anchor>が違うのに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合字</anchor>で処理される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インド系文字</anchor>とはずいぶん扱いが違います。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[84]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合字</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>で分解されるとしても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor>だけでは分解されません。
例えば
<code>U+FB01</code> は 「fi」 に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>される
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor>されない) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合字</anchor>です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>されそうなのにされないケース (事例ごとにされたりされなかったり一貫しないケース)
は珍しくありません。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>互換分解</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> 
つまり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>に期待される効果、
例えば一致とか検索とか、
似た文字によるセキュリティー問題の回避のような類には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
で定められている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>では必ずしも十分ではありません。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>による<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合文字</anchor>の順序入れ替えや<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成済文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結合列</anchor>の置換は意味的に等価ということになっていますが、
操作前後の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字のレンダリング</title></anchor>は実装によるところが大きく、
必ずしも同じように表示されるとは限りません。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;114</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> 
規格上はどうだ、意味的にはこう定義されている、といったところで現実はそうなっていません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> 
関連: 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準再順序付け</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発音区別符付き仮名</anchor></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> <cite xml:lang="ja">PDF 千夜一夜: PDFと文字 (41) – Unicode標準形式NFCの問題点(続き)</cite>, <time>2007-11-02T02:02:26.000Z</time>, <time>2023-04-11T14:30:55.242Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://blog.antenna.co.jp/PDFTool/archives/2006/02/pdf_41.html">https://blog.antenna.co.jp/PDFTool/archives/2006/02/pdf_41.html</anchor-external></p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[91]</anchor-end> 
何も考えずに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor> を使えばええやん、
と気づかずにデータを破壊する人々</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[92]</anchor-end> <cite xml:lang="en">Normalization in HTML and CSS</cite>, <time>2016-02-06T06:31:42.000Z</time>, <time>2021-08-25T12:02:05.211Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/International/questions/qa-html-css-normalization">https://www.w3.org/International/questions/qa-html-css-normalization</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> <cite xml:lang="en">Unicode normalization could change the structure of a URL · Issue #626 · whatwg/url · GitHub</cite>, <time>2021-08-25T12:00:06.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/url/issues/626">https://github.com/whatwg/url/issues/626</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[93]</anchor-end> 
破壊的変換したら構造が破壊されるの、当たり前じゃんw</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> <cite xml:lang="ja"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GlyphWiki</anchor>-ノート:登録できるグリフについて - GlyphWiki</cite>, <time>2022-11-24T14:34:26.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://glyphwiki.org/wiki/GlyphWiki-talk:%e7%99%bb%e9%8c%b2%e3%81%a7%e3%81%8d%e3%82%8b%e3%82%b0%e3%83%aa%e3%83%95%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6">https://glyphwiki.org/wiki/GlyphWiki-talk:%e7%99%bb%e9%8c%b2%e3%81%a7%e3%81%8d%e3%82%8b%e3%82%b0%e3%83%aa%e3%83%95%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</anchor-end> <cite xml:lang="ja">グループ:twe_サンドボックス2 - <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GlyphWiki</anchor></cite>, <time>2022-11-24T14:34:55.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://glyphwiki.org/wiki/Group:twe_%e3%82%b5%e3%83%b3%e3%83%89%e3%83%9c%e3%83%83%e3%82%af%e3%82%b92@78">https://glyphwiki.org/wiki/Group:twe_%e3%82%b5%e3%83%b3%e3%83%89%e3%83%9c%e3%83%83%e3%82%af%e3%82%b92@78</anchor-external></li></ul></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;99</anchor-internal> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字形</anchor>の区別のために <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CJK互換漢字</anchor>を使っている事例、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> だと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル音節</anchor> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル字母</anchor>の2文字になるのを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ハングル字母</anchor>3文字で表している事例。
これらで非 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> が意図的に使われている。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Twitter</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> 強制による被害事案: <sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>異体字</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> <cite xml:lang="ja">XユーザーのYusuke S.さん: 「「原稿は必ずコピペ」にも落とし穴があるのでお気をつけください。Macの場合、CJK互換漢字の一部が正規化され、アドビのアプリにペーストしたら字形が変わることがあります。回避策は @monokano さん謹製のアプリを利用するのが最善。 正規化について:https://t.co/opIYxtxwGW https://t.co/7g70Owzxw0」 / X</cite>, <time>午後4:59 · 2025年7月24日<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2025-07-24T07:59:45.000Z</attrvalue></time>, <time>2025-07-25T07:11:33.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://x.com/Uske_S/status/1948292003944698059">https://x.com/Uske_S/status/1948292003944698059</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <cite xml:lang="ja">macOS 26 Tahoeで、SynologyなどのNASにネットワーク共有されたボリュームへTime Machineバックアップができない不具合はUnicodeの正規化形式(NFD/NFC)問題が原因で、macOSのSMBサーバーでも発生するので注意を。 | AAPL Ch.</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">applech2</anchor>, <time>2025-09-25T08:28:50.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://applech2.com/archives/20250922-macos-26-tahoe-nas-time-machine-issue.html">https://applech2.com/archives/20250922-macos-26-tahoe-nas-time-machine-issue.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal> 同じシステム上で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> にするところと <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> にするところが混在していることに起因する問題とのこと。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="140" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[140]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apple</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> 強制による被害: <sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>HFS+のNFD</anchor>, <anchor>濁点問題</anchor> </sw-see></p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> では、一部で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> が使われます。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">完全正規化</anchor>も使われます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の <code class="DOMm" xml:lang="en">normalize</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メソッド</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor> に対応しています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PRECIS</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化規則</anchor>は4つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>のいずれかを要求しています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> それ以外の用法については、各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化形</anchor>の項を参照。</p><section><h1>いつ Unicode 正規化を使うべきか</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>という字面はいかにもやるべきことのように思わされますが、
実際に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を使うべき場面は限られています。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を使うことが<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</MUST>されている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ形式</anchor>では、
当該 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を使う以外に選択肢がありません。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="127" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[127]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>によるデータ破壊が懸念されるケースでは、
当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>の利用を断念するしかありません。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列の比較</anchor>では、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を手順に組み込むことで、
同じ意味の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>や似た<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>を同一視することができます。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</anchor-end> しかし、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>だけで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体字</anchor>の同一視などが実現できると思ってはいけません。
見た目が同じなのに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>で同一にならなかったり、
見た目が違うのに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>で同一になったり、
といった事情は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>ごとの歴史的経緯で決まっていて、ほとんど統一的な基準がありません。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> 「親切」な比較は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字体系</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>や適用分野ごとの個別の基準により、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字・小文字不区別</anchor>だとか、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">平仮名</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">片仮名</anchor>の同一視だとか、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体字シソーラス</anchor>のような仕組みが別途必要です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>がそのまま過不足なく使えることはまずありません。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="131" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[131]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字のレンダリング</anchor>では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">shaping</anchor> の過程で
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>やそれに関係する処理を行うことがあります。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[132]</anchor-end> これは表示したい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>の全体に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を適用するという意味では<strong>ありません</strong>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">レンダリング</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>からの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフ</anchor>データの取り出しなどの処理の際に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字体系</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォント</anchor>形式などの要件に応じて部分文字列に適用することもある、
ということです。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="133" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[133]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コードへの変換<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字コードの変換</title></anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">翻字</anchor>等の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変換</anchor>の処理では、
より多くの入力を当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>等で記述できるように、
あるいは変換処理の実装上の都合などのため、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を使うことがあります。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="134" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[134]</anchor-end> この場合そもそも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> 以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
と異なる符号化モデルを採用しているので、多かれ少なかれ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>の意味に影響するような変化が加わってしまうことは避けがたく、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コードの変換</anchor>の処理の設計者が慎重に検討して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>によって発生する破壊的変化が十分に許容可能だと判断されるなら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>による破壊のデメリットよりも変換成功のメリットが上回るということです。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="139" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[139]</anchor-end> この用途でも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>では過不足がある場合もありますから、
変換や変換対象の性質を考慮してケースバイケースで望むのが好ましいでしょう。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入力</anchor> (例: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵盤入力</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IME</anchor>) は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> で異なる表現となる場合には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を生成するべきだとよくいわれます。
しかし、これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を適用するべきという意味ではありません。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="136" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[136]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を適用したらそうなるという文字列を生成することが好ましいと言っているだけで、
生成文字列に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を適用しろとは言っていません。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[137]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> にならない文字列を入力したい理由があるとき 
(例: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">旧字体</anchor>を使いたいという意思があるとき)
もあるので、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を適用するのは不適切です。</li></ul></li></ul></section><section><h1>プロトコルの採用正規化法の衝突問題</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> 
プロトコルAとプロトコルBを組み合わせるとき、プロトコルAとプロトコルBで採用する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化形</anchor>が違うと困ったことになります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> 
指定が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor> ならより厳しい <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor> にしておけばいいので問題ないです。
しかし指定が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor> なら、同時に従うことができません。
たまたま<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>によって変化しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>だけで構成されるなら両方同時に適用された状態にもなりますが、
そんなシステムは実用に耐えません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> 
こうした不都合が起こらないよう、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書形式</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ構造</anchor>等含め) は送信 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">生成</anchor>)
において
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を強制するべきではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</anchor-end> 
これが現実にあまり問題視されないのは、</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> が他の3つよりも人気ある</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> 4つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>のいずれも実はそれほど使われていない</li></ul><p>という理由と推測されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> あまり良く知らずに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>の仕様書でおすすめされているからという理由で真面目に実装してしまうと、
罠にはまることになります。</p></section></section><section><h1>実装</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <cite>SADAHIRO Tomoyuki / Unicode-Normalize - search.cpan.org</cite> (<time>2011-04-10 18:07:12 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://search.cpan.org/dist/Unicode-Normalize/">http://search.cpan.org/dist/Unicode-Normalize/</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFD</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKD</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FCC</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FCD</anchor> を実装しています。
対応する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicodeの版</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Perl</anchor> の版に依存します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XS</anchor> 版と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PP</anchor> 版があります。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> <cite>Charlint - A Character Normalization Tool</cite> (<time>2009-12-03 17:38:05 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/International/charlint/">https://www.w3.org/International/charlint/</anchor-external></li></ul></refs></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;12</anchor-internal> や <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;18</anchor-internal> のようにありますが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成除外表</anchor>の規定によれば新たな<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準分解</anchor>が追加されるとすると、
その展開先の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>に既存の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>が含まれているなら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合成除外表</anchor>に追加しなければならないこととなっており、
場合によっては未定義の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>が含まれていても新しい版で結果が変わらないことが保証される場合もあるようです。</p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[109]</anchor-end> <cite xml:lang="en">Unicode Normalization thread should slow down; summary needed</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">L. David Baron</anchor>, <time>2009-02-07 07:58:32 +09:00</time>, <time>2023-01-23T02:13:34.000Z</time>, <time>2023-04-11T14:22:05.727Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://lists.w3.org/Archives/Public/www-style/2009Feb/0231.html">https://lists.w3.org/Archives/Public/www-style/2009Feb/0231.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[110]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i18n</anchor> の専門家を称する人々は各種 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web標準</anchor>で 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode正規化</anchor>を要求するべきと主張していました (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">平成時代</anchor>中期頃)。
しかし結局有効で有益で統一的な実装戦略を提出できませんでした。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="111" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[111]</anchor-end> そのためいくつかの (当たり障りのない) 仕様に「できれば」程度の弱いおすすめとして潜り込ませることができたくらいで
(またはまったく世の中に影響のない仕様の要件として提示できたくらいで)、
ほとんどの事業者はまったくスルーしました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> 
そのおかげで有害無益な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>で性能が激落ちするとか、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字化け</anchor>が多発するとか、
といった困った事案が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web標準</anchor>が原因で発生することは避けられました。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web標準</anchor>以外の要因では起きてしまっていますが、まあ不幸中の幸いといったところでしょうか。</comment-p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>XProc: An XML Pipeline Language</cite>
(<time>2010-05-11 22:38:07 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2010/REC-xproc-20100511/#p.serialization">http://www.w3.org/TR/2010/REC-xproc-20100511/#p.serialization</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="EN">XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)</cite>
( (<time>2010-12-17 00:06:54 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2010/REC-xpath-functions-20101214/#func-normalize-unicode">http://www.w3.org/TR/2010/REC-xpath-functions-20101214/#func-normalize-unicode</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <cite xml:lang="en">draft-duerst-i18n-norm - Character Normalization in IETF Protocols</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/draft-duerst-i18n-norm">http://tools.ietf.org/html/draft-duerst-i18n-norm</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <cite xml:lang="en">Character Model for the World Wide Web 1.0: Normalization</cite>
( (<time>2012-04-27 20:15:23 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2012/WD-charmod-norm-20120501/">http://www.w3.org/TR/2012/WD-charmod-norm-20120501/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> <cite xml:lang="EN">XPath and XQuery Functions and Operators 3.0</cite>
( (<time>2014-04-08 07:02:07 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/xpath-functions-3/#func-normalize-unicode">http://www.w3.org/TR/xpath-functions-3/#func-normalize-unicode</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> <cite xml:lang="en">XSLT 2.0 and XQuery 1.0 Serialization (Second Edition)</cite>
( (<time>2010-12-17 00:08:20 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#unicode-normalization">http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#unicode-normalization</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</anchor-end> <cite xml:lang="en">XSLT 2.0 and XQuery 1.0 Serialization (Second Edition)</cite>
( (<time>2010-12-17 00:08:20 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#XML_NORMALIZATION-FORM">http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#XML_NORMALIZATION-FORM</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> <cite xml:lang="EN">XPath and XQuery Functions and Operators 3.1</cite> (<time>2017-03-21 16:02:06 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#func-normalize-unicode">https://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#func-normalize-unicode</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> <cite xml:lang="en">XSLT and XQuery Serialization 3.1</cite>
(<time>2017-03-20 12:35:18 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/TR/2017/REC-xslt-xquery-serialization-31-20170321/#XML_NORMALIZATION-FORM">https://www.w3.org/TR/2017/REC-xslt-xquery-serialization-31-20170321/#XML_NORMALIZATION-FORM</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> <cite xml:lang="en-us">UTS #22: CharMapML</cite>
(<time>2017-06-01 07:35:01 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.unicode.org/reports/tr22/tr22-8.html#att_normalization">http://www.unicode.org/reports/tr22/tr22-8.html#att_normalization</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> <cite xml:lang="en">Regexp.ja · neologd/mecab-ipadic-neologd Wiki</cite>
(<time>2019-08-04 09:52:04 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/neologd/mecab-ipadic-neologd/wiki/Regexp.ja">https://github.com/neologd/mecab-ipadic-neologd/wiki/Regexp.ja</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> <cite xml:lang="en-us">UAX #44: Unicode Character Database</cite>
(<time>2020-03-06T22:23:11.000Z</time>, <time>2020-10-21T08:57:57.428Z</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.unicode.org/reports/tr44/#NormalizationTest_txt">https://www.unicode.org/reports/tr44/#NormalizationTest_txt</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> <cite xml:lang="en">ENSIP-15: Normalization Standard - ENS Documentation</cite>, <time>2023-08-10T02:58:14.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.ens.domains/ens-improvement-proposals/ensip-15-normalization-standard">https://docs.ens.domains/ens-improvement-proposals/ensip-15-normalization-standard</anchor-external></p></section></body></html>