티스토리 뷰
"고도 엔진 소스 빌드하기"와 "비주얼 스튜디오로 고도 게임 엔진 개발 환경 구축"에 이은 글로 이번 포스팅은 간단하지만 엔진을 직접 수정하는 과정을 다뤄보고자 한다. 아직 고도 게임 엔진의 소스 빌드를 하지 않았다면 아직 포스팅을 참조할 필요가 있다.
고도 엔진을 처음 실행하면 위의 그림과 같이 한글은 정상적으로 표시되지 않는다. 한글은 기본 폰트에 없기 때문이다. "고도에서 한글 출력하기"에서 다룬 것처럼 커스텀 폰트로 설정하는 방법을 사용해야 한다. 엔진 내부에는 191개의 문자에 대해서만 고해상도 및 저해상도용 폰트를 내장하고 있다.(godot/scene/resources/default_theme/font_hidpi.inc, font_lodpi.inc) 실행 모드나 노드 편집기에서는 한글이 표시되지 않지만 편집기의 메뉴나 인스펙터 등에는 한글이 표시된다. 노드들에 표시되는 폰트에 한글을 기본적으로 표시하는 것은 조금 복잡하고 다국어 시스템의 호환성을 깨는 문제도 있으므로 이번에는 편집기 자체만 한글 폰트를 기본 폰트로 적용해 보고자 한다.
일단 위의 그림과 같이 godot/thirdparty/fonts 폴더에 트루 타입 한글 폰트를 복사한다. 되도록 폰트 파일의 크기가 작은 것으로 선택한다.
그리고 빌드를 수행하면 스콘에서 파이썬 코드를 통해 폰트 파일을 헤더 파일로(godot/editor/builtin_fonts.gen.h) 생성한다.
#define MAKE_FALLBACKS(m_name) \
m_name->add_fallback(FontArabic); \
m_name->add_fallback(FontHebrew); \
m_name->add_fallback(FontThai); \
m_name->add_fallback(FontHindi); \
m_name->add_fallback(FontJapanese); \
m_name->add_fallback(FontKorean); \
m_name->add_fallback(FontFallback);
그다음에 필요한 것은 godot/editor/editor_fonts.cpp를 수정하는 것으로 우선 상단에 위의 코드처럼 한국어를 추가한다.
Ref<DynamicFontData> FontKorean;
FontKorean.instance();
FontKorean->set_antialiased(font_antialiased);
FontKorean->set_hinting(font_hinting);
FontKorean->set_font_ptr(_font_NotoSansKR_Black, _font_NotoSansKR_Black_size);
FontKorean->set_force_autohinter(true);
다음에는 editor_register_fonts 함수 내에 위의 코드를 추가하면 된다. 폰트 파일 이름에 따라 _font_NotoSansKR_Black과 _font_NotoSansKR_Black_size는 자동적으로 헤더 파일에 만들어 지므로 다른 폰트를 복사했다면 해당 파일 이름에 따라 변수명을 바꾸어야 한다.
Ref<DynamicFontData> DefaultFont;
DefaultFont.instance();
DefaultFont->set_antialiased(font_antialiased);
DefaultFont->set_hinting(font_hinting);
//DefaultFont->set_font_ptr(_font_NotoSansUI_Regular, _font_NotoSansUI_Regular_size);
DefaultFont->set_font_ptr(_font_NotoSansKR_Black, _font_NotoSansKR_Black_size);
DefaultFont->set_force_autohinter(true);
앞선 예제를 적용하면 한국어 부분만 지정한 폰트를 적용하고 영어 등은 기본 폰트가 적용된다. 편집기 전체(볼드체 및 코드 폰트 제외)에 한글 폰트를 기본적으로 적용하려면 위의 예제와 같이 DefaultFont에 한글 폰트 데이터를 적용하면 된다.
위의 그림은 편집기 전체에 한글 폰트를 적용한 결과이다.
'게임개발과 무료게임' 카테고리의 다른 글
스트링, String 클래스 정리 - 고도 배우기, Godot (0) | 2024.02.01 |
---|---|
사용자 인터페이스 설계하기 - 고도 배우기, Godot (0) | 2024.02.01 |
비주얼 스튜디오로 고도 게임 엔진 개발 환경 구축 - 고도 배우기, Godot (0) | 2024.02.01 |
고도 엔진 소스 빌드하기 - 고도 배우기, Godot (0) | 2024.02.01 |
사전, Dictionary 클래스 정리 - 고도 배우기, Godot (0) | 2024.02.01 |