유니티 게임의 한글화를 진행하다 보면
한글 SDF폰트를 넣지 않았음에도 불구하고 한글이 출력되는 경우가 있다.
이 경우 대부분 3가지 정도로 요약할 수 있다.
- 첫째. 개발사가 추후 한국어 지원을 위해 한글 SDF 폰트를 제작해서 넣어둔 경우
- 둘째. CJK(중국, 일본, 한국어) 지원을 위해 때려박아 버린 경우
- 셋째. ttf/ufnt폰트를 사용하거나, sdf 폰트를 쓰되 ttf 폰트를 폴백으로 잡은 경우
첫번째 혹은 두번째 케이스는 그냥 대사만 번역해도 될 정도겠지만
세번째는 그냥 번역할 경우 일부 한글이 깨지는 증상이 나타나는 경우가 잦다.
또한,
1개월쯤 전에 봤던 게임 몇몇개가 그랬는데, 그 중 하나인 Pathlogic 2를 대상으로
폴백 폰트 연결이 대충 어떤 식으로 되어있으며, 문제를 어떻게 해결하는지 알아보자.
게임 이름: Pathlogic 2
유니티 버전: 2018.4.6f1
한글 번역: Photis님 ( https://steamcommunity.com/sharedfiles/filedetails/?id=2533489773 )
대사를 한글로 바꾼 후, 폰트엔 손을 대지 않은 상황이다.
한글이 모두 깨져서 나온다.
assets 파일을 열어 ttf 폰트를 교체하자.
예시는 나눔고딕으로..
완벽하게 출력되는 대사가 있으나,
그렇지 못한 대사도 있다는 것을 알 수 있다.
본 게임은 SDF폰트를 사용하며, 폴백폰트 또한 사용하고 있다.
폴백폰트를 사용하고 있다는 사실을 어떻게 아느냐?
UABEA로 SDF 폰트 에셋을 검색하여 Texture와 MB파일을 찾고 (위 게임에서는 NotoSans)
MB파일을 txt로 dump뜬 후 열어보면
m_AtlasPopulationMode = 1이라고 적혀있는 걸 볼 수 있다.
이게 폴백 관련인지, 1이 되어있으면 항상 폴백폰트 연결이 된 상태였다.
아무튼 이 덤프파일에 나와있는 원본 폰트 제작정보를 이용해 임시 Unity 프로젝트에서 SDF 폰트를 만들자.
원본 폰트 제작정보는 Creation을 검색하면 아래 쭉 적혀있다.
pointsize 90
padding 9
랜더링은 그냥 제일 깔끔하고 빠른 SDFAA_hinted를 사용하기로 하였다.
* 그냥 빌드 시 오류가 떠서, 유니티 상단 메뉴 중 Window -> Package Manager에 들어가 모든 패키지를 업데이트 한 후 실행하니까 정상적으로 빌드가 되었다.
* MB파일 수정법
- 나눔고딕 MB파일 m_Faceinfo 이하를 잘라내기 한 후, 원본 m_Faceinfo 이하에 덮어씌운다.
- 이후 GUID, m_PathID, m_FileID를 검색해 원본과 같이 맞춰준다. (Notepad++ 이용)
-> 이때, 추후 게임 실행시 오류가 뜬다면 구조가 조금씩 다르거나 뭔가 문제가 있는 것이므로, 확인해보자.
원본과 내가 만든 임시 프로젝트의 폰트 좌표파일(MB파일)의 텍스트 덤프.
오른쪽(나눔고딕)을 왼쪽(게임원본)에 적용시킨 모습이다.
잘라내기를 하였기에 오른쪽은 내용이 휑하다.
잘라내기-붙여넣기 작업을 한 후, GUID, m_PathID, m_FileID를 각각 검색해
사진처럼 다른 부분을 수정해 준다.
구조가 다르다면 구조도 맞춰준다.
이후 수정해준 덤프파일을 게임 assets파일에 import한 후,
실행해주면?
제대로 한글이 출력되는 것을 볼 수 있다.
만약 GUID, m_PathID, m_FileID를 맞춰주지 않거나 (특히 m_AtlasTextures 하위 m_PathID)
MB파일 구조를 맞춰주지 않는다면
게임에 오류가 뜨면서 튕기게 된다.
Fallback으로 잡혀있는 파일의 PathID가 기입되지 않거나 다른 거로 지정되어 있어서 그런 것 같다.
이땐 앞서 말했던 m_AtlasPopulationMode = 1 부분을 m_AtlasPopulationMode = 0으로 바꾸면
폴백 연결이 끊어지게 되어 오류 없이 실행이 된다.
어차피 사용하고자 하는 글자들은 모두 SDF폰트로 제작했을 테니 폴백을 끊어도 상관없다.
하지만 폴백을 끊으면 안 되는 케이스가 있는데,
바로 특정 문자(ex. 숫자)의 표기를 유지시키고 싶은 경우이다.
숫자까지 SDF 폰트로 제작해버리니 기존 폰트 대비 너무 사이즈가 늘어나 UI를 벗어난다 싶으면
- MB파일을 수정하여 SDF폰트가 사용될 때의 사이즈 자체를 줄여버리거나
- SDF폰트 제작시 숫자를 포함시키지 않고 제작을 한 후 fallback 폰트를 잡아버리면
숫자는 원본 폰트로, 한글 및 기타 문자들은 SDF 폰트로 나오게 되어 해당 문제를 해결할 수 있다.
'한글패치 관련 짧은 글' 카테고리의 다른 글
유니티 IL2CPP 게임에서 DLL 생성 (윈도우, 안드로이드) (0) | 2021.11.28 |
---|---|
CrystalTile2의 이미지패턴 기능 <ObjH-1234 / ObjV-1324> (0) | 2021.11.01 |
유니티 게임 SDF 폰트 변경 (폴백 폰트 연결의 경우) (0) | 2021.10.11 |
유니코드 코드 컨버터 (0) | 2021.08.24 |
텍스트 파일 내용 교체 (csv이용) (0) | 2021.08.09 |
유니티 게임 .bundle파일 사운드 교체 (.snd.fsb) (4) | 2021.07.19 |