프로그래밍/Unity, MAUI, Mono

[Unity 2022.3.20] 폰트를 TMP(TextMeshPro)로 변환했는데도 한글이 깨지는 현상

당근천국 2024. 3. 4. 15:30

 

검색해서 나오는 방법을 사용하여 유니코드 폰트(나눔 고딕)를 설치하고 TMP(TextMeshPro)로 변환했는데 한글이 계속 깨집니다.

 

 

레거시(Legacy text)는 잘만 나옵니다.

폰트 자체가 잘못된 게 아니라 생성이 잘못됐다는 거죠.

 

 

1. 유니코드 범위 지정하기

유니코드 폰트의 경우 폰트 범위를 지정하면 되는 경우가 있으니 해봅시다.

 

'Character Set'를 'Unicode Range (Hex)'로 설정합니다.

그러면 'Character Sequence (Hex)'칸이 생기는데 이 칸에 아래와 같이 범위를 설정합니다.

 

가-힣, 초성, 중성, 종성의 범위는 다음과 같습니다.

AC00-D7AF,1100-1112,1161-1175,11A8-11FF

 

아니면

AC00-D7AF, 1100-11FF

 

 

이제 완성 한글은 잘 나오는데 초성, 중성, 종성이 안 나옵니다.

 

 

2. 호환 한글 설정하기

그래서 검색해 보니 '호환 한글'이라는 게 있습니다.

'호환 한글' 범위인 '3131-318F'로 지정해 봅시다.

AC00-D7AF,3131-318F

 

 

이제 초성, 중성, 종성도 잘 나옵니다.

(영어는 지정하지 않아서 영어에는 폰트가 적용되지 않습니다.)

 

 

3. 정리

각 부분을 정리해봅시다.

한글 전체: AC00-D7FF
초성 만: 1100-115F
중성 만: 1160-11A7
종성 만: 11A8-11FF

소문자: 0061-007A
대문자: 0041-005A

일반 특수문자: 0020-00FF


한글 전체, 영문, 일반 특수문자 :AC00-D7FF,0061-007A,0041-005A,0020-00FF

한글, 영문, 대소문자, 일반 특수문자 모두 포함: 0000-FFFF

 

 

마무리

만약 다른 문자도 필요하다면 위키피디아를 참고하면 됩니다.

참고 : 위키백과 - 유니코드 영역

 

자주 사용하는 유니코드 범위는 아래 링크를 참고하면 됩니다.

참고 : 만사오케이프로 - Unity 로컬라이징 TextMeshPro TMP_Font 유니코드 범위

 

 

다른 사람들은 유니코드 그냥 통으로 읽어도 되는 것인가?

아니면 버전에 따라서 동작이 다른 것인가?

라는 고민을 하게 만드는 문제였습니다.

 

그리고 TMP로 생성된 폰트만 들어있는 '.asset'의 용량은 항상 거의 똑같습니다.

(폰트별로 약간씩 차이가 있음)

무조건 적으로 변하지 않는 것인 지까지는 모르겠습니다.

범위를 바꿔도 계속 같은 용량이더라고요.