UDN
Search public documentation:

ImportingFontsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 머티리얼과 텍스처 > 폰트 만들고 임포트하기
UE3 홈 > 유저 인터페이스와 HUD > 폰트 만들고 임포트하기

폰트 만들고 임포트하기


개요


여기서는 텍스트를 그릴 때 사용할 트루 타입 폰트를 윈도우에서 언리얼 엔진으로 임포트하는 법에 대해 알아보겠습니다.

1단계 - 새 애셋 만들기


FontImportMenu.jpg

위의 그림에서처럼 Generic Browser 의 보기 창을 오른쪽 클릭, New Font Imported From TrueType(트루타임에서 임포트한 새 폰트) 메뉴 옵션을 선택합니다. 그러면 아래 그림과 같은 애셋 대화상자 New가 나타납니다.

NewAssetDlg.jpg

2단계 - 임포트할 폰트 선택


위에 보이는 대화상자의 맨 아래에는 Choose Font(폰트 선택) 버튼이 있습니다. 이 버튼을 사용하면 임포트하려는 폰트를 시각적으로 선택할 수 있습니다. 버튼 옆의 텍스트는 선택한 폰트를 사용해서 업데이트 되므로, 선택한 폰트를 즉시 눈으로 확인할 수 있습니다.

3단계 - 캐릭터 세트의 프로퍼티 설정


아래의 표는 새 폰트를 임포트하는데 쓰이는 프로퍼티들의 목록입니다.

프로퍼티 설명
USize 생성되는 텍스처의 넓이를 픽셀로 표시.
VSize 생성되는 텍스처의 높이를 픽셀로 표시.
XPad 가로축의 캐릭터간 간격을 픽셀로 표시.
YPad 가로축의 캐릭터간 간격을 픽셀로 표시.
AntiAlias 생성되는 텍스처 데이터의 안티 앨리어싱을 유효화할 것인지 아닌지 결정.
Chars 해당 폰트로 생성될 캐릭터들을 지정하는데 사용. 이는 폰트 전체를 모두 생성하지 않는 경우, 또는 사용할 캐릭터들을 제한하고자 할 때 편리합니다.
Wildcard Path와 관련하여 사용됨. 이는 주어진 디렉토리에서 파일을 선택할 경우 사용할 패턴을 지정합니다.
Path 하나 또는 그 이상의 파일을 폰트에 포함할 캐릭터의 세트로서 지정하는데 쓰임. 지역화를 위한 폰트를 생성할 경우, 그리고 그 폰트에 필요한 캐릭터들만을 원할 경우에 유용합니다; 사용할 지역화 파일(들)을 지정하면 필요한 캐릭터들만을 생성합니다.
Style 1000 픽셀당 인쇄용 픽셀의 수를 지정합니다. 보통 캐릭터에는 400, 볼드체에는 700이 사용됩니다.
Italic 이탤릭체를 사용해 폰트를 생성할 것인지 아닌지 결정.
Underline 밑줄긋기가 유효화된 폰트를 생성할 것인지 아닌지 결정.
bCreatePrintableOnly 인쇄할 수 없는 캐릭터들을 폰트에서 삭제할 것인지 아닌지 결정함. 폰트에서 제어문자들이 제거되므로 공간이 절약됩니다.
bUseSymbolCharSet 폰트를 심볼의 세트로서 임포트할 것인지, 아니면 캐릭터의 세트로서 임포트할 것인지 결정함.
ExtendBox 캐릭터당 밀어넣을 텍스처 UV의 양을 픽셀로 표시.

Wildcards (와일드카드)

Wildcard 텍스트 파일은 캐릭터들을 함유하고 있는 파일이며, 임포터가 가리키는 대상입니다. 따라서 이는 콘텐츠를 읽고 파일 안에 함유되어 있는 캐릭터들만을 임포트합니다. 반면에, FilePath는 텍스트 파일(와일드카드)이 들어있는 디렉토리를 가리키는 경로일 뿐입니다.

