Distinguish between escape sequences that produce no output
authorschwarze <schwarze@openbsd.org>
Mon, 15 Aug 2022 17:59:00 +0000 (17:59 +0000)
committerschwarze <schwarze@openbsd.org>
Mon, 15 Aug 2022 17:59:00 +0000 (17:59 +0000)
commite0e72893ced613cc356b1b6fcdde622512c2ab14
tree931f6f43d0dbf724037ae4463349bfb127f22494
parentd33b967b9e1f6ce7ec58dfb7cd56f8ba2e85df53
Distinguish between escape sequences that produce no output
whatsoever (for example \fR) and escape sequences that produce
invisible zero-width output (for example \&).  No, i'm not joking,
groff does make that distinction, and it has consequences in some
situations, for example for vertical spacing in no-fill mode.
Heirloom and Plan 9 behaviour is subtly different, but in case of
doubt, we want to follow groff.

While this fixes the behaviour for the majority of escape sequences,
in particular for those most likely to occur in practice, it is not
perfect yet because some of the more exotic ESCAPE_IGNORE sequences
are actually of the "no output whatsoever" type but treated
as "invisible zero-width" for now.  With the new ASCII_NBRZW mechanism
in place, switching them over one by one when the need arises will
no longer be very difficult.
regress/usr.bin/mandoc/mdoc/Bd/blank.in
regress/usr.bin/mandoc/mdoc/Bd/blank.out_ascii
regress/usr.bin/mandoc/mdoc/Bd/blank.out_lint
regress/usr.bin/mandoc/mdoc/Bd/blank.out_markdown
usr.bin/mandoc/mandoc.h
usr.bin/mandoc/term.c
usr.bin/mandoc/term_ascii.c