SYSTEM

Type

Redaction for display, Basier Square for everything else, and no mono face.

Foundations

SHAN HANNADIGE

Selected works

Automating my 35mm film scanning pipeline

For years my process looked like this: load film and take photos, send the film to a lab and wait for development, pick up said film, cut the negatives into strips.

Clarity is the reward.

October 2, 2026 · 8 min read

Redaction’s cuts

  • Exposure

    Cut 0 (clean) Redaction

    Small sizes only: card titles, h4–h6, pull-quotes, the hero tagline. Under ~24px erosion reads as a rendering bug

  • Exposure

    Cut 20 Redaction 20 K

    The default display face (--font-display). Section heads, page titles, prose h1–h3, the metrics row's numerals

  • Exposure

    Cut 50 Redaction 50 K

    The hero wordmark only

  • Exposure

    Cut 70 Redaction 70 K

    Oversized moments only: the 404 numerals. Its erosion needs ~100px or more to read as texture; below that it breaks into pixels. The metrics row (30–60px) moved to Redaction 20 in Oct 2026 for that reason

The K builds. Redaction has no ligatures. Its uneven heading rhythm comes from kern pairs as deep as −160 units sitting beside unkerned neighbours. scripts/redaction-k.py halves every pair and snaps it back to the face's 20-unit grid, then renames the family (the OFL asks modified builds not to carry the original name). Never load the original eroded cuts. Rebuild with pip install fonttools brotli && python scripts/redaction-k.py.

Basier Square, the text face: Regular, Regular Italic, Medium and Bold.

Scale

Role Size / line Notes
Hero wordmark clamp(4.5rem, 8vw, 7rem) / 1.05 50 K, caps
Section head 28px → 36px at md / 1.1 .section-head
Prose h1 40px / 1.05 52px in .prose-lg
Prose h2 28px / 1.15 34px in .prose-lg
Prose h3 22px / 1.2 26px in .prose-lg
Prose h4–h6 18px / 1.3 clean cut
Pull-quote 24px / 36px clean cut
Body 18px / 30px 20px / 33px in .prose-lg
Table body 16px / 24px
Label 11px / 16px

Read from the guide’s Scale table at build time.

Labels

Darkroom.shannadige.com

The metadata voice that replaced Commit Mono: Basier Square Medium, 11px on a 16px line (0.6875rem / 1rem), uppercase, letter-spacing: 0.08em. Used for dates, clients, captions, table heads, buttons, tabs, TOC rows and flyouts. Usually --muted-foreground; --ink when it is the primary thing in its row.

Decisions

  • Two typefaces, no mono

    Redaction for display, Basier Square for everything else. Commit Mono went with the September 2026 retheme; the label voice replaced it.

  • Sentence case

    Caps and positive tracking exposed Redaction’s uneven kern pairs. The hero wordmark is the one display text set in caps.

  • The K builds

    Kern pairs as deep as −160 units sat beside unkerned neighbours. The K builds halve every pair and snap it to the face’s 20-unit grid.

  • Metrics in Redaction 20

    The 70 cut’s erosion needs ~100px to read as texture; at 30–60px it broke into pixels, so the metrics row moved to Redaction 20 (Oct 2026).

  • No tabular figures

    Neither face has them, so numbers right-align in fixed-width cells.