我发现 groff 使用不同的方式来指示utf8
输出格式的粗体文本。
在 FreeBSD 14 上,groff 为终端发出转义码 (ESC, [1m
):
$ printf ".Dd today\n.Sh NAME\n" | groff -mandoc -Tutf8 | od -c
0000000 \n 033 [ 1 m N A M E 033 [ 0 m \n
[...]
在 Linux (debian Bookworm) 上使用退格键和加粗键:
$ printf ".Dd today\n.Sh NAME\n" | groff -mandoc -Tutf8 | od -c
[...]
0000120 N \b N A \b A M \b M E \b E \n
为什么会这样?有没有办法让 Linux groff 也对终端使用 ESC 代码?我已从上到下阅读了 groff 手册页,但找不到更改此行为的选项。
(我需要对结果进行后处理,ESC 代码使这变得更加容易和灵活。)
编辑:解决方案(感谢@egmont)是阅读 Debian 的 grotty(1) 手册,然后使用以下命令强制 SGR 行为
printf ".Dd today\n.Sh NAME\n" | GROFF_SGR=y groff -mandoc -Tutf8