Bug 246656

Summary: Unicode asterisks in ctime(3) may not render correctly
Product: Documentation Reporter: Alexey Dokuchaev <danfe>
Component: Manual PagesAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Some People CC: cem, doc
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   

Description Alexey Dokuchaev freebsd_committer freebsd_triage 2020-05-22 09:24:00 UTC
When tm structure is described in the ctime(3), it's supposed to be rendered as C code, with asterisks for char pointer (tm_zone) and comments (/* ... */).  However, they may not be displayed correctly, depending if the user's font has the glyph for U+2217 (∗) ASTERISK OPERATOR (hex e2 88 97).  For example, Luxi, DroidSans, DejaVuSans monospaced fonts have it, but e.g. Consolas does not (it renders nothing).  With traditional "fixed" font, dotted square is drawn.  On the FreeBSD virtual console with default settings, a square is drawn.

Would it be possible to use the simple ASCII asterisks instead, like everywhere else in that page?  As I read in the commit history of this file, although it is under contrib, it has diverged sufficiently from upstream (including a full whitespace commit and large portions rewritten), so perhaps we can also replace these Unicode asterisks with ASCII ones so it renders correctly everywhere.
Comment 1 Conrad Meyer freebsd_committer freebsd_triage 2020-05-22 15:23:47 UTC
It also seems odd to me that mdoc is rendering '\(**' as unicode asterisks at all.  (Well, I am surprised Unicode has a 2nd asterisk character as well; it seems useless.)
Comment 2 Conrad Meyer freebsd_committer freebsd_triage 2020-05-22 15:27:18 UTC
Hmm, roff(7):

   Special Characters
     Special characters are used to encode special glyphs ...
     Sequences begin with the escape character ‘\’ followed by
     either an open-parenthesis ‘(’ for two-character sequences...

     Examples:
           \(em    Two-letter em dash escape.
...
     \(cc    Special Characters with two-letter names, see mandoc_char(7).


I guess that explains \(**.

mandoc_char(7):
     Mathematical:
           Input            Rendered    Description
...
           \(**             ∗           asterisk

Ok, so \(** is just wrong here.  C comments are not some mathematical formula.
Comment 3 commit-hook freebsd_committer freebsd_triage 2020-05-22 15:30:51 UTC
A commit references this bug:

Author: cem
Date: Fri May 22 15:30:14 UTC 2020
New revision: 361385
URL: https://svnweb.freebsd.org/changeset/base/361385

Log:
  ctime.3: Use ASCII asterisks for C, not special unicode math glyphs

  PR:		246656
  Reported by:	danfe

Changes:
  head/contrib/tzcode/stdtime/ctime.3