Hi Bjarni,

On Tue Nov 25, 2025 at 12:05 AM CET, Bjarni Ingi Gislason wrote:
> On Sun, Nov 23, 2025 at 08:12:32PM +0000, Bjarni Ingi Gislason wrote:
> > On Fri, Nov 21, 2025 at 08:28:49PM +0100, onf wrote:
[...]
> > > Given the input,
> > >   .de x
> > >   . br
> > >   ..
> > >   .wh 2v x
> > >   Lorem
> > >   .br
> > >   .sv 1v
> > >   ipsum
> > >   .br
> > >   dolor
> > > 
> > > groff gives the output
> > >   Lorem
> > >   ipsum
> > >   dolor
> > > 
> > > whereas both Heirloom troff and Plan 9 troff give
> > >   Lorem
> > > 
> > >   ipsum
> > >   dolor
[...]
> >   The bug in the 'sv' request is in the heirloom's and plan9's version.
> > 
> >   A text baseline lands exactly on the next baseline after a 1v long jump.
> > 
> >   See "Troff User's Manual" (https://troff.org/54.pdf).
>
>   My explanation is wrong.
>
>   The difference between "groff" and the heirloom's and plan9's versions is
> the position of the trap.
>
>   Groff sets the vertical position at 24000
>   Heirloom sets it at                 24001
>   Plan9 sets it at                    241 (lower resolution)

It's not, they just seem to be calculating that based on register nl,
which is -1 at startup:

  $ 9 troff << 'EOF' >/dev/null
  .de x
  . br
  ..
  .wh 2v x
  .tm \n(nl \n(.t
  EOF
  -1 241

  $ 9 troff << 'EOF' >/dev/null
  .de x
  . br
  ..
  .wh 2v x
  .br
  .tm \n(nl \n(.t
  EOF
  0 240

Cheers,
onf

Reply via email to