eigenform.art
pdf-fire · 0.84

product · pdf-fire · 0.84

pdf-fire

pdf-fire — fire-control.md page 1: the h1 pdf-fire burning above its own flame

light
it up

Markdown → Vector pdf. On fire.

every mark reports tuning=production

outlines

Contour, not rectangle

The black hairline is the flattened glyph outline the fuel bed was derived from — the same loops, in canvas space. If the outlines can’t be read, the mark gets no fire at all.

The word “pdf-fire” traced by a black outline over the fire field, with cyan and magenta seed dots on the contour

offset

The outset gap

Zoomed to the bowl of the p: the contour rides outside the glyph body by a fixed outset, so the flame front starts off the ink rather than on it. Stroke width is the base thinned by 1/φ.

High magnification of the letters p, d and f showing the emitter contour offset outward from the glyph edge

specimen · dev-view

Anatomy of a mark

figure · domain

Emitter placement

The full simulation domain: a blue lattice over the fire column, with cyan, magenta and white seed markers along the word “pdf-fire”

seeds

Three classes, one profile

The domain is a lattice sized to the mark — roughly four cells per point in the page plane. Every seed carries a fuel intensity; marker area tracks it, so a stronger drop reads larger.

  • edge — injected along the outset contour of the glyph outline.
  • stem — interior coverage, weighted by ink inside the counters.
  • raised balance — a second pass at 0.318 × height, on 2/3 of the columns, jittered by 1D y-noise, filling only what the gate called weak.

Nothing here is classified by text rank. A title, a list dash and an inline bold run differ only by coverage geometry and seed.

The 56 × 88 × 29 simulation domain as a wireframe box sitting in front of the page. The previous 2D lattice, glyph outlines and emitters are projected onto the page-facing face; cell-centre dots continue into the volume.

Same view as above, projected into the volume. The page is the back face; k comes toward the camera. Each cell is a wireframe cube with a dot at its centre. Outlines and the 38 + 18 seeds ride the fuel bed.

layer 1 · --fire-debug

Simulate

Every number below is what the binary reported for the h1 pdf-fire on page 1 — read back out of the painted FireSpec, not copied from the source.

quantityvaluenote
grid56 × 88 × 29142,912 cells · 5.20 × 5.17 pt each · 29 deep
domain291.2 × 454.9pt — the crop the sim runs in, for 217.5 × 68.8 pt of ink
particles428Lagrangian swarm carrying tongues and sparks
warmup92 · dt 0.22steps integrated before the frame is taken
seeds56edge 38 · stem 18 · balance 0 · 0.258 per pt of ink width
turbulence0.70curl-strength · vorticity ε 8.00 · local curl 2.60
forces8.00buoyancy · cooling 0.75 · drag 0.08
seed5bd390dd…94a7ab75, from glyph-key f91627326266e104 — same glyph, same fire

layer 2 · depth slabs

Project

The camera is orthographic and fixed, so the 29-cell depth axis collapses onto the page plane. Emission integrates as Screen, absorption as Multiply — the volume integral becomes a blend stack the viewer evaluates on display.

Operator stack: four fluid-sim depth panels as images, skewed onto their iso planes. k = 4 · 137 × 215 × 77.

Operator stack from the fluid sim: four cached depth panels, each an image of that band, skewed onto its plane. Screen and Multiply fold the stack onto the sheet.

emission fieldvaluestage
min0.017after the raised-balance continue
p250.454—
median0.726the gate the column probe measures against
p751.056—
max2.055hot core
at measure0.733median before balance — the pass moved it 0.007

layer 3 · 16 nested levels

Vectorize

The field is cut at sixteen emission thresholds and each level-set is traced to a closed contour. The levels are nested, so the core takes all sixteen Screen layers while the outer haze takes one.

Fifteen emission isolines stacked along depth in front of the page, isometric, ember at the back grading to gold at the front

Same isolines, now sliced along k and stacked in front of the page — not laid out in the plane. Threshold for level li is f2.2 where f = 0.12 + 0.88·li/15 — 0.009 at L00, 1.000 at L15. Fifteen of the sixteen carried a contour on this mark; the top level found no pixel that hot. Smoke is a separate absorption isoline at 0.084.

emit · counted from the file

Emit

What actually lands in the PDF, counted by decompressing the content streams of the three-page fire-control.md render.

objectcountrole
bézier305,687c — contour and tongue geometry
lines219,400l
subpaths56,857m — one per traced level-set component
fills56,752f
axial gradients2,650ShadingType 2 — tongue bodies and spark tails
radial gradients2ShadingType 3 — glow halo
blend modes3Screen · Multiply · ColorDodge
file8.3 MB3 pages, all vector — no raster anywhere

figure · gate

Fire columns

Below the domain, one bar per column of the lattice: measured emission energy against the median. Green clears the gate; red is weak, and weak columns are what the raised balance pass goes back and feeds.

A strip of 42 green intensity bars, each labelled with its column index and measured energy

sheets · pdf-fire dev-view

Dev-view

One live simulation per specimen, two sheets each — measure (edge + stems settle) and balance (after the raised pass continues). Same profile every time; only the glyph changes.

Dev-view sheet L001, measure stage, h1 text “pdf-fire”

L001 · measure
h1 text

Dev-view sheet L002, balance stage, H2 heading text “Dyanamic H2”

L002 · balance
H2 heading

Dev-view sheet L003, balance stage, H3 heading text “HEADINGS NEVER LOOKED SO HOT”

L003 · balance
H3 heading

Dev-view sheet L008, measure stage, inline bold run “attention”

L008 · measure
inline bold

specimen · page 2

On the page

pdf-fire — fire-control.md page 2: an H3, a history-of-fire-control table, and a second heading, each carrying its own flame

specimen: examples/fire-control.md

axis R

Specs

topicRfact
contract 0.95 one production profile · no rank variants
coverage 0.92 real glyph outlines · no rect substitute
relation 0.90 sibling of Fold · same A4 geometry
tuning 0.88 intensity 0.65 · smoke 0.30 · sparks 0.30 · blueshift 0.06
pipeline 0.85 coverage → sim → slabs → vector
output 0.82 2D vector · paths · gradients · blend modes
determinism 0.80 seeded per mark · reproducible, not physical
inspect 0.72 dev-view sheets · runtime fire report
legibility 0.35 reservation pass · TBD
api 0.20 TBD
bench 0.15 TBD