
UMG 는 DPI(Dots Per Inch)로 표시되는 글로벌 폰트 해상도 값을 사용하여 텍스트에서 문자의 크기를 계산합니다.
Pixel Size = ( Point Size of Font * Screen Resolution ) / (Font Resolution in DPI )
예를 들어 72DPI로 표시되는 12포인트 폰트는 1인치의 12/72입니다. 언리얼 엔진 에서는 폰트 해상도를 설정하여 폰트 크기가 해석되는 방식을 커스터마이징할 수 있습니다. 이를 통해 팀에 가장 익숙한 표준 또는 외부 애플리케이션에서 가장 많이 사용되는 표준으로 유저 인터페이스를 개발할 수 있습니다. 이 페이지에서는 다음 정보를 제공합니다.
-
프로젝트 DPI를 환경설정하는 방법에 대한 지침
-
폰트 스케일링이 처리되는 방식에 대한 기술적인 정보
-
폰트 크기 관리를 위한 모범 사례.
위 계산은 폰트 포인트 크기와 DPI 사이의 관계를 설명하기 위해 단순화한 것입니다. 실제 픽셀 크기는 스케일링 등 더 많은 요인을 바탕으로 계산됩니다. 폰트 해상도는 폰트 크기가 해석되는 방식을 팀에서 손쉽게 사용할 수 있게 변경하지만, 화면의 픽셀 크기를 최종적으로 계산할 때는 언리얼 엔진의 네이티브 96DPI로 변환됩니다. 자세한 내용은 폰트 해상도 및 폰트 크기 섹션을 참고하세요.
글로벌 폰트 해상도 환경설정(DPI)
언리얼 엔진에서 프로젝트 세팅(Project Settings) > 엔진(Engine) > 유저 인터페이스(User Interface) 로 이동하여 폰트의 DPI를 글로벌로 변경할 수 있습니다. 폰트 해상도 세팅은 UMG 폰트(UMG Fonts) 섹션에 있습니다.

폰트 해상도(Font Resolution) 세팅은 프로젝트의 모든 폰트 크기를 계산하는 데 사용되는 DPI를 변경합니다. 커스텀 DPI 사용(Use Custom DPI) 세팅에서 디폴트 값이 아닌 값을 설정할 수 있습니다.
표준 DPI 환경설정
커스텀 DPI 사용 의 체크가 해제된 경우 폰트 해상도 드롭다운을 사용하여 '96DPI(언리얼 엔진)(96 DPI (Unreal Engine))' 또는 '72DPI(디폴트)(72 DPI (Default))' 중 하나를 선택합니다.

96DPI(언리얼 엔진) 은 레거시 세팅입니다. 이전 버전의 언리얼 엔진은 96DPI를 사용하여 폰트 크기를 계산합니다. 현재 버전의 언리얼 엔진에서 이 값은 이전 프로젝트를 위한 디폴트 세팅으로 사용됩니다.
72DPI(디폴트) 는 유저 인터페이스의 폰트 크기를 계산하기 위한 웹 디자인 업계 표준입니다. Figma 등 인기 있는 UI 디자인 소프트웨어에서 많이 사용되므로 새 프로젝트에서는 이 세팅을 권장합니다. 향후 언리얼 엔진 버전에서는 이 값이 디폴트로 사용됩니다. 향후 언리얼 엔진 버전에서는 이 값이 디폴트 DPI로 사용됩니다.
커스텀 DPI 환경설정
커스텀 DPI 사용 을 체크하면 폰트 해상도 드롭다운이 인티저 값 슬라이더로 대체됩니다. 이 슬라이더를 사용하여 폰트 해상도를 1~1000 사이의 인티저 DPI로 설정합니다.

