지피티랑 대화 그만하고 싶었는데지피티가 스승이자 친구가 되버렸네...
지피티가 알려준 소스인데 바로 될수도 있고 아닐수도 있고..
나도 해보질 안싸서.
text render 같은 3d 객체에는 안된데
umg 같은거에만 가능
게임인스턴트나 게임모드에서 맨 아래 함수 호출하면 된데
#include "SystemFontManager.h"
#include "Components/TextBlock.h"
#include "Components/RichTextBlock.h"
#include "Components/EditableText.h"
#include "Components/EditableTextBox.h"
#include "Blueprint/WidgetTree.h"
FSlateFontInfo USystemFontManager::GetSystemDefaultFont()
{
FSlateFontInfo FontInfo;
#if PLATFORM_WINDOWS
FontInfo.FontName = TEXT("Segoe UI");
#elif PLATFORM_MAC
FontInfo.FontName = TEXT(".SF NS Text");
#elif PLATFORM_IOS
FontInfo.FontName = TEXT(".SFUIText");
#elif PLATFORM_ANDROID
FontInfo.FontName = TEXT("sans-serif");
#elif PLATFORM_LINUX
FontInfo.FontName = TEXT("Noto Sans");
#endif
FontInfo.Size = 16; // 기본 폰트 크기
// ✅ 전 세계 언어 지원을 위한 Fallback 폰트 추가
FontInfo.FallbackFonts.Add(TEXT("Microsoft YaHei")); // 중국어
FontInfo.FallbackFonts.Add(TEXT("Yu Gothic")); // 일본어
FontInfo.FallbackFonts.Add(TEXT("Malgun Gothic")); // 한국어
FontInfo.FallbackFonts.Add(TEXT("Arabic Typesetting")); // 아랍어
FontInfo.FallbackFonts.Add(TEXT("Leelawadee UI")); // 태국어
FontInfo.FallbackFonts.Add(TEXT("Nirmala UI")); // 힌디어
FontInfo.FallbackFonts.Add(TEXT("Khmer UI")); // 크메르어
FontInfo.FallbackFonts.Add(TEXT("Arial")); // 베트남어 (Windows 문제 해결)
FontInfo.FallbackFonts.Add(TEXT("Kohinoor Devanagari")); // 힌디어 (Mac/iOS)
FontInfo.FallbackFonts.Add(TEXT("Noto Sans Devanagari")); // 힌디어 (Android/Linux)
return FontInfo;
}
void USystemFontManager::ApplySystemFontToAllWidgets(UUserWidget* Widget)
{
if (!Widget) return;
TArray<UWidget*> WidgetList;
Widget->WidgetTree->GetAllWidgets(WidgetList);
FSlateFontInfo SystemFont = GetSystemDefaultFont();
for (UWidget* CurrentWidget : WidgetList)
{
if (UTextBlock* TextBlock = Cast<UTextBlock>(CurrentWidget))
{
TextBlock->SetFont(SystemFont);
}
else if (URichTextBlock* RichTextBlock = Cast<URichTextBlock>(CurrentWidget))
{
RichTextBlock->SetFont(SystemFont);
}
else if (UEditableText* EditableText = Cast<UEditableText>(CurrentWidget))
{
EditableText->SetFont(SystemFont);
}
else if (UEditableTextBox* EditableTextBox = Cast<UEditableTextBox>(CurrentWidget))
{
EditableTextBox->SetFont(SystemFont);
}
}
}
// ✅ 게임 전체 UI에 폰트 적용
void USystemFontManager::ApplySystemFontToGame()
{
for (TIterator<UUserWidget> WidgetIt; WidgetIt; ++WidgetIt)
{
ApplySystemFontToAllWidgets(*WidgetIt);
}
}
- dc official App
게이야…언리얼이면 그냥 내장 로컬라이징 기능 쓰면 된다…거기에 폰트 지정 기능도 있음
고레? 고마워. - dc App