On Monday, 15 December 2025 22:07:26 GMT Dave Kemper wrote: > I noticed recently that, compared to previous groff releases up to and > including 1.23, the latest groff built from git has less informative -a > output in some instances. Consider this two-line input file. > > .fschar S \[trademark] \N'228' > Enjoy a glass of Fluerma\fS\[trademark]\fP tonight. > > Running this through "groff -a" has produced the below output from (at > least) groff 1.19.2 through groff 1.23: > > <beginning of page> > Enjoy a glass of Fluerma<S trademark> tonight. > > This output has now changed. The fact that it HAS changed, I'm OK with: -a > is billed as approximate output and subject to change. But the nature of > its change makes it, I think, less useful. The -a output under the latest > groff code is: > > <beginning of page> > Enjoy a glass of Fluerma<---> tonight. > > This is straightforwardly enough less useful that I opened what I thought > would be an uncontroversial bug report about it ( > http://savannah.gnu.org/bugs/?67817). In particular, if a document has 100 > such character definitions, they ALL get transformed into "<--->" rather > than each into a unique string as they used to. > > Branden has argued in favor of the change, in a way I won't attempt to > summarize for fear of misrepresenting his position; you can read his > response at that URL, or wait for his inevitable reply here. > > In any case, I am following his suggestion of writing here to solicit more > input about this change. Is the new output better? Is the old better? > Can you think of another representation that would be better than either of > those options? (keeping in mind that -a output intentionally follows no > specification and need not maintain any particular compatibility with other > roffs) > > Thanks for your input.
Hi Dave, I had difficulty understanding Branden's response, particularly the claim "<--->" is "meaningful" (by claiming it is not meaningless). The output from '-a' previously was a diagnostic tool concerning the users input, rather than what groff will send to the output driver. This is another example of the change:- [derij@pip build (master)]$ printf ".char \[coproduct] \[mi]\n\[coproduct]"| groff -a <beginning of page> <coproduct> [derij@pip build (master)]$ printf ".char \[coproduct] \[mi]\n\[coproduct]"| test-groff -a <beginning of page> <mi> The first example (1.23.0) is showing the input and the second (git HEAD) shows what would be sent to the output driver. Given this change in behaviour, Branden's claim that "trademark" (in Dave's original example) has no sense to an output driver is correct (so has to be shown as '---'), but -a has always reported the input side, before groff converts to the groff font glyph name. I don't know whether reverting to reporting the input is insurmountably difficult, but Branden's example of using .pline to discover the input shows that the information is certainly still held and could be output within the "<> rather than "---". Cheers Deri
