[1] [[Unicode]] の [DFN[[ABBR[NFC]]]] ([DFN[正規化形 C]]) は、 で規定されている Unicode 文字列の正規形のひとつです。 NFC は、大まかには、[[正準分解]]を行った後に[[正準結合]]を行います。 これによって、ひとつの[[文字]]に複数種類の表現が対応するときに、 ''(Unicode 的に)'' 等価でもっとも短い形にすることができます。 [2] 詳しい定義はこうです。 (実装はこれと同じ結果が得られるなら、他の方法を使ってもかまいません。) = 原始文字列 [VAR[S]] の正準分解を、 実装が対応している最新版の [[UCD]] の[[正準写像]]に従って生成する。 = 分解中の最初から最後までのそれぞれの文字 [VAR[C]] について、次の操作を繰り返す。 == [VAR[C]] が最後の[[開始子]] [VAR[L]] から[[妨害]]されておらず、 [VAR[L]] と[[初等結合]]できるなら、 [VAR[L]] を合成 [VAR[L-C]] で置換し、 [VAR[C]] を削除する。 = これによって得られた文字列 [VAR[S']] が [VAR[S]] の [ABBR[NFC]] である。 [5] 仕様書: - [UTR #15-18] [CITE[UTR #15: Unicode Normalization]] - [Cor. #2] [CITE[Corrigendum #2: Yod with Hiriq Normalization]] [4] 第18版 ([[Unicode 3.0]] に対応) [SRC[UTR #15-18]] を採用する応用仕様: - [CITE[XML Encryption Syntax and Processing]] ([Q['''[[MUST]]''']]) [3] 第18版 ([[Unicode 3.0]] に対応) [SRC[UTR #15-18]] と正誤表2 [SRC[Cor. #2]] を採用する応用仕様: - [CITE[XML Encryption Syntax and Processing]] ([Q['''[[SHOULD]]''']]) [6] 最新版を採用する応用仕様: - [CITE@en[Web Forms 2.0]] ([Q@en['''[[SHOULD]]''']]) [7] [[RFC 5335]] ([[電子メイル]][[頭部]]の[[国際化]]) は、 [[RFC 5189]] を参照しつつ、 [[NFC]] を[['''推奨''']]しています。 ([[名無しさん]]) [8] ([[RFC 5335]] 4.1) [9] [CITE[NFC FAQ ‎(Macchiato)‎]] ([TIME[2009-03-02 11:37:59 +09:00]] 版) >This really depends on the kind of text involved. For example, according to data at Google: - ~99.98% of web HTML page content characters are definitely NFC. - Content means after discarding markup, and doing entity resolution. - ~99.9999% of web HTML page markup characters are definitely NFC. -- Because so much of markup is plain ASCII. > Of course, this represents data from just a sample of the web (in this case, the total characters in 700,000,000 documents as of January 23, 2009). Proportions may differ somewhat depending on which sample is chosen, and may change over time as the percentage of languages on the web changes. Normalization is important for some languages like Vietnamese and other languages of South and Southeast Asia even though their percentage of total text is small. [10] [CITE[ECMAScript Language Specification (HTML version)]] ([TIME[2009-04-03 04:43:48 +09:00]] 版) [11] [[ES3]] は [[UTR#15]] の「1998年版」 ([[Unicode 2.1]] 世代) を[[引用]]し、 [[ソース・テキスト]]は [[NFC]] で[[正規化]]されていることが期待されているが、 [[適合ECMAScript実装]]が[[正規化]]することは[[必須]]ではない、としています [SRC[>>10]]。 ;; [[必須]]ではない、ということはしてもよい、ということになります。 [12] [CITE@en[Web Applications 1.0 r7195 Revert r6810 since it doesn't work.]] ( ([TIME[2012-07-20 13:31:00 +09:00]] 版)) [13] [CITE@en-US[''''''[''''''DRAFT'''''']''''''Near Field Communications Working Group Charter]] ( ([TIME[2012-09-21 20:23:24 +09:00]] 版)) [14] [CITE@en[XML Encryption Syntax and Processing Version 1.1]] ( ([TIME[2013-04-13 02:02:32 +09:00]] 版)) [15] [CITE@en[XML Encryption Syntax and Processing Version 1.1]] ( ([TIME[2013-04-13 02:02:32 +09:00]] 版))