revfactory/font-harness · Archived

font-build

폰트 빌드·릴리스 스킬. SVG 글리프를 fontTools로 컴파일해 설치 가능한 TTF 폰트 파일을 생성 — 번들 스크립트(build_font.py), manifest 규약, macOS 호환 name ?

First seen Aug 23, 2026

Installation

$ npx skills add revfactory/font-harness --skill font-build

Summary

  • 폰트 빌드·릴리스 스킬.
  • SVG 글리프를 fontTools로 컴파일해 설치 가능한 TTF 폰트 파일을 생성 — 번들 스크립트(build_font.py), manifest 규약, macOS 호환 name 테이블 규칙, 라이선스 임베드, 빌드 전 검증, fonts/ 릴리스·GitHub…

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from revfactory/font-harness.

npx skills add revfactory/font-harness

Browse all from revfactory/font-harness

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 59
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,251 B
  • docs SUMMARY.md 533 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

폰트 빌드 파이프라인

SVG 글리프 → TTF 컴파일은 반드시 번들 스크립트로 수행한다. 매번 새 스크립트를 작성하면 y축 변환·메트릭 처리가 미묘하게 달라져 라운드 간 비교가 오염된다.

사전 조건

  • fontTools 필요: python3 -c "import fontTools" 실패 시 pip3 install --user fonttools
  • 입력 SVG는 glyph-design 스킬 규약 준수 (viewBox 0 0 1000 1000, 최상위 path만, stroke 금지, 베이스라인 y=880)

manifest 규약

빌드 입력은 SVG 디렉토리가 아니라 manifest다. 각 글리프 디렉토리에 manifest.json:

{
  "glyphs": {
    "한": "han.svg",
    "A": { "file": "A.svg", "advance": 620 }
  }
}
  • 키는 반드시 1글자. 경로는 manifest 위치 기준 상대 경로
  • advance 생략 시 1000 (한글 전각). 라틴·부호는 반드시 advance 명시

빌드 절차

  1. 빌드 전 검증 (위반 글리프는 제작자에게 반환):
grep -l 'stroke' _workspace/glyphs/{콘셉트}/**/*.svg   # 결과가 있으면 규약 위반
  1. 컴파일:
python3 .claude/skills/font-build/scripts/build_font.py \
  --manifest _workspace/glyphs/{콘셉트}/generated/manifest.json \
  --family "Cheonjiin" --family-ko "천지인" --version 0.{N} \
  --out _workspace/build/Cheonjiin-v0.{N}.ttf

- --family는 반드시 ASCII. 이유: PostScript명(nameID 6)은 ASCII만 허용되고, 비ASCII 기본 이름은 macOS Font Book이 "서체 이름 없음"으로 설치를 거부한다 (v0.4에서 실제 발생). 한국어 표시명은 --family-ko로 — 로컬라이즈 레코드(0x0412)에 들어가 한국어 환경에서는 한글 이름으로 표시된다 - 라이선스(SIL OFL 1.1)·저작권 name 레코드는 스크립트가 자동 임베드한다

  1. 산출물 검증:
python3 -m fontTools.ttx -l _workspace/build/{파일}.ttf   # 테이블 목록 확인

- 글리프 수가 manifest 합계 +1(.notdef)인지 확인 - 스크립트가 출력한 실패 목록이 비어 있는지 확인 — 실패 글리프는 빈 글리프로 대체되므로 방치하면 투명 글자가 된다

  1. 설치 안내: macOS는 open _workspace/build/{파일}.ttf → Font Book에서 설치. 사용자에게 경로를 알려준다

버전 규칙

  • 라운드와 동기화: round-3 시안 → v0.3
  • 이전 빌드를 덮어쓰지 않는다 — _workspace/build/에 버전별 보존 (회귀 비교용)

알려진 함정

  • stroke로 그린 획은 컴파일 시 소실된다 — 빌드 전 검증이 이를 잡는다
  • 카운터(ㅇ 속공간)가 채워져 나오면 안팎 윤곽 방향이 같은 것이다 — 글리프 수정 필요 (fill-rule은 폰트에 없다)
  • transform 속성·중첩 그룹은 무시될 수 있다 — 규약대로 최상위 path만
  • 3차 베지어(C)는 스크립트가 cu2qu로 자동 변환한다 (TrueType glyf는 2차만 허용) — 별도 처리 불필요
  • 비ASCII --family는 macOS 설치 오류를 낳는다 — 스크립트가 경고를 출력하니 무시하지 말 것

릴리스 절차 (사용자가 배포·업로드를 요청할 때)

  1. 최신 버전 TTF를 fonts/에 복사한다 — fonts/는 배포 폴더로 최신 릴리스 1개만 유지 (구버전은 _workspace/build/와 git 이력에 보존)
  2. README.md 갱신: 설치 경로의 파일명, 버전 표에 변경 내용 한 줄 추가
  3. CLAUDE.md 변경 이력에 기록
  4. 커밋(메시지는 한글) 후 git push — 저장소: github.com/revfactory/font-harness (public, OFL 1.1)
  5. 라이선스 변경 시 OFL.txt와 스크립트의 name 테이블 문자열을 함께 갱신한다