Essenfont ships in multiple formats for different use cases. Each is generated by the same build pipeline from the same donor set.

Canonical: OTC (OpenType Collection, CFF2)

Essenfont-Regular.otc is the canonical output — a single file containing all five plane faces with CFF2 outlines.

Property Value
Format OpenType Collection (.otc)
Outlines CFF2 (cubic Béziers, subroutinized)
Faces 5 (BMP, SMP, SIP, TIP, SSP)
Color CBDT/CBLC for emoji blocks
Size ~105 MB

CFF2 is chosen over glyf (TrueType) for the canonical output because it is ~35% smaller for the same coverage via subroutinization. All major font renderers (HarfBuzz, CoreText, DirectWrite, FreeType) support CFF2.

Per-plane TTFs

The build also emits five standalone TTFs — one per Unicode plane — with glyf (TrueType) outlines for maximum compatibility:

File Plane Use case
Essenfont-BMP.ttf U+0000–U+FFFF Most world scripts
Essenfont-SMP.ttf U+10000–U+1FFFF Historical scripts, emoji
Essenfont-SIP.ttf U+20000–U+2FFFF CJK Extensions B–F
Essenfont-TIP.ttf U+30000–U+3FFFF CJK Extensions G–J, Tangut
Essenfont-SSP.ttf U+E0000–U+EFFFF Language tags

Per-plane WOFF2

Each TTF is also encoded as WOFF2 and WOFF for web embedding. The npm package bundles the WOFF2 versions with CSS @font-face declarations and unicode-range rules:

@font-face {
  font-family: 'Essenfont';
  src: url('essenfont/fonts/Essenfont-BMP.woff2') format('woff2');
  unicode-range: U+0000-FFFF;
  font-display: swap;
}

The browser only downloads the plane(s) needed for the rendered text.

Per-block WOFF2 subsets (this website)

This website serves 200+ per-block WOFF2 subsets — one Unicode block per file. Each subset is small (typically 10–500 KB) so a page that only shows Tangut glyphs downloads just the Tangut WOFF2, not the 105 MB OTC.

The subset pipeline reads the OTC, groups codepoints by block, and runs fontisan subset to produce a per-block WOFF2. The fonts.css file declares one @font-face per subset with the correct unicode-range.

SRI hashes

Each release ships an sri.txt file with Subresource Integrity hashes for every WOFF2 and WOFF:

Essenfont-BMP.woff2=sha384-abc123...
Essenfont-SMP.woff2=sha384-def456...

Use these in <link> tags for integrity verification:

<link rel="stylesheet" href="essenfont/css/all.css"
      integrity="sha384-abc123..." crossorigin="anonymous">

Release artifacts

Each GitHub Release includes:

  • Essenfont-Regular.otc — canonical OTC
  • Essenfont-{BMP,SMP,SIP,TIP,SSP}.ttf + .woff + .woff2 — per-plane formats
  • coverage.json — per-block coverage statistics
  • cp_map.json — codepoint → donor label mapping
  • provenance.json — full donor attribution per codepoint
  • license-pack.zip — all donor licenses + attribution
  • svg-exports.zip — per-codepoint SVG exports
  • release-manifest.json — artifact list + checksums

Next: Font specification →