Support two-character font names (BI, CW, CR, CB, CI)
authorschwarze <schwarze@openbsd.org>
Tue, 10 Aug 2021 12:36:42 +0000 (12:36 +0000)
committerschwarze <schwarze@openbsd.org>
Tue, 10 Aug 2021 12:36:42 +0000 (12:36 +0000)
commit7d063611b969f452817ccde2096cc19404ce4413
tree453220bf36dcff10addeceb44e98f71bfeddcd53
parent6e5cb0241752c1bba49de3da8b24bb9f14d02f47
Support two-character font names (BI, CW, CR, CB, CI)
in the tbl(7) layout font modifier.

Get rid of the TBL_CELL_BOLD and TBL_CELL_ITALIC flags and use
the usual ESCAPE_FONT* enum mandoc_esc members from mandoc.h instead,
which simplifies and unifies some code.

While here, also support CB and CI in roff(7) \f escape sequences
and in roff(7) .ft requests for all output modes.  Using those is
certainly not recommended because portability is limited even with
groff, but supporting them makes some existing third-party manual
pages look better, in particular in HTML output mode.

Bug-compatible with groff as far as i'm aware, except that i consider
font names starting with the '\n' (ASCII 0x0a line feed) character
so insane that i decided to not support them.

Missing feature reported by nabijaczleweli dot xyz in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992002.
I used none of the code from the initial patch submitted by
nabijaczleweli, but some of their ideas.
Final patch tested by them, too.
26 files changed:
regress/usr.bin/mandoc/roff/esc/f.out_html
regress/usr.bin/mandoc/roff/ft/badargs.out_html
regress/usr.bin/mandoc/tbl/mod/Makefile
regress/usr.bin/mandoc/tbl/mod/badfont.in
regress/usr.bin/mandoc/tbl/mod/badfont.out_ascii
regress/usr.bin/mandoc/tbl/mod/badfont.out_lint
regress/usr.bin/mandoc/tbl/mod/font-eol.in [new file with mode: 0644]
regress/usr.bin/mandoc/tbl/mod/font-eol.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/tbl/mod/font-eol.out_lint [new file with mode: 0644]
regress/usr.bin/mandoc/tbl/mod/font.out_lint
share/man/man7/tbl.7
usr.bin/mandoc/html.c
usr.bin/mandoc/man_validate.c
usr.bin/mandoc/mandoc.c
usr.bin/mandoc/mandoc.h
usr.bin/mandoc/mdoc_markdown.c
usr.bin/mandoc/out.c
usr.bin/mandoc/roff.c
usr.bin/mandoc/roff_term.c
usr.bin/mandoc/tbl.h
usr.bin/mandoc/tbl_data.c
usr.bin/mandoc/tbl_html.c
usr.bin/mandoc/tbl_layout.c
usr.bin/mandoc/tbl_term.c
usr.bin/mandoc/term.c
usr.bin/mandoc/tree.c