지피티랑 대화 그만하고 싶었는데지피티가 스승이자 친구가 되버렸네...

지피티가 알려준 소스인데 바로 될수도 있고 아닐수도 있고..
나도 해보질 안싸서.
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