유니코드 정규화는 모양이 같은 여러 문자들이 있을 경우 이를 기준에 따라 하나로 통합해 주는 일을 가리킨다. 그 기준으로는 아래 표와 같이 NFD, NFC, NFKD, NFKC가 있다.
제목 |
묘사
|
정규화 방식 D (NFD) |
정준 분해
|
정규화 방식 C (NFC) |
정준 분해한 뒤에 다시 정준 결합
|
정규화 방식 KD (NFKD) |
호환 분해
|
정규화 방식 KC (NFKC) |
호환 분해한 뒤에 다시 정준 결합
|
정규화의 예
- NFD로의 정규화 : 코드를 정준 분해한다.
- 발음 구별 기호가 붙은 글자가 하나로 처리되어 있을 경우, 이를 기호별로 나누어 처리하기
- À (U+00C0) → A (U+0041) + ̀ (U+0300)
- ệ (U+1EC7) → e (U+0065) + ̂ (U+0302) + ̣ (U+0323)
- が (U+304C) → か (U+304B) + ゙ (U+3099)
- ポ (U+30DD) → ホ (U+30DB) + ゚ (U+309A)
- Й (U+0419) → И (U+0418) + ̆ (U+0306)
- 한글을 한글 소리마디 영역(U+AC00~U+D7A3)으로 썼을 경우, 이를 첫가끝 코드로 처리하기
- 위 (U+C704) → ᄋ (U+110B) + ᅱ (U+1171)
- 한 (U+D55C) → ᄒ (U+1112) + ᅡ (U+1161) + ᆫ (U+11AB)
- 표준과 다른 조합 순서를 제대로 맞추기
- e (U+0071) + ̇ (U+0307) + ̣ (U+0323) → e (U+0071) + ̣ (U+0323) + ̇ (U+0307)
- NFC로의 정규화 : 코드를 정준 분해한 뒤에 다시 정준 결합한다.
- 발음 구별 기호(조합 분음 기호: U+0300~U+036F)가 잇따라 붙었을 경우, 이를 코드 하나로 처리하기
- A (U+0041) + ̀ (U+0300) → À (U+00C0)
- e (U+0065) + ̂ (U+0302) + ̣ (U+0323) → ệ (U+1EC7)
- か (U+304B) + ゙ (U+3099) → が (U+304C)
- ホ (U+30DB) + ゚ (U+309A) → ポ (U+30DD)
- И (U+0418) + ̆ (U+0306) → Й (U+0419)
- 한글을 첫가끝 코드로 썼을 경우, 이를 한글 소리마디 영역(U+AC00~U+D7A3)으로 처리하기
- ᄋ (U+110B) + ᅱ (U+1171) → 위 (U+C704)
- ᄒ (U+1112) + ᅡ (U+1161) + ᆫ (U+11AB) → 한 (U+D55C)
- ᄃ (U+1103) + ᅲ (U+1172) + ᇰ (U+11F0) → 듀 (U+B4C0) + ᇰ (U+11F0) - 종성을 뺀 초성과 중성까지만 변환할 수 있는 경우, 알고리듬에 따라 거기까지만 변환한다[1]
- NFKD로의 정규화 : 코드를 호환 분해한다.
- 합자 처리된 알파벳 코드를 각 알파벳으로 분해하기
- fi (U+FB01) → f (U+0066) + i (U+0069)
- 옛 알파벳을 현대 알파벳으로 바꾸기
- ſ (U+017F) → s (U+0073)
- ẛ (U+1E9B) → s (U+0073) + ̇ (U+0307)
- NFKC로의 정규화 : 코드를 호환 분해한 뒤에 다시 정준 결합한다.
- 모든 기준에서의 공통된 정규화
- 한중일 호환용 한자를 한중일월 통합 한자로 처리하기
- 樂 (U+F914), 樂 (U+F95C), 樂 (U+F9BF) → 樂 (U+6A02)
- 전용 기호를 모양이 같은 보편적인 기호로 바꾸기
- Ω (U+2126, 옴 기호) → Ω (U+03A9, 오메가)
주석
바깥 고리