diff options
| author | eunhhu <[email protected]> | 2026-09-28 11:43:16 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-28 11:43:16 +0100 |
| commit | 482d3c93255277f5251008638bc59bfab0eb4b9e (patch) | |
| tree | 5e230bdcf6c04f50c7a98dfe50f403b502add1e3 /docs/design | |
| parent | 8ba0615b0fe832a15eb695ccd661674b6946995c (diff) | |
| download | vega-482d3c93255277f5251008638bc59bfab0eb4b9e.tar.gz vega-482d3c93255277f5251008638bc59bfab0eb4b9e.zip | |
Normalize text to NFD and NFC, passing all of Unicode's normalization tests
Diffstat (limited to 'docs/design')
| -rw-r--r-- | docs/design/004-text.md | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/docs/design/004-text.md b/docs/design/004-text.md index 703967b..f423221 100644 --- a/docs/design/004-text.md +++ b/docs/design/004-text.md @@ -40,3 +40,12 @@ U+3008·3009의 정준 동치, 바뀐 괄호 뒤의 결합 부호), 중립(N1– `BidiCharacterTest.txt`의 91,707 경우(코드 포인트, 괄호 포함)에서 수준과 보이는 순서가 하나도 틀리지 않는다. Pi 5에서 전체가 0.74초다. 처음 짠 것은 148 경우가 틀렸다. 앞선 격리 실행 열의 암시적 수준(I1–I2)이 바꾼 수준으로 다음 열의 sos를 정했기 때문이다(sos와 eos는 명시적 수준으로 정해야 한다). + +## 정규화 + +[text/normalize.c](../../text/normalize.c)는 NFD와 NFC다. 코드 포인트를 끝까지 분해하고(표에 다 풀어 둔 정준 분해 2,061개, +한글 음절은 산술로), 결합 등급으로 부호를 안정 정렬한 뒤, 마지막 기저 문자와 막히지 않은 문자를 합친다(원시 합성 941쌍, +합성 제외 목록 반영, 한글 L+V와 LV+T는 산술로). 코드 포인트 하나는 많아야 넷으로 풀린다(UCD 전체를 확인했다). + +`NormalizationTest.txt`의 19,074줄(줄마다 NFC와 NFD 16가지 대조)과, 그 1부에 없는 코드 포인트 1,095,035개가 제 자신의 +NFC이자 NFD라는 것을 모두 지킨다. 적합성 시험 셋을 합쳐 Pi 5에서 0.9초다. |
