180bpm
Scaleform과 Unreal Engine의 localizing 기능을 이용해서 UI 만들때 폰트 쉽게 바꾸기 본문
Scaleform과 Unreal Engine의 localizing 기능을 이용해서 UI 만들때 폰트 쉽게 바꾸기
powdersnow 2012. 5. 15. 14:18어제 리소스 교체 작업 하다가 생각이 나서. 기록차.
1. 'gfxfontlib.swf'파일이 있다면 플레이어나 인티그레이트 시킨 엔진에서 'gfxfontlib.swf'을 먼저 검색해서 그 안에 있는 임베디드 시킨 폰트 오브젝트를 찾는것으로 알고 있다.
2. 이전 UI에서는 총 4개의 Font를 썼다.
$NormalFontOTFB
$NormalFontOTF
$NormalFontOTFExB
$QuestFont
대충 이런 느낌으로 사용 하고 있었다.
3. 이걸 한가지 폰트로 통일 시켜달라는 요구가 왔다.
공유 라이브러리(버튼, 윈도우 프레임등)은 소스를 수정하면 되는데 문제는 각각 UI에 들어간 TextField
하나하나 열어서 하려니 번거롭다는 생각이 들더라.
JSFL로 TimeLine>Frame>elements 검색하는식으로 재귀호출해서 바꿔버리려고 했는데 아무리 생각해도 미친짓같았다.
4. 우선, 로그인 화면부터 수정을 시작했다.
폰트가 계속 ■■■■ 이렇게 뜬다.
계속 삽질을 했다.
결론은 FontName이 숫자로 시작해서 ScaleForm에서 찾지 못한것.
FontName을 FontCreator로 수정해서 해결
그리고, UE에서는 폰트를 사용하려면 로컬라이징 파일에도 해당 라이브러리와 폰트명을 적어줘야 한다.
이것 역시 수정.
[FontLib]
FontLib=componentLibs.gfxfontlib
[Fonts]
NormalFontOTF=NanumGothicOTF
NormalFontOTFB=나눔고딕OTF,Bold
$NormalFontOTFExB=NanumGothicOTF ExtraBold
$QuestFont=HY울릉도M
5. 절반쯤 수정하다가 문득 생각이 났다.
로컬라이징 파일에 키매핑 시킨걸 매핑만 바꾸면 되지 않을까?
NormalFontOTF=새 폰트
NormalFontOTFB=새 폰트
$NormalFontOTFExB=새 폰트
$QuestFont=새 폰트
된다. 아주 잘 된다.
어떤 원리로 돌아가는지는 엔진 프로그래밍쪽이 아니라 소스를 못봐서 모르겠는데
우선 swf파일을 export 시켜서 gfx파일로 만들고 그 gfx파일을 메모리에 올리는데 키매핑 하는 부분에서 로컬라이징 부분으로 강제로 바꿔주는것으로 보인다.
그러고보니 로컬라이징이 그렇게 돌아가지;;;;;