본문 바로가기

Programming/Cocos-2d x

Cocos2d-x 3.3rc0 한글 사용하기

반응형

cocos 기본 템플릿을 이용한 프로젝트에서 한글을 바로 사용하는 경우 출력이 제대로 되지 않습니다.

두 가지 사안을 짚어볼 수 있는데,


1. 한글 표현이 가능한 폰트 사용


먼저, {프로젝트 폴더}\Resources\fonts 안에 보면 기본으로 제공되는 "Marker Felt.ttf" 파일이 있습니다.

해당 폰트는 영문 전용 폰트라 한글이 포함되어 있지 않아 해당 ttf 파일을 이용한 출력엔 한글이 표현되지 않습니다.


구글링 해보면 무료 한글 폰트를 여럿 찾아볼 수 있는데, 이중에 저는 네이버에서 개발한 "나눔고딕"을 사용해보겠습니다.

나눔고딕 - http://dev.naver.com/projects/nanumfont/download


위 링크에서 "나눔고딕코딩.ttf" 파일을 다운로드 받아서 {프로젝트 폴더}\Resources\fonts 폴더 안에 복사해 넣었습니다.

폰트명이 한글로 되어있어서(혹시 몰라서..) KoreanFont.tff 로 파일명을 변경했습니다.







기호에 맞게 한글 폰트를 복사해 넣으시면 됩니다. 

파일명을 기억해 두시고 2번 항목으로 넘어갑니다.




2. 문자열 인코딩


기본 템플릿을 이용해 프로젝트를 생성한 경우 

main.cpp, AppDelegate.cpp, HelloWorldScene.cpp (헤더는 쓰지 않았습니다.) 3개의 파일이 있는데 화면에 출력되는 

"Hello World" 라는 문자열을 수정할 수 있는 코드는 HelloWorldScene.cpp 안에 있습니다.

auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);


위의 코드가 화면에 출력할 문자열을 지정하는 부분인데 "Hello World" 이 부분을 한글로 바꾸면 될 것 같습니다.


char MyString[20];
WideCharToMultiByte(CP_UTF8, 0, L"안녕 세상", -1, MyString, 20, NULL, NULL);

auto label = Label::createWithTTF( MyString, "fonts/KoreanFont.ttf", 24);


먼저 MyString을 변수를 만들고, 유니코드인 한글을 멀티바이트로 매핑합니다.

멀티바이트로 변환된 변수를 createWithTTF 함수의 인자로 넣어주면 제대로 한글 출력이 되는걸 확인할 수 있습니다.