TTF 폰트 파일을 이용하여 런타임에 바로 폰트를 생성하고 싶다면 다음 링크를 참조해 주세요. -> LibGDX에서 freetype-font 사용하기
LibGDX에서 게임을 만들다 보면 한번쯤 생각하게 되는것은 폰트이다. LibGDX 에서 폰트를 보여줄 수 있는 방법은 두가지가 있다. 주로 쓰는 방식은 BitmapFont를 직접 불러와서 폰트를 나타내는 방법이고 하나는 LibGDX Extension에 있는 gdx-stb-truetype를 이용하여 트루타입 폰트를 BitmapFont로 바꾸어 나타내는 방식이다. 후자에 대한 방법은 (http://stackoverflow.com/questions/9486446/truetype-fonts-in-libgdx)를 참고하기 바란다.
LibGDX에서는 BitmapFont 제작 툴인 Hiero를 배포하고 있다.(http://code.google.com/p/libgdx/wiki/Hiero) 이 툴을 이용하면 원하는 폰트를 쉽게 만들 수 있다.
다음은 Hiero 실행 화면이다. 좌측에서는 원하는 글꼴을 선택할 수 있고, 중앙에는 출력할 글자들을 써 넣을 수 있다. 오른쪽에는 글자 효과들을 조정할 수 있다. 효과들을 잘 조절 하기면 하면 예쁜 폰트를 만들어 낼 수 있다.
그러면 잠시 예술 혼을 발휘해서 나름 예뻐 보이는 폰트를 만들어 보도록 하겠다.
몇 가지 참고를 하자면 Font가 렌더링 될때는 Effect가 위에서 부터 적용되기 시작된다. 즉, Shadow 효과가 Color 아래쪽에 있으면 그림자같은 효과가 나오지 않게 된다. 그리고 Color와 Gradient 같이 쓰게 되면 폰트가 약간 일그러져 안 예뻐 보일 수도 있다. 몇번 하다보면 알게 될 것이다.
이렇게 만들어진 폰트를 왼쪽 상단의 File를 눌러 hiero파일로 저장 할 수 있고, BitmapFont 파일로 export할 수 있다. 하지만 처음 상태로 export를 하게 되면 영어만 BitmapFont로 만들어 졌기 때문에 한글출력이 되지 않을 것이다. SampleText에 한글을 추가해 주자. 한글의 모든 글자를 추가해야 한다. 추가할 한글 글자들은 첨부된 euc-kr.txt 파일에 있는 글자들을 복붙하면 될 것이다.
그리고 한가지 더 주의해야 할 것이 있다. 글자가 렌더링되는 부분에 Glyph cache라는 것이 보일 것이다. 여기서는 export될 png파일의 크기를 지정해 줄 수 있다. LibGDX에서 BitmapFont 파일을 불러와서 사용했을때 문제가 되는 부분은 png파일이 여러개일 경우였다. png크기를 최대로 지정해서 한 페이지를 넘어가지 않도록 해야 한다.
이제 BitmapFont 파일로 export 해주자.
이제 이렇게 만들어진 BitmapFont 파일을 LibGDX에서 사용하면 예쁘게 한글 폰트가 출력되는 것을 확인할 수 있다.
이제 예쁜 한글 폰트를 사용할 수 있게 되었다! LibGDX 만세!
FreeType Font를 사용할 수 있는 방법을 새로 포스팅 하였다. ttf나 otf폰트 등을 이용하고 싶으면 링크를 확인해 보기 바란다.
kryo - 자바 클래스 직렬화 (serialization) 라이브러리 (0) | 2013.02.19 |
---|---|
[libGDX] libGDX에서 freetype-font 사용하기 (0) | 2013.02.18 |
RoboVM - 자바로 iPhone 앱 개발하기 (1) | 2013.01.29 |
[libGDX] PostProcessing - 멋있는 효과 낼 수 있는 라이브러리 (0) | 2012.10.26 |
[libGDX] libGDX에서 한글 폰트 사용하기 (10) | 2012.07.10 |
[libGDX] libGDX 시작하기 (1) | 2012.03.27 |
소중한 자료 감사합니다! libGDX같은 애들은 국문 팁이 없어서 초반에 고생 많이 했던 기억이 나네요..ㅎㅎ
궁금한게 있는데 위에 링크 걸어주신 TTF 타입의 폰트로 한글을 표현하려고 하면 string에 euc-kr.txt의 내용을 삽입하면 될까요?
그...그런데 되더라도 부담이 클 것 같긴 하네요 ㅎㅎ;
P.S 블로그 이쁘네요 +_+
정말 많은 도움 되었습니다. 감사합니다. 추가적으로 질문드리고 싶은게 있는데, 폰트생성까지 한 후 fnt파일과 PNG 파일 두개가 생성되었는데, 이것을 gdx에 어떻게 적용 가능한지 여쭈어보고 싶습니다.
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("data/font.ttf")); 라고 이런 구문을 이용하여 폰트제너레이터 인스턴스를 생성하려고 하는데, 폰트의 확장자를 fnt로 하면 읽지를 못하네요. 폰트생성파일 두개는 모두 asset의 data 폴더에 집어넣었습니다.(물론 jar파일들은 메인소스의 libs폴더에 넣은 후 빌드패츠에 등록했습니다.)
또 링크걸어주신 해외포럼의 True type font 함수를 써보면 이상하게 인식을 못하네요. 자동완성에도 뭘 import하라고 하는지도 없고, 클래스생성하라는것만 나옵니다...
다시한번 좋은 정보 감사드립니다. 행복하세요.