2013년 12월 15일 일요일

리눅스에서 왜 유튜브 제목의 초중종성이 분리되는가

리눅스에서 몇몇 유튜브 영상을 보면 제목이 요상하게 초/중/종성이 분리되어 있는 걸 볼 수 있다.

마침 이 NHN NEXT 페이지가 매우 인상적인데, 리눅스에서는 "NHN NEXT 2014학년도 2차 모집 안내동영상_서류제출안내" 영상의 제목이 끝의 "류제출안내"만 "ㄹㅠㅈㅔㅊㅜㄹㅇㅏㄴㄴㅐ"와 같이 보인다.

http://www.youtube.com/user/NHNNEXT

아마도 이 영상을 올리신 분은, 맥에서 "류제출안내"를 파일이름에서 복사해서 붙여넣기 하셨을 것이다.

근본 원인: 맥 오에스의 파일시스템

문제의 시작은 맥 오에스 파일시스템이 내부적으로 유니코드 인코딩을 NFD로 (참고: 유니코드 정규화) 사용하기 때문이다. 맥 오에스의 이 정책은 한글 뿐만 아니라 독일어 umlaut나 프랑스어 cedilla 같은 각종 액센트도 마찬가지로 적용된다. 한글의 경우 NFD는 한글 음절 코드가 U+1100의 한글 자모 코드로 변환되어 초중종성 코드로 나뉘게 된다.

이 문제는 유튜브 외에 여러 곳에서도 드러난다. 네트워크 파일시스템에서 한글 파일이름의 인코딩을 바꿔서 저장한다거나, 배포한 압축 파일의 파일이름도 초중종성이 분리되어 있거나, SVN으로 받은 한글 파일이름을 맥 방식으로 바꿔서 커밋한다든지, 구글 드라이브를 맥에서 싱크하니까 모든 한글 파일이름의 초중성을 분리한다든지 따위의 해프닝이다.

애플의 이러한 정책은 기술적 취지는 이해할 수 있다. 유니코드에서 같은 내용을 여러가지 방법으로 표현할 수 있는 문제가 있기 때문에, 전부 NFD로 바꾸면 한 가지 방법으로 전부 커버할 수 있으면서 유일성을 보장할 수 있다. 하지만 파일 이름이 파일 이름이 아닌 곳에서 드러난다는 건 문제이다. NFD가 틀린 인코딩은 아니다. 하지만 맞다 틀리다의 문제가 아니라, 일반적으로 많이 쓰이는 인코딩을 사용하는 게 상식적이지 않을까.

나눔 글꼴의 기능 미비

이 경우에도 결국 한 음절로 표시하면 되지 않느냐라고 물을 수 있는데, 리눅스의 글꼴이 그런 기능을 지원하면 가능하다. 하지만 현재 대부분 리눅스 배포판에서 사용하고 있는 나눔 글꼴에는 그런 기능이 들어 있지 않다. 이런 나눔글꼴 수정도 작업 중인 게 있으니 앞으로는 이런 기능의 글꼴이 일반적이 될 수도 있지 않을까.


Pango의 버그

윈도우나 맥용 글꼴이라고 해서 한글 자모 코드를 잘 지원하는 건 아니다. 그러면 왜 리눅스에서 유독 분리되어 보일까. 보통 현대 음절의 경우는 글꼴을 사용하기 전에 렌더링 엔진이 조합해 주기 때문이다. 별다른 기능이 아니기 때문에, gtk에서 사용하는 렌더러인 pango의 한글 렌더러를 처음 작성할 때부터 들어 있었는데 무슨 이유에서인가 망가져 있다. 다음 버그로 보고된 상태.

https://bugzilla.gnome.org/show_bug.cgi?id=705727


구글이 좀 고쳐주지

사실 가장 쉬운 해결 방법은 유튜브에서 자동으로 바로잡아 주는 것. 굳이 사용자가 올린 형태를 유지할 필요도 없을 것 같고, 어차피 내부적으로 검색도 하려면 변환하는 게 큰 문제는 아닐 것이다. 실제로 dropbox같은 경우 처리를 해 주는지 맥과 다른 OS 사이에서 한글 파일이름 공유에 문제가 없다.  하지만 구글에 뭐 고쳐달라고 요청한다고 고쳐주는 것 만큼 어려운 건 없으니...



위의 넷 중에 어떤 방법이든 바로잡으면 제대로 동작한다.

2013년 12월 14일 토요일

새 hwp 리스트


libhwp 그룹스마저 폭파됐기 때문에, HWP 그룹스를 새로 만듭니다. 앞으로 어떻게 될지는 모르겠지만 언제나처럼 가볍게 시작합니다.

https://groups.google.com/forum/#!forum/hwp-foss


libhwp 리스트 복구에 대해

제 메일에 있는 내용은 다음에 mbox 포맷으로 올려놨습니다.

https://sites.google.com/site/libhwprestored/home

- 제가 가입한 2010년 10월 22일부터 메일은 다 있지만 그 전에는 없습니다. 거의 만들어지자 마자 제가 가입했기 때문에 누락된 메일은 몇 개 안 될 겁니다. 누락된 부분도 혹시 메일로 보관 중이시거나 찾을 수 있으신 분은 알려 주세요.

- 가공해서 보기 좋은 모양으로 웹에 올려 놓는 것도 과제입니다. 아이디어 있으면 주세요.


2013년 12월 21일 업데이트: 아카이브 완성. 지난 토론 내용, 또는 지난 플레임을 보고 싶으시면:

https://googledrive.com/host/0BzxIVzS0OjQTSEpScE5lcmRhajA/threads.html

2013년 12월 8일 일요일

libhwp woes

libhwp 개발자께서 github 계정을 삭제하셨습니다. 하필이면 제가 evince-hwp에 데비안 패키징과 관련된 이슈를 문의했을 때, 굉장히 신경질적으로 반응하시면서 프로젝트를 삭제하겠다고 선언하셨는데요.

그 분의 선택을 존중합니다. 그리고 최근에 보기 싫은 일 https://plus.google.com/+ChangwooRyu/posts/h7eq6KqhYMW 때문에 기분이 안 좋은 것도 십분 이해합니다. 하지만 저와 해당 이슈에 대한 반응은 이해할 수 없었습니다. 패키징을 위해 업스트림 저자와 의견을 교환하고 하는 일은 일상적인 일이고, 이슈도 대단치 않은 빌드 변경이었습니다. 이슈 내용이나 이런 피드백 활동 자체가 마음에 안 드신다면 어쩔 수 없지만, 이슈 내용에 대해서 불만을 터뜨리는 것도 아니고 지금까지 프로젝트 관련된 각종 불만이나 개인 사정까지 이슈 페이지에서 폭발하는 건 상식적으로 이해가 가지 않았습니다.

다음에 어떤 일을 하시든 부디 마음을 가볍게 갖고 하셨으면 좋겠습니다.

관련 프로젝트도 현재 접근할 수 없는데 다행히 최근 커밋까지 받았기 때문에 제 clone에 푸시해 놨습니다. 데비안 패키징도 계속됩니다.

https://github.com/changwoo/libhwp
https://github.com/changwoo/evince-hwp