config.json.
Hack is bundled
The default font ships inside the binary. It renders identically on every machine without relying on a system install, so a fresh laptop looks like the one you set up last year.Fallbacks
font_family is the primary face; font_fallbacks is an ordered list tried in
turn for anything the primary lacks.
font_fallbacks out and you get the platform’s default chain:
Each ends in faces the host OS actually ships, and those stock names are
appended to whatever list you write yourself — so a
config.json copied from
another platform still resolves.
OpenType features
font_features passes tags straight through to the shaper:
true/false map to 1/0.
Anything malformed is skipped with a log line rather than failing the whole
config.
CJK and the two-column grid
A cell is one advance of the primary face, and a wide (CJK) character is
pinned to exactly two of them. A CJK fallback sits flush in its slot only if
its ideographs advance twice the primary’s Latin advance.