In HTML output, correctly render .Bd -unfilled in proportionally-spaced
authorschwarze <schwarze@openbsd.org>
Tue, 30 Mar 2021 19:23:50 +0000 (19:23 +0000)
committerschwarze <schwarze@openbsd.org>
Tue, 30 Mar 2021 19:23:50 +0000 (19:23 +0000)
font, rather than with the monospace font appropriate for .Bd -literal.
This fixes a minibug reported by anton@.

Implemented by no longer relying on the typical browser default of
"pre { font-family: monospace }" but instead letting <pre> elements
inherit the font family from their parent, then adding an explicit CSS .Li
class only for those displays where the manual page author requested it
by using the -literal option on the .Bd macro.

regress/usr.bin/mandoc/mdoc/Bd/paragraph.out_html
usr.bin/mandoc/mandoc.css
usr.bin/mandoc/mdoc_html.c

index 22355ed..df5fc6d 100644 (file)
@@ -7,7 +7,7 @@
 </div>
 back to normal
 <p class="Pp">another paragraph</p>
-<div class="Bd Pp" id="unfilled">
+<div class="Bd Pp Li" id="unfilled">
 <pre><a class="permalink" href="#unfilled">unfilled</a> literal
 display
 <mark id="upara"></mark>
index ca7f260..2b19ba6 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: mandoc.css,v 1.34 2020/10/30 21:31:19 schwarze Exp $ */
+/* $OpenBSD: mandoc.css,v 1.35 2021/03/30 19:23:50 schwarze Exp $ */
 /*
  * Standard style sheet for mandoc(1) -Thtml and man.cgi(8).
  *
@@ -31,6 +31,7 @@ td {          vertical-align: top;
 ul, ol, dl {   margin-top: 0em;
                margin-bottom: 0em; }
 li, dt {       margin-top: 1em; }
+pre {          font-family: inherit; }
 
 .permalink {   border-bottom: thin dotted;
                color: inherit;
index b5442df..e6dbfbe 100644 (file)
@@ -1,6 +1,6 @@
-/* $OpenBSD: mdoc_html.c,v 1.216 2020/10/16 17:22:39 schwarze Exp $ */
+/* $OpenBSD: mdoc_html.c,v 1.217 2021/03/30 19:23:50 schwarze Exp $ */
 /*
- * Copyright (c) 2014-2020 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2014-2021 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -928,7 +928,7 @@ mdoc_sx_pre(MDOC_ARGS)
 static int
 mdoc_bd_pre(MDOC_ARGS)
 {
-       char                     buf[16];
+       char                     buf[20];
        struct roff_node        *nn;
        int                      comp;
 
@@ -965,6 +965,9 @@ mdoc_bd_pre(MDOC_ARGS)
            strcmp(n->norm->Bd.offs, "left") != 0)
                (void)strlcat(buf, " Bd-indent", sizeof(buf));
 
+       if (n->norm->Bd.type == DISP_literal)
+               (void)strlcat(buf, " Li", sizeof(buf));
+
        print_otag_id(h, TAG_DIV, buf, n);
        return 1;
 }