티스토리 툴바


리눅스 데스크탑을 메인으로 사용한지 일년이 되어간다. Ubuntu 10.10을 사용하고 있는데 ActiveX가 필요한 은행업무를 제외하면 불편함은 거의 없다. 오히려 윈도우에 없는 여러가지 편리한 기능들에 익숙해져서인지 리눅스 데스크탑을 쓰라고 권하고 싶을 정도다.

금리(金利)가 김리, 이율(利率)이 리솔?

그런데 몇주 전부터 漢字작업을 하다보니 리눅스 한자입력기가 윈도우나 아래아한글과는 또 다르다는 것을 알게되었다. 즉, 金(쇠 금)과 金(성씨 김)이 KS X 1001이나 Unicode Standard에서 모두 별개의 코드가 부여되어있는데 어떤 글자를 입력해도 金(성씨 김)으로만 입력된다. 같은 현상으로 구,귀,균으로 발음되는 龜(거북 귀)자도 龜(땅이름 구)자로만 입력되고, 률,율,솔로 발음되는 率(헤아릴 률)자도 率(거느릴 솔)로만 입력된다. 따라서 이율에 대한 한자어인 利率(리률)을 입력해도 실제로 입력된 코드값을 확인하면 '리솔'이 입력되어있다.

Ubuntu 10.10에 설치되어있는 입력기는 '나비 0.99.7'인데 확인해보니 Ubuntu 11.04나 Ubuntu 11.10버전에 있는 입력기도 마찬가지 현상을 보였다. '나비'입력기에 특별한 옵션같은게 있는 가 싶어 찾아보다가 발견하지 못하고, 저작자 정보찾아 이메일로 관련현상을 리포팅했다. 저작자인 최환진님은 친절하게 답변 메일을 보내주셨고 버그가 아닌 '의도된 기능'이라고 알려주셨다. (음... 역시 그랬어. 모르고 있었을 리가 없지.)


동형이음(同形異音) 한자의 코드

KS X 1001의 한자 4888자는 동형이음(同形異音)자에 대해서 음별로 별개의 코드를 부여하였다. 그래서 다들 잘 아시는 樂(즐거울 락, 즐거울 낙, 풍류 악, 좋아할 요)자는 4가지 코드를 부여받았다. 이렇게 독음(讀音)별로 별도의 코드를 부여하면 漢字를 한글로 읽기가 매우 쉬워진다. 그런데 여기서 몇가지 문제가 있다.

첫째로 같은 漢字가 컴퓨터 세계에서는 여러개의 코드값을 가진 다른 글자로 나뉘어진다는 것을 아는 사람이 별로 없다는 것이다. 즉, 자기 이름 '김대중'을 입력하면서 '성씨 김'이 따로 있다는 것을 모르고 '쇠 금'을 찾아 입력하게 된다. 결과적으로 눈에 보이는 모양은 같으니 원하는 것을 얻은 것이긴 한다.

둘째로 모든 동형이음자에 대해서 별개의 코드가 부여되어 있는 것도 아니라는 것이다. 利(이로울 리)에 대해서 '이로울 이'가 만들어져 있고, 不(아니 부)에 대해서 '아니 불'이 만들어져있지만 十(열 십)에 대해서 '열 시'라는 글자가 없기 때문에 시월(十月)은 결국 '십월'로 입력할 수 밖에 없다. 마찬가지로 초파일(初八日)도 '파'음에 해당하는 八이 없기 때문에 '초팔일'로 입력해야한다.

셋째는 한중일 한자의 코드 변환에 따른 어려움이 있게된다. 우리는 독음에 따라 코드가 나누어져 있지만 중국과 일본은 그렇지 않으므로 코드변환시 독음으로 분리되었던 코드가 다시 대표 코드 하나로 합쳐져야만한다. 즉, 부지불식(不知不識)은 우리 한자코드로 완벽하게 표시가 되지만 코드변환을 한두번 거치다보면 부지불식간에 '부지부식'이 되고 만다.

이렇듯 여러가지 문제가 있어서 Nabi 그리고 그 기반이 되는 libhangul의 저작자인 최환진님은 아예 모든 동형이음자를 하나의 대표코드로 통일하기로 결정한 것으로 보인다.

Unicode Standard의 한자영역은 크게 두부분으로 나눈다. CJK 통합영역과 CJK 호환영역이 그것인데 CJK통합영역은 한중일에서 사용되는 한자들을 중복없이 하나씩 코드화 한 부분이다. 그래서 Nabi입력기에서도 동형이음자를 CJK 통합영역의 한자로 통일한다. CJK 호환영역은 대표로 선정되지 못한 동형이음자 한자를 표현하기 위한 영역이다. 예를 들어 不(아니 부)는 통합영역에 있고 不(아니 불)은 호환영역에 있다. 또, 率(거느릴 솔)은 CJK 통합영역에 있고 率(헤아릴 률), 率(헤아릴 율)은 CJK 호환영역에 있다.

나비(Nabi)입력기에서 CJK 호환한자 입력방법

어쨌든 KS X 1001이나 Unicode Standard에서 모두 CJK 호환영역 한자를 사용할 수 있고, 여전히 표준의 지위를 유지하고 있으므로 나처럼 호환영역한자를 입력하고 싶은 사람이 있을 것같아서 '나비(Nabi)입력기'에서 호환영역한자를 입력할 수 있는 방법을 공유한다.

나비입력기의 한자데이타는 libhangul 에 포함되어있는 hanja.txt 파일에 저장되어있다. 여기에 사용된 한자들이 모두 CJK 통합영역 한자인데 이를 수정하여 CJK 호환영역 한자로 교체하면 호환영역 한자를 입력할 수 있다. Ubuntu에서 hanja.txt 파일은 /usr/share/libhangul/hanja/hanja.txt 에 위치하고 있다. 이 파일의 이름을 바꿔놓고, 아래에 첨부한 hanja_txt.zip 파일에 포함된 hanja.txt로 교체한다.



새로 만든 hanja.txt 파일은 기존 파일에서 문제가 있어 보이는 10여개의 레코드를 제거하고, 가능한 CJK 호환영역 한자를 사용하도록 수정한 것이다. license관련 문구 등은 수정하지 않고 그대로 두었다. 교체가 끝났으면 리눅스 시스템을 리부팅한다. 리부팅하면 끝! 이제 나비(Nabi)입력기가 金(쇠 금)과 金(성씨 김)을 잘 구분한다.

$ cd /usr/share/libhangul/hanja
$ ls -al hanja.txt
$ sudo mv hanja.txt hanja_yyyymmdd.txt
$ sudo unzip ~/Downloads/hanja_txt.zip


몇몇 프로그램에서 테스트해보니 텍스트 편집기 등에서 또 파이어폭스 같은 웹브라우저에서 CJK 호환영역 한자가 잘 입력됨을 확인했다. 나와 같은 문제를 해결하고자 하는 분들에게 도움이 되기를 바란다.

(그러나 크롬 브라우저에서는 여전히 호환영역한자를 입력해도 통합영역한자로 자동 변환된다. 확인은 안해봤지만 아마도 크롬 브라우저에서 사용하는 코드변환기가 나비(Nabi)입력기와 같은 정책을 가지고 있는 것같다.)

-끝-
Posted by 전경헌

댓글을 달아 주세요