Hi Steve, At 2023-06-08T14:29:04-0400, Steve Izma wrote: > I haven't seen any responses to this yet, but it seems pretty > important to me.
Thanks for following up on this. How has this never bitten anyone? > As far as I can tell, the height of a diversion is only calculated by > \n[.v] values. If spacing is reversed within the diversion and the end > of the diversion occurs before the high-water mark in the diversion, > \n[dn] seems to contain only the difference between the vertical > starting point of the diversion and the vertical position of the last > output line. > > Nothing I tried with either \D commands or even \H (to artificially > increase the height of the current font) made a difference to the > value of \n[dn]; it only registered values in terms of \n[.v]. [...] > .sp 1i > Hello, world. > .sp > Pardon me a moment while I create a diversion. > .br > .di DD > ' \" \D'c 1i' > .nf > \H'72'This is a test.\H'0' > Line 2 of this test. > .sp -2v > Line 3 of this test. > .br > .di > .fi > Okay, I'm back. > .sp > Now, let's have a look at that diversion; > it's \n(dn tall by \n(dl wide. \" 12000, 72000 in PostScript > .sp 0.5i-0.5v > .DD > This line starts after the output of the diversion. > .sp 0.5i > All done. [...] > Note the .sp -2v, which caused the diversion to end above the > high-water mark and resulted in \n[dn] registering only 1 line height. Maybe we should warn about this; see below. > *But* the ending of the diversion seemed to swallow the EOL of the > diversion's last output line, or the .br, or something. As a result, > the first line after the diversion acts as if it's a continuation of > the input to the diversion (see attached PS file). If I add a .br > immediately after the .DD, I get the expected results, but that seems > unnecessary and unpredictable to me, almost as if a .chop got silently > applied by .di There might be a confounding factor. Note the part about diversions. 5.11 Manipulating Spacing ========================= A break causes the formatter to update the vertical drawing position at which the new text baseline is aligned. You can alter this location. -- Request: .sp [distance] Break and move the next text baseline down by DISTANCE, or until springing a page location trap.(1) (*note Manipulating Spacing-Footnote-1::) If invoked with the no-break control character, 'sp' moves the pending output line's text baseline by DISTANCE. A negative DISTANCE will not reduce the position of the text baseline below zero. Inside a diversion, any DISTANCE argument is ignored. The default scaling unit is 'v'. If DISTANCE is not specified, '1v' is assumed. But I'll bet that's only an annoying wrinkle, and diversion height still does not reckon with font height manipulation or drawing commands at all. Regards, Branden
signature.asc
Description: PGP signature