1P by neo 1달전 | favorite | 댓글 1개

목차

  • Megapack 이전
  • 첫 번째 팩
  • 두 번째 팩
  • 유산
  • Megapack의 목표
  • 더 크고 더 나은
  • 더 많은 언어 지원
  • 스타일 변형
  • 커닝 완성도
  • 더 나은 품질 관리
  • 더 쉬운 배포 및 유지보수
  • 기준을 높이다
  • 폰트 디자인 공부
  • 사진 참고자료
  • PIFO: 나의 픽셀 폰트 도구
  • 작동 방식
  • 사용된 크레이트
  • 1단계: 폰트 시트 생성
  • 2단계: 글리프 윤곽 만들기
  • 3단계: 커닝 테이블
  • 5단계: 내보내기
  • 품질 테스트
  • 배포
  • 결론

Megapack 이전

  • 2016년 Ikenfell 작업을 시작하면서 첫 번째 폰트 팩을 만들었음
  • 2018년에 두 번째 팩을 출시했으며, 품질이 크게 향상되었음

첫 번째 팩

  • 2016년에 12개의 폰트를 포함한 첫 번째 팩을 itch.io에 판매했음
  • 당시에는 폰트 디자인 실력이 부족했지만, 인디 게임에서 많이 사용되었음

두 번째 팩

  • 2018년에 두 번째 팩을 출시했으며, 40개의 폰트를 포함했음
  • 커닝 테이블을 추가하고 다양한 엔진에 맞춘 형식으로 제공했음
  • 인디 개발자들과 협력하여 게임 스크린샷을 사용해 홍보했음

유산

  • 두 번째 팩은 매우 인기가 있었으며, Nintendo의 Cadence of Hyrule 같은 큰 게임에서도 사용되었음
  • Love Conquers All Games의 Get in the Car, Loser에서도 여러 폰트를 사용했음

Megapack의 목표

  • Ikenfell 출시 후 번아웃 상태였지만, Rust 프로그래밍 기술을 계속 향상시켰음
  • 더 큰 폰트 팩을 만들 계획을 세웠음

더 크고 더 나은

  • 이번에는 100개의 폰트를 목표로 했으며, 다양한 게임 장르에 맞는 폰트를 만들고자 했음

더 많은 언어 지원

  • 이전 팩은 ASCII 문자만 지원했지만, 이번에는 EFIGS(영어, 프랑스어, 이탈리아어, 독일어, 스페인어)를 지원하도록 확장했음

스타일 변형

  • 각 폰트가 다양한 크기와 굵기를 지원하도록 하여 스타일적 일관성을 유지하면서도 변화를 줄 수 있도록 했음

커닝 완성도

  • 커닝 작업을 자동화하여 시간과 오류를 줄였음

더 나은 품질 관리

  • 폰트의 전체 품질을 쉽게 평가할 수 있는 방법을 도입했음

더 쉬운 배포 및 유지보수

  • 업로드 및 배포 과정을 자동화하여 오류를 줄이고 효율성을 높였음

기준을 높이다

  • 폰트 디자인을 공부하고 많은 참고자료를 수집했음

폰트 디자인 공부

  • Richard Poulin의 "Design School: Type" 책을 통해 폰트 디자인을 공부했음

사진 참고자료

  • 다양한 텍스트 사진을 참고자료로 사용했음

PIFO: 나의 픽셀 폰트 도구

  • 픽셀 폰트를 만들기 위해 Rust로 PIFO라는 도구를 개발했음

작동 방식

  • PNG 타일 시트와 설정 파일을 사용하여 폰트를 생성하고, 자동으로 커닝 쌍을 계산하여 TTF 파일로 내보냄

사용된 크레이트

  • clap, image, rayon, serde, glyph-names, ab-glyph, crunch 등을 사용했음

1단계: 폰트 시트 생성

  • 타일 시트와 설정 파일을 사용하여 폰트를 생성함

2단계: 글리프 윤곽 만들기

  • 픽셀을 클러스터로 그룹화하고, 윤곽을 생성하여 TTF 글리프로 변환함

3단계: 커닝 테이블

  • 수동 및 자동 커닝을 통해 커닝 테이블을 생성함

5단계: 내보내기

  • TTF 파일, 타일 시트, 압축된 텍스처 아틀라스로 폰트를 내보냄

품질 테스트

  • 폰트의 품질을 테스트하고 문제를 해결함

배포

  • itch.io 프로젝트를 생성하고 업로드함

결론

  • 2023년 12월에 175 픽셀 폰트 Megapack을 출시했으며, Rust로 도구 체인을 만들어 폰트를 생성, 품질 테스트 및 배포했음

GN⁺의 정리

  • 이 글은 픽셀 폰트 디자인과 제작 과정에 대한 상세한 설명을 제공함
  • Rust를 사용하여 폰트 생성 도구를 개발하고, 자동화된 커닝 및 품질 관리 시스템을 구축한 것이 흥미로움
  • 픽셀 폰트 디자인에 관심 있는 사람들에게 매우 유용한 정보가 될 것임
  • 비슷한 기능을 가진 다른 프로젝트로는 FontForge와 Glyphs가 있음
Hacker News 의견
  • "Fdj"와 "Fjo"의 간격 차이에 대한 스타일적 이유가 궁금함
  • 폰트 제작은 1년이 걸릴 수 있으며, 대문자, 소문자, 기호, 굵기, 기울기 등 다양한 변형을 포함함
    • 커닝(문자 간격)은 매우 중요한 작업이며, 많은 시간과 노력이 필요함
    • 176개의 문자를 지원하는 폰트는 37,976개의 커닝 쌍이 필요할 수 있음
    • 이를 자동화하여 대부분의 커닝 작업을 처리하고, 필요시 수동으로 조정함
  • 예술가와 엔지니어의 경계가 없었던 시절을 상기시켜주는 작업임
  • Donald Knuth의 Metafont 소프트웨어를 통해 래스터 폰트를 생성할 수 있음
  • 사이트의 폰트와 간단한 스타일링이 마음에 들었음
    • 사이트 제작 방법에 대한 포스트가 있음
  • 이 작업이 재정적으로도 도움이 되었음을 알게 되어 기쁨
    • Chevy Ray는 인디 게임 개발자로, 2010-2012년 사이에 활동했음
  • 알고리즘을 더 빠르게 할 수 있는 방법이 있을 것 같음
    • 해시맵을 비트맵과 바이트 인덱스 배열로 대체하는 것이 하나의 방법일 수 있음
  • 폰트에 관심 있는 사람은 tomorrow.type.today를 확인해보길 권장함
    • 팀원 중 한 명이 이들의 작업을 수집하고 있음
  • Rust에서 다중 코어로 작업을 쉽게 실행할 수 있음
    • 함수 체인에 단일 호출을 삽입하는 것만으로도 충분함
  • 타이포그래피는 이해하기 어려운 분야임
    • 175개의 폰트를 만들고 각각을 의미 있게 다르게 만드는 것은 놀라운 일임