저는 그동안 주로 굴림,9 으로 설정하고 프로그램을 만들어 왔는데요.. 이젠 Arial,9으로 바꾸려고 합니다.
이유는 아주 단순합니다. 다국어 OS에서도 문제없이 제대로 된 한글을 보여줄 수 있기 때문이죠.
C++ Builder는 기본적으로 모든 컨트롤에서 AnsiString을 지원합니다. 따라서 일본어 OS에서는 한글이 다 깨져버리죠. 일부 VirtualTree같은 컨트롤은 WideString 기반이기 때문에 한글이 깨지거나 하지는 않지만 글꼴문제 때문에 모양이 아주 우습게 변해버리죠.
이런 이유때문에 그동안 중국어버전이나 일본어버전 등 다국어 버전으로 제 프로그램을 바꿀 때는 빌더에서 제공하는 Resource DLL기능을 써서 구현했는데 이게 여간 귀찮은게 아닙니다. 폼에 변경이 있을 경우 이걸 추적하는 것도 만만치 않고.. 게다가 언어셋을 바꾸면 프로그램을 재기동해야 반영되는 귀찮은 면도 있죠..
가장 최근에 했던 프로젝트에서 XML파일과 빌더의 RTTI를 이용했는데 여기서 좀 힌트가 생기더군요. XML파일은 기본적으로 유니코드를 다루는데 아주 편리할 뿐만 아니라 빌더 RTTI를 잘 사용하면 런타임시에 동적으로 다국어 언어를 적용시킬 수도 있습니다. 문제는 빌더의 기존 컨트롤들이 AnsiString 기반이라는 점..
다행히 자료실을 찾다보니 빌더의 기본 컨트롤에서 Unicode를 지원할 수 있도록 포장한 컴포넌트팩이 있더군요. tnt시리즈.. 훌륭합니다. 테마메니저와도 잘 작동해서 특별히 신경쓸 일도 없더군요.
남은것은.. 다른 언어의 OS에서 유니코드 한글이 엄청 조잡하게 나오는 문제인데.. 당연히 굴림/굴림체 등 한글 폰트를 직접 적용하면 제아무리 유니코드라도 다른 OS에서는 글꼴이 깨져 나오구요, MS Sans Serif는 한글이 나오긴 하지만 깨알같이 나오더군요. 이리저리 바꿔보다보니 Arial이 딱입니다. 우리가 보통 보는 9pt 크기로 예쁘게 나오더라구요. 게다가 Arial은 영어글꼴에서는 Times New Roman과 쌍벽을 이루는 명 폰트죠.
또 한가지... 빌더의 에디터는 유니코드를 지원하지 않죠.. 따라서 프로그램 소스에 직접 한글로 갈겨놓은 메시지는 절대로 다국어버전에선 제대로 나오지 않습니다. 귀찮아도 리소스파일을 이용해야겠죠..
이로써 다국어 지원을 위한 대부분의 문제는 다 해결된 것 같습니다. 남은 것은 이걸 간편하게 지원해 줄 수 있는 프레임웍을 구축하는 것..
사실 요즘 이것 때문에 머리에 김납니다.
RTTI 기반으로 TObject 상속받은 모든 객체에 대한 저장/불러오기/메모리복사/메모리해제/되돌리기 지원, XML기반 리소스관리, 프라퍼티에디터, 수식파서 이런걸 모두 통합해서 프레임웍을 구축하려고 하는데.. 장난 아닙니다. TComponent부터 지원하도록 하면 훨씬 쉽겠는데 TObject부터 지원하려니 환장하겠네요.
아무튼.. 여차저차한 이유로 개발하실 때 폰트를 Arial,9으로 하면 여러모로 좋아 보이더라.. 이겁니다. 아님말구~~~ ㅋㅋㅋㅋ
|
Tahoma 폰트가 맞지 않나요?
영문 윈도우에서도 한글 표시시에 기본이 Tahoma이고
한글 부분만 내부적으로 Gulim 같은 폰트를 끌어다 표시하는 것 같던데요.
그냥 한마디 해 본 겁니다. 부담갖지 마시고 한번 바꾸어 보시길..