내부 구조 · text
Unicode와 원문 span
정규화
nfc는 질의와 원문을 NFC 기준으로 비교합니다. canonical은 NFC와 NFD를 모두 검색하며, none은 입력 code point sequence를 그대로 사용합니다.
정규화된 buffer는 검색에만 사용합니다. 출력할 표면형은 정규화된 문자열로 바꾸지 않습니다.
좌표계
Rust matcher의 기본 span은 UTF-8 byte offset입니다. JavaScript binding은 변환 map으로 String.prototype.slice와 호환되는 UTF-16 code unit offset을 반환합니다.
CLI의 행·열은 각 실행 표면의 계약에 맞는 좌표계를 사용합니다. npm CLI는 UTF-16을 사용하고, native 원문 보고는 byte와 decode된 scalar의 mapping을 보존합니다.
원문 span
Normalization map은 각 normalized scalar에 대응하는 원문 byte 또는 UTF-16 범위를 추적합니다. 결합 문자와 emoji 안쪽에서 span을 자르지 않습니다.
Phrase span은 첫 atom과 마지막 atom의 원문 범위를 합칩니다. Provenance의 core·token span도 같은 좌표계를 사용합니다.