/
219.txt
56 lines (40 loc) · 2.22 KB
/
219.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[1] [DFN@en[[ABBR[NFKC]]]]
([DFN[[RUBY[正規化形] [せいきかけい] @en[normalization form]] KC]])
は、[[Unicode]][[文字列]]の[[正規形]]の1つです。
NFKC は、大まかには、[[互換分解]]を行った後に[[正準結合]]を行います。
([[NFC]] は[[正準分解]]を行いますが、
NFKC は互換分解を行います。 NFC も NFKC も、
分解の後には''正準''結合を行います。
(「互換結合」はありません。))
* 仕様書
[REFS[
- [3] [[UAX #15]]
<http://www.unicode.org/reports/tr15/#Normalization_Form_KC>
]REFS]
* 定義
[2] 詳しい定義はこうです。
(実装はこれと同じ結果が得られるなら、他の方法を使ってもかまいません。)
= 原始文字列[VAR@en[S]]の[[''互換''分解]]を、
実装が対応している最新版の [[UCD]] の[[互換写像]]に従って生成する。
= 分解中の最初から最後までのそれぞれの文字 [VAR[C]]
について、次の操作を繰り返す。
== [VAR[C]] が最後の[[開始子]] [VAR[L]] から[[妨害]]されておらず、 [VAR[L]] と[[初等結合]]できるなら、
[VAR[L]] を合成 [VAR[L-C]] で置換し、 [VAR[C]] を削除する。
= これによって得られた文字列 [VAR[S']] が [VAR[S]] の
[ABBR[NFKC]] である。
* 変種
[5] [CITE@en-us[UAX #31: Unicode Identifier and Pattern Syntax]] ([TIME[2008-05-07 05:28:21 +09:00]] 版) <http://www.unicode.org/reports/tr31/#NFKC_Modifications>
[6] [CITE@en-us[UAX #31: Unicode Identifier and Pattern Syntax]]
( ([TIME[2013-09-30 19:53:19 +09:00]] 版))
<http://www.unicode.org/reports/tr31/#NFKC_Modifications>
[FIG(quote)[
[FIGCAPTION[
[4] [CITE[XRI Syntax Specification]]
([TIME[2008-03-11 00:22:27 +09:00]] 版)
<http://docs.oasis-open.org/xri/xri-syntax/2.0/specs/cs01/xri-syntax-V2.0-cs.html>
]FIGCAPTION]
> This encoding in UTF-8 MUST include normalization according to Normalization Form KC (NFKC) as defined in '''['''UTR15''']'''.
]FIG]
[7] [CITE@en[RFC 7564 - PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols]]
([TIME[2015-12-21 04:49:41 +09:00]] 版)
<https://tools.ietf.org/html/rfc7564#section-9.17>