이를 이용하기 위해서는, 캐릭터 파일의 경로와 와일드카드가 다음과 같아야 합니다.

CharacterFilePath=C:\FileName\FileName
CharacterFileWildcard=YourTextFile.txt

윈도우스에서 텍스트 파일의 실제 경로는 다음과 같아야 합니다:

C:\FileName\FileName\YourTextFile.txt

다음은 프로퍼티를 임포트하고 설정하는 단계입니다:

  1. C:\FontPath 라는 이름의 폴더를 만들어 FontChars.txt 라는 이름의 텍스트 파일을 그 폴더에 넣습니다.
  2. FontChars.txt 파일에 와일드카드 캐릭터 텍스트를 붙여 넣습니다.
  3. FontChars.txt 텍스트 파일을 UNICODE로서 저장합니다 (예:윈도우스의 NotePad).
  4. UnrealEd를 열고, Generic Browser 를 오른쪽 클릭해서, New Font Imported from TrueType 을 선택합니다.
  5. FontName 을 Arial Unicode MS등으로 설정합니다.
  6. 다음 프로퍼티들을 설정합니다:
    1. bCreatePrintableOnly true 로 설정
    2. CharsFilePath C:\FontPath 로 설정
    3. CharsFilePath C:\FontPath 로 설정
    4. TexturePageMaxHeight = #
    5. TexturePageWidth = #
    6. padding/extend 박스의 값들을 설정합니다
  7. 폰트 및 캐릭터 크기를 선택합니다
  8. 임포트합니다

filepath 및 wildcard와 더불어 bCreatePrintableOnly 플래그가 설정되었는지 확인하십시요. 이 체크박스가 알맞게 설정되지 않으면 캐릭터들이 바르게 임포트되지 않을 수 있습니다.

: Wildcard 입력 이외에 반드시 Character File Path를 사용해야 합니다. 파일 경로에는 파일 이름이 포함되어서는 안됩니다. 이는 파일의 경로일 뿐입니다. 또한 임포트하려는 텍스트 파일이 UNICODE 캐릭터를 포함하고 있는 경우에는 반드시 UNICODE로서 저장되어야 합니다. 또 파일은 0xfffe 헤더를 가지고 있어야 합니다. 그렇지 않으면 난관에 봉착하게 됩니다. 현재 UTF-8 포맷으로 저장된 폰트 캐릭터 파일은 지원되지 않고 있습니다.

Wildcard 의 예

다음은 다목적 캐릭터들의 목록입니다. 각 행의 앞에 있는 여백들은 계획적인 것입니다. 하나는 보통 여백이고, 또 하나는 불어용입니다.

영어:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

확장:

 €„ˆ‹Œ‘’“”–—˜™›œ¡¢£¨©ª«­®°²³´¹º»¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜßàáâãäåæçèéêëìíîïñòóôõöøùúûüýÝ¥§Ÿ…

와일드카드를 이용하면 임포트하려는 캐릭터들이 폰트가 지원하는 한 모두 임포트 되는것이 보장됩니다. 위의 캐릭터들을 임포트한 후에도 타원형 캐릭터가 빠져 있다면, 이는 TTF 파일에 존재하지 않는 것입니다.

Extendbox

ExtendBox 의 수치가 아주 높은 경우 가외의 캐릭터가 그려집니다. 또는, 이탤릭 폰트가 잘리는 경우, 이를 사용해 교정할 수 있습니다. ExtendBoxPadding (가로 또는 세로)과 다릅니다. Padding 은 입력된 수치에 따라 캐릭터 사이의 간격을 띄우는 반면, ExtendBox 는 캐릭터의 2D UV 좌표를 이동할 뿐입니다.

=ExtendBox=를 사용할 때 약간의 패딩을 추가하면, 캐릭터 e 를 사용할 때 d 의 절반이 렌더되는 일을 피할 수 있습니다.

