Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

글꼴 사용하기

Godot를 사용하면 다양한 UI 노드에 대해 특정 글꼴을 설정할 수 있습니다.

글꼴 사용을 설정할 수 있는 세 가지 위치가 있습니다. 첫 번째는 테마 편집기입니다. 글꼴을 설정하려는 노드를 선택하고 글꼴 탭을 선택합니다. 두 번째는 테마 재정의 > 글꼴 아래의 노드 컨트롤에 대한 검사기에 있습니다. 마지막으로 기본 글꼴 아래 테마에 대한 검사기 설정에서 확인하세요.

글꼴 재정의가 어디에도 지정되지 않은 경우 Open Sans SemiBold가 기본 프로젝트 글꼴로 사용됩니다.

참고

Godot 4.0부터 글꼴 크기는 더 이상 글꼴 자체에 정의되지 않고 대신 글꼴을 사용하는 노드에 정의됩니다. 이 작업은 검사기의 테마 재정의 > 글꼴 크기 섹션에서 수행됩니다.

이를 통해 서로 다른 글꼴 크기마다 글꼴 리소스를 복제할 필요 없이 글꼴 크기를 변경할 수 있습니다.

글꼴 파일에는 *동적*(TTF/OTF/WOFF/WOFF2 형식)과 *비트맵*(BMFont .fnt 형식 또는 고정 폭 이미지)의 두 가지 종류가 있습니다. 동적 글꼴은 크기를 조정할 수 있고 더 큰 크기에서도 여전히 선명하게 보이기 때문에 가장 일반적으로 사용되는 옵션입니다. 벡터 기반 특성 덕분에 비트맵 글꼴에 비해 합리적인 파일 크기를 유지하면서 더 많은 글리프를 포함할 수도 있습니다. 동적 글꼴은 *합자*(여러 문자가 하나의 다른 디자인으로 변환됨)와 같이 비트맵 글꼴이 지원할 수 없는 일부 고급 기능도 지원합니다.

Google Fonts`Font Library <https://fontlibrary.org/>`__과 같은 웹사이트에서 무료 라이센스 글꼴 파일을 찾을 수 있습니다.

글꼴에는 저작권이 적용됩니다. 라이센스를 구입하지 않고도 모든 글꼴이 상업적 사용을 허용하는 것은 아니므로 사용하기 전에 글꼴의 라이센스를 다시 확인하세요.

더 보기

이 문서 외에 여러가지 Godot 데모 프로젝트들도 살펴보면 좋습니다.

동적 성질

Godot는 아래와 같은 3D 씬 파일 형식 을 지원합니다:

  • 트루타입 글꼴 또는 컬렉션(.ttf, .ttc)

  • OpenType 글꼴 또는 컬렉션(.otf, .otc)

  • 웹 오픈 글꼴 형식 1(.woff)

  • 웹 오픈 글꼴 형식 2(.woff2)

.woff 및 특히 ``.woff2``는 파일 크기가 작아지는 경향이 있지만 보편적으로 "더 나은" 글꼴 형식은 없습니다. 대부분의 경우 글꼴 개발자 웹사이트에 제공된 글꼴 형식을 사용하는 것이 좋습니다.

비트맵 글꼴

Godot는 BMFont(.fnt) 비트맵 글꼴 형식을 지원합니다. 이는 BMFont 프로그램에서 만든 형식입니다. BMGlyph 또는 웹 기반 `fontcutter <https://github.com/fabienbk/fontcutter>`__과 같은 많은 BMFont 호환 프로그램도 존재합니다.

또는 비트맵 글꼴로 사용할 이미지를 가져올 수 있습니다. 이렇게 하려면 FileSystem 도크에서 이미지를 선택하고 가져오기 도크로 이동하여 가져오기 유형을 **글꼴 데이터(이미지 글꼴)**로 변경한 다음 **다시 가져오기**를 클릭합니다.

가져오기의 매개변수 변경하기

가져오기 유형을 **글꼴 데이터(이미지 글꼴)**로 변경

글꼴의 문자 세트 레이아웃은 어떤 순서로도 가능하지만 가져오는 데 훨씬 적은 구성이 필요하므로 표준 유니코드와 일치하는 순서를 권장합니다. 예를 들어 아래 비트맵 글꼴에는 ASCII 문자가 포함되어 있으며 표준 ASCII 순서를 따릅니다.

타이머(Timer) 예제

출처: `LibreQuake <https://github.com/MissLav/LibreQuake/blob/master/lq1/gfx-wad/CONCHARS.png>`__(확장 범위를 제외하기 위해 크기를 조정하고 잘림)

위의 글꼴 이미지를 성공적으로 가져오려면 다음 가져오기 옵션을 사용할 수 있습니다.

위의 예제 글꼴에 사용할 가져오기 옵션

위의 예제 글꼴에 사용할 가져오기 옵션

문자 범위 옵션은 이미지의 각 위치(픽셀이 아닌 타일 좌표)를 매핑하는 배열입니다. 글꼴 아틀라스는 왼쪽에서 오른쪽으로, 위에서 아래로 이동됩니다. 문자는 10진수(127), 16진수(0x007f) 또는 *작은따옴표('~')로 지정될 수 있습니다. 범위는 문자 사이에 하이픈을 사용하여 지정할 수 있습니다.

예를 들어, 0-127``(또는 ``0x0000-0x007f)는 전체 ASCII 범위를 나타냅니다. 또 다른 예로, ``' '-'~'````32-127``와 동일하며 *인쇄 가능*(표시) ASCII 문자의 범위를 나타냅니다.

문자 범위 옵션이 정의된 × 수를 초과하지 않는지 확인하세요. 그렇지 않으면 글꼴을 가져올 수 없습니다.

글꼴 이미지에 글꼴 글리프(예: 속성 정보)에 사용되지 않는 여백이 포함되어 있는 경우 **이미지 여백**을 조정해 보세요. 전체 이미지에 한 번만 적용되는 여백입니다.

글꼴 이미지에 안내선(글리프 사이의 선 형태)이 포함되어 있거나 문자 사이의 간격이 올바르지 않게 나타나는 경우 **문자 여백**을 조정해 보세요. 이 여백은 가져온 모든 글리프에 적용됩니다.

