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

게임에서 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 덕에 금칙어 처리도 신경써야 할 듯 하다. 수많은 정보를 처리해주고 복잡하게 꼬여있는 유니스크라이브가 왜 금칙어에 대해서는 무시하고 있을까... 아직 못찾은 것일지도 모르지. 으으...
저작자 표시
신고
      탐구생활/Uniscribe  |  2010.08.06 15:42
2010.08.09 08:37 신고 댓글에 댓글수정/삭제
저는 글자 출력을 그냥 API 얼렁뚱땅 처리해 버려서 ^^;
글자에 효과를 주기는 힘들더라구요;; 유니스크라이브 해보고 싶지만 삽을 들어야 한다는 것 때문에 그냥 못 본체 하고있습니다 ㅎ
2010.08.09 15:56 신고 수정/삭제
저도 일단 동작은 하게 해뒀지만... 뭣 좀 해보려면 아직도 해메게 됩니다. 지금 구조도 맘에 쏙 들지는 않아요. 조만간 크게 갈아엎게되지~~ 싶습니다. ㅠㅠ;;
.
name ::   password :: blog :: secret
등록



오랑캐꽃's Blog is powered by Daum