어떤 경우에는 특정 소문자나 - 같은 특수 문자가 기준선이 아닌 대문자 열에 자리잡고 있는 것이 발견될 것입니다. 실제의 텍스처 위의 캐릭터 위치는 의도적인 것으로, 게임에서는 이런 모양으로 표시되지 않습니다. 이는 폰트를 임포트할 때 전반적인 텍스처의 사용량을 절약하기 위한 것이며, 텍스처 자체에서만 존재합니다.

커닝에 대해서는, 폰트의 기본 커닝값을 설정할 수는 있지만, 실제 폰트 자체의 리딩은 설정할 수 없습니다.

텍스처를 현재의 임포트에 근거해서 외부에서 조정하는 일을 조심하십시요. 텍스처를 변경해도 UV는 바뀌지 않으며, 그 결과로 텍스처가 절단되거나 더 심한 문제가 생길 수 있습니다. 대신 임포트를 다시 하고, 캐릭터를 비슷한 기준선으로 임포트하는 (엔진에서 이전에 했던 것처럼) bEnableLegacyMode 체크박스를 체크하십시요.

폰트 프로퍼티


제네릭 브라우저에서 font 를 더블 클릭하면 Font Properties(폰트의 프로퍼티) 창이 나타납니다. 이 창은 Font Pages 미리보기 및 변경 등의 옵션들을 표시합니다. Font Pages는 프로퍼티 창의 왼쪽에 있습니다. 스크롤바를 사용하면 나머지 페이지들을 볼 수 있습니다. Export/Update 옵션을 사용하려면 먼저 페이지를 선택해야 합니다.

FontProperties.jpg

기존의 폰트 수정

폰트 페이지가 생성된 후에도 이를 수정할 수 있습니다. 때로는 폰트가 생성되는 동안에, 캐릭터가 배정된 공간 밖으로 삐져 나가거나 엉뚱한 픽셀이 추가되는 수가 있습니다. 이런 경우, 아티스트는 폰트 페이지를 익스포트하여 Paint 프로그램을 사용해서 깨끗이 정리할 수 있습니다. 폰트 페이지를 익스포트/임포트할 때도 Font Properties 창을 사용합니다. 먼저 익스포트할 폰트 페이지를 선택합니다. Export 버튼을 눌러 폰트 페이지를 익스포트할 디렉토리를 찾으십시요. 익스포트/임포트 과정은 다음과 같은 엄격한 명명 규칙을 사용합니다:

FontName_Page_#.tga

Update 과정에서는 어느 페이지를 대체할 지 결정할 때 이름을 사용합니다. 그러므로 폰트 페이지의 파일 이름을 바꾸지 마십시요.

Update 는 선택된 폰트 페이지를 대체할 한 개의 파일을 임포트합니다.

Update All 옵션은 명명 규칙에 맞는 TGA 파일 디렉토리를 조사합니다. 이 파일들은 자동으로 임포트되어 기존의 폰트 페이지들을 대체합니다.

Export 옵션은 선택한 폰트 페이지를 앞서 소개한 명명 규칙을 사용해서 TGA 파일로 익스포트합니다.

Export All 은 모든 폰트 페이지들을 앞서 소개한 명명 규칙을 사용해서 지정된 디렉토리로 익스포트합니다.

폰트 미리보기

폰트가UE3에서 어떻게 보일것인지 보려면, 폰트 프로퍼티창의 "Preview" 버튼을 사용합니다. 이 버튼을 누르면 아래와 같은 미리보기 화면이 나옵니다. 이 대화상자는 게임에서와 같은 코드로 텍스트를 렌더하므로, 게임을 실행하지 않고도 띄어쓰기 등을 점검할 수 있습니다. 이는 지역화 패스에서는 반복 시간이 빨라지게 하는 효과가 있습니다. 입력 칸에 텍스트를 써넣으면, 미리보기 화면에 텍스트가 그려집니다. 그 폰트가 다양한 환경에서도 좋게 보이도록 텍스트 및 배경의 색깔을 바꿀 수 있습니다