문자 여백 옵션이 제공하는 것보다 문자 간격을 더 세밀하게 제어해야 하는 경우 더 많은 옵션이 있습니다.

우선 **문자 범위**는 지정된 문자 범위 뒤에 3개의 추가 인수를 지원합니다. 이러한 추가 인수는 위치 지정과 간격을 제어합니다. 공간 전진, X축 오프셋, Y축 오프셋을 순서대로 나타냅니다. 쓰여진 픽셀의 양에 따라 각 문자의 공간 이동과 오프셋이 변경됩니다. 예를 들어, 소문자가 대문자보다 얇은 경우 공백 이동이 가장 유용합니다.

문자 범위에 사용되는 사전 및 오프셋 값을 보여주는 다이어그램.

오프셋으로 인해 텍스트가 라벨 경계 가장자리에서 잘릴 수 있다는 점에 유의하세요.

둘째, 개별 문자에 대해 **커닝 쌍**을 설정할 수도 있습니다. 공백으로 구분된 두 개의 문자 세트를 입력한 후 다른 공백을 입력하여 커닝 쌍을 지정합니다. 두 문자 세트가 서로 옆에 배치될 때 추가/적은 픽셀 수를 지정하는 숫자입니다.

../../_images/using_fonts_bitmap_kerning_pairs_example.webp

필요한 경우 ``uXXXX``를 입력하여 유니코드 문자 코드로 커닝 쌍 문자를 지정할 수 있습니다. 여기서 XXXX는 유니코드 문자의 16진수 값입니다.

타일맵 사용하기

글꼴 파일(동적 또는 비트맵)을 로드하려면 글꼴 속성 옆에 있는 리소스 드롭다운의 빠른 로드 또는 로드 옵션을 사용한 다음 해당 글꼴 파일로 이동합니다.

../../_images/using_fonts_load_font.webp

타일맵 사용하기

FileSystem 도크에서 글꼴 리소스를 허용하는 검사기 속성으로 글꼴 파일을 끌어서 놓을 수도 있습니다.

경고

Godot 4.0 이상에서는 텍스처 필터와 반복 속성이 텍스처 자체가 아닌 텍스처가 사용되는 위치에 정의됩니다. 이는 글꼴(동적 글꼴 및 비트맵 글꼴 모두)에도 적용됩니다.

픽셀 아트 모양이 있는 글꼴은 렌더링 > 텍스처 > 캔버스 텍스처 > 기본 텍스처 필터 프로젝트 설정을 **가장 가까운**으로 변경하여 이중선형 필터링을 비활성화해야 합니다.

또한 글꼴 크기는 디자인 크기(글꼴별로 다름)의 정수배여야 하며 글꼴을 사용하는 컨트롤 노드도 정수배로 크기가 조정되어야 합니다. 그렇지 않으면 글꼴이 흐릿하게 보일 수 있습니다. Godot의 글꼴 크기는 포인트(pt)가 아닌 픽셀(px)로 지정됩니다. 다양한 소프트웨어에서 글꼴 크기를 비교할 때 이 점을 염두에 두십시오.

:ref:`CanvasItem.texture_filter <class_CanvasItem_property_texture_filter>`를 설정하여 CanvasItem에서 상속된 개별 노드에 텍스처 필터 모드를 설정할 수도 있습니다.

2D 빛(lights)과 그림자(shadows)

배경색을 미리 알 수 없는 경우 글꼴 윤곽선과 그림자를 사용하여 가독성을 높일 수 있습니다. 예를 들어, 2D/3D 씬 위에 그려진 HUD 요소의 경우입니다.

글꼴 윤곽선은 Label3D 외에도 Control에서 파생된 대부분의 노드에서 사용할 수 있습니다.

특정 노드에서 글꼴에 대한 윤곽선을 활성화하려면 검사기에서 테마 재정의 글꼴 윤곽선 색상**윤곽선 크기**를 구성하세요. 결과는 다음과 같아야 합니다.

발사 예제

발사 예제

참고

MSDF 렌더링과 함께 글꼴을 사용하는 경우 MSDF 픽셀 범위 가져오기 옵션은 윤곽선 렌더링이 올바르게 보이도록 윤곽선 크기 값의 최소 *2배*로 설정됩니다. 그렇지 않으면 윤곽선이 의도한 것보다 일찍 잘린 것처럼 보일 수 있습니다.

글꼴 그림자에 대한 지원은 더욱 제한적입니다. Label 및 :ref:`class_RichTextLabel`에서만 사용할 수 있습니다. 또한 글꼴 그림자에는 항상 가장자리가 뚜렷합니다. 하지만 불투명도를 줄여 더 미묘하게 보이게 할 수 있습니다. 특정 노드에서 글꼴 그림자를 활성화하려면 Label 또는 RichTextLabel 노드에서 Font Shadow Color, Shadow Offset XShadow Offset Y 테마 재정의를 적절하게 구성합니다.

빌드 커스터마이징하기

빌드 커스터마이징하기

최종 스크립트는 다음과 같아야 합니다:

예:

예:

노드 라벨 전체에서 재사용하는 LabelSettings 리소스를 생성하여 노드 라벨의 글꼴 표시에 대한 로컬 재정의를 생성할 수 있습니다. 이 리소스는 :ref:`테마 속성 <doc_gui_skinning>`보다 우선순위가 높습니다.

환경 옵션

안티앨리어싱

앤티앨리어싱*힌트*를 조정하여 렌더링 시 글꼴을 부드럽게 처리하는 방법을 조정할 수 있습니다. 이는 사용 사례가 다른 다양한 속성입니다.

앤티앨리어싱은 글꼴을 래스터화할 때 글리프 가장자리를 부드럽게 처리하는 방법을 제어합니다. 기본 앤티앨리어싱 방법(회색조)은 모든 디스플레이 기술에서 잘 작동합니다. 그러나 작은 크기에서는 회색조 앤티앨리어싱으로 인해 글꼴이 흐릿하게 보일 수 있습니다.

