
동작 환경
- Total War Rome II- Windows 10 x64
- DirectX 12
- Windows에서 완성형으로 출력되는 언어
"CUF mod tool by Tellos Athenaios - twcenter.net"의 문제점
- 관련 라이브러리 설정 및 배치 스크립트 작성에 개발관련 기초 지식이 필요함- 게임에서 사용되는 1789문자를 13가지 폰트 크기로 일괄 빌드시 약 1시간 소요
- 한글의 베이스 라인 정렬이 잘못되어 위 또는 아래로 치우치거나 잘리는 문제 발생
이 프로그램으로 개선된 사항
- DirectX 12를 지원하는 그래픽 카드만 있으면 누구나 쉽게 작업 가능- 게임에서 사용되는 1789문자를 13가지 폰트 크기로 일괄 빌드시 약 15초 소요
- DirectX에서 사용되는 RAW 데이터를 캡쳐하므로 CUF 이미지 품질이 좋음
- CUF 이미지 편집 및 일괄 처리 기능 제공

폰트를 열때 오류 팝업(0x887A0004)이 발생하는 경우
- 0x887A0004 DXGI_ERROR_UNSUPPORTED- 메시지: 요청된 기능은 디바이스 또는 드라이버에서 지원되지 않습니다.
- 이 프로그램은 DirectX 12 API를 사용하므로, 그래픽 카드에서 DirectX 12를 지원하지 않는 경우 사용할 수 없습니다.

사용법
1. 폰트 불러오기
- "Font" 입력창 오른쪽 폴더 아이콘을 클릭하여 폰트 선택 후 "열기" 버튼 클릭- 열기 직후 폰트 스타일은 Normal로 설정
- 굵게 또는 기울림꼴을 사용하려면 하단 "Font"탭 에서 설정 후 "Apply" 버튼 클릭
2. 폰트 크기 선택
- "Font"탭 "Default", "Delete", "Add" 버튼으로 조작- 그리드 체크박스 체크시 해당 폰트 크기를 빌드 할 수 있음
- 폰트마다 설정값이 조금씩 차이가 있으므로 사용자에 맞게 편집하여 사용
<항목 설명>
- Font Size: 크기(Point)는 CUF 저장시 파일명으로 사용
- FM Height: 폰트 높이(Pixel)
- Adj View Height: 폰트가 보여지는 높이 조정 값(Pixel), Draw Y Position = FM Height - View Height
- Y Offset: 폰트를 그릴때 사용하는 Y축 조정 값(Pixel)
- X Offset: 폰트를 그릴때 사용하는 X축 조정 값(Pixel)
3. 문자 선택
- "Glyph"탭에 폰트에 디자인된 유니코드 목록이 표시되며 체크 박스 선택시 해당 코드만 빌드됨- 두번째 입력란에 문자 또는 유니코드("$" + 16진수, 파스칼 문법) 입력 후 "Find" 버튼 클릭시 해당 유니코드로 이동
- 첫번째, 두번째 입력란 입력 후 "Toggle" 버튼 클릭시 해당 범위의 유니코드의 선택이 토글됨
- "Clear" 버튼 클릭시 전체 항목 체크 해제
- "Work" 버튼 클릭 후 "Add" 메뉴 선택시 해당 폰트에서 지원하지 않는 유니코드 추가 가능
- "Work" 버튼 클릭 시 Ctrl이 눌려진 경우 메뉴 팝업 없이 해당 기능을 바로 실행함
- "Add" 클릭시 나타나는 팝업창의 입력란에 있는 값은 영문버전에서 사용되는 유니코드 목록임
<"Glyph List" 체크 박스 리스트 키 이벤트>
- 추가(Insert), 삭제(Delete)
- 유니코드 목록 생성(클립보드): Ctrl + Shift + C
- 우측 "문자 목록" 입력란에는 게임에 사용된 문자가 입력되어 있음
- "문자 목록" 우측 "Toggle" 버튼 클릭시 해당 문자의 "Glyph" 체크 박스가 토글됨

