유니티 SDF폰트 이식 관련 파이썬 스크립트

2025. 9. 2. 21:54·한글패치 관련 짧은 글들
import json

original_game_font = "骚话-CAB-5735cc27e392da90e819cada7f72a3ff-8141111607381082250.json"
new_font = "NanumGothicExtraBold SDF-sharedassets0.assets-9.json"

with open(original_game_font, "r", encoding="utf-8") as f:
    original_data = json.load(f)

with open(new_font, "r", encoding="utf-8") as f:
    new_data = json.load(f)

m_GameObject_FileID = original_data["m_GameObject"]["m_FileID"]
m_GameObject_PathID = original_data["m_GameObject"]["m_PathID"]
m_Script_FileID = original_data["m_Script"]["m_FileID"]
m_Script_PathID = original_data["m_Script"]["m_PathID"]
m_Material_FileID = original_data["material"]["m_FileID"]
m_Material_PathID = original_data["material"]["m_PathID"]
m_SourceFontFile_FileID = original_data["m_SourceFontFile"]["m_FileID"]
m_SourceFontFile_PathID = original_data["m_SourceFontFile"]["m_PathID"]
m_AtlasTextures_FileID = original_data["m_AtlasTextures"]["Array"][0]["m_FileID"]
m_AtlasTextures_PathID = original_data["m_AtlasTextures"]["Array"][0]["m_PathID"]


original_data["m_FaceInfo"] = new_data["m_FaceInfo"]
original_data["m_GlyphTable"] = new_data["m_GlyphTable"]
original_data["m_CharacterTable"] = new_data["m_CharacterTable"]
original_data["m_AtlasTextures"] = new_data["m_AtlasTextures"]
original_data["m_AtlasWidth"] = new_data["m_AtlasWidth"]
original_data["m_AtlasHeight"] = new_data["m_AtlasHeight"]
original_data["m_AtlasPadding"] = new_data["m_AtlasPadding"]
original_data["m_AtlasRenderMode"] = new_data["m_AtlasRenderMode"]
original_data["m_UsedGlyphRects"] = new_data["m_UsedGlyphRects"]
original_data["m_FreeGlyphRects"] = new_data["m_FreeGlyphRects"]
original_data["m_FontWeightTable"] = new_data["m_FontWeightTable"]

original_data["m_GameObject"]["m_FileID"] = m_GameObject_FileID
original_data["m_GameObject"]["m_PathID"] = m_GameObject_PathID
original_data["m_Script"]["m_FileID"] = m_Script_FileID
original_data["m_Script"]["m_PathID"] = m_Script_PathID
original_data["material"]["m_FileID"] = m_Material_FileID
original_data["material"]["m_PathID"] = m_Material_PathID
original_data["m_SourceFontFile"]["m_FileID"] = m_SourceFontFile_FileID
original_data["m_SourceFontFile"]["m_PathID"] = m_SourceFontFile_PathID
original_data["m_AtlasTextures"]["Array"][0]["m_FileID"] = m_AtlasTextures_FileID
original_data["m_AtlasTextures"]["Array"][0]["m_PathID"] = m_AtlasTextures_PathID


with open("new.json", "w", encoding="utf-8") as f:
    json.dump(original_data, f, indent=4, ensure_ascii=False)

 

 

 

original_game_font 변수에 게임 내 원래 폰트 MonoBehaviour에서 json 형식으로 추출한 json파일 경로를 기입

new_font 변수에 본인이 제작하신 폰트의 MonoBehaviour에서 json 형식으로 추출한 json파일 경로를 기입

 

이후 스크립트를 실행하시면 new.json이 나오는데,

이걸 UABEA로 원래 게임 폰트의 MonoBehaviour에 Import 하시면 됩니다.

 

오류가 안 뜬다는 가정 하에 지금까지는 정상작동 했습니다.

저작자표시 비영리 (새창열림)

'한글패치 관련 짧은 글들' 카테고리의 다른 글

유니티 게임 한글화 시 한국어 조사 처리  (2) 2025.08.27
UnityPy 텍스쳐 삽입 시 "params must be an instance of BC7CompressBlockParams" 오류 해결  (0) 2025.03.31
global-metadata.dat이 없는 경우의 덤프법 (frida 이용)  (0) 2025.03.23
UnityPy를 이용한 유니티 게임 MonoBehaviour 특정 텍스트 필드 추출/삽입  (0) 2025.03.04
IoStore를 사용하며 sig우회가 안되는 언리얼 게임 모드 로딩 방지 우회하기  (6) 2025.01.20
'한글패치 관련 짧은 글들' 카테고리의 다른 글
  • 유니티 게임 한글화 시 한국어 조사 처리
  • UnityPy 텍스쳐 삽입 시 "params must be an instance of BC7CompressBlockParams" 오류 해결
  • global-metadata.dat이 없는 경우의 덤프법 (frida 이용)
  • UnityPy를 이용한 유니티 게임 MonoBehaviour 특정 텍스트 필드 추출/삽입
Snowyegret
Snowyegret
기록용 블로그입니다.
  • Snowyegret
    Snowyegret
    Snowyegret
  • 공지사항

    • 문의: 디스코드 snowyegret12
    • 연락처(디스코드) 계정 변경 안내
    • 블로그 운영 재개 안내
  • 링크

    • 블로그 메인
    • 방명록/문의사항
    • Github Repositories
    • Github Gists
    • 분류 전체보기 (88)
      • 늑대와 향신료 VR2 한글패치 (1)
      • 장난을 잘 치는 타카기양 VR 1학기 한글패치 (1)
      • Shephy 카드 설명 한국어 텍스쳐 모드 (1)
      • 한글패치 관련 짧은 글들 (37)
      • 한글패치 작업 내역 (11)
      • 한글화 분석 (작업X) (5)
      • python snippets (4)
      • 게임 (2)
      • 간단프로그램 (2)
      • IT (18)
      • AI (1)
      • TODO (2)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
Snowyegret
유니티 SDF폰트 이식 관련 파이썬 스크립트
상단으로

티스토리툴바