앤티앨리어싱 선명도는 LCD 하위 픽셀 최적화를 사용하여 향상될 수 있습니다. 이는 채널당 기준(빨간색/녹색/파란색)으로 글꼴 안티앨리어싱을 오프셋하여 대부분의 LCD 디스플레이의 하위 픽셀 패턴을 활용합니다. 단점은 특히 표준 RGB 하위 픽셀을 사용하지 않는 디스플레이 기술(예: OLED 디스플레이)에서 가장자리에 "프린징"이 발생할 수 있다는 것입니다.

대부분의 게임에서는 기본 회색조 앤티앨리어싱을 유지하는 것이 좋습니다. 게임이 아닌 응용 프로그램의 경우 LCD 하위 픽셀 최적화를 살펴볼 가치가 있습니다.

시각적 비교

위에서 아래로: 비활성화됨, 회색조, LCD 하위 픽셀(RGB)

참고

:ref:`MSDF 렌더링 글꼴 <doc_using_fonts_msdf>`에서는 앤티앨리어싱을 변경할 수 없습니다. 이러한 글꼴은 항상 회색조 앤티앨리어싱으로 렌더링됩니다.

빛(Lights)

힌트는 글꼴을 래스터화할 때 문자 모양 가장자리를 픽셀에 얼마나 적극적으로 맞춰야 하는지를 제어합니다. **없음**을 선택하면 가장 부드러운 모양이 나타나므로 작은 크기에서는 글꼴이 흐릿하게 보일 수 있습니다. **라이트**(기본값)는 글리프 가장자리를 Y축의 픽셀에만 스냅하여 더 선명하고, **전체**는 글리프 가장자리를 X 및 Y축 모두의 픽셀에 스냅하여 더욱 선명합니다. 개인 취향에 따라 다른 힌트 모드보다 하나의 힌트 모드를 사용하는 것이 더 나을 수도 있습니다.

시각적 비교

위에서 아래로: 없음, 약함, 전체 힌트

참고

**다시 가져오기**를 클릭한 후 힌트 모드를 변경해도 눈에 띄는 효과가 없는 경우 이는 일반적으로 글꼴에 힌트 지침이 포함되어 있지 않기 때문입니다. 이 문제는 힌트 지침이 포함된 글꼴 파일 버전을 찾거나 Import Dock에서 **Force Autohinter**를 활성화하여 해결할 수 있습니다. `FreeType <https://freetype.org/>`__의 자동 힌트를 사용하여 가져온 글꼴에 힌트 지침을 자동으로 추가합니다.

하위 픽셀 위치 지정

하위 픽셀 위치를 조정할 수 있습니다. 이는 글리프를 의도한 형식에 더 가깝게 렌더링할 수 있는 FreeType 기능입니다. 기본 설정인 **자동**은 작은 크기에서는 하위 픽셀 위치 지정을 자동으로 활성화하지만 큰 글꼴 크기에서는 비활성화하여 래스터화 성능을 향상시킵니다.

하위 픽셀 위치 지정 모드를 사용 안 함, 픽셀의 절반 또는 **픽셀의 1/4**로 강제 설정할 수 있습니다. **픽셀의 1/4**은 래스터화 시간이 길어지지만 최고의 품질을 제공합니다.

앤티앨리어싱, 힌트 및 하위 픽셀 위치 지정을 변경하면 글꼴 크기가 더 작을 때 가장 눈에 띄는 효과가 나타납니다.

경고

픽셀 아트 모양의 글꼴은 하위 픽셀 위치 지정 모드를 **비활성화**로 설정해야 합니다. 그렇지 않으면 글꼴의 픽셀 크기가 고르지 않은 것처럼 보일 수 있습니다.

하위 픽셀 위치 지정은 동적 글꼴(일반적으로 벡터 요소로 구성됨)에만 관련되므로 비트맵 글꼴에는 이 단계가 필요하지 않습니다.

밉맵

기본적으로 글꼴에는 메모리 사용량을 줄이고 래스터화 속도를 높이기 위해 생성된 밉맵이 없습니다. 그러나 이로 인해 축소된 글꼴이 거칠어질 수 있습니다. 이는 **고정 크기**가 활성화되지 않은 doc_3d_text`에서 특히 두드러질 수 있습니다. 이는 ``(1, 1)``보다 배율이 낮은 컨트롤 노드에서 기존 래스터화된(비:ref:`MSDF) 글꼴로 텍스트를 표시할 때도 발생할 수 있습니다.

FileSystem 도크에서 글꼴을 선택한 후 Import 도크에서 **Mipmaps**를 활성화하여 축소된 글꼴 렌더링 모양을 개선할 수 있습니다.

MSDF 글꼴에서도 Mipmap을 활성화할 수 있습니다. 이렇게 하면 기본 크기보다 작은 크기에서 글꼴 렌더링 품질이 약간 향상될 수 있지만 MSDF 글꼴은 이미 기본적으로 거친 느낌에 강합니다.

MSDF 글꼴 렌더링

MSDF(Multi-channel Signed Distance Field) 글꼴 렌더링을 사용하면 크기가 변경될 때 다시 래스터화할 필요 없이 모든 크기의 글꼴을 렌더링할 수 있습니다.

MSDF 글꼴 렌더링은 Godot가 기본적으로 사용하는 전통적인 글꼴 래스터화에 비해 2가지 장점이 있습니다:

  • 글꼴은 큰 크기에서도 항상 선명하게 보입니다.

  • 래스터화가 수행되지 않기 때문에 처음으로 *큰 글꼴 크기*로 문자를 렌더링할 때 끊김 현상이 줄어듭니다.

GIProbe의 주요 단점은 이러합니다:

  • 글꼴 렌더링에 대한 기본 비용이 더 높습니다. 이는 일반적으로 데스크톱 플랫폼에서는 눈에 띄지 않지만 저가형 모바일 장치에는 영향을 미칠 수 있습니다.

  • 작은 크기의 글꼴은 힌트가 없기 때문에 래스터화된 글꼴만큼 명확하게 보이지 않습니다.

  • 처음으로 *작은 글꼴 크기*로 새 글리프를 렌더링하는 것은 기존 래스터화된 글꼴에 비해 비용이 더 많이 들 수 있습니다. :ref:`doc_using_fonts_font_prerendering`를 사용하면 이 문제를 완화할 수 있습니다.

  • MSDF 글꼴에는 LCD 하위 픽셀 최적화를 활성화할 수 없습니다.

  • 자체 교차 윤곽선이 있는 글꼴은 MSDF 모드에서 올바르게 렌더링되지 않습니다. `Google Fonts <https://fonts.google.com>`__과 같은 웹사이트에서 다운로드한 글꼴에 렌더링 문제가 있는 경우 대신 글꼴 작성자의 공식 웹사이트에서 글꼴을 다운로드해 보세요.