비표준 폰트 해상도를 사용하면 텍스트 크기 계산 시 반올림 오류가 발생할 위험이 있습니다. 자세한 내용은 아래의 폰트 해상도 및 폰트 크기 섹션을 참고하세요.
폰트 해상도 및 폰트 크기
'폰트 해상도' 세팅은 폰트 크기 계산에 사용되는 실제 내부 DPI를 변경하지 않고 UMG가 폰트 크기를 해석하는 방법만 변경합니다. '폰트 해상도'가 어떻게 설정되어 있든 언리얼 엔진은 폰트 크기를 96DPI에 적합한 값으로 변환한 다음 내부적으로 96DPI를 사용하여 문자의 최종 디스플레이를 계산합니다. 따라서 화면상의 폰트 크기를 계산하는 실제 공식은 다음과 같습니다.
Pixel Size = ( Point Size of Font * Screen Resolution ) / (Font Resolution in DPI / 96 )
예를 들어 폰트 해상도를 72DPI로 설정하고 텍스트 엘리먼트를 12포인트 폰트로 설정한 경우 언리얼 엔진은 텍스트의 폰트 크기를 16으로 변환한 다음 텍스트를 96DPI로 표시합니다. 그 결과는 예상대로 텍스트 크기가 72DPI 애플리케이션에서 12포인트 폰트가 됩니다.
이 변환을 통해 글로벌 폰트 해상도를 변경하더라도 화면상의 텍스트 엘리먼트 크기를 프로젝트 전체에서 유지할 수 있으며, 72DPI 표준을 아직 채택하지 않은 이전 프로젝트와의 하위 호환도 지원됩니다. 또한 12.5 또는 12.2포인트 폰트와 같이 소수점이 있는 폰트 크기의 사용도 지원합니다.
이 접근법은 반올림 오류를 일으켜 예상치 못한 폰트 크기로 이어질 수 있습니다. 따라서 팀에서 선호하는 DPI를 조기에 결정하는 것을 권장합니다.
폰트 크기 모범 사례
프로젝트에서 텍스트를 관리할 때는 가능한 폰트 크기를 최대한 적게 사용해야 합니다.
언리얼 엔진은 텍스트 표시를 최적화하기 위해 프로젝트에서 사용하는 글리프만 포함하는 아틀라스 에셋을 생성하여 이를 래스터화하고 폰트 아틀라스에 필요에 따라 추가합니다. 예를 들어 프로젝트에 유일하게 있는 스트링이 Roboto 12 폰트인 'Scaling'인 경우 해당 스트링의 7개 문자만 폰트 아틀라스에서 공간을 차지합니다.
하지만 언리얼 엔진은 프로젝트에서 사용하는 모든 폰트의 모든 크기마다 글리프의 아틀라스를 생성합니다. 즉, 'Scaling'을 Roboto 12, Roboto 18, Roboto 72, Arial 18, Arial 24 및 Arial 36으로 표시하는 경우 언리얼 엔진은 동일한 글리프를 각 크기마다 재사용하지 않고 단어 'Scaling'에 필요한 글리프를 각각 포함하는 6개의 폰트 아틀라스를 생성합니다. 뿐만 아니라 텍스트를 포함하는 위젯에 스케일링을 적용하는 경우 언리얼 엔진의 텍스트 엔진은 여기에 변환을 적용한 뒤 이를 가장 가까운 크기로 래스터화합니다. 즉, 전체 화면을 50%만큼 스케일 다운하면 원래 Roboto 12를 사용하도록 설정된 스트링이 크기 6으로 래스터화되어 언리얼 엔진이 관리할 아틀라스가 하나 더 추가됩니다. 이러한 아틀라스는 UI가 생성 및 표시되는 방식에 따라 언제든지 메모리에 로드될 수 있습니다.
따라서 프로젝트 전체에 걸쳐 사용되는 폰트 크기의 종류를 줄이면 프로젝트 폰트 에셋을 적절한 크기로 유지할 수 있으며 프로젝트 전체의 폰트 표준화에도 도움이 됩니다. UI 디자인 시 단일 크기를 많이 활용할수록 글리프를 보다 쉽게 재사용하고 로드해야 하는 아틀라스의 수를 줄일 수 있습니다.