태국어라곤 사와디캅 밖에 모르는 저에게 태국어 로컬라이징 작업이 떨어졌습니다.
( 그마저도 어떻게 적는지조차 모르는... )
이전에 한글패치 작업을 해봤던 경험이 있어서, 관련된 툴을 다루는 것과 인코딩 문제 대처는 자신이 있었기에 쉽게 생각하고 작업을 진행했습니다만, 여러가지 문제가 발생하였습니다.
그 과정에 겪었던 내용들을 기록해두고자 합니다.
첨자가 중복되어 나타는 현상이 일부 발생.
처음 태국측 퍼블리셔에서 적용해달라고 준 폰트 파일은 Tahoma 폰트였습니다.
현재 유니티로 개발하며 NGUI를 사용중이며, NGUI에서 폰트 시스템은 텍스트를 사용하기 비트맵으로 변환 후 사용합니다. ( 폰트파일을 바로 넣을수 있으나, 버그가 많음 - 현재 2014년 기준 )
적용 후, 디바이스에 넣어 테스트 해 본 결과 첨자가 중복되서 나오는 현상이 발생하였습니다.
아래 2번째 이미지의 빨간원을 보시면...
첨자부분이 겹쳐서 출력되고 있는 모습을 확인 할 수 있습니다.
위의 이미지 기준, [1.Top] 의 첨자 부분과 [2.ABOVE] 첨자 부분이 중복되서 출력되고 있는 현상이 발생하는건데, NGUI Font 시스템으로 처리할수 있는 방법이 없었습니다.
Font Creator / FontForge 로 glyph 조절하기 ( 실패 )
폰트파일을 NGUI에 적용시키기 위해 비트맵으로 변환하는 작업을 진행해야 되는데, 이를 위해서 Font Creator를 사용합니다. ( 비트맵 변환 이외에 불필요한 문자들을 삭제해서 빌드파일 용량 경량화를 위해 작업하는 것도 있음. )
이것 저것 변환을 시도해보았으나 만족할만한 결과를 얻지 못했고, 다른 방법을 시도해보기로 하였습니다.
한글처럼 모든 문자조합 떄려박기(?) ( 실패 )
시간은 촉박한데, 해결방법이 요원해지자, 막나가기(?) 시작했습니다.
Font Creator나 Font Forge 를 이용하면 새로운 문자나 특수문자들을 추가할 수 있는데, 한글처럼 모든 문자조합의 경우의 수대로 glyph를 새로 추가해서 넣는 방법을 실현해보기에 이르는 단계까지 와버린 것입니다.
태국어의 해당 단어가 무슨 뜻인지도 모르는 마당에 비트맵 파일 열고 각각의 glyph 에 맞춰서 도트를 찍었는데, 단어 몇 개 하고 나니 이게 뭐하는 짓인가 싶어 바로 포기.
GPOS / GSUB 정보를 찾다.
스택오버플로우와 레딧, 유니티 커뮤니티 등을 돌아다니며, 수많은 구글링을 시도해본 결과, GPOS / GSUB 에 대한 충분한 이해와 유니코드 맵핑을 다룰줄 안다면 '이렇게 저렇게' 해보라는 글을 몇 개 찾았습니다만, 능력 부족으로 따라해보지 못하였습니다.
다른 태국 앱들은 어떨까?
도저히 방법을 못찾아서 일단 태국 플레이스토어에 올라와있는 앱들을 무수히 많이 다운받아보았습니다.
여러 앱을 열어보니, 폰트들이 거의 다 비슷한것을 발견하고, 태국어 커뮤니티에서 무슨 폰트인지 수소문 했습니다.
몇분의 도움으로, 해당 폰트가 Garuda 폰트였다는걸 알게 되었고, 그 폰트를 기준으로 구글링을 계속했습니다.
그러면서 태국어에 특화된 (첨자관련 이슈가 없는 ) 폰트들을 여러 개 찾아내는데 성공!
#### 구글링을 통해 찾은 태국어 첨자 중복안되는 폰트들 ( True Type ) ####
Garuda ...UPC계열 ( LilyUPC, CordiaUPC... 등등) Kinnari Norasi Loma Arial Unicode MS |
* 태국어 폰트 자료 링크 :
- http://www.hawaii.edu/thai/thaifonts/
- http://slice-of-thai.com/fonts/#garuda
첨자 중복 해결! 그런데...
퍼블리셔에게 해당 증상과 해결방안을 설명하고, Tahoma 폰트에서 Garuda 폰트로 변경하는것을 허락받았습니다.
적용 후 중복된 폰트들이 정상적으로 나오는 것을 확인할 수 있었습니다...만,
이번엔 다른 문제에 봉착하게 됩니다.
이렇게 나와야할 녀석들이....
이렇게 나오게 됩니다... ㅠㅠ
위의 이미지에서 파란색 사각형이 있는 곳을 보시면, 태국어 문자구조상 Top에 위치한 녀석이 보간되지 않고 그 위치 그대로 지키고 있습니다.
이걸 보간해주고 바꿔주는 것이 이전에 찾았던 GSUB / GPOS 입니다.
(간략히말하면 GSUB은 글자 대치, GPOS는 글자 위치...)
첨자들이 조합문자로 잘 연결되는거보면 GSUB / GPOS 정보가 누락된거 같진 않은데... 왜 저 부분 보간해주는 부분만 저런지 원인을 찾을 수 없었습니다.
똑같은 폰트로 메모장과 워드에선 잘 나오는데, 유니티에선 저렇게 떨어진 상태로 출력되고 있는 상황입니다.
NGUI의 문제인가 싶었지만, 안드로이드 기본 폰트를 해당 폰트로 교체해도 똑같은 현상이 발생했습니다.
( 안드로이드 기본 설정, 메시지등의 폰트에서도 첨자가 떨어진 모습으로 출력 됨 )
그렇다고 하는건 태국에선 기본 사용자들도 저렇게 떨어진 첨자로 된 UX들을 흔히 보고 있다는 소리가 아닌가 싶어, 그냥 추가 수정없이, 변경된 폰트만 적용 후 퍼블리셔에게 전달하였습니다.
( 물론 해당 이슈에 대한 부분도 같이 설명해서 전달함. )
얼마 뒤, 태국 퍼블리셔 측에선 문제가 없다고 답변이 왔고, 그대로 라이브 서비스를 진행 했습니다.
첨자 떨어있어도 OK, 하지만 중복되서 나오는건 안됨.
사실 해당 현상은 태국어를 읽는데 크게 지장을 주진 않는다고 합니다.
그런데 한국인의 입장에선 한글 "ㅎ" 자를 쓰는데 "ㅇ"부분만 밑으로 쭉 뺀 느낌 이랄까요??
그래서 이 문제를 해결하고자...!! 혹시...!!
또 다른 폰트가 있을것 같아 찾아보았지만....
다들 똑같은 현상이 나타나더군요.
라이브 이후에도 혹시나 방법이 있을까 여러 커뮤니티 조언과 구글링을 해보았지만 해결방안을 찾을수 없었습니다.
뭐 사실 해당 포스팅도 속시원히 해결해 줄 만한 내용은 없습니다.
그냥 혼자 작업하면서 삽질해온 과정(?)을 간략하게 적어 놓은 것이고, 혹시나 나중에 똑같은 문제로 고생하시는분들 계시면 참고하시라고 적어둔 글입니다.
같은 이슈로 수많은 구글링을 하고 있을 누군가에게 미약하게나마 도움되길 바라겠습니다.
-- 추가 ( 2018. 1. 21 ) --
https://github.com/SaladLab/Unity3D.ThaiFontAdjuster
유니티 폰트 렌더링 시스템은 GSUB / GPOS 정보를 보간해주는 기능이 없습니다.
이를 대체할수 있는 소스를 찾아 공유해드립니다.
태국어 로컬라이징 하시는분들 참고하세요.
- 수정 2차 -
ㅁ 참고 사이트 링크
- [링크]동일한 문제로 유니티 포럼에 올라온 글
- [링크]태국어 로컬라이징 관련 추가 정보
- [링크]OpenType 및 GPOS/GSUB 정보