프로그래머를 위한 유니코드 소개 (Nathan Reed)
Source
Evernote/Inbox/A Programmer’s Introduction to Unicode – Nathan Reed’s coding blog.md
Summary
이 문서는 프로그래머의 관점에서 유니코드(Unicode)의 복잡성과 기본 구조를 소개한다. 유니코드는 전 세계 모든 문자 체계와 다국어 공존을 지원하기 위해 설계되었으며, 이로 인해 단순한 문자셋을 넘어선 내재적 복잡성을 지닌다. 문서의 핵심은 유니코드의 기본 단위인 ‘코드 포인트(Code Point)‘와 전체 ‘코드스페이스(Codespace)‘의 구조를 설명하는 것이다. 코드 포인트는 U+XXXX 형식의 16진수 번호로 식별되며, 현재 약 111만 개의 코드스페이스 중 약 12%만 할당되어 있다. 또한 사적 사용 영역(Private Use Areas)이 별도로 예약되어 있음을 언급한다. 글꼴, 레이아웃, 로케일 등 렌더링 관련 주제는 본 문서의 범위를 벗어난다.
Key Points
- 유니코드는 전 세계 135개 이상의 문자 체계와 1100개 이상의 언어를 지원하며, 다국어 텍스트의 공존을 허용한다.
- 유니코드의 복잡성은 단순한 구현의 어려움이 아니라, 다양한 문자 체계의 정확한 표현을 위한 필수적인 설계 선택이다.
- 유니코드의 기본 구성 요소는 ‘코드 포인트(Code Point)‘이며, U+ 접두사와 16진수(예: U+0041)로 표기된다.
- 전체 코드스페이스는 1,114,112개이며, 현재 약 128,237개(약 12%)가 할당되어 있고, 137,468개는 사적 사용 영역으로 예약되어 있다.
- 본 문서는 문자셋과 코드스페이스 구조에 초점을 맞추며, 글꼴, 텍스트 레이아웃, 렌더링, 로케일 처리는 다루지 않는다.