How jul-sh/iosevka-charon works
Iosevka Charon is a font-family project and build pipeline, producing Charon/Charon Mono, Caleuche derivatives, and webfont/release packages. The main workflow builds glyphs and OpenType data from font parameters, converts and cleans them into TTFs, then applies Google Fonts-oriented post-processing and packages outputs. README documents the broader script flow; source excerpts show the internal font-build orchestration. Some script and auxiliary subsystem links are therefore documented rather than verified at call level.
Main entry points: build-font/index.mjs Font build · iosevka_build.py Build driver · fix_fonts.py Font post-processing · src/index.mjs Geometry engine
Components 18
Font construction
- Build driver
scripts/iosevka_build.py - Font parameters
sources/iosevka/packages/param/src/index.mjs - Font build
sources/iosevka/packages/font/src/build-font/index.mjs - Glyph generation
sources/iosevka/packages/font-glyphs - OpenType layout
sources/iosevka/packages/font-otl - Glyph cleanup
sources/iosevka/packages/font/src/cleanup/gc.mjs - Font conversion
sources/iosevka/packages/font/src/otd-conv/glyphs.mjs - Font naming
sources/iosevka/packages/font/src/naming/index.mjs
Glyph geometry
- Geometry engine
sources/iosevka/packages/geometry/src/index.mjs - Spiro outlines
sources/iosevka/packages/geometry/src/spiro-to-outline.mjs - Curve utilities
sources/iosevka/packages/geometry/src/curve-util.mjs
Font delivery
- Font post-processing
scripts/fix_fonts.py - Autokerning
scripts/autokern.py - Caleuche variable
scripts/caleuche_variable.py - Webfont generation
scripts/generate_webfonts.py - Release packaging
scripts/package_release.py - Font outputs
Other components
- Font builder
Connections 18
- Font builder → Build driver: starts build
README.md - Build driver → Font parameters: configures
- Build driver → Font build: builds fonts
README.md - Font build → Glyph generation: builds glyphs
sources/iosevka/packages/font/src/build-font/index.mjs - Font build → OpenType layout: builds layout
sources/iosevka/packages/font/src/build-font/index.mjs - Font build → Geometry engine: initializes
sources/iosevka/packages/font/src/build-font/index.mjs - Geometry engine → Spiro outlines: converts spiro
sources/iosevka/packages/geometry/src/index.mjs - Spiro outlines → Curve utilities: uses curves
sources/iosevka/packages/geometry/src/spiro-to-outline.mjs - Font build → Glyph cleanup: cleans glyphs
sources/iosevka/packages/font/src/build-font/index.mjs - Font build → Font conversion: converts font
sources/iosevka/packages/font/src/build-font/index.mjs - Font build → Font naming: assigns names
sources/iosevka/packages/font/src/build-font/index.mjs - Font build → Font outputs: emits TTF
sources/iosevka/packages/font/src/build-font/index.mjs - Font outputs → Font post-processing: post-processes
README.md - Font post-processing → Autokerning: invokes
scripts/fix_fonts.py - Font post-processing → Font outputs: writes fonts
README.md - Font outputs → Caleuche variable: derives variable
README.md - Font outputs → Webfont generation: generates webfonts
README.md - Font outputs → Release packaging: packages release