Hi Russ, At 2025-08-24T13:08:52-0700, Russ Allbery wrote: > > Notice how two spaces shrink to one after the rendered `no id!`. > > Sorry, I need a bit more context here for why the *roff input needs to > change.
Sure. > That section of output is inside a ".nf" block. Why is groff messing > with the spacing of output inside .nf? I would have naively assumed > that it would be a bug in the *roff processor to make changes to > whitespace inside ".nf". I seem to remember making the same assumption when I first started contributing to groff development. It might help to remember that "no-fill" mode, as it has historically been called, is not a "literal" mode. The troff in Sixth Edition Unix (1975) actually had one of those; its request was named `li`. Seventh Edition Unix (1979) de-documented but retained it. It subsequently rotted off of AT&T-descended troffs and was not implemented by groff. "Filling" means that the formatter attempts to "fill" an output line with as many words as will fit on it. That is _all_ that it means. It is a distinct process from inter-sentence space supplementation. Since getting involved with groff development, I've tried to flag this fact more prominently in our documentation. https://www.gnu.org/software/groff/manual/groff.html.node/Text.html roff input files contain text interspersed with instructions to control the formatter. Even in the absence of such instructions, GNU troff still processes its input in several ways, by filling, hyphenating, breaking, and adjusting it, and supplementing it with inter-sentence space. groff_man_style(7) [recently]: Fundamental concepts groff is a programming system for typesetting: we thus often use the verb “to set” in the sense “to typeset”. The formatter troff(1) collects words from the input and fills output lines with as many as can fit. Words are separated by spaces and newlines. A transition to a new output line is called a break. Breaks can occur at explicit hyphens, at \% or \: escape sequences (see subsection “Portability” below), or at predetermined locations in a word if automatic hyphenation is enabled (see the -rHY option in section “Options” below). An output line may be supplemented with inter‐sentence space, then potentially adjusted with more space to a consistent length (see the -dAD option). roff(7) details these processes. The formatter prepares output for terminals or for more capable typesetters that can change the type size and font family. If I can think of a way to illustrate Seventh Edition Unix perceptibly applying inter-sentence space to non-filled text, I'll fire up SIMH and supply one. You don't have to change anything about podlators regarding this issue, of course; you can regard it as a bug in all _groff_ releases to date and, if we implement the change proposed in this thread, it will be one that groff 1.24 fixes. Maybe not at the formatter level where you expect, but one at which POD documentation will experience the remedy nevertheless. Regards, Branden
signature.asc
Description: PGP signature