FontPreview.jpg

줄 간격

UI 콤보박스 그리고/또는 Text Style을 사용해서 폰트의 수평 및 수직 여백을 조정할 수 있습니다. 스타일을 "custom"으로 변경합니다. 왼쪽 중간에 보면 "Chars"라는 섹션이 있습니다. 이곳에서 커닝 및 줄 높이를 편집할 수 있습니다.

게다가, 필요한 경우 위젯별, 화면별로 스타일을 오버라이드할 수 있습니다. 위젯 프로퍼티의 Components -> StringRenderComponent, StyleOverride에서 "Spacing Adjust" 옆의 박스를 체크하면 이들 필드의 값을 변경할 수 있습니다. StyleOverride 의 사용은 오직 그 해당 위젯에만 영향을 미치며, 그 위젯은 언제나 영향을 받습니다.

동방 언어 폰트 (아시아어 및 아랍어)


아시아어 폰트의 임포트도, 라틴어 기반의 폰트와 마찬가지로 다음 단계를 따릅니다:

  • New Font Imported From TrueType을 선택합니다.
  • New Font 대화상자에서, UI Texture Group에 기본 설정값의 AntiAlias 와 LODGroup을 사용합니다.

일본어, 중국어 그리고 한국어를 임포트할 때는, 임포터가 캐릭터 목록을 가지고 있는 와일드카드 파일을 가리키도록 하는 것이 바람직합니다. 이를 위해서는, 먼저 게임에서 사용되는 캐릭터들을 포함하는 텍스트 파일을 만듭니다. 그리고 File Path를 그 텍스트 파일이 들어있는 윈도우스 경로로, Wildcard 를 텍스트 파일로 설정합니다. 그 다음 Character Set을 ANSI로 설정하면, 올바르게 임포트됩니다 한국어 지역화 파일이 모두 하나의 디렉토리에 있다면 와일드카드 세팅 안에 *.txt를 사용할 수도 있습니다 ; 그렇지만 모든 것을 합병 정리하는 하나의 문서를 만드는 것이 더 좋습니다.

다른 방법으로, UNICODE 캐릭터의 범위를 제시할 수도 있습니다. 콤마를 사용해서 다수의 범위를 지정할 수 있는데, 이때 여백이 있어서는 안됩니다. 예를 들어, 범위를 다음과 같이 지정할 수 있습니다:

22-39,127-514,654-819'

폰트 바꾸기를 하려면, "Fonts_KOR" , "Fonts_JPN"등 아시아어 폰트용의 또다른 패키지를 만들어야 합니다. 이 패키지내에서, 폰트의 이름들은 주 폰트 패키지의 것들과 정확하게 매치되어야 합니다. 언어가 한국어로 바뀌면, 기본 폰트 패키지도 바뀌어야 합니다. 여기서 가장 신경써야 할 점은, 폰트 객체내에 포함되어 있는 텍스처를 제외하고는 두 패키지들이 똑같아야 한다는 것입니다.

예를 들어,폰트의 이름이 "Mainfont"라면, 패키지는 다음과 같이 설정되어야 합니다 :

Fonts.Mainfont
Fonts_ KOR.Mainfont
Etc.

기본 폰트 패키지가 _ KOR 로 바뀌면, 모든 스타일은 다른 패키지의 것을 쓰지 않고 이 'Mainfont' 를 사용합니다. 역으로 서구언어의 캐릭터 세트를 사용할 때도 마찬가지입니다(한국어가 영어로 적재되지 않음).

폰트의 크기는 게임 내에 대화/캐릭터가 얼마나 있는지, 사용자가 얼마나 많은 캐릭터 세트를 사용할 수 있는지에 크게 좌우됩니다. 위에서 언급한 게임 텍스트를 바탕으로 한 임포트 방법의 사용은, 사용자의 입력을 필요로 하거나 많은 대화를 허용하는 컴퓨터 터미널 인터페이스가 있는지에 따라 최소화될 수도 최대화될 수도 있습니다.

