어떤 사람이 끝에 e와 U+0301이 이어지는 이름을 붙여 넣고, 나중에는 U+00E9를 써서 같은 이름을 입력해요. 이 가상의 폼에서 두 표기는 정준적으로 동등하지만 서로 다른 문자열일 수 있어요.
표시할 때는 제출한 표기를 보존하고, 조회에는 NFC 키를 만들어 쓰겠어요. 사용자는 자신이 제출한 표기를 보고, 조회에서는 이 두 표기를 구별하지 않는 거죠. 대신 두 표현을 관리하고 각 연산이 어느 쪽을 쓰는지 분명히 해야 해요. JavaScript의 normalize("NFC")는 변환을 명시하지만, TypeScript의 string 타입 표기만으로 그 변환이 이루어졌다고 볼 수는 없어요.
일치하는 이름을 여러 계정이 가질 수 있는지는 제품에서 따로 정한다면, 표시 이름 조회의 기본 방침으로 괜찮을까요? NFC가 그 식별 정책을 정해 주지는 않아요. 호환 정규화와 케이스 폴딩은 별도의 선택이고, 정규화만으로 시각적으로 혼동하기 쉬운 이름을 막을 수도 없어요.
화면에서는 사용자의 표기를 살리되, 파생된 키 하나가 그 사람의 신원을 슬쩍 결정하게 두고 싶지는 않아요.