4. CUF 이미지 빌드
- 우측 상단 "Work" 버튼 클릭 후 "Build" 메뉴 클릭- "Work" 버튼 클릭 시 Ctrl키가 눌려진 경우 메뉴 팝업 없이 해당 기능을 바로 실행함
- 작업 취소는 "Break" 버튼 클릭
※ 커닝기능과 연관된 Oblique 스타일을 빌드할때는 "Option"탭 "Kerning Left/Right" 값을 조정하기 바람
<CUF 이미지 내보내기/가져오기>
- 빌드 후 "Glyph"탭에서 대상유니코드 선택
- "Editor"탭에서 CUF Size 선택
- "Glyph"탭 "Work" 버튼 클릭 후 "Export" 메뉴 선택
- "Export" 메뉴 클릭시 Ctrl + Shift키가 눌려진 경우, 모든 폰트 크기를 일괄 내보내기 실행
- "Import" 메뉴 클릭시 Ctrl + Shift키가 눌려진 경우, 모든 폰트 크기에 일괄 가져오기 실행
- 일괄 처리시 파일명은 "Noto Serif KR_cn_16.exp"와 같이 폰트 크기가 마지막에 표현되어야 함
커닝 관련
- 게임에서 커닝기능이 동작하지 않음- "local_en.pack - georgia_italic_24.cuf"의 "f" 이미지 상, 하 커닝파트가 잘려 있는 것을 확인함
- CUF 구조상 커닝이 가능하지만, 개발자 인수인계 과정에서 누락되었거나, 다른 버그로 인해 차단한 것 같음
5. CUF 이미지 검수
- 폰트 크기에 따라 글자의 가독성이 떨어지는 경우가 발생함(예, NAVER 나눔명조 16pt "불")- 좌측 상단 "<", ">" 버튼을 클릭하면 미리보기(DirectX)창에 선택한 문자가 순서대로 나열됨
- "Option"탭 "Line Wrap"(줄당 문자 수)과 "Len"(전체 문자 수)로 그려지는 문자 조정 가능
- "Option"탭 "Height" 입력란에 전체 문자를 볼 수 있을 만큼의 높이 입력

6. CUF 이미지 보정
- "Editor"탭 좌측 입력창에 문자 또는 유니코드를 입력 후 "Get" 버튼 클릭(저장 가능)- 우측 패널 "Get" 버튼을 클릭하여 CUF 이미지 불러오기(패턴 설정 가능)
- 문자 입력란에 문자 또는 유니코드 값을 넣고 "Page Up" 또는 "Page Down" 키를 입력하면 상호 변환됨
- 우측 패널 패턴 설정은 마우스 왼쪽 다운 ~ 업 이벤트시 발생, Ctrl(가로), Alt(세로), Shift(방향) 조합 가능
- 패턴 지우기는 마우스 오른쪽 다운 ~ 업 이벤트시 발생, Ctrl(가로), Alt(세로), Shift(방향) 조합 가능
- 우측 패널 "Get" 버튼 클릭시 패턴은 초기화 됨
- 우측 패널 상단 "Set Pattern" 클릭시 선택된 패턴의 이미지가 좌측 패널로 복사됨
- 작업완료 후 좌측 패널 "Set" 버튼을 클릭하여 이미지 저장
- "Work" 버튼 클릭 후 "Batch" 메뉴 선택시 아래 설명된 작업을 일괄 처리 가능
<Batch 작업 설명>
- Adjust alpha value: 알파값 일괄 조정
- Revert alpha: 직전에 작업한 알파값으로 일괄 복원
- Move Y Position: Y축 일괄 이동
- Remove after Y Position: 입력된 Y 좌표 이후의 알파값 일괄 제거
- Set View Height Value: View Height 일괄 수정
- Set View Height as #1: 첫번째 이미지의 View Height로 일괄 수정, 다수의 폰트를 Import시 사용
- Set View Height Range: 유니코드 범위와 View Height를 입력하여 일괄 수정
보정 예시
- 대상 문자("불"), 참고 문자("물") 불러오기



7. CUF 저장
- 상단 "CUF" 입력창 저장할 파일명을 입력하고, "Work" 버튼 클릭 후 "Save" 메뉴 클릭- 파일명 입력시 "la_gioconda.cuf"를 입력해 두면, 빌드된 폰트크기 "la_gioconda_16.cuf"로 저장됨
<CUF 파일명 입력창 키 이벤트>
- 파일명(la_gioconda_uppercase.cuf) 변경(F5)
- 파일명(la_gioconda.cuf) 변경(F6)
- 파일명(georgia_italic.cuf) 변경(F7)
8. CUF 파일 패킹
- "Pack File Manager v2.0 - sourceforge.net"를 이용하여 "local_kr.pack" 파일에 작업한 CUF 파일 삽입9. 게임 실행 후 결과 확인
local_kr.pack 작업 내역
- "토탈워 마이너 갤러리 한글화 패치(2019-03-28) - 스팀 워크샵" 기반- "네이버 토탈워 카페 (리틀스톤, 2024-04-01)" 기반
- 글꼴: 마루 부리(ⓒNAVER)
- 오타/맞춤법 수정, 영문 미번역 일부 수정 등...
- 게임 UI 배율에 따른 CUF 이미지 보정 : 배율은 160 ~ 200 사용을 권장
한글 패치 비교
[스팀 워크샵]메인 메뉴
[0k0a 커스텀]UI 100%
메인 메뉴
[0k0a 커스텀]UI 200%
메인 메뉴
[0k0a 커스텀]UI 100%
기술 화면
[0k0a 커스텀]UI 200%
기술 화면
[0k0a 커스텀]UI 100%
세력 화면: 영향력 툴팁
영향력 타이틀 아래부분 잘림
개발회사 버그
[0k0a 커스텀]UI 200%
세력 화면: 영향력 툴팁
[0k0a 커스텀]UI 100%
군단 툴팁
능력치 숫자 오른쪽 잘림
글꼴(마루 부리) 숫자 넓이가 달라서 발생
[0k0a 커스텀]UI 200%
군단 툴팁
[0k0a 커스텀]UI 100%
군단 상세 화면
능력치 숫자 오른쪽 잘림
글꼴(마루 부리) 숫자 넓이가 달라서 발생
[0k0a 커스텀]UI 200%
군단 상세 화면