글꼴 래스터화 방법 비교

글꼴 래스터화 방법 비교. 위에서 아래로: 오버샘플링 없이 래스터화됨, 오버샘플링으로 래스터화됨, MSDF

특정 글꼴에 대해 MSDF 렌더링을 활성화하려면 FileSystem 도크에서 해당 글꼴을 선택하고 가져오기 도크로 이동하여 **Multichannel Signed Distance Field**를 활성화한 다음 **Reimport**를 클릭합니다.

글꼴 가져오기 옵션에서 MSDF 활성화

글꼴 가져오기 옵션에서 MSDF 활성화

RigidBody2D 사용하기

Godot는 이모티콘 글꼴을 제한적으로 지원합니다:

  • CBDT/CBLC(내장 PNG) 및 SVG 이모티콘 글꼴이 지원됩니다.

  • COLR/CPAL 이모티콘 글꼴(사용자 정의 벡터 형식)은 지원되지 않습니다.

  • EMJC 비트맵 이미지 압축(iOS 시스템 이모티콘 글꼴에서 사용)은 지원되지 않습니다. 이는 iOS에서 이모티콘을 지원하려면 대신 SVG 또는 PNG 비트맵 압축을 사용하는 사용자 정의 글꼴을 사용해야 함을 의미합니다.

Godot가 이모티콘을 표시할 수 있으려면 사용된 글꼴(또는 fallbacks 중 하나)에 해당 글꼴이 포함되어야 합니다. 그렇지 않으면 이모티콘이 표시되지 않고 자리 표시자 "두부" 문자가 대신 나타납니다.

라벨에 이모티콘을 사용하려고 할 때의 기본 모양

라벨에 이모티콘을 사용하려고 할 때의 기본 모양

`Noto Color Emoji <https://fonts.google.com/noto/specimen/Noto+Color+Emoji>`__와 같은 이모티콘을 표시하기 위해 글꼴을 추가하면 예상되는 결과를 얻을 수 있습니다.

라벨에 이모티콘 글꼴을 추가한 후 올바른 모양

라벨에 이모티콘 글꼴을 추가한 후 올바른 모양

이모티콘과 함께 일반 글꼴을 사용하려면 일반 글꼴의 고급 가져오기 옵션에서 이모티콘 글꼴을 가리키는 :ref:`fallback 글꼴 <doc_using_fonts_font_fallbacks>`을 지정하는 것이 좋습니다. 이모티콘을 표시하는 동안 기본 프로젝트 글꼴을 사용하려면 이모티콘 글꼴을 가리키는 글꼴 대체를 추가하는 동안 FontVariation의 Base Font 속성을 비워 두세요.

이모티콘 글꼴은 크기가 상당히 크므로 프로젝트에 번들로 묶는 대신 :ref:`시스템 글꼴을 로드 <doc_using_fonts_system_fonts>`하여 이모티콘 글리프를 제공하는 것이 좋습니다. 이를 통해 내보낸 PCK의 크기를 늘리지 않고도 프로젝트에서 완전한 이모티콘 지원을 제공할 수 있습니다. 단점은 플랫폼에 따라 이모티콘이 다르게 보이고 시스템 글꼴 로딩이 모든 플랫폼에서 지원되지 않는다는 것입니다.

시스템 글꼴을 폴백 글꼴로 사용하는 것도 가능합니다.

아이콘 글꼴 사용하기

Fontello <https://fontello.com/>`__과 같은 도구를 사용하면 SVG 파일에서 가져온 벡터가 포함된 글꼴 파일을 생성할 수 있습니다. 이는 사용자 정의 벡터 요소를 텍스트의 일부로 렌더링하거나 :ref:`doc_3d_text 및 TextMesh를 사용하여 돌출된 3D 아이콘을 만드는 데 사용할 수 있습니다.

참고

Fontello는 현재 다중 색상 글꼴 생성을 지원하지 않습니다(Godot가 렌더링할 수 있음). 2022년 11월 현재 아이콘 글꼴 생성 도구에서 여러 색상의 글꼴에 대한 지원은 여전히 부족합니다.

사용 사례에 따라 RichTextLabel <doc_bbcode_in_richtextlabel>`에서 ``img` 태그를 사용하는 것보다 더 나은 결과를 얻을 수 있습니다. 비트맵 이미지(Godot에서 가져올 때 래스터화되는 SVG 포함)와는 달리, 실제 벡터 데이터는 품질 저하 없이 어떤 크기로든 크기를 조정할 수 있습니다.

생성된 글꼴 파일을 다운로드한 후 Godot 프로젝트에 로드한 다음 Label, RichTextLabel 또는 Label3D 노드에 대한 사용자 정의 글꼴로 지정하세요. Fontello 웹 인터페이스로 전환한 다음 문자를 선택하고 Ctrl + C`(macOS에서는 :kbd:`Cmd + C)를 눌러 복사합니다. 라벨 노드의 텍스트 속성에 문자를 붙여넣습니다. 캐릭터는 검사기에서 자리 표시자 문자 모양으로 표시되지만 2D/3D 뷰포트에서는 올바르게 표시되어야 합니다.

동일한 컨트롤에서 기존 글꼴과 함께 아이콘 글꼴을 사용하려면 아이콘 글꼴을 :ref:`fallback <doc_using_fonts_font_fallbacks>`으로 지정할 수 있습니다. 이는 아이콘 글꼴이 사용자 정의 글꼴용으로 예약되어 있고 설계상 표준 문자 모양을 포함하지 않는 유니코드 *개인 사용 영역*을 사용하기 때문에 작동합니다.

참고

