설명용으로 재현한 TextMeshPro 다국어 폰트 폴백 체인과 줄바꿈 설정입니다. CJK 폰트는 폴백으로 연결해야 아틀라스 용량이 폭증하지 않습니다.
설명용으로 재현한 TextMeshPro 다국어 폰트 폴백 체인과 줄바꿈 설정입니다. CJK 폰트는 폴백으로 연결해야 아틀라스 용량이 폭증하지 않습니다.

CJK 정적 아틀라스 생성은 피합니다

한글 11,172자와 한자 수만 자를 정적 SDF 텍스처로 구우면 4K 해상도로도 부족해 수십 MB의 아틀라스가 생깁니다. 라틴/숫자 기본 폰트만 가볍게 만들고, Noto Sans CJK 폰트들을 Dynamic SDF 모드로 생성해 Fallback Font Assets 리스트에 순서대로 연결하세요.

using TMPro;
using UnityEngine;

public class FontFallbackSetup : MonoBehaviour
{
    [SerializeField] private TMP_FontAsset primaryFont;
    [SerializeField] private TMP_FontAsset koreanFallback;
    [SerializeField] private TMP_FontAsset japaneseFallback;

    private void Awake()
    {
        if (primaryFont != null && !primaryFont.fallbackFontAssetTable.Contains(koreanFallback))
        {
            primaryFont.fallbackFontAssetTable.Add(koreanFallback);
            primaryFont.fallbackFontAssetTable.Add(japaneseFallback);
        }
    }
}

영어 번역문 길이 팽창과 Word Wrapping

한국어는 단어 단위 줄바꿈이 자연스럽지만, 같은 대사가 영어로 번역되면 문자열 길이가 1.3배에서 1.5배까지 늘어납니다. 고정 너비 대화창에서 줄바꿈(Wrapping)이 꺼져 있으면 텍스트가 화면 밖으로 튀어나가므로, ContentSizeFitter와 수직 레이아웃 그룹을 함께 구성해야 합니다.

using TMPro;
using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(TextMeshProUGUI))]
public class ResponsiveDialogText : MonoBehaviour
{
    private TextMeshProUGUI tmpText;

    private void Awake()
    {
        tmpText = GetComponent<TextMeshProUGUI>();
        tmpText.enableWordWrapping = true;
        tmpText.overflowMode = TextOverflowModes.Ellipsis;

        ContentSizeFitter fitter = GetComponent<ContentSizeFitter>();
        if (fitter != null)
            fitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
    }
}

한글 단어 단위 끊김 방지

텍스트 컴포넌트의 Korean Word Wrapping 설정을 활성화하면 조사가 앞 단어와 떨어져 홀로 다음 줄로 넘어가는 어색한 개행을 막을 수 있습니다.

검증 범위

공식 문서 대조

검증일

Unity 공식 문서와 본문의 코드·절차를 대조해 공개 준비 상태로 전환했습니다. 별도 Unity 프로젝트나 실기기에서 직접 재현한 결과는 아니며, 특정 버전·기기 문의가 들어오면 해당 환경에서 후속 확인합니다.