LangDev

유니코드 지원

  • 유니코드 문자 데이터베이스(UCD): 유니코드의 각 문자들에 대한 자료
    • UnicodeData.txt: 수록된 내용은 꼭 이해하고 넘어 가시는 게 좋습니다. UAX #31 등의 구현에 필요합니다.
    • 문자열을 소문자로 바꾸거나 대문자로 바꾸거나 하는 작업은 CaseFolding.txt 등을 참고하시길 바랍니다. 유니코드 책 4장(아마도)에 관련 알고리즘도 쓰여 있을 겁니다.
  • UAX #31: 식별자(identifier)에 사용될 수 있는 문자와 문법에 사용될 수 있는 문자에 대해서 설명하고 있습니다. 쉽게 말하면 ID_Start로 시작하고 ID_Continue가 뒤에 붙는 문자열은 모두 식별자로 처리한다면 되는 소린데, 이들 집합을 UCD에서 정의하기 때문에 위에서 UCD를 이해하라고 한 겁니다. ;)
  • UAX #15: 하나의 문자열이 유니코드에서 여러 가지 형태로 표현될 수 있습니다. 이런 형태를 하나의 형태로 정규화해 주는 알고리즘이 유니코드 표준에 있는데, 흔히 NFC, NFD, NFKC, NFKD라고 하는 것들이 정규화 알고리즘입니다.

여기까지가 일반 언어에 관련된 것이고, 국제화(i18n) 및 지역화(l10n)를 신경쓰고 싶으시다거나 기타 등등을 원하신다면 이것도 읽어 보시길 권합니다.

  • 유니코드를 지원하는 정규식을 표준 라이브러리에 넣으신다면 UTS #18을 참고하세요. 다만 내용이 꽤나 방대하다는 게 문제인데, 특히 level 3 support 부분은 상당히 손이 많이 갈 것 같습니다. 적절히 필요한 만큼만 구현하면 될 듯.
  • 문자열을 단순히 코드포인트 순서대로 비교하지 않는다면 collation을 신경써야 겠죠. UTS #10이 많은 도움이 될 것입니다. 다만 모든 collation 알고리즘은 어떤 형태로든 collation data가 있어야 한다는 점이 문제네요.
  • 수학과 밀접하게 연관되는 언어를 원하신다면 UTR #25에 수학과 관련된 유니코드 지원에 대한 내용이 쓰여 있습니다. Fortress 같은 언어들도 참고해 보세요.

(from http://langdev.net/post/138)

맨위로
unicode-support.txt · 마지막 수정: 2012/01/21 22:55 작성자 lifthrasiir