Font Awesome 6 <https://fontawesome.com/download>`__과 같은 여러 최신 아이콘 글꼴에는 *합자*를 사용하여 아이콘을 지정하는 데스크톱 변형이 있습니다. 이를 통해 글꼴을 표시할 수 있는 노드의 **텍스트** 속성에 아이콘 이름을 직접 입력하여 아이콘을 지정할 수 있습니다. 아이콘 이름이 완전히 텍스트(예: ``house`)로 입력되면 아이콘으로 대체됩니다.

사용하기는 쉽지만 기본 글꼴의 문자가 대체 글꼴의 합자보다 우선순위를 가지므로 이 접근 방식은 글꼴 대체와 함께 사용할 수 없습니다.

글꼴 대체

Godot는 메인 글꼴에 표시할 문자가 없을 때 하나 이상의 대체 정의를 지원합니다. 글꼴 대체를 정의하는 두 가지 주요 사용 사례는 다음과 같습니다.

  • 라틴 문자 세트만 지원하는 글꼴을 사용하고 키릴 문자와 같은 다른 문자 세트로 텍스트를 표시하려면 다른 글꼴을 사용하십시오.

  • 텍스트를 렌더링하려면 글꼴을 사용하고 이모티콘이나 아이콘을 렌더링하려면 다른 글꼴을 사용하세요.

파일 시스템 도크에서 글꼴 파일을 두 번 클릭하여 고급 가져오기 설정 대화 상자를 엽니다. FileSystem 도크에서 글꼴을 선택하고 가져오기 도크로 이동한 다음 하단에서 **고급…**을 선택할 수도 있습니다.

../../_images/using_fonts_advanced_import_settings.webp

독 가져오기

나타나는 대화 상자의 오른쪽 사이드바에서 폴백 섹션을 찾고 Array[Font](크기 0) 텍스트를 클릭하여 속성을 확장한 다음 **요소 추가**를 클릭합니다.

../../_images/using_fonts_font_fallbacks_add.webp

글꼴 폴백 추가하기

새 요소에서 드롭다운 화살표를 클릭한 다음 빠른 로드 또는 로드 옵션을 사용하여 글꼴 파일을 선택합니다.

../../_images/using_fonts_font_fallbacks_load.webp

글꼴 폴백 불러오기

기본 프로젝트 글꼴을 사용하는 동안 대체 글꼴을 추가할 수 있습니다. 이렇게 하려면 하나 이상의 글꼴 대체를 추가하는 동안 기본 글꼴 속성을 비워 두세요.

참고

글꼴 대체는 :ref:`doc_using_fonts_opentype_font_features`와 유사하게 로컬 기반으로 정의할 수도 있지만 간결한 이유로 여기서는 다루지 않습니다.

가변 글꼴

Godot는 `가변 글꼴 <https://variablefonts.io/>`__을 완벽하게 지원합니다. 이를 통해 단일 글꼴 파일을 사용하여 다양한 글꼴 두께와 스타일(일반, 굵은 글꼴, 기울임꼴 등)을 나타낼 수 있습니다. 이는 사용 중인 글꼴 파일에서 지원되어야 합니다.

가변 글꼴을 사용하려면 글꼴을 사용하려는 위치에 FontVariation 리소스를 만든 다음 FontVariation 리소스 내에 글꼴 파일을 로드합니다.

../../_images/using_fonts_font_variation_create.webp

여러분만의 리소스 만들기

../../_images/using_fonts_font_variation_load.webp

FontVariation 리소스에 글꼴 파일 로드

FontVariation의 Variation 섹션까지 아래로 스크롤한 다음 Variation Coordinates 텍스트를 클릭하여 조정할 수 있는 축 목록을 확장합니다.

../../_images/using_fonts_font_variation_variable_font.webp

기능 목록

조정할 수 있는 축 세트는 로드된 글꼴에 따라 다릅니다. 일부 가변 글꼴은 하나의 조정 축(일반적으로 무게 또는 기울기)만 지원하는 반면, 다른 글꼴은 여러 조정 축을 지원할 수도 있습니다.

예를 들어, *두께*가 ``900``이고 *기울기*가 ``-10``인 Inter V 글꼴은 다음과 같습니다.

../../_images/using_fonts_font_variation_variable_font_example.webp

가변글꼴 예시(Inter V)

가변 글꼴 축 이름과 배율은 표준화되지 않았지만 일반적으로 글꼴 디자이너는 몇 가지 일반적인 규칙을 따릅니다. weight 축은 OpenType에서 다음과 같이 작동하도록 표준화되었습니다.

효과적인 글꼴 두께

100

얇음(가는선)

200

엑스트라 라이트(울트라 라이트)

300

조명

400

|regular| 보통

500

중간

600

세미 볼드(Demi-Bold)

700

굵게

800

매우 굵게(Ultra Bold)

900

검정색(무거움)

950

엑스트라 블랙(울트라 블랙)

FontVariation을 .tres 리소스 파일에 저장하여 다른 위치에서 재사용할 수 있습니다.

../../_images/using_fonts_font_variation_save_to_file.webp

외부 리소스 파일에 FontVariation 저장

가짜 볼드체 및 이탤릭체

텍스트를 굵게 또는 기울임꼴로 작성할 때 이를 위해 특별히 설계된 글꼴 변형을 사용하는 것이 더 좋습니다. 굵은 글꼴을 사용하면 글리프 사이의 간격이 더욱 일관되며 특정 글리프의 모양은 기울임꼴 변형에서 완전히 바뀔 수 있습니다("a" 및 "a" 비교).

그러나 실제 굵은 글꼴과 기울임꼴 글꼴은 더 많은 글꼴 파일을 제공해야 하므로 배포 크기가 늘어납니다. 단일 변수 글꼴 파일도 사용할 수 있지만 이 파일은 단일 비변수 글꼴보다 큽니다. 일반적으로 파일 크기는 데스크탑 프로젝트에서는 문제가 되지 않지만, 배포 크기를 가능한 한 낮게 유지하려고 노력하는 모바일/웹 프로젝트에서는 문제가 될 수 있습니다.