비유를 하자면, Gears 1 JPN 폰트 패키지는 대략 5.5mb 입니다 (가장 큰 타입의 크기가 1-1.3mb). 다중 폰트 내에 얼마나 많은 레벨이 있는지에 따라, 무사히 넘어갈 수도 있습니다; 그러나 파일의 크기는 다소 무거울 것입니다. 한 언어에 대해 다중폰트를 사용하고, 다른 언어에서는 사용하지 않으면 버전 사이에 시각적으로 다른 경우에는 볼 수 없는 기이한 현상이 나타날 수 있습니다.

Asian 폰트 사용허가를 내면 그 폰트는 두 가지의 폰트 포맷으로 배달됩니다- 하나에는 @ 심볼이 접두사로 붙어있고, 다른 하나에는 없습니다. 여러분은 @ 심볼이 있는 폰트를 임포트하려 하기 쉽습니다. 이것이 가장 선정하기 쉽도록 목록의 맨 위에 놓여 있기 때문입니다. 그렇지만 @ 버전은 텍스트의 세로 출력용입니다. 여기 있는 캐릭터들은 한 방향으로 90도 회전됩니다. 왜냐면 그것들이 실제 표시하려는 텍스트가 다른 방향으로 90도 회전, 다음과 같은 폰트의 더미를 만들기 때문입니다:

L
I
K
E

T
H
I
S

전통적으로 이것이 아시아의 언어를 읽는 방법입니다 - 위에서 아래로 (그리고 오른쪽에서 왼쪽으로). 여러분이 필요한 것은 왼쪽에서 오른쪽으로 읽는 버전이며, 폰트 이름에 @ 접두사가 없는 것들이 그것입니다.

MultiFonts


MultiFonts는 폰트를 다른 해상도로 조정할 수 있는, 해상도의 독립성을 제공합니다.

Generic Browser 의 보기 창을 오른쪽 클릭하여 New MultiFont 메뉴 옵션을 선택합니다. 그러면 MultiFonts 용의 새 애셋 대화상자가 나타납니다.

새 MultiFont 를 임포트하려면 ResTestsResHeights 배열을 채워넣으면 됩니다. 이 두 배열은 같은 수의 요소들을 가지고 있어야 합니다. 각 ResTests 요소는 그에 상응하는 ResHeights 높이의 캐릭터 세트가 사용되는, 가장 근접한 세로 표시 해상도 입니다.

한 예로, 3가지 해상도를 지원하는 MultiFont 를 임포트해 봅니다:

ResTests[0] = 480.0
ResHeights[0] = 16

ResTests[1] = 720.0
ResHeights[1] = 24

ResTests[2] = 1080.0
ResHeights[2] = 32

게임이 1280x720의 해상도로 실행되면, 엔진은 자동으로 24호의 크기로 구어진 캐릭터 비트맵을 사용하여 렌더합니다. 사용할 문자를 결정할 때 화면의 세로 해상도만을 본다는 점을 주목하십시요. 또한 텍스처의 크기에 비해 너무 큰 크기의 캐릭터를 사용하면 메모리/오버런 크래쉬가 일어나므로, 적당한 크기의 캐릭터를 사용하도록 조심하기 바랍니다.

커스텀 폰트


"-" 등의 문자 또는 소문자들이 기준선이 아닌 대문자 열에 자리잡게 됩니다. 실제의 텍스처 위의 캐릭터 위치는 의도적인 것으로, 게임에서는 이런 모양으로 표시되지 않습니다. 이는 폰트를 임포트할 때 전반적인 텍스처의 사용량을 절약하기 위한 최적화이며, 텍스처 자체에서만 존재합니다.

커닝에 대해서는, 폰트의 기본 커닝값을 설정할 수는 있지만, 실제로 폰트 자체의 리딩은 설정할 수 없습니다.

