In conversation

Set, Not Styled

Pilcrow is made by one person. The questions here are the house’s; the answers are Chanikul’s,taken from the decisions he wrote down while making it, and set — like everything on this site —before the page was sent.

Pilcrow: In one sentence, what is this?

Chanikul: A static site generator that does the typesetting itself, at build time. Markdown in; HTML outwith every line of body prose already broken; no JavaScript at the reader.

Pilcrow: Why does the line break matter so much? Most people would say the typeface is the decision.

Chanikul: Most blogs read like Word documents that were published by accident — wrong typeface,wrong column width, wrong spacing, and wrapped by whatever the browser felt like at render time.You can fix the first three with a stylesheet. You cannot fix the fourth. A stylesheet can set a font and ameasure; it cannot say where a line ends. That decision has always been left to the reader’s browser, atthe moment they open the page. Pilcrow makes it once, before the page is sent, the way a compositordid.

Pilcrow: Why Fraunces?

Chanikul: Because I can say why in one sentence. It has true italics, real small caps, a genuine 500weight for the drop cap, and an optical size that changes character at display sizes. Newsreader andSource Serif 4 were the alternates. The rule I hold every decision to is that it has to be defensible in a sen-tence; if the honest answer is “it looked nice”, I go back and reconsider.

Pilcrow: And sixty-five characters?

Chanikul: Bringhurst gives the range as forty-five to seventy-five. Sixty-five sits inside it. One measure,held everywhere, rather than a slider. Editorial typography is a constraint exercise — you pick one ofeverything and make it right, and then you stop adding knobs.

Pilcrow: That is why there is no editor, no themes, no settings panel on a post.

Chanikul: Restraint is a feature. Every option you add is a decision you have handed back to the writer,who did not want it. The writer wants to write. The page should already be set.

Pilcrow: The line-breaking itself is not yours.

Chanikul: No. It is pretext, Cheng Lou’s library. It solves the hard problem nobody else had solved —line breaking that is correct across scripts and browsers, fast, with no reflow, and computedindependently of where it renders. Pilcrow is the editorial layer on top: the drop cap, the sidenotes, thehyphenation, the orphan guard. I use pretext as a dependency and send fixes upstream rather thanforking it. When the orphan guard found a case pretext handled badly, I filed the issue with a repro andhe fixed it at the root in a day. That is the arrangement working.

Pilcrow: What about text that was not written by a person?

Chanikul: The engine does not care who wrote the words. It cares that the page they sit on reads asthough someone decided where things go. What I will not do is design Pilcrow itself by generation. Thepitch and the product have to match: use the machines for engineering, and keep the taste by hand.

Pilcrow: What should a reader notice?

Chanikul: Nothing, ideally. They should notice that they kept reading. The measure, the breaks, theinitial, the notes in the margin — none of it should announce itself. What survives a two-second glance isthat the page was arranged for them. That is the whole signal, and it is the cheapest one a writer cansend.