추가 글꼴을 제공하지 않고도(또는 크기가 더 큰 가변 글꼴을 사용하지 않고) 굵은 글꼴과 기울임꼴 글꼴을 표시할 수 있도록 Godot는 가짜 굵은 글꼴과 기울임꼴을 지원합니다.

가짜 볼드체/이탤릭체(위), 진짜 볼드체/이탤릭체(아래). 사용된 일반 글꼴: Open Sans SemiBold

가짜 볼드체/이탤릭체(위), 진짜 볼드체/이탤릭체(아래). 사용된 일반 글꼴: Open Sans SemiBold

볼드체 및/또는 이탤릭체에 대해 사용자 정의 글꼴이 제공되지 않는 경우 가짜 볼드체 및 이탤릭체는 :ref:`class_RichTextLabel`의 볼드체 및 이탤릭체 태그에 자동으로 사용됩니다.

가짜 굵게를 사용하려면 글꼴 리소스가 필요한 속성에 FontVariation 리소스를 만듭니다. **변형 > 강조**를 양수 값으로 설정하여 글꼴을 더 굵게 만들고, 음수 값으로 설정하여 글꼴을 덜 굵게 만듭니다. 권장 값은 글꼴에 따라 0.5``~``1.2 사이입니다.

가짜 이탤릭체는 문자별 변환을 수정하여 텍스트를 왜곡함으로써 생성됩니다. 이는 Variation > Transform 속성을 사용하여 FontVariation에서도 제공됩니다. 문자 변환의 yx 구성 요소를 양수 값으로 설정하면 텍스트가 기울임꼴로 표시됩니다. 권장 값은 글꼴에 따라 0.2``~``0.4 사이입니다.

중심점 조정하기

스타일 목적이나 더 나은 가독성을 위해 Godot에서 글꼴이 표시되는 방식을 조정할 수 있습니다.

만들기 글꼴 리소스가 필요한 속성의 FontVariation 리소스입니다. 변형 > 추가 간격 섹션에는 양수 값과 음수 값을 허용하는 4가지 속성이 있습니다.

  • 글리프: 모든 글리프 사이의 추가 간격입니다.

  • 공백: 단어 사이에 추가 간격을 둡니다.

  • 위쪽: 글리프 위의 추가 간격입니다. 이는 여러 줄의 텍스트에 사용되지만 Label 및 :ref:`class_Button`와 같은 컨트롤의 최소 크기를 계산하는 데에도 사용됩니다.

  • 하단: 글리프 아래의 추가 간격입니다. 이는 여러 줄의 텍스트에 사용되지만 Label 및 :ref:`class_Button`와 같은 컨트롤의 최소 크기를 계산하는 데에도 사용됩니다.

변형 > 변형 속성을 조정하여 문자를 가로 또는 세로로 늘릴 수도 있습니다. 이는 특히 ``xx``(수평 스케일) 및 ``yy``(수직 스케일) 구성 요소를 조정하여 수행됩니다. 글리프 변환은 텍스트에서 각 글리프가 차지하는 공간에 영향을 주지 않으므로 모든 변경 사항을 고려하여 글리프 간격을 조정하는 것을 잊지 마십시오. 이러한 종류의 비균일 크기 조정은 글꼴이 일반적으로 늘어나서 표시되도록 설계되지 않았기 때문에 자제해서 사용해야 합니다.

기본 기능

Godot는 글꼴 파일을 완전히 교체하지 않고도 전환할 수 있는 대체 문자를 정의하는 표준화된 방법인 OpenType 글꼴 기능 활성화를 지원합니다. OpenType 글꼴 기능이라는 이름에도 불구하고 이러한 기능은 TrueType(.ttf) 및 WOFF/WOFF2 글꼴 파일에서도 지원됩니다.

OpenType 기능 지원은 사용된 글꼴에 따라 크게 달라집니다. 일부 글꼴은 OpenType 기능을 지원하지 않지만 다른 글꼴은 수십 가지 전환 가능한 기능을 지원할 수 있습니다.

서버로 프로젝트를 내보낼 수 있는 방법이 두 가지 있습니다:

글꼴 파일에 전역적으로

파일 시스템 도크에서 글꼴 파일을 두 번 클릭하여 고급 가져오기 설정 대화 상자를 엽니다. FileSystem 도크에서 글꼴을 선택하고 가져오기 도크로 이동한 다음 하단에서 **고급…**을 선택할 수도 있습니다.

../../_images/using_fonts_advanced_import_settings.webp

독 가져오기

나타나는 대화 상자의 오른쪽 사이드바에서 메타데이터 재정의 > OpenType 기능 섹션을 찾고 기능(0/N 세트) 텍스트를 클릭하여 속성을 확장한 다음 **기능 추가**를 클릭합니다.

../../_images/using_fonts_advanced_import_settings_opentype_features.webp

고급 가져오기 설정의 OpenType 기능 재정의

특정 글꼴 사용(FontVariation)에서

글꼴 기능을 사용하려면 :ref:`variable 글꼴 <doc_using_fonts_variable_fonts>`에 대해 수행하는 것처럼 FontVariation 리소스를 만든 다음 FontVariation 리소스 내에서 글꼴 파일을 로드합니다.

../../_images/using_fonts_font_variation_create.webp

여러분만의 리소스 만들기

../../_images/using_fonts_font_variation_load.webp

FontVariation 리소스에 글꼴 파일 로드

FontVariation의 OpenType 기능 섹션까지 아래로 스크롤하고 기능(0/N 세트) 텍스트를 클릭하여 속성을 확장한 다음 **기능 추가**를 클릭하고 드롭다운에서 원하는 기능을 선택합니다.

../../_images/using_fonts_font_variation_opentype_features.webp

FontVariation 리소스에 OpenType 기능 지정

예를 들어 다음은 Slashed Zero 기능이 없는 Inter 글꼴(위)과 Slashed Zero OpenType 기능이 활성화된 글꼴(아래)입니다.

../../_images/using_fonts_font_variation_slashed_zero.webp

OpenType 기능 비교(인터)

OpenType 기능을 추가한 다음 검사기에서 선택을 취소하여 특정 글꼴에 대한 합자 및/또는 커닝을 비활성화할 수 있습니다.

