From 93f814360076ccf28d33c9cb909fca7200ba4a7d Mon Sep 17 00:00:00 2001 From: g-branden-robinson <91402745+g-branden-robinson@users.noreply.github.com> Date: Fri, 12 Aug 2022 22:37:28 -0500 Subject: [PATCH] troff: support `\~` as an alias for `\ ` (#567) In groff, Heirloom Doctools troff, and neatroff, the `\~` escape sequence produces an adjustable (paddable) but unbreakable space. mandoc, which does not perform adjustment or render to typesetters, supports the escape sequence as a synonym for `\ `, the same as `\0`. This extension is of long pedigree: groff has supported it for at least 30 years, Heirloom for 17, mandoc for 13, and neatroff for 6. Do the same as mandoc to prevent mis-rendering of documents using this escape sequence. Heirloom Doctools troff, a descendant of Documenter's Workbench troff, would be a good place to look for a compatible implementation of the adjustable semantics for this sequence. --- src/cmd/troff/n1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cmd/troff/n1.c b/src/cmd/troff/n1.c index adda8c4b..27496b2f 100644 --- a/src/cmd/troff/n1.c +++ b/src/cmd/troff/n1.c @@ -512,6 +512,8 @@ g0: case '\n': /* concealed newline */ numtabp[CD].val++; goto g0; + case '~': /* Heirloom/groff/neatroff: unbreakable space */ + ; /* fall through */ case ' ': /* unpaddable space */ i = UNPAD; goto gx;