이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.
안녕하세요! 똑같이 따라했는데, 토탈워 워해머 3에서는 적용이 안 되는 것 같습니다....
답글삭제혹시 토탈워 워해머 1,2,3 중 아무거나 보유하고 계시다면 적용되는지 확인해주실 수 있으신가요?
CUF 빌더는 로마2 전용입니다.
삭제참고로 워해머 2의 경우 한글은 CUF가 아닌 TTF폰트를 사용합니다.(local_kr.pack ▶ font\nanummyeongjo.ttf)
햄2 의 경우 CUF와 TTF 두개 모두 있어야 하네요. 햄2 CUF 포맷이 롬2 CUF 포맷과 달라서 게시된 프로그램으로 작업할 수 없습니다.
삭제이 도구의 소스 코드를 공유할 수 있습니까?
답글삭제라이선스 문제로 소스 공개는 불가합니다.
삭제이 프로그램은 DirectX Sample - Github를 참고하여 만들었으니, 샘플소스와 블로그 아이디어를 잘 결합하여 원하는 결과를 얻으시기 바랍니다.
Hello, I have a question about making a thai font with CUF Tool.
답글삭제Regarding the incorrect rendering of Thai vowel characters, specifically in the joining of Thai vowel and consonant characters, where the vowel characters often have a gap between them and do not connect to the consonant characters, resulting in incorrect display.
https://i.imgur.com/klO1hnC.png
As shown in the figure above, the correct display of the text should be "เล่นคนเดียวตั้ง". However, cuf separates the characters and creates a gap in the text, resulting in "เล่นคนเด ียวต ั ้ง", which is an incorrect display.
Can your "cuf builder" tool fix the issue of Thai vowel characters not joining together? If so, how should I set it up? Thank you.
P.S. The vowel characters in the example are “◌ี” (U+0E35) and “◌ั” (U+0E31).
안타깝게도 태국어는 조합형 문자라서 CUF(이미지)로 표현하려면 완성형 문자로 변환 후 출력해야 하는데, 이 부분은 제가 지원해드릴 수 없을 것 같네요.
삭제참고로 한국어도 조합형 문자이지만 컴퓨터에서는 완성형을 사용하기 때문에 "한"(2개 자음 + 1개 모음)글자가 완성된 형태의 유니코드(U+D55C)로 표기됩니다.
아래와 같은 해결법도 있습니다.
삭제1. TTF 글꼴 수정
- Unicode Private Area(U+E000 ~ U+F8FF)에 완성문자 추가
- \E000 ~ \E002에 샘플 추가함
- 수정된 글꼴
2. 번역문장 유니코드 변환
- [Before]\u0E40\u0E25\u0E48\u0E19\u0E04\u0E19\u0E40\u0E14\u0E35\u0E22\u0E27\u0E15\u0E31\u0E49\u0E07
- [After]\u0E40\uE000\u0E19\u0E04\u0E19\u0E40\uE001\u0E22\u0E27\uE002\u0E07
3. 수정된 글꼴을 CUF Builder에서 작업
- 빌드 후 \uFEFF\u0E40\uE000\u0E19\u0E04\u0E19\u0E40\uE001\u0E22\u0E27\uE002\u0E07를 입력하여 결과 확인
- 빌드된 CUF
- 스크린샷#1
- 스크린샷#2
Thank you very much for your reply. I will try it out!
삭제Thank you again for taking your valuable time to find a solution for me.
삭제However, as I understand it, Thai cannot read glyphs that are created from combination characters.
Is it possible to use a method to shift the OffsetX of specific glyph-characters in cuf to the left, such as “◌ี” (U+0E35) -6px “◌ั” (U+0E31) -6px, and “◌้” (U+F70B) - 4px, to solve this problem?
아틸라도 같은 방법으로 적용이 가능한가요? 오직 롬2만 가능한건가요?
답글삭제아틸라를 안해봐서 모르겠네요
삭제