../../_images/using_fonts_font_variation_disable_ligatures.webp

글꼴에 대한 합자 및 커닝 비활성화

시스템 글꼴

경고

시스템 글꼴 로딩은 Windows, macOS, Linux, Android 및 iOS에서만 지원됩니다.

그러나 Android에서 시스템 글꼴을 로드하는 것은 공식 API가 없기 때문에 신뢰할 수 없습니다. Godot는 제3자 안드로이드 공급업체가 수정할 수 있는 시스템 구성 파일 구문 분석에 의존해야 합니다. 이로 인해 시스템 글꼴이 제대로 로드되지 않을 수 있습니다.

시스템 글꼴은 가져온 글꼴과 다른 유형의 리소스입니다. 실제로는 프로젝트로 가져오지 않지만 런타임에 로드됩니다. 여기에는 2가지 이점이 있습니다.

  • 내보낸 PCK 파일에는 글꼴이 포함되지 않으므로 내보낸 프로젝트의 파일 크기가 더 작아집니다.

  • 내보낸 프로젝트에는 글꼴이 포함되지 않으므로 독점 시스템 글꼴이 프로젝트와 함께 배포된 경우 발생할 수 있는 라이센스 문제를 방지할 수 있습니다.

엔진은 자동으로 시스템 글꼴을 대체 글꼴로 사용하므로 사용자 정의 글꼴을 로드하지 않고도 CJK 문자와 이모티콘을 표시할 수 있습니다. 이모지 사용 섹션에 언급된 것처럼 적용되는 몇 가지 제한 사항이 있습니다.

만들기 시스템 글꼴을 사용하려는 위치의 SystemFont 리소스:

../../_images/using_fonts_system_font_create.webp

자신의 리소스 만들기

../../_images/using_fonts_system_font_specify.webp

SystemFont 리소스에서 사용할 글꼴 이름 지정

하나 이상의 글꼴 이름을 명시적으로 지정하거나(예: Arial) 시스템의 "표준" 기본 글꼴에 매핑되는 글꼴 *별칭*의 이름을 지정할 수 있습니다.

정면 뷰

Windows

macOS

Linux

Android

sans-serif

Arial

헬베티카

fontconfig에 의해 처리됨

로보토 / 노토 산스

serif

타임즈 뉴 로만

타임스탬프

fontconfig에 의해 처리됨

노토 세리프

inst2dict

택배 신규

택배

fontconfig에 의해 처리됨

드로이드 산스 모노

cursive

코믹 산스 MS

애플 챈서리

fontconfig에 의해 처리됨

메인 스크립트

if x else

가브리올라

파피루스

fontconfig에 의해 처리됨

드로이드 산스 모노

Android에서는 Roboto가 라틴어/키릴어 텍스트에 사용되고 Noto Sans는 CJK와 같은 다른 언어의 글리프에 사용됩니다. 타사 Android 배포판에서는 정확한 글꼴 선택이 다를 수 있습니다.

둘 이상의 글꼴을 지정하는 경우 시스템에서 발견된 첫 번째 글꼴이 위에서 아래로 사용됩니다. 글꼴 이름과 별칭은 모든 플랫폼에서 대소문자를 구분합니다.

글꼴 변형과 마찬가지로 SystemFont 배열을 리소스 파일에 저장하여 다른 위치에서 재사용할 수 있습니다.

시스템 글꼴마다 측정 기준이 다르다는 점을 기억하세요. 즉, 한 플랫폼에서는 직사각형 안에 들어갈 수 있는 텍스트가 다른 플랫폼에서는 그렇지 않을 수도 있습니다. 필요한 경우 라벨을 더 확장할 수 있도록 개발 중에 항상 추가 공간을 확보하십시오.

참고

Windows 및 macOS/iOS와 달리 Linux에 제공되는 기본 글꼴 세트는 배포판에 따라 다릅니다. 즉, 다양한 Linux 배포판에서는 지정된 시스템 글꼴 이름이나 별칭에 대해 다양한 글꼴이 표시될 수 있습니다.

시스템에 글꼴이 설치되어 있지 않더라도 런타임에 글꼴을 로드하는 것도 가능합니다. 자세한 내용은 :ref:`런타임 로드 및 저장 <doc_runtime_file_loading_and_saving_fonts>`을 참조하세요.

렌더링

전통적인 래스터화된 글꼴을 사용할 때 Godot는 글꼴별, 크기별로 글리프를 캐시합니다. 이렇게 하면 끊김 현상이 줄어들지만 프로젝트를 실행할 때 문자 모양이 처음 표시될 때 여전히 발생할 수 있습니다. 이는 글꼴 크기가 크거나 모바일 장치에서 특히 두드러질 수 있습니다.

MSDF 글꼴을 사용할 때 특수한 부호 있는 거리 필드 텍스처로 한 번만 래스터화하면 됩니다. 즉, 글꼴 크기를 고려하지 않고 순전히 글꼴별로 캐싱을 수행할 수 있습니다. 그러나 MSDF 글꼴의 초기 렌더링은 중간 크기의 기존 래스터화된 글꼴에 비해 속도가 느립니다.

글꼴 렌더링과 관련된 끊김 문제를 방지하기 위해 특정 글리프를 *사전 렌더링*할 수 있습니다. 이는 사용하려는 모든 글리프에 대해 수행하거나(최적의 결과를 위해) 게임 플레이 중에 나타날 가능성이 가장 높은 일반 글리프에 대해서만(파일 크기를 줄이기 위해) 수행할 수 있습니다. 사전 렌더링되지 않은 글리프는 평소와 같이 즉시 래스터화됩니다.

참고

두 경우 모두(기존 및 MSDF) 글꼴 래스터화는 CPU에서 수행됩니다. 즉, GPU 성능은 글꼴을 래스터화하는 데 걸리는 시간에 영향을 미치지 않습니다.

파일 시스템 도크에서 글꼴 파일을 두 번 클릭하여 고급 가져오기 설정 대화 상자를 엽니다. FileSystem 도크에서 글꼴을 선택하고 가져오기 도크로 이동한 다음 하단에서 **고급…**을 선택할 수도 있습니다.

