삽질하는플머

'게임에서 다국어 출력하기'에 해당되는 글 1건

  1. 기존 게임용 문자 상자 (TextBox) 구현 2

기존 게임용 문자 상자 (TextBox) 구현

탐구생활/Uniscribe
유니스크라이브 삽질에 비해 상대적으로 쉬워보이는 문자열 출력도 이것 저것 신경쓰려다 보니 계속 할 일이 생긴다.
모든 일이 다 그렇지만... 제대로 하려고 마음 먹으면 끝이 없는듯 하다.

게임에서 NPC 대화상자등을 만들 경우도 쉽게 하려면 화면너비 기준으로 일일이 잘라넣으면 되지만, UI 가 변경되거나 할 경우 다시 수정해야 하는 번거로움이 있다. 때문에 적절한 워드랩을 지원해주면 로컬라이징 작업이 많이 행복해진다.

유니스크라이브의 ScriptBreak() 함수를 쓰면 문자열의 특정 위치에서 캐럿이 위치할 수 있는지, 단어 분리점인지, 라인브레이크가 가능한지 등의 정보가 기록된 SCRIPT_LOGATTR 의 배열을 얻을 수 있다. 이 중 라인브레이크 정보를 써서 문자 상자 (TextBox) 를 만들어 보았다. 




상자의 폭을 줄이면 넘치는 글자는 다음줄로 흘러내려간다.




가운데 정렬.




우측 정렬.




우측 정렬 하면 빼놓을 수 없는 아랍어 테스트.




태국어의 단어단위 워드랩도 일단은 제대로 동작하는 것 처럼 보인다.
(뭔 뜻인지 알 수가 없으니 메모장과 비교해 볼 수 밖에...)




장평 150% + Blur:R2




장평 70% + Blur:R2




------

오래전 엘비스님과 태국어 출력에 대해 이야기하다 GPG에 올렸던 글이 생각났다.
http://www.gpgstudy.com/forum/viewtopic.php?p=106336

별다른 설정을 하지 않았음에도 윈도의 워드패드나 우분투의 GEdit 에서 워드 브레이크가 동작하는 것이 신기해서 올렸던 글이었다.
생각해보면 유니스크라이브라는 명칭을 처음 들었던 곳도 GPG였는데...

예를 들면 이런 고민의 흔적들...
http://www.gpgstudy.com/forum/viewtopic.php?p=25873 
솔직히 이렇게 "나는 이제 알지만 말해주기는 싫어" 같은 글들을 참 싫어한다. 그래도 험한 등산로 나뭇가지에 매어둔 리본정도의 역할은 되는 듯 하다. 적어도 어디로 가야하는지는 알려주니까.

당시 백업소스를 뒤져보니 리치에디트를 동적으로 생성하고 문자열을 복사해넣은 뒤 캐럿의 위치와 워드 브레이킹 정보를 얻는 코드도 있군. 크핫~~!

------

까칠한 PM 덕에 금칙어 처리도 신경써야 할 듯 하다. 수많은 정보를 처리해주고 복잡하게 꼬여있는 유니스크라이브가 왜 금칙어에 대해서는 무시하고 있을까... 아직 못찾은 것일지도 모르지. 으으...