[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Groff] bullets render as question marks
From: |
Ingo Schwarze |
Subject: |
Re: [Groff] bullets render as question marks |
Date: |
Mon, 30 Nov 2015 23:40:22 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
Hi Aaron,
Aaron Davies wrote on Mon, Nov 30, 2015 at 03:04:20PM -0500:
> On Nov 30, 2015, at 12:52 PM, Ingo Schwarze <address@hidden> wrote:
>> Aaron Davies wrote on Mon, Nov 30, 2015 at 12:38:13PM -0500:
>>> \(bu bullets in man pages are rendering as question marks under
>>> default settings for me
>> * Which version of groff are you running?
> on RHEL 6.7, 1.18.1.4; on RHEL 5.11, 1.18.1.1
Oh wow. Those are extremely old versions of groff.
I haven't seen versions that old in production since 2009.
Groff 1.19 came out in 2004, so what you are running is more than
a decade out of date.
> $ locale
> LANG=en_US.UTF-8
> LC_ALL=C
> LC_CTYPE="C"
Hmm, i missed that GNU nroff(1) doesn't call setlocale(3), but
calls locale(1) in a different way, and, failing that, inspects
the environment directly. Can you send the output of the following,
too, to figure out which output device is actually running?
$ locale charmap
$ env | grep -e LC_ALL -e LC_CTYPE
I suspect that you are running in -Tascii mode, but i'm not 100%
sure yet, it could still be -Tutf8.
> $ echo '\(bu' | nroff | hexdump -C
> 00000000 3f 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a |?...............|
So, your problem is probably not related to man(1) or to the terminal,
but groff is actually producing wrong output.
For -Tascii output, in modern groff, the \(bu character
is defined by this statement in tmac/tty.tmac:
.fchar \[bu] \z+o
In the source code repository, that line is present since 2002-03-24.
The file is usually loaded by these lines in troffrc:
.do ds troffrc!ascii tty.tmac
.do if d troffrc!\*[.T] \
. do mso \*[troffrc!\*[.T]]
So, can you please look at your file tmac/troffrc (usually located
in /usr/local/share/groff/<version>/ or a similar place) whether
it indeed includes tty.tmac, and can you look into your tty.tmac
(in the same directory) whether and how it defines \[bu]?
You can also try specifying the device explicitly:
$ echo '\(bu' | groff -Tascii | hexdump -C
$ echo '\(bu' | groff -mtty -Tascii | hexdump -C
$ echo '\(bu' | groff -Tutf8 | hexdump -C
$ echo '\(bu' | groff -mtty -Tutf8 | hexdump -C
Which output do those commands produce?
For UTF-8 tty output, in modern groff, \(bu is defined by the
following line in src/libs/libgroff/glyphuni.cpp:
{ "bu", "2022" },
That line is unchanged in the source code repo since 2002-11-03.
So the UTF-8 modes should work in any case, even without -mtty,
even with your ancient version of groff.
> on RHEL 6.7:
>
> $ grep ^NROFF /etc/man.config
> NROFF /usr/bin/nroff -c -mandoc 2>/dev/null
That looks reasonable.
> on RHEL 5.11:
>
> $ grep ^NROFF /etc/man.config
> NROFF /usr/bin/nroff -c --legacy NROFF_OLD_CHARSET -mandoc 2>/dev/null
I don't know what "--legacy NROFF_OLD_CHARSET" is supposed to mean,
but since you see the problem on RHEL 6.7 as well, it's doesn't seem
likely to be the cause of the problem.
Yours,
Ingo