../../_images/using_fonts_advanced_import_settings.webp

독 가져오기

고급 가져오기 설정 대화 상자의 사전 렌더링 구성 탭으로 이동한 다음 "더하기" 기호를 클릭하여 구성을 추가합니다.

고급 가져오기 설정 대화 상자에 새로운 사전 렌더링 구성 추가

고급 가져오기 설정 대화 상자에 새로운 사전 렌더링 구성 추가

구성을 추가한 후 해당 이름을 한 번 클릭하여 선택되었는지 확인하세요. 구성을 두 번 클릭하여 구성 이름을 바꿀 수도 있습니다.

지정된 구성에 사전 렌더링할 글리프를 추가하는 방법에는 두 가지가 있습니다. 두 가지 접근 방식을 누적 방식으로 사용할 수 있습니다.

번역을 가져와서 구성하기

대부분의 프로젝트에서 이 접근 방식은 언어 번역에서 텍스트를 자동으로 제공하므로 사용하기 가장 편리합니다. 단점은 프로젝트가 :ref:`internationalization <doc_internationalizing_games>`을 지원하는 경우에만 사용할 수 있다는 것입니다. 그렇지 않은 경우에는 아래 설명된 "사용자 정의 텍스트 사용" 접근 방식을 따르세요.

프로젝트 설정에 번역을 추가한 후 번역의 글리프 탭을 사용하여 두 번 클릭하여 번역을 확인한 다음 하단의 **번역에서 모든 문자열 모양 지정 및 글리프 추가**를 클릭합니다.

번역 탭의 글리프를 사용하여 고급 가져오기 설정 대화 상자에서 사전 렌더링 활성화

번역의 문양 탭을 사용하여 고급 가져오기 설정 대화 상자에서 사전 렌더링 활성화

참고

사전 렌더링된 글리프 목록은 번역이 업데이트될 때 자동으로 업데이트되지 않으므로 번역이 크게 변경된 경우 이 프로세스를 반복해야 합니다.

커스텀 노드 사용하기

게임에 표시될 텍스트를 수동으로 지정해야 하지만 이는 사용자 텍스트 입력 기능이 없는 게임에 대한 가장 효율적인 접근 방식입니다. 이 접근 방식은 모바일 게임에서 분산 앱의 파일 크기를 줄이기 위해 시도해 볼 가치가 있습니다.

기존 텍스트를 사전 렌더링을 위한 기준선으로 사용하려면 고급 가져오기 설정 대화 상자의 텍스트의 글리프 하위 탭으로 이동하여 오른쪽 창에 텍스트를 입력한 다음 대화 상자 하단에서 **텍스트 모양 지정 및 글리프 추가**를 클릭합니다.

고급 가져오기 설정 대화상자에서 사전 렌더링 활성화, 텍스트 탭의 글리프

텍스트의 문자 탭을 사용하여 고급 가져오기 설정 대화 상자에서 사전 렌더링 활성화

만약 여러분의 프로젝트가 국제화를 지원한다면, 여러분은 게임플레이 중 렌더링될 가능한 모든 캐릭터들을 빠르게 미리 렌더링 해보기 위해 당신의 CSV나 PO 파일들을 박스에 붙여넣을 수 있습니다 (사용자가 제공하거나 번역할 수 없는 문자열 제외).

문자 세트 활성화

두 번째 방법은 게임의 텍스트가 변경되는 경우 구성과 업데이트가 덜 필요하며 텍스트가 많은 게임이나 채팅이 포함된 멀티플레이어 게임에 더 적합합니다. 반면에 게임에 전혀 표시되지 않는 글리프가 사전 렌더링될 수 있으므로 파일 크기 측면에서 효율성이 떨어집니다.

기존 텍스트를 사전 렌더링을 위한 기준선으로 사용하려면 고급 가져오기 설정 대화 상자의 문자표의 글리프 하위 탭으로 이동한 다음 오른쪽에서 활성화할 문자 세트를 *두 번 클릭*하세요.

고급 가져오기 설정 대화상자에서 사전 렌더링 활성화, 문자표 탭의 글리프

문자표의 글리프 탭을 사용하여 고급 가져오기 설정 대화상자에서 사전 렌더링 활성화

전체 사전 렌더링을 보장하기 위해 활성화해야 하는 문자 세트는 게임에서 지원되는 언어에 따라 다릅니다. 영어의 경우 **기본 라틴어**만 활성화하면 됩니다. **Latin-1 Supplement**를 활성화하면 프랑스어, 독일어, 스페인어 등 더 많은 언어를 완전히 포괄할 수 있습니다. 러시아어의 경우 **키릴 문자**를 활성화해야 합니다.

지역 변수나 속성을 접근:

고급 프로젝트 설정의 GUI > 테마 섹션에서 기본 글꼴을 렌더링하는 방법을 선택할 수 있습니다.

  • 기본 글꼴 앤티앨리어싱: 기본 프로젝트 글꼴에 사용되는 antialiasing 방법을 제어합니다.

  • 기본 글꼴 힌트: 기본 프로젝트 글꼴에 사용되는 hinting 방법을 제어합니다.

  • 기본 글꼴 하위 픽셀 위치 지정: 기본 프로젝트 글꼴에 대한 subpixel 위치 지정 방법을 제어합니다.

  • 기본 글꼴 다중 채널 서명 거리 필드: ``true``인 경우 기본 프로젝트 글꼴이 기존 래스터화 대신 :ref:`MSDF 글꼴 렌더링 <doc_using_fonts_msdf>`을 사용하도록 만듭니다.

  • 기본 글꼴 생성 밉맵: ``true``인 경우 mipmap 생성 및 기본 프로젝트 글꼴 사용이 활성화됩니다.

참고

이 프로젝트 설정은 기본 프로젝트 글꼴(엔진 바이너리에 하드코딩된 글꼴)에만 영향을 미칩니다.

대신 사용자 정의 글꼴의 속성은 해당 가져오기 옵션에 따라 결정됩니다. 프로젝트 설정 대화 상자의 가져오기 기본값 섹션을 사용하여 사용자 정의 글꼴에 대한 기본 가져오기 옵션을 재정의할 수 있습니다.