http://juree.tistory.com/980



GPG Study에서 퍼온글입니다. 
CEGUI에서 한글 구현하려고 고생하고있는데. 글 올려주셔서 감사합니다.


전에 CEGUI에 대해 정리해둔게 있어서 옮깁니다. 
먼저 CEGUI는 www.cegui.org.uk 에서 받을 수 있습니다. 
이곳에서 
cegui_mk2-0.4.0(<-최신버전 드래그 앤 드롭구현)
cegui_mk-0.4.0-deps-common(안에 dependencies 와 Samples를 같은 디렉토리 안데 넣습니다.) 
cegui_mk-0.4.0-deps-vc71-xerces(역시 안에 dependencies 와 Samples를 같은 디렉토리 안데 넣습니다.) 
이 세 파일을 받으신후에 (root:cegui_mk2makefileswin32VC++7.1) 안에 있는 프로젝트 파일을 열어 빌드를 합니다. 
빌 드한후에 (root:cegui_mk2lib)안에 여러가지 lib화일이 만들어져 있을겁니다. 이들중 CEGUIBase.lib가 가장 중요한 lib입니다. 이 파일을 라이브러리 경로에 포함하시고 실행파일 안에 있는 CEGUIBase.dll, devil.dll, ilu.dll등등의 파일을 자신의 어플리케이션으로 옴기면 준비는 다 된것입니다.(이후 자신의 어플리케이션을 빌드할때 CEGUI헤더파일과 lib포함) 

다음 자신의 그래픽엔진에 맞는 XXXCEGUIRederer와 XXXTexture를 만들면 됩니다. 이는 안에 순수 가상클래스로 만들어진 renderer와 Texture를 상속받고 인터페이스 대로 구현만 하면 됩니다. 이렇게 하면 XXXCEGUIRenderer.lib, XXXCEGUIRenderer.dll 이 만들어 지고 자신의 어플리케이션에CEGUIBase.lib, XXXCEGUIRenderer.lib를 포함하면 됩니다. 

이후 한글을 사용하기 위해서는 font파일을 만들어야 합니다. 이파일을 열어서 


< ?xml version="1.0" ? > 
< Font Name="Tahoma-12" Filename="NGULIM.ttf" Type="Dynamic" Size="12" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true" > 
< GlyphRange StartCodepoint= "44032" EndCodepoint= "55203" / > 
< GlyphSet Glyphs="上下" / > 
< /Font >


이 안에 이미지폰트나 트루타입폰트 설정을 해주면은 됩니다. 여기서 중요한것만 설명하면 Filename은 폰트 이름 전 새굴림(NGULIM.ttf)을 사용했습니다. type 폰트종류 Dynamic은 투루타입 Static은 이미지폰트, 이 폰트에서 한글을 사용하기 위해서는 Glyph명령을 사용해서 폰트내에서 사용할 문자코드를 정해줘야 합니다. 
위에서 GlyphRange 문자코드(10진수)의 시작과 끝을 정해주는 겁니다. 위에서 44032는 폰트내에서 "가"에 해당하는 문자코드이고 55203은 한글문자코드의 마지막코드입니다. 이 외에도 특수 문자나 한자등의 사용을 위해 개별적으로 입력시 GlyphSet Glyphs = " " <--여기에 원하는 문자를 넣어 주면 됩니다. 

그리고 나서 자신의 코드에서 button->setText((CEGUI::utf8*)"미션1"); 이런식으로 사용하면 됩니다.그러고 나서 저장할때 파일->저장 고급 옵션 에서 유니코드로 저장하시면 됩니다. 이상이 한글 출력부분이고.. 

한글 입력시에는 CEGUI는 기본적으로 GUI만 구현되어 있습니다. Ogre, irricht, 그곳예제에서도 한글입력에 대해서는 찾을 수 없습니다. 위에 열거한 것들의 입력부분이 한글이나 비영미권의 언어를 지워하지 않습니다. 그래서 입력부분은 따로 구현해 줘야 합니다. 한/영 키를 인식해서 키보드에서 들어오는 신호를 해당 문자코드로 변환해주는 부분은 자신이 직접 구현해야 합니다. 

이상입니다. 그외 세부적인 부분 Scheme, layout 다중폰트 사용등은 레퍼런스문에다 잘 나와있습니다.
--위의 내용보고 구현한 예제입니다.

반응형

+ Recent posts