{
  "$comment": [
    "The typefaces, in the order the picker shows them.",
    "",
    "Only what this app decides: an id, a display name, and where the bake",
    "lives. Cells, baseline, advances, charset and ink extents are read from",
    "each bake's own font.json \u2014 they were facts when the sheet was made, and",
    "copying them here would be a second copy free to drift from the first.",
    "",
    "The set this replaced was fifteen found sheets with no metadata: cell",
    "sizes measured from the gaps, baselines from ink extents, charsets by",
    "rendering each cell magnified and reading them one by one. A wrong charset",
    "did not fail, it rendered plausible nonsense.",
    "",
    "Bakes are kept whole in ../../fonts/<dir>/, with a preview sheet showing",
    "every glyph beside its code point. That is the check when a face changes."
  ],
  "fonts": [
    {
      "id": "system",
      "name": "System mono",
      "source": "canvas",
      "family": "ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace",
      "note": "Rasterised from the OS font at load. Resolves differently per platform, so layout is not reproducible across machines. Kept as the fallback: boot picks entry 0 when the configured default is missing."
    },
    {
      "id": "calccien",
      "name": "CalcCien",
      "source": "grid",
      "dir": "calccien-8",
      "note": "Monospaced, so its font.json carries one advance and no advances.bin ships."
    },
    {
      "id": "steelflight",
      "name": "Steelflight",
      "source": "grid",
      "dir": "steelflight-8",
      "note": "The default. Proportional: advance is null in the manifest and advances.bin carries one per glyph. The first face here whose letters do not all take the same width."
    },
    {
      "id": "rotorboy",
      "name": "ROTORboy",
      "source": "grid",
      "dir": "rotorboy-8",
      "note": "Proportional, and the tightest face here: 7x7 cells, advances from 2 to 8 px, a baseline 6 px down, and ink filling the cell top to bottom. Its line box works out at 1.0 em against CalcCien's 1.125 and Steelflight's 1.25, so a list of the same height holds noticeably more rows."
    }
  ]
}
