유니티 게임 개발/유용한 기술

[유니티] TextMeshPro 한글 폰트 에셋 만들기

노랑꼬리 2022. 12. 8. 19:07

유니티 기본 폰트는 매우 불만족스러운 예쁘지 않은 폰트일 뿐더러 한글도 적용되지 않는다.

 

이를 위해 우리는 인터넷에서 예쁜 폰트를 다운 받아 적용시키고자 한다.

 

유니티에서는 폰트를 바로 사용할 수 없고 유니티 에셋으로 제작하여야 하는데 이에 대해 정리해보았다.

 

 

1. TTF? OTF?

TTF : True Type Font (트루 타입 폰트)

OTF : Open Type Font (오픈 타입 폰트)

 

일반적으로 폰트를 다운 받으면 TTF 파일과 OTF 파일 두가지가 있는 경우가 대부분이다.

두 타입의 차이는 곡선을 그리는 방식의 차이인데 깊게 들어가기보다는 폰트 에셋 만들기에 중점을 두어 간단히 설명하고 넘어간다.

OTF의 경우 곡선을 그릴 때 3차원 연산을 통해 그려 매끄럽고 섬세한 표현이 가능하다.

TTF의 경우 곡선을 그릴 떄 2차원 연산을 통해 그려 섬세한 표현을 할 수 없으나 연산이 빠르다. (OTF에 비하여)

 

유니티에서 그러면 어떤 폰트를 써야할까?

기본적으로는 TTF를 사용하는 것이 좋다.

작은 차이지만 리소스를 적게 소모하기도 하고 OTF의 경우 출력 화면의 해상도가 낮다면 오히려 매끄럽지 않게 나올 수 있기 때문이다.

특히 PC에서는 리소스나 해상도 문제가 없을 가능성이 높지만 모바일의 경우 TTF를 사용해 주는 것이 안전하다.

 

 

2. TextMeshPro Creator

 

TextMeshPro에 사용될 폰트는 위 사진의 경로와 같이 Window - TextMeshPro - Font Asset Creator로 생성한다.

※ 이 포스팅에 사용되는 폰트는 넥슨에서 배포하는 NEXON Lv1 Gothic 입니다.

 

01

Font Asset Creator 창에서 최상단 Source Font File 에 다운받아준 폰트를 넣어준다.

(폰트 다운을 미리 유니티 프로젝트 내에 다운받아두고 드래그 앤 드랍으로 넣어주면 편하다.)

다른 설정을 만질 필요없이 Generate Font Atlas 를 눌러주면 폰트 에셋이 생성되고 Save를 눌러 에셋을 저장해주면 완성이다.

 

 

3. 한글 폰트 출력하기

01

2번 내용으로 만든 에셋을 폰트 에셋에 넣어보면 영어는 잘 되지만 한글은 네모로 나오는 것을 볼 수 있다.

이를 해결하려면 폰트 에셋의 설정을 조정해 주어야한다.

폰트 에셋 파일을 더블 클릭해주면 인스펙터 창이 나온다.

 

01

기본 설정으로 Static 으로 되어있는데 이를 Dynamic 으로 변경하고 Sampling Point Size를 50~70 정도 사이즈로 지정해주면 된다. 폰트마다 세부 값들이 다르기 때문에 만약 여전히 네모로 깨지는 값이 있다면 이 수치를 조금씩 조정해주자.

 

이렇게 해주는 이유는 폰트 에셋에서 샘플로 모든 글자를 생성해보고 이 모양을 텍스트에 그려주는 방식을 사용하는데

영어의 경우 A~Z. a~z 까지만 작성해주어도 모든 철자를 생성할 수 있어 기본 샘플링 값이 664로 되어있다.

하지만 한글의 경우 가에서 받힘만 따지더라도 갑갖갇각갓감간강갈갋갊갛갘 등등 너무나 많은 종류가 있기 때문에 훨씬 많은 샘플이 필요하다. 그렇기 때문에 보통 60 정도로 생성하여 모든 글 샘플이 생성 될 수 있도록 하는 것이다.

 

아틀라스(Atlas) 사이즈는 이 샘플을 그릴 도화지 크기라고 생각하면 된다. 이부분은 건들이지 말고 웬만해서 샘플링 폰트 사이즈를 수정해주자.

 

마지막으로 Apply해주면 정상적으로 출력되는 것을 볼 수 있다.