삽질하는플머

IDE의 더블바이트 문자 표시문제 임시 패치

Lazarus

라자루스 IDE에서 한글은 완전 푸대접을 받고 있다. 예전 0.9.24 에서는 그나마 표시는 제대로 되었었는데, 0.9.26에서 IDE의 코드값이 UTF-8이 기본이 되면서 한글이 아주 요상하게 표시된다.



위의 그림처럼 한글이 영문폭 만큼 겹쳐저 버린다.  

물론 라자루스를 -dDisableWindowsUnicodeSupport 을 주어 리빌드하면 예전과 마찬가지로 동작하기는 하지만, 지금 열심히 삽질중인 KOL-CE 는 2.80.2 버전부터 UTF-8 의 라자루스를 사용하라고 명시되어 있으니... 이 또한 쉽지 않다.

이 때문에 한글로 된 소스는 Relo나 아크로에디트, 또는 크림슨에디트를 사용하고 있었다. 이거 고쳐보려고 SynEdit 도 한참을 주물럭거렸지만... 내 실력으로는 무리...

적어도 화면 표시만이라도 제대로 되었으면 하고 바라던 차에 포럼에서 반가운 내용을 발견했다.

* Input a chinese in IDE,but only display half in code editer

나와 같은 고민을 하던 중국인의 하소연... 이 문제만 해결되면 많은 아시아 개발자에게 큰 영향을 줄 거라는 구절이 구구절절 와 닿는다. 그리고 그 안에서 발견한 버그 트래커의 링크.

* SynEdit overlaps double width characters 

기본적으로 라자루스를 개발하는 사람들이 모두 영어가 모국어라... 우리같은 더블바이트 쪽에는 아무래도 지원이 미비한 듯 하다. 사실 그네들 입장에서는 그다지 간절하지 않은 문제일테니까 말이다. 아무튼 2008년 8월 9일에 Martin Friebe님이 더블바이트의 폭 문제 테스트를 위한 임시 패치를 올려두었다. 


자신이 작성한 코드 중 가장 엉망진창이지만 이 작업을 위해 휴일을 몽땅 날려먹었으니 코드의 질을 가지고 시비걸지 말아달라고 코맨트를 달아두었다. 시비라니!!! 눈 앞에 있다면 절이라도 꾸벅 하고 싶은 심정인데~~

아무튼 내려받아 패치를 해 보자. 패치 대상은 /lazarus/components/synedit/synedit.pp 이므로 일단은 안전한 곳에 잘 복사 해 두고, cygwin 상에서 다음과 같이 처리 해 준다.

 
 $ cd /cygdrive/c/lazarus
 $ pwd
 /cygdrive/c/lazarus
 $ patch -p0 < dbl_width_hack.patch 

이제 라자루스의 "Tools" -> "Configure "Build Lazarus"..." 메뉴를 선택하고





Options 에 -dDoubleChrWidthHack 를 적어준 후 "Build" 버튼을 눌러준다. (시간이 많다면 전체를 다 빌드하고 아니라면 SynEdit와 IDE관련 부분만 빌드하도록 하자.)




이제 재시작하고 한글 코드를 '복사 후 붙여넣기' 해 보자.



오호호~~ 잘 된다~~~

패치 제작자가 적어두었듯이 입력은 안습. 한글을 치면 커서가 안드로메다로 왔다갔다 한다. 일단은 주석을 한글로 볼 수 있다는 것에 만족해야 할 듯. 그래도 이게 어디야~~~ 게다가 개발자가 직접 synedit.pp 의 해당 부분에 컴파일러 지시자까지 둘러두었으니 코드 분석하기도 훠얼씬 편해졌고~~ 오늘의 삽질은 대만족!!!