텍스처를 현재의 임포트에 근거해서 조정하는 일을 조심하십시요. 텍스처를 변경해도 UV는 바뀌지 않으며, 그 결과로서 텍스처가 절단되거나 더 심한 문제가 생길 수 있습니다. 대신 임포트를 다시 하고, 캐릭터를 비슷한 기준선으로 임포트하는 (엔진에서 이전에 했던 것처럼) bEnableLegacyMode 체크박스를 체크하십시요.

폰트로서의 콘솔 버튼

Microsoft는 Xbox용 TrueType 콘솔 버튼 폰트를 제공합니다; 조금만 부추기면 여러분을 위해서도 제공해줄 지 모릅니다. Gears of War 에서 A/B/X/Y, 트리거, 등의 버튼들은 맞춤 제작된 것들로서, 익스포트된 폰트 시트에 대체되어 있습니다.

이를 사용하는 방법은 두 가지 중 하나입니다...

좌표를 하나도 바꾸지 않고, 임포트한 폰트의 크기에 작품을 맞춥니다. 이를 위해서는 몇 차례의 임포트를 해야 캐릭터 호수와 매치되는 픽셀 크기를 얻게 됩니다. 에디터로부터 TGA 를 익스포트하고, PhotoShop을 열어 이미지들을 놓여야 할 자리에 대충 놓습니다. 때로는 작품이 UV의 경계내에 맞게 되기까지 몇 번 이 작업을 되풀이해야 하는 경우도 있습니다 .

폰트의 프로퍼티를 열어 캐릭터 목록을 보면 좌표를 알수 있습니다. 이는 하나하나에 UV가 배정된 ASCII 값의 목록입니다.

다음은 참고 도면입니다: AsciiTable.jpg

액센트된 캐릭터를 나타내는, 보다 더 복잡한 것도 있습니다.

PhotoShop의 Slice에 UV를 입력, 캐릭터들이 올바른지 확인할 수 있습니다; 올바르지 않은 경우에는 얼마나 잘못 되어있는가에 따라 다른 UV 세트로 다시 해보십시요.

Gears 의 콘트롤러 버튼은 UV 면에서 볼때 크게 달라지지 않았습니다. 작품은 임포트된 UV의 크기에 따라 텍스처에 잘 들어맞습니다.

폰트를 완전히 자신의 취향대로 만들 수도 있습니다. 이는 다소 더 난해하며, 새로 임포트한 후 수동으로 UV를 프로퍼티창에서 입력해야 합니다. Gears 의 "game over" 폰트가 이런식으로 만들어진 것입니다; 캐릭터들 (GoW 로고 타입) 은 PhotoShop에서 손으로 만들어졌으며, 텍스처안으로 조립되어 넣어졌습니다. 새 폰트가 임포트된 후에는 UV를 변경, 올바르게 작동되도록 했습니다. Gears에서 이것은 55-75호의 폰트로 임포트되어, 임포트된 높이가 그것이 대체될 작품의 크기와 약간 비슷합니다.

UV를 변경할 때는 일정한 높이를 유지하도록 신경써야 합니다. 아니면 기준선 문제에 부딪쳐 골치가 아파집니다.. 새 값을 적어넣은 다음, 반드시 =ENTER=키를 누르십시요. 그 다음 다른 입력 필드를 클릭해 그 값이 입력 되었는지 확인하십시요.

임포트 과정 중, 가로 및 세로 패딩을 조금씩 늘려 공간을 약간 더 확보하면 편리합니다. 그렇지만 캐릭터간의 높이가 모두 같게 유지되도록 조심하여야 합니다. 그렇지 않으면 캐릭터가 잘려 나갑니다.

폰트의 사용


임포트가 끝나면, 이 폰트를 프로그래밍 적으로든, 메뉴나 HUD 의 텍스트에 사용할 수 있습니다.

: 현재로서는 엔진이 스크린에 렌더하는 텍스트에 재질 시스템을 적용할 방법이 없습니다; 폰트는 단지 Texture2D 객체로서만 저장됩니다.