groff-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[groff] 126/127: ChangeLog{,.123}: Split off groff 1.23 history.


From: G. Branden Robinson
Subject: [groff] 126/127: ChangeLog{,.123}: Split off groff 1.23 history.
Date: Mon, 10 Jul 2023 04:31:10 -0400 (EDT)

gbranden pushed a commit to branch master
in repository groff.

commit ccceef77af0aee5d72feca26d3e64a921f5741cb
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Mon Jul 10 03:14:52 2023 -0500

    ChangeLog{,.123}: Split off groff 1.23 history.
---
 ChangeLog                  | 18647 +------------------------------------------
 ChangeLog => ChangeLog.123 |  1183 +--
 2 files changed, 3 insertions(+), 19827 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f866d99a4..4fe12d080 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1180,18658 +1180,13 @@
 
        Fixes <https://savannah.gnu.org/bugs/?64037>.
 
-2023-06-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Offer advice to users of PDF who want a table of contents
-       at the front of the document.
-
-       * doc/groff.texi (ms Document Structure): Move mention of
-       pdfjam(1) from here...
-       (ms TOC): ...to here, and identify alternatives, including
-       gropdf(1)'s `pdfswitchtopage` macro.
-
-       * doc/ms.ms (General structure of an ms document):
-       (Creating a table of contents): Similar.
-
-       Fixes <https://savannah.gnu.org/bugs/?64278>.  Thanks to Michał
-       Kruszewski for the report.
-
-2023-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Migrate terminology to "scaling unit".
-
-       ...from "scaling indicator".
-
-       Fixes <https://savannah.gnu.org/bugs/?60957>.  Thanks to Ingo
-       Schwarze for the discussion.
-
-2023-05-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Revise discussion of fonts.
-
-       * doc/groff.texi:
-       - Rename node/section "Fonts and Symbols" to "Using Fonts".  Add
-         giant new introduction, properly establishing terminology.
-       - Rename node/section "Changing Fonts" to "Selecting Fonts".
-         Shift location of `.fn` and `.sty` register documentation.
-         Rewrite presentation of `ft` and `\f`.  Discuss typeface
-         selection by mounting position and font (or style) name
-         together; since arguments to these formatter instructions are
-         always interpreted as mounting positions first, it doesn't
-         make much sense to me to present them separately, and the new
-         introduction provides the necessary background.  Tighten
-         example.  Document that current and previous font selections
-         are environment properties.
-       - Add several concept index entries.
-       - Do more migration from "symbol" and "glyph" names to "special
-         character" names.
-
-       * man/groff.7 (Using fonts): Introduce new section, synced with
-       the renamed node from our Texinfo manual above.
-
-       Fixes <https://savannah.gnu.org/bugs/?62973>.
-
-2023-05-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Revise "Page Layout" material.
-
-       * doc/groff.texi:
-       - Recast generally.
-       - Describe behavior of `pl` in more detail.
-       - Migrate terminology from "scaling indicator" to "scaling
-         unit".
-       - Stop discussing page margins in the context of the `pl`
-         request.
-       - Move concept index entries regarding margins from here to
-         "Traps".
-       - Move discussion of `pn` request to precede `tl` request.
-       - Add concept index entries.
-       - Recast description of `tl` request.  Migrate terminology from
-         "justification" to "alignment".
-       - Recast description of `lt` request.  Describe behavior in more
-         detail.
-       - Recast description of `pc` request.
-       - Add example of `lt` and `tl` usage.  Add forward reference to
-         "Traps", mentioning page header and footer traps.
-
-       Fixes <https://savannah.gnu.org/bugs/?55124>.  Thanks to Dave
-       Kemper for the report.
-
-2023-05-22  Dave Kemper <saint.snit@gmail.com>
-
-       [docs]: Correct minor punctuation, grammar, and spelling issues.
-
-       Also remove a couple instances of unnecessarily telling the
-       reader to note something.
-
-       * doc/groff.texi:
-       * man/groff.7.man:
-       * man/groff_char.7.man:
-       * man/groff_diff.7.man:
-       * man/roff.7.man:
-       * src/roff/nroff/nroff.1.man: Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?64230>.  [I threw in a few
-       more fixes.  --GBR]
-
-2023-04-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Attempt to further clarify end-of-sentence detection.
-
-       * doc/groff.texi (Sentences):
-       * man/roff.7 (Concepts): Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?64091>.  Thanks to Ingo
-       Schwarze and Dave Kemper for the report.
-
-2023-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Minimally document `tag`, `taga` requests.
-
-       * doc/groff.texi (Postprocessor Access):
-       * man/groff.7 (Request short reference): Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?62695>.
-
-2023-04-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Fix typos.
-
-       * doc/groff.texi (ms basic information):
-       * doc/ms.ms (Basic information): Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?64032>.  Thanks to an
-       anonymous reporter.
-
-2023-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Operators in Conditionals):
-       * man/groff.7.in (Conditional expressions): Clarify how the
-       output comparison operator is recognized.
-
-       Fixes <https://savannah.gnu.org/bugs/?63812>.  Thanks to John
-       Gardner for the report.
-
-2023-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Use a better type for symbol hashes.
-
-       * bootstrap.conf: Add "stdint" module to ensure that the
-       `uintptr_t` type is available.
-       * src/include/symbol.h: Include <stdint.h> for `uintptr_t`.
-       (class symbol):
-       (symbol::hash): Change return type from `unsigned long`, which
-       causes build failures on 64-bit MinGW, to `uintptr_t`.
-       (symbol::hash): Use a C++ type cast, not a C-style one.
-
-       Thanks to Bruno Haible for reporting the build failure in the
-       64-bit MinGW environment, and for suggesting a remedy.
-
-2023-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [groff]: Revise a test to be more revealing.
-
-       * src/roff/groff/tests/initialization_is_quiet.sh: Stop using
-       "set -e".  Instead use `fail` variable and `wail` function (and
-       lowercase names for our internal variables) like many of our
-       other tests.  If the "unset" shell built-in fails, skip the
-       test (prompted by /usr/xpg4/bin/sh on Solaris).  Attempt every
-       groff locale, with and without compatibility mode initially
-       enabled, instead of stopping at the first failure.  Report
-       standard error and standard output content separately.  Use
-       groff's `-a` flag to prepare the standard output, for
-       readability.
-       * PROBLEMS: Document that this test might be skipped rather than
-       failing on Solaris.  (What actually happens depends on which
-       shell you run it with, and we advise a variety of approaches.)
-
-       Thanks to Bruno Haible for feedback regarding mysterious
-       failures of this test on GNU/Hurd and NetBSD systems.
-
-2023-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * bootstrap.conf (gnulib_modules): Add "stdbool-c99" per
-       recommendation from Bruno Haible.
-
-       Fixes build problem on Solaris using Sun compiler.
-
-2023-03-06  Bruno Haible <bruno@clisp.org>
-
-       * Makefile.am (AR): Remove hardcoded value. Let Automake use the
-       value from config.status.
-
-       {Fixes build problem on 64-bit AIX.  Problem appears to date
-       back to commit 5fec19d453, 2014-08-15. --GBR}
-
-2023-03-06  Bruno Haible <bruno@clisp.org>
-
-       * arch/misc/misc.am (shdeps.sed): Rename target from this...
-       ($(SH_DEPS_SED_SCRIPT)): ...to this, to work better with make(1)
-       on FreeBSD, NetBSD, and AIX.
-
-2023-03-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Discard now-unneeded Autoconf macro and variables.
-
-       * configure.ac: Stop calling `GROFF_POPPLER`.  Stop populating
-       the Automake conditional `HAVE_PDFTOOLS`.  Eliminate chatter
-       about their availability in the configuration report.
-       * m4/groff.m4 (GROFF_POPPLER): Delete.
-
-2023-03-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS_NOTICE): Adapt wording of notice
-       to presence and identity of Ghostscript interpreter command.
-       Clarify that it is gropdf(1) specifically that traverses the
-       Ghostscript search path reported by its "-h" option.
-
-       Continues <https://savannah.gnu.org/bugs/?63808>.  Thanks to
-       Deri James for the ongoing discussion.
-
-2023-02-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [devpdf]: Revise tests.
-
-       * font/devpdf/tests/check-default-foundry.sh.in: Test only the
-       base 14 fonts of the PDF standard unconditionally.  Test the
-       remainder from the set of 35 commonly distributed only if a
-       Ghostscript interpreter was detected at configuration time,
-       because the latter fonts _must_ be embedded in PDF documents.
-       If they're not present, skip the test rather than failing it.
-       * font/devpdf/tests/check-urw-foundry.sh.in: Skip test if no URW
-       fonts detected at configuration time, rather than failing it.
-       * m4/groff.m4 (GROFF_GROPDF_PROGRAM_NOTICE)
-       (GROFF_URW_FONTS_NOTICE): Drop warnings of expected test
-       failures.  The tests no longer fail in the anticipated
-       circumstances.
-
-2023-02-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [devpdf]: Generate tests from template files, so we can populate
-       the test scripts with information determined at configuration.
-       The default foundry test depends on $GHOSTSCRIPT, and the URW
-       foundry test on $urwfontsdir.
-
-       * font/devpdf/tests/check-default-foundry.sh:
-       * font/devpdf/tests/check-urw-foundry.sh: Rename these...
-       * font/devpdf/tests/check-default-foundry.sh.in:
-       * font/devpdf/tests/check-urw-foundry.sh.in: ...to these.
-
-       * font/devpdf/devpdf.am (font_devpdf_default_test)
-       (font_devpdf_urw_test): New variables store names of generated
-       test scripts.
-       (font/devpdf/tests/check-default-foundry.sh):
-       (font/devpdf/tests/check-urw-foundry.sh): New targets produce
-       test scripts from corresponding .in files.
-
-2023-02-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [devpdf]: Trivially refactor.  Rename sed-substitutum [Lat.]
-       from "@GROFF_GHOSTSCRIPT_INTERPRETERS@" to "@GHOSTSCRIPT@" for
-       clarity and brevity; this is a scalar value containing the
-       Autoconf-determined name of the Ghostscript interpreter.  It is
-       not the same as the replacement that occurs in contrib/pdfmark.
-
-       * font/devpdf/devpdf.am:
-       * font/devpdf/util/BuildFoundries.pl: Do it.
-
-2023-02-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Stop scraping output of Ghostscript executable with
-       "-h" option to attempt to find URW fonts.  Fonts that ship with
-       Ghostscript are regarded as the "default" foundry, not the URW
-       foundry (though they often ultimately originate with URW fonts).
-       They are often missing Adobe Font Metric (AFM) files, so it is
-       impossible for groff to generate font description files for them
-       at build time.
-
-       * m4/groff.m4 (GROFF_URW_FONTS_CHECK): Drop `AC_REQUIRE` on
-       `GROFF_AWK_PATH`.  Drop awk-based scraping of Ghostscript "-h"
-       output.  Annotate need for sync between this list of
-       characteristic font file names and the one in BuildFoundries.
-
-       Thanks to Deri James for the ongoing discussions.
-
-2023-02-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Drop now-redundant explicit
-       `GROFF_URW_FONTS_CHECK`.  `GROFF_GROPDF_DEPENDENCIES_CHECK`
-       `AC_REQUIRE`s it as of commit ec001d2a23, 18 February.
-
-2023-02-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS_CHECK): When looking for a
-       characteristic URW font by its file name, also check for
-       "URWGothic-Book" with no file extension.  Avoids false negatives
-       in URW Type 1 font detection when using Ghostscript 9.53.3.
-       Thanks to Deri James for suggesting the test procedure that
-       uncovered this flaw.
-
-2023-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am (uninstall_groffdirs): Remove "html.mono" and
-       "html.node" directories corresponding to HTML version of our
-       Texinfo manual.
-       * doc/doc.am (uninstall-html): Uninstall HTML version of our
-       Texinfo manual more reliably.
-
-       Fixes a regression introduced by me in commit c2698aade, 6 April
-       {my claim "we're only deleting files with this command, not
-       directories" was not correct}.
-
-2023-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [doc]: Handle output formats of our Texinfo manual more
-       consistently.
-
-       * doc/doc.am (install-doc): Add dependency on (Automake
-       standard) target 'install-dvi'.
-       (maintainer-clean-local): Remove our Texinfo manual in plain
-       text format.
-       (install-data-local): Add dependency on new target
-       'install-txt'.
-       (install-txt): Install our Texinfo manual in plain text format.
-       (uninstall-local): Add dependency on new target 'uninstall-txt'.
-       (uninstall-txt): Uninstall our Texinfo manual in plain text
-       format.
-
-       Thanks to T. Kurt Bond for noticing the discrepancy.
-
-2023-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (install-pdf-local, install-html-local): Enable
-       rules to work in out-of-tree builds.
-
-2023-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (uninstall-hook): Drop dependency on
-       "uninstall_mom"; this is not the appropriate place to declare
-       it, and "uninstall_groffdirs" already depends on it in mom's
-       Automake file.
-
-2023-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Have more tests report output.
-
-       * src/roff/groff/tests/ab_works.sh:
-       * src/roff/groff/tests/handle_special_input_code_points.sh:
-       * src/roff/groff/tests/initialization_is_quiet.sh:
-       * src/roff/groff/tests/msoquiet_works.sh:
-       * src/roff/groff/tests/soquiet_works.sh:
-       * tmac/tests/an-ext_MR-works.sh:
-       * tmac/tests/an_MR-works.sh: Do it.
-
-2023-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Prevent failures when $GROFF_ENCODING is set.
-
-       * src/roff/groff/tests/ab_works.sh:
-       * src/roff/groff/tests/handle_special_input_code_points.sh:
-       * src/roff/groff/tests/initialization_is_quiet.sh:
-       * src/roff/groff/tests/msoquiet_works.sh:
-       * src/roff/groff/tests/soquiet_works.sh:
-       * tmac/tests/an-ext_MR-works.sh:
-       * tmac/tests/an_MR-works.sh:
-       * tmac/tests/an_font-remapping-does-not-affect-titles.sh: Unset
-       $GROFF_ENCODING before running test because preconv(1) confounds
-       these tests.
-
-       Thanks to Alexis for reporting this problem.
-
-2023-02-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Rename test.
-
-       * tmac/tests/s_no-excess-space-around-displays.tmac: Rename...
-       * tmac/tests/s_no-excess-space-around-displays.sh: ...to this.
-       * tmac/tmac.am (tmac_TESTS): Update.
-
-2023-02-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [gropdf]: Revise tests to run unconditionally, rather than
-       configuring them away at build time, which can cause a
-       distribution archive to be incorrectly structured.  Update
-       configuration notices when optional dependencies are absent.
-
-       * font/devpdf/devpdf.am (font_devpdf_TESTS): Remove `USE_GROPDF`
-       and `HAVE_URW_FONTS` conditionals.
-       * m4/groff.m4 (GROFF_GROPDF_PROGRAM_NOTICE):
-       (GROFF_URW_FONTS_NOTICE): Warn reader that a gropdf test failure
-       is to be expected.
-
-       Fixes <https://savannah.gnu.org/bugs/?63824> (2/2).
-
-2023-02-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Revise tests to check for requisite programs at test
-       time and skip if not found, rather than configuring them away at
-       build time, which can cause a distribution archive to be
-       incorrectly structured.
-
-       * m4/groff.m4: Annotate requisite program list since we're
-       violating the DRY principle.
-       * src/roff/groff/groff.am (groff_TESTS): Populate
-       unconditionally.
-
-       * src/roff/groff/tests/html_works_with_grn_and_eqn.sh:
-       * src/roff/groff/tests/smoke-test_html_device.sh: Check for
-       requisite programs and skip test if any are not found.
-
-       Fixes <https://savannah.gnu.org/bugs/?63824> (1/2).
-
-2023-02-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man pages]: Define page-local `MR` fallback.
-
-       [man pages]: Provide page-local fallback definition of new `MR`
-       macro.  I didn't think I was going to have to do this, but the
-       premier site on the web for viewing Linux man pages, Michael
-       Kerrisk's man7.org, has been pulling snapshots of the pages
-       themselves without upgrading the underlying macros, and so man
-       page cross references set with `MR` are getting lost in its
-       presentations.  (I acknowledge: Ingo Schwarze warned me
-       something like this could happen.)  This definition is intended
-       as a stopgap measure only.  I want to revert this after groff
-       1.23 is released and has spread to some reasonable degree.
-
-       * contrib/chem/chem.1.man:
-       * contrib/eqn2graph/eqn2graph.1.man:
-       * contrib/gdiffmk/gdiffmk.1.man:
-       * contrib/glilypond/glilypond.1.man:
-       * contrib/gperl/gperl.1.man:
-       * contrib/gpinyin/gpinyin.1.man:
-       * contrib/grap2graph/grap2graph.1.man:
-       * contrib/hdtbl/groff_hdtbl.7.man:
-       * contrib/mm/groff_mm.7.man:
-       * contrib/mm/groff_mmse.7.man:
-       * contrib/mm/mmroff.1.man:
-       * contrib/mom/groff_mom.7.man:
-       * contrib/pdfmark/pdfroff.1.man:
-       * contrib/pic2graph/pic2graph.1.man:
-       * contrib/rfc1345/groff_rfc1345.7.man:
-       * man/groff.7.man:
-       * man/groff_char.7.man:
-       * man/groff_diff.7.man:
-       * man/groff_font.5.man:
-       * man/groff_out.5.man:
-       * man/groff_tmac.5.man:
-       * man/roff.7.man:
-       * src/devices/grodvi/grodvi.1.man:
-       * src/devices/grohtml/grohtml.1.man:
-       * src/devices/grolbp/grolbp.1.man:
-       * src/devices/grolj4/grolj4.1.man:
-       * src/devices/gropdf/gropdf.1.man:
-       * src/devices/gropdf/pdfmom.1.man:
-       * src/devices/grops/grops.1.man:
-       * src/devices/grotty/grotty.1.man:
-       * src/devices/xditview/gxditview.1.man:
-       * src/preproc/eqn/eqn.1.man:
-       * src/preproc/eqn/neqn.1.man:
-       * src/preproc/grn/grn.1.man:
-       * src/preproc/pic/pic.1.man:
-       * src/preproc/preconv/preconv.1.man:
-       * src/preproc/refer/refer.1.man:
-       * src/preproc/soelim/soelim.1.man:
-       * src/preproc/tbl/tbl.1.man:
-       * src/roff/groff/groff.1.man:
-       * src/roff/nroff/nroff.1.man:
-       * src/roff/troff/troff.1.man:
-       * src/utils/addftinfo/addftinfo.1.man:
-       * src/utils/afmtodit/afmtodit.1.man:
-       * src/utils/grog/grog.1.man:
-       * src/utils/hpftodit/hpftodit.1.man:
-       * src/utils/indxbib/indxbib.1.man:
-       * src/utils/lkbib/lkbib.1.man:
-       * src/utils/lookbib/lookbib.1.man:
-       * src/utils/pfbtops/pfbtops.1.man:
-       * src/utils/tfmtodit/tfmtodit.1.man:
-       * src/utils/xtotroff/xtotroff.1.man:
-       * tmac/groff_man.7.man.in:
-       * tmac/groff_me.7.man:
-       * tmac/groff_ms.7.man:
-       * tmac/groff_trace.7.man:
-       * tmac/groff_www.7.man: Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?63825>.  Thanks greatly to
-       Alexis for identifying an issue with mandoc(1)'s handling of an
-       earlier iteration of this fallback, and to John Gardner for
-       identifying a method of detecting mandoc as the renderer at
-       formatting time.
-
-2023-02-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh: Improve
-       portability of script by using shell constructs instead of the
-       nonstandard GNU coreutils 'seq' utility.  Resolves test failure
-       on Solaris 10.
-       * HACKING: Document this problem.
-
-2023-02-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_MAKE_DEFINES_RM): Test the make(1) in the
-       environment variable $MAKE if defined, not a literal "make".
-       Required on (some) Solaris 10 configurations where traditional
-       make(1) is not installed but GNU make is installed as "gmake".
-
-2023-02-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/latin2_works.sh: Fix missing backslash in printf.
-       Solaris printf(1) was sensitive to this error; macOS and GNU
-       printf were not.  Fixes a test failure on Solaris 11.
-
-2023-02-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/regression_savannah_58153.sh: Improve
-       portability.  Avoid the unpredictability of implementations when
-       putting backslashes inside a groff-piped printf shell command
-       inside a here document inside a command substitution by changing
-       the groff escape character to something meaningless to the shell
-       and to printf ('@').  Fixes a test failure on Solaris 11.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/Foundry.in: Recognize URW foundry replacements for
-       Helvetica Bold-Oblique and Helvetica Oblique under the file
-       names "NimbusSans-BoldItalic.t1" and "NimbusSans-Italic.t1",
-       respectively.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (uninstall-pdf): Clean more fastidiously; try to
-       remove the configured `pdfdocdir` in the event it is empty, but
-       do not fail if it isn't.  (It can be a directory shared with
-       other groff components; we don't know in what order the
-       uninstall targets will serialize, but the last one run should
-       succeed.)
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Detangle "pdfroff" and "gropdf" configuration (2/2).
-
-       * m4/groff.m4: Give pdfroff its own Autoconf macros to handle
-       dependency checking, build objectives, and user notice.
-       (GROFF_PDFROFF_DEPENDENCIES_CHECK): New macro requires
-       `GROFF_AWK_PATH` and `GROFF_GHOSTSCRIPT_PATH`, determines
-       whether pdfroff can be used at build time, and (if not)
-       constructs part of message to be shown to user explaining why.
-       (GROFF_PDFROFF_PROGRAM_NOTICE): New macro requires
-       `GROFF_PDFROFF_DEPENDENCIES_CHECK` and emits message if needed.
-       (GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE): Drop mention of impact
-       on pdfroff since its dedicated notice covers this now.
-       * configure.ac: Call the new macros at appropriate times.
-       Produce a new Automake macro, `USE_PDFROFF`, to replace
-       inapposite use of `USE_GROPDF` in pdfmark.am.
-       * contrib/pdfmark/pdfmark.am: Use `USE_PDFROFF` instead of
-       `USE_GROPDF`.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Detangle "pdfroff" and "gropdf" configuration (1/2).
-
-       * m4/groff.m4 (GROFF_GROPDF_DEPENDENCIES_CHECK): Add
-       `AC_REQUIRE`ment on `GROFF_URW_FONTS_CHECK`.  Per discussion
-       with Deri James, if _either_ Ghostscript or the URW fonts are
-       avilable, gropdf will be fully functional, consequent to commit
-       d5515, 22 June.  Drop dependency on awk; it is used only at
-       configuration time (in an Autoconf macro) and since Savannah
-       #62775 was resolved (19 September), it has not been strictly
-       necessary.  (It is useful for searching more locations for URW
-       fonts, but several others are searched even if it is absent.)
-       Stop populating notice text here, instead moving it...
-       (GROFF_GROPDF_PROGRAM_NOTICE): ...here, since it no longer needs
-       to be dynamically constructed.
-
-       Continues <https://savannah.gnu.org/bugs/?63808>.  Thanks to
-       Deri James for the continued discussion.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Rename `GROFF_CHECK_GROPDF_PROGRAMS` macro to
-       `GROFF_GROPDF_DEPENDENCIES_CHECK` to generalize for greater
-       accuracy in forthcoming change.
-
-       * configure.ac:
-       * m4/groff.m4: Do it.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [gropdf]: Don't run automated tests if 'gropdf' will be
-       operating with reduced function.  If neither Ghostscript nor the
-       URW fonts are available at configuration time, there is no point
-       testing for successful build-time population of the font
-       descriptions for the default and URW foundries.
-
-       * font/devpdf/devpdf.am (font_devpdf_TESTS) [USE_GROPDF]: Run
-       "check-default-foundry" only if gropdf is fully functional.
-       (font_devpdf_TESTS) [USE_GROPDF && HAVE_URW_FONTS]: Run
-       "check-urw-foundry" only if the URW fonts were found.
-
-       Continues <https://savannah.gnu.org/bugs/?63808>.  Thanks to
-       Deri James for the continued discussion.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [gropdf]: Rename tests to more accurately characterize their
-       purpose.
-
-       * font/devpdf/tests/basic-fonts-present.sh:
-       * font/devpdf/tests/urw-fonts-present.sh: Rename these...
-       * font/devpdf/tests/check-default-foundry.sh:
-       * font/devpdf/tests/check-urw-foundry.sh: ...to these.
-       * font/devpdf/devpdf.am (font_devpdf_TESTS): Reflect rename.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [gropdf]: Revise tests to be foundry-focussed.
-
-       * font/devpdf/tests/basic-fonts-present.sh: Stop trying to match
-       font descriptions in the "devps" directory with ones in
-       "devpdf"; instead, test whether "BuildFoundries" did its job.
-       Test for font descriptions corresponding to the full 35
-       PostScript Level 2 font repertoire, plus groff's "EURO".
-       * font/devpdf/tests/urw-fonts-present.sh: Drop stale comment and
-       rename variable for better parallelism with the other test
-       above.
-
-       Continues <https://savannah.gnu.org/bugs/?63808>.  Thanks to
-       Deri James for the continued discussion.
-
-2023-02-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Tweak fix to Savannah #63768.
-
-       * tmac/an.tmac (MR): Ensure `an*url` always has a value,
-       defaulting to "format 1" (man:page(section)).  Resequence the
-       macOS URL formats to sort the contemporary one before the
-       others.
-       * tmac/man.local: Reflect resequencing of integer assignments to
-       formats.  Clarify historicity of annotations.
-
-       Continues <https://savannah.gnu.org/bugs/?63768>.  Thanks to
-       John Gardner for further discussion.
-
-2023-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Port a test to Solaris 11 sed.
-
-       * tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Put
-       newlines after opening braces in sed scripts.  macOS and GNU sed
-       tolerate their absence, but this sed does not.
-       * HACKING: Document this problem.
-
-2023-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.am (groff_TESTS) [!USE_GROHTML]: Don't
-       test the 'grohtml' driver if we know it won't work.
-
-2023-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/\
-       device_control_escapes_express_basic_latin.sh: Use printf(1),
-       which is often a shell built-in command, more consistently.
-       Double backslashes intended as literals in the format string,
-       and single-quote format strings using them.  Fixes test failure
-       seen on Solaris 11 with GNU Bash 4.4 and ksh 93u+ (2012-08-01).
-
-2023-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an_use-input-traps-correctly.sh: Explicitly test
-       `SM` and `SB` with 'ps' output device.  If one set
-       GROFF_TYPESETTER=utf8 in the test environment, these test cases
-       would fail.  Thanks to John Gardner for the report.
-
-2023-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Add Automake conditional, `HAVE_GHOSTSCRIPT`, so
-       that we can populate the list of PDF device font tests
-       dynamically.  Call new macro
-       `GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE`.  Call
-       `GROFF_GHOSTSCRIPT_VERSION_NOTICE` after it, but before
-       `GROFF_URW_FONTS_NOTICE`.
-       * m4/groff.m4 (GROFF_AWK_NOTICE): New macro produces warning if
-       no awk could be found.  This reduces gropdf functionality, but
-       so do missing URW fonts, so we report this problem separately.
-       Report the names under which we sought it, since there's a
-       configure script option for that.
-       (GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE): New macro explains
-       consequences of missing optional dependency on Ghostscript
-       program: reduced grohtml functionality, nonfunctional pdfroff.
-       Report the names under which we sought it, since there's a
-       configure script option for that.
-       (GROFF_CHECK_GROPDF_PROGRAMS): Better characterize gropdf's
-       reduced function, pointing out the ways in which it would be
-       more useful if the dependencies were met.  Also simplify the
-       computational grammar.
-       (GROFF_URW_FONTS_NOTICE): Identify 'U' as the foundry name
-       gropdf uses for the URW fonts.  Confirm continuing availability
-       of most recent URW fonts release; bump date.
-       * font/devpdf/devpdf.am: Test availability of "basic" (PDF base
-       14) fonts (plus groff's "EURO") if either Ghostscript or URW
-       fonts are available.  Test availability of URW fonts (35) only
-       if Ghostscript _and_ the URW fonts were found at configuration
-       time.
-
-       Fixes <https://savannah.gnu.org/bugs/?63808>.  Thanks to Deri
-       James for the report and extremely helpful pseudocode.
-
-2023-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK,
-       GROFF_URW_FONTS_NOTICE): Add macro dependency on
-       `GROFF_GHOSTSCRIPT_PATH`, which should have been there already.
-       (GROFF_GROHTML_PROGRAM_NOTICE): Add macro dependency on
-       `GROFF_CHECK_GROHTML_PROGRAMS`, which should have been there
-       already.
-
-       (GROFF_CHECK_GROHTML_PROGRAMS, GROFF_PNMTOOLS_CAN_BE_QUIET):
-       Move `AC_REQUIRE` expansions to precede shell variable
-       assignments (after checking that the required macros don't
-       clobber the assignments we're making).
-
-2023-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/tests/basic-fonts-present.sh: Revise test again,
-       per feedback from Deri James.  Even without Ghostscript or URW
-       fonts available, gropdf can generate valid PDF documents; it
-       simply can't embed fonts in general (without further
-       arrangements made on the host system), which means it is
-       restricted to the PDF base 14 fonts.  That's enough for many
-       purposes, including generating our compiled man pages document
-       {with minor degradations to the typeface lists in gropdf(1) and
-       grops(1)}.  Drop the 'gs' command check, which also didn't check
-       for the name of the Ghostscript interpreter determined by the
-       "configure" script.  Replace dynamically generated font list
-       with a static one (the base 14 fonts plus groff's EURO).
-
-2023-02-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/tests/basic-fonts-present.sh: Revise test.
-       Improve explanation of why we're looking for the gs(1) command
-       in a font availability test.  Prefix diagnostic output with name
-       of test script.  Perform a search for the 'ps' device font
-       descriptions that will work in more build scenarios (i.e., don't
-       assume an out-of-tree build taking place in an immediate
-       subdirectory of the source).  Distinguish failure to find the
-       font descriptions from a failure to locate the 'gs' command,
-       skipping the test in both scenarios.  Reduce noise in output.
-       * m4/groff.m4 (GROFF_CHECK_GROPDF_PROGRAMS): Revise warning
-       issued when awk and Ghostscript are unavailable; gropdf will not
-       be completely inoperative.  Characterize its reduced function.
-
-       Thanks to Deri James in <https://lists.gnu.org/archive/html/\
-       groff-commit/2023-02/msg00089.html> for prompting me to take a
-       another look at this.
-
-2023-02-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/latin2_works.sh:
-       * tmac/tests/latin5_works.sh:
-       * tmac/tests/latin9_works.sh: Port to work around macOS's
-       apparently POSIX non-conforming 'od' command.  Use single-byte
-       octal output format instead of "character", and update test
-       expectations accordingly.  Apparently gratuitously, macOS also
-       puts more spaces after the octal address field when using this
-       output format.
-       * HACKING: Document, and elaborate upon, this problem.
-
-2023-02-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Port a test to work with macOS sed.
-
-       * tmac/tests/doc_heading-font-remapping-works.sh: Put semicolons
-       between commands and closing braces in sed script.  Put each of
-       multiple closing braces on a separate input line, because macOS
-       doesn't accept them otherwise.  Resolves test failure observed
-       on macOS.
-       * HACKING: Document the closing brace sequence problem.
-
-2023-02-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Port a test to work with macOS sed.
-
-       * tmac/tests/an_TS-adds-no-vertical-space.sh: Put semicolons
-       between commands and closing braces in sed script.  Separate
-       command stream into multiple '-e' expressions, breaking them
-       after branch and label commands.  Resolves test failure observed
-       on macOS.
-       * HACKING: Document the above problems.
-
-2023-02-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/\
-       some_escapes_accept_newline_delimiters.sh: Weaken regexes in two
-       test cases to accommodate excessive output from macOS's 'od'
-       command.  Resolves test failure seen on macOS.
-       * HACKING: Add section "Writing Tests" and document the above
-       since this is the second time I've cracked my shin on this.
-
-2023-02-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/tests/basic-fonts-present.sh: Skip test if 'gs'
-       command not available.  The test is to ensure that gropdf will
-       produce sound documents using the base fonts from PostScript,
-       but since gropdf requires Ghostscript to do this (as noted in
-       our "./configure" messages), it makes no sense to validate font
-       availability if the program is absent.  Resolves test failure
-       seen on macOS with minimal dependencies installed.
-
-2023-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Manipulating Filling and Adjustment): Say more
-       about the consequences of a break.
-
-       Fixes <https://savannah.gnu.org/bugs/?63777>.  Thanks to Dave
-       Kemper for the report.
-
-2023-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Re-re-christen 'ESCAPE_AMPERSAND' ('\&').  Now call it a
-       {non-transparent} "dummy character".  Also rechristen
-       'ESCAPE_RIGHT_PARENTHESIS', ('\)') as the "transparent dummy
-       character"; it has no impact on sentence-ending detection.
-
-       * doc/groff.texi:
-       * doc/meref.me.in:
-       * man/groff.7.man:
-       * man/groff_diff.7.man:
-       * man/roff.7.man:
-       * src/preproc/refer/refer.1.man:
-       * tmac/groff_man.7.man.in: Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?62816>.  Thanks to Dave
-       Kemper for the report and to the groff mailing list for the
-       vigorous discussion.  I don't expect my solution to please
-       everyone.
-
-2023-02-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Add internal register `an*MR-URL-format` to
-       select from a few known formats of man page hyperlink.  There
-       are three known on macOS, and one used everywhere else.
-       * tmac/man.local: Document this feature so macOS users can enjoy
-       the OSC 8 hyperlink feature if their terminal application
-       supports it.
-
-       I hope that this feature will be a temporary measure while macOS
-       implements support for the man page URL format used everywhere
-       else in the world.
-
-       Fixes <https://savannah.gnu.org/bugs/?63768>.  Thanks to John
-       Gardner for the report, research, consultation, and testing.
-
-2023-02-11  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [BuildFoundries]: Fails if neither ghostcript nor URW fonts
-       are installed.
-
-       * font/devpdf/util/BuildFoundries.pl: When the change to hold
-       paths in an array, rather than a delimited string (see commit
-       4ae4aeb6555f4f16c28fcb03eb1f56577826054c), the FindGSpath
-       subroutine should return a pointer to an empty array when the
-       call to ghostscript fails, rather than return an empty string,
-       as was done previously.
-
-       See <https://lists.gnu.org/archive/html/groff/2023-02/\
-       msg00042.html>; thanks to Bruno Haible for the report.
-
-2023-02-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Switch to using system's assert.h header file.  It is futile to
-       attempt to preserve compatibility with ISO C90 systems by
-       providing a bespoke predicate-reporting assert() (a C99 feature)
-       when gnulib, which we require, itself demands C99.  This ensures
-       that `static_assert` remains defined so that gnulib can use it.
-       Thanks to Bruno Haible for the consultation.
-       <https://lists.gnu.org/archive/html/groff/2023-02/msg00034.html>
-
-       * src/include/assert.h: Delete.
-
-       * src/devices/grodvi/dvi.cpp:
-       * src/devices/grolbp/lbp.cpp:
-       * src/devices/grolj4/lj4.cpp:
-       * src/include/itable.h:
-       * src/include/stringclass.h:
-       * src/libs/libbib/linear.cpp:
-       * src/libs/libbib/search.cpp:
-       * src/libs/libdriver/printer.cpp:
-       * src/libs/libgroff/assert.cpp:
-       * src/libs/libgroff/color.cpp:
-       * src/libs/libgroff/errarg.cpp:
-       * src/libs/libgroff/font.cpp:
-       * src/libs/libgroff/nametoindex.cpp:
-       * src/libs/libgroff/prime.cpp:
-       * src/libs/libgroff/relocate.cpp:
-       * src/libs/libgroff/searchpath.cpp:
-       * src/preproc/eqn/box.cpp:
-       * src/preproc/eqn/delim.cpp:
-       * src/preproc/eqn/pile.cpp:
-       * src/preproc/eqn/script.cpp:
-       * src/preproc/html/pre-html.cpp:
-       * src/preproc/pic/pic.h:
-       * src/preproc/preconv/preconv.cpp:
-       * src/preproc/soelim/soelim.cpp:
-       * src/roff/groff/groff.cpp:
-       * src/roff/troff/troff.h:
-       * src/utils/hpftodit/hpftodit.cpp:
-       * src/utils/indxbib/indxbib.cpp:
-       * src/utils/lkbib/lkbib.cpp:
-       * src/utils/lookbib/lookbib.cpp:
-       * src/utils/tfmtodit/tfmtodit.cpp: Respell "assert.h" inclusion
-       with angle brackets instead of quotation marks.
-
-       Fixes <https://savannah.gnu.org/bugs/?63078>.
-
-2023-02-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (token::next): Use correct kind of
-       null object in comparison.  Fixes latent bug that would be
-       exposed if we were to migrate from zero literals to `nullptr`.
-
-2023-02-09  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf] Parse multiple entries in 'papersize' as specified in
-       the groff_font man page. Reported by Ben Wong and fix based on
-       his patch, thanks.
-
-       * src/devices/gropdf/gropdf.pl: Parse papersize string for
-       possible multiple (space separated) entries. First valid entry
-       wins.
-
-       Fixes https://savannah.gnu.org/bugs/?63757
-
-2023-02-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Correct numerous typos and solecisms throughout the source tree.
-
-       * ChangeLog:
-       * ChangeLog.115:
-       * ChangeLog.116:
-       * ChangeLog.117:
-       * ChangeLog.118:
-       * ChangeLog.119:
-       * ChangeLog.121:
-       * ChangeLog.122:
-       * Makefile.am:
-       * NEWS:
-       * PROBLEMS:
-       * README:
-       * contrib/chem/chem.am:
-       * contrib/chem/chem.pl:
-       * contrib/glilypond/README.txt:
-       * contrib/glilypond/glilypond.pl:
-       * contrib/hdtbl/groff_hdtbl.7.man:
-       * contrib/mm/ChangeLog:
-       * contrib/mm/m.tmac:
-       * contrib/pdfmark/pdfmark.ms:
-       * doc/automake.mom:
-       * doc/groff.texi:
-       * doc/me-revisions:
-       * doc/webpage.ms:
-       * m4/lib-link.m4:
-       * man/groff.7.man:
-       * man/groff_diff.7.man:
-       * man/roff.7.man:
-       * src/devices/grohtml/post-html.cpp:
-       * src/devices/grolbp/lbp.h:
-       * src/devices/gropdf/TODO:
-       * src/devices/gropdf/gropdf.1.man:
-       * src/devices/gropdf/gropdf.pl:
-       * src/devices/xditview/ChangeLog:
-       * src/devices/xditview/xditview.c:
-       * src/libs/libdriver/input.cpp:
-       * src/libs/libgroff/glyphuni.cpp:
-       * src/preproc/eqn/eqn.1.man:
-       * src/preproc/grn/gprint.h:
-       * src/preproc/grn/main.cpp:
-       * src/preproc/html/pre-html.cpp:
-       * src/preproc/preconv/preconv.cpp:
-       * src/preproc/tbl/table.cpp:
-       * src/roff/groff/pipeline.c:
-       * src/roff/groff/tests/substring_works.sh:
-       * src/roff/groff/tests/
-       use_point_size_escape_with_single_digit_arg.sh:
-       * src/roff/troff/div.cpp:
-       * src/roff/troff/input.cpp:
-       * src/roff/troff/troff.1.man:
-       * src/utils/grog/grog.pl:
-       * src/utils/indxbib/indxbib.cpp:
-       * src/utils/tfmtodit/tfmtodit.1.man:
-       * tmac/doc-old.tmac:
-       * tmac/doc.tmac:
-       * tmac/groff_man.7.man.in:
-       * tmac/hyphen.fr: Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?63589>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2023-02-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Drop XFAIL test.  It was written with an unclear
-       understanding of how DWB (AT&T) and Heirloom Doctools troff
-       behaved.  The individual checks might come back, modified.
-
-       * src/preproc/tbl/tests/table-lacks-spurious-top-border.sh:
-       Delete.
-
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Drop it.
-       (tbl_XFAIL_TESTS, XFAIL_TESTS): Drop now empty assignment and
-       unnecessary update, respectively.
-
-2023-02-04  Bertrand Garrigues <bertrand.garrigues@laposte.net>
-
-       Update gnulib submodule
-
-       gnulib now points on sha1 4e9fcc7b84fcac07a3e5a3cd5f66d1ff320dc8e8
-
-2023-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix bugs using boxes or vertical rules at table edges on
-       nroff devices, particularly when combined with region or column
-       expansion.
-
-       * src/preproc/tbl/table.h (class table): Add `GAP_EXPAND`
-       enumeration constant.  James Clark seems to have designed GNU
-       tbl carefully to avoid distinguishing region expansion from
-       column expansion in a categorical way, but I needed a way for
-       formatting-time logic to know which was in use.  (Column
-       expansion, the "x" modifier, expands columns--i.e., text.
-       Region expansion expands [or compresses] the _gaps_ between
-       columns.)
-       * src/preproc/tbl/main.cpp (process_options): Set `GAP_EXPAND`
-       flag in table if "expand" region option seen.
-       * src/preproc/tbl/table.cpp: Add new macro `LEFTOVER_FACTOR_REG`
-       to name a new roff register for the remainder of gap-expansion
-       space when the amount of space available for expansion is
-       divided by the number of gaps.
-       (table::compute_overall_width): If _not_ expanding a table in
-       either respect and in nroff mode, reduce line length by 1n for
-       each of any left and right border (because the vertical lines
-       eat character cells).  This prevents bordered or boxed tables
-       from being overset even when they use neither expansion feature.
-       (table::compute_separation_factor): If gap-expanding a table,
-       store any remainder from the division used to compute the
-       separation factor into the new `LEFTOVER_FACTOR_REG`.
-       (table::compute_column_positions): Insert that remainder into
-       the gap before the last (rightmost) column of the table.  This
-       _could_ be done more elegantly by spreading each en in a
-       symmetric way across a subset of the gaps.  (It is necessarily a
-       subset by the pigeonhole principle.)  But it didn't seem worth
-       the effort for a feature (region expansion) that few users
-       employ.  (Usually what you want is the "x" column modifier.)
-       Alternatively, "forget it, Jake--it's a terminal emulator".
-
-       * src/preproc/tbl/tbl.am (tbl_XFAIL_TESTS): Remove now-passing
-       tests.
-
-       Fixes <https://savannah.gnu.org/bugs/?63640> and
-       <https://savannah.gnu.org/bugs/?63749>.
-
-2023-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::compute_column_positions):
-       Stop multiplying the gaps at the left and right edges of a table
-       {which occur when it is boxed or has a leading and/or trailing
-       vertical line} by the column separation factor.  Only interior
-       column gaps should be spread.  This change prevents tables using
-       the "expand" region option from being overset (exceeding the
-       line length), but might not (yet) fully expand to that length on
-       low-resolution devices due to integer roundoff.
-
-2023-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::compute_total_separation)
-       (table::compute_separation_factor, table::compute_widths): Add
-       comments to generated roff output to assist the mystified user.
-
-2023-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Refactor.
-
-       * src/preproc/tbl/table.cpp:
-       * src/preproc/tbl/table.h: Rename `compute_expand_width` to
-       `compute_overall_width`, since this member function is used on
-       _all_ tables, not just those undergoing column or gap expansion.
-       For instance, in a post-groff 1.22.4 development, it throws a
-       diagnostic if an unexpanded table overruns the line length.
-       * src/preproc/tbl/table.cpp (table::compute_widths): Update call
-       site of `compute_overall_width`.
-       * src/preproc/tbl/table.cpp: Split the roff register behind the
-       `EXPAND_REG` C++ preprocessor macro into two, adding
-       `AVAILABLE_WIDTH_REG`.  Annotate the distinction.
-       (compute_overall_width): Annotate.  Move and conditionalize
-       logic so as not to produce as much unnecessary roff output.
-
-2023-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (main): Avoid reading from invalid
-       memory upon failure to open an input file.
-
-       Fixes <https://savannah.gnu.org/bugs/?63751>.
-
-2023-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/lex.cpp (get_delimited_text): Avoid reading
-       from invalid memory when throwing diagnostic.  Duplicate
-       `filename` string, then free it on all paths out of function.
-
-       Fixes <https://savannah.gnu.org/bugs/?63214>.
-
-2023-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Add more tests.
-
-       * src/preproc/tbl/tests/boxes-and-vertical-rules.sh:
-       * src/preproc/tbl/tests/expand-region-option-works.sh:
-       * src/preproc/tbl/tests/x-column-modifier-works.sh: Do it.
-
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run tests.
-       (tbl_XFAIL_TESTS): Add; future changes will resolve these.
-
-2023-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::compute_column_positions):
-       If a table has "left separation" (it is boxed, or has a vertical
-       rule on the left-hand side), increase the first column's start
-       register value by 1n, for symmetry with the right-hand size.
-
-       * src/preproc/tbl/tests/check-horizontal-line-length.sh:
-       * src/preproc/tbl/tests/check-line-intersections.sh:
-       * src/preproc/tbl/tests/check-vertical-line-length.sh: Update
-       output expectations.
-
-       * src/preproc/tbl/tbl.am (tbl_XFAIL_TESTS): Remove now-passing
-       test.
-
-       See <https://savannah.gnu.org/bugs/?61597> for background.
-
-2023-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::compute_total_separation):
-       Trivially refactor; rename loop indices so it's obvious which
-       dimension of a matrix they're referring to.
-
-2023-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::determine_row_type)
-       (table::compute_widths, table::do_row): Boolify some local ints.
-
-2023-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Refactor handling of vertical lines in format.  Validate
-       input more strictly.  Add diagnostics when vertical lines are
-       redundant with box borders.
-
-       * src/preproc/tbl/main.cpp (process_format): Shift diagnostic
-       about excess vertical lines in a sequence at the beginning of a
-       row description to later, after the first proper column
-       descriptor has been interpreted.  Normalize a sequence of more
-       than two consecutive vertical lines to 2 when they occur at the
-       beginning of a row description.  Unconditionally update
-       `list->vline` and reset `vline_count` once we start looking for
-       modifiers, since we know we've finished any sequence of vertical
-       lines, and at the end of a row definition.  Rename and retype
-       loop variable int `success` to Boolean
-       `is_valid_modifier_sequence`.  Drop now-invalid assertion.
-       * src/preproc/tbl/table.cpp (table::add_vlines): Throw new
-       diagnostics when vertical lines are redundant with box borders.
-       Add assertion to ensure we got a valid vertical line value (0,
-       1, or 2) from `process_format`.  Throw these only once per table
-       format, not for every row.
-
-2023-01-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (process_table): Trivially refactor.
-       Rename `form` to `fmt` to imply "format", not "form".
-
-2023-01-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (process_format): Throw error
-       diagnostic if more than 2 vertical lines are specified at the
-       beginning of a row definition.
-
-       Fixes <https://savannah.gnu.org/bugs/?63731>.
-
-2023-01-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (process_format): Recast diagnostic
-       message to refer to character by its Unicode name and generalize
-       to accurately cover additional circumstance of excess '|'
-       symbols at end of row definition.
-
-2023-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/ms.ms: Remove redundant initializations.
-
-2023-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/ms.ms: Define appropriate hyphen-minus mapping on 'cp1047'
-       output device.
-
-2023-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (TE): Enable no-space mode after outputting the
-       display distance vertically, replacing any inter-paragraph
-       distance that might follow.
-
-2023-01-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Fix misleading diagnostic message.
-
-       * src/preproc/html/pre-html.cpp (main): The suggestion should be
-       to re-run the formatter (groff, troff), not "pre-grohtml", with
-       a different output driver since the document may be malformed.
-
-2023-01-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (process_format): Fix code hygiene
-       nit: nullify `list` pointer after freeing its target.
-
-2023-01-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Really fix Savannah #63449.
-
-       * src/preproc/tbl/main.cpp (process_format): "Or" on the
-       `HAS_TOP_VLINE` flag if the format specification begins with a
-       "|"; the beginning is a separate state in the FSM used to parse
-       the description.  I missed it in commit 0e93ab4102, 1 December.
-
-       Fixes <https://savannah.gnu.org/bugs/?63449>.
-
-2023-01-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/tests/\
-       do-not-overdraw-page-top-in-nroff-mode.sh: Correct erroneous
-       check of test output, and add two more test cases.
-
-2023-01-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Move the saving of the hyphenation mode from
-       the "top level" to...
-       (mY): ...this new macro.
-       (SY, mQ, MR): Call `mY` before disabling hyphenation.
-
-       Problem introduced by me in commit 096c2f0567, 16 February.
-       "an-ext.tmac" gets sourced by "an.tmac" before any
-       command-line setting of the `HY` register is handled, so (for
-       groff) the stored hyphenation mode was the default for the
-       language, not reflecting user disablement.  The synopsis macros,
-       which do not have an alternate implementation in "an.tmac" for
-       leverage of groff features, were causing hyphenation to be
-       resurrected (after `YS`) even if the user had disabled it.
-       Saving the hyphenation mode anew upon entry to these macros is
-       arguably inefficient, but it is more correct since a man page
-       could conceivably manipulate the automatic hyphenation mode
-       {even if that's not recommended outside of tbl(1) text blocks}.
-
-2023-01-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add regression test for hyphenation getting wrongly
-       restored by `YS`, `ME`, `UE`, and `MR` macros.
-
-       * tmac/tests/an_HY-register-works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-01-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (Sh, Ss): Narrow scope of font remappings
-       lexically and restrict remapping to the heading font family (if
-       any) to avoid undesired remapping of fonts in page headers if,
-       say, a (sub)section heading begins just prior to a page
-       break--which is ugly anyway and should be avoided, but the
-       package has no keep macros and solving that problem in an
-       automatic way promises to be complex.
-
-2023-01-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (MT, UR): Throw style warning if macro called
-       without (exactly one) argument.
-
-2022-12-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/groff-man-pages.pdf): Set (sub)section
-       headings in Helvetica bold in compiled man pages, as a test and
-       demonstration of the `HF` feature's application to both man(7)
-       and mdoc(7) documents.
-
-2022-12-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `HF` string.
-
-       * tmac/doc.tmac (initialization): Add logic supporting `HF`
-       string just as our man(7) implementation does.  If the font name
-       ends with `B` (as the default does), set
-       `doc-remap-I-style-in-headings` register and extract font
-       family, which can be empty (as is the default).
-       * tmac/mdoc/doc-common (Sh, Ss): If
-       `doc-remap-I-style-in-headings` register set, perform (and
-       unwind) font remapping of italic to bold-italic face.
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Define `doc-Sh-font` in terms of `HF`.
-
-       * tmac/tests/doc_heading-font-remapping-works.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       * tmac/groff_mdoc.7.man (Options): Document it.
-       * NEWS: Update item.
-
-       Fixes last part of <https://savannah.gnu.org/bugs/?63046>.
-
-2022-12-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Revise "fallback" character definitions in several
-       respects for Unicode characters from General Punctuation block.
-
-       * tmac/fallbacks.tmac: Comment out fallbacks for U+200B, U+2010,
-       U+2011, and U+201[89CD], due to ineffectuality or apparent groff
-       bugs.  Redefine U+2012 fallback to include hair space (\^)
-       around synthetic figure dash.  Redefine U+2016 to use `\[ba]`
-       special characters instead of ordinary `|` characters to dodge
-       possible character translations by user.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?63354>.  Thanks to
-       Dave Kemper for the (multifarious) discussion.
-
-2022-12-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Invoking groff, Built-in Registers):
-       * man/groff.7.man (Writable predefined registers):
-       * src/roff/groff/groff.1.man (Environment):
-       * src/roff/troff/troff.1.man (Environment): Replace erroneous
-       reference to ctime(3) with localtime(3).
-
-       Fixes <https://savannah.gnu.org/bugs/?63509>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-12-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Fix potential problem(s) in trap handler.
-
-       * src/roff/groff/tests/smoke-test_html_device.sh: Move call of
-       `cleanup` function from end of script to after the tests that
-       generate temporary files have been run, and before script
-       possibly exits with status 77 to skip some checks.  Within trap
-       handler, mask trapped signals while running handler.
-       (cleanup): Reset trap dispositions to default after removing
-       files; once the temporary files are gone, we no longer need a
-       trap handler.  One might already be running however, and this
-       ensures that its "suicide" ("kill -s INT $$") will succeed.
-
-2022-12-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `FT` register.
-
-       * tmac/doc.tmac (initialization): Add logic supporting `FT`
-       register just as our man(7) implementation does.
-       * tmac/mdoc/doc-common (doc-set-up-titles): Plant footer trap in
-       validated user-requested location.
-       * tmac/groff_mdoc.7.man (Options): Document it.
-       * NEWS: Update item.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?63046>.
-
-2022-12-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Fix code style nit: use `as` requests to
-       avoid overlong input lines.
-
-2022-12-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac: Inform user we're ignoring their "-rD1" setting
-       if also formatting HTML; parallels groff man(7) behavior.
-
-2022-12-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac: Trivially refactor.  Relocate handling of `D`
-       command-line register to prepare for greater synchronization
-       with groff man(7).
-
-2022-12-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp: Trivially refactor.  Rename
-       {portion of} internal register to include an interword hyphen
-       for readability.
-
-2022-12-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Change default line length to 6.5 inches.
-
-       * tmac/s.tmac (par@load-init): Do it.
-
-       * doc/groff.texi (ms Document Control Settings):
-       * doc/ms.ms (Document control settings):
-       * tmac/groff_ms.7.man (Document control settings): Document it.
-
-       * tmac/tests/s_honor-MINGW-when-two-columns.sh:
-       * tmac/tests/s_mark-column-start-correctly.sh: Update test
-       expectations.
-
-       * NEWS: Add item.
-
-2022-12-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (TH): Relocate `an-break-body-text` trap to be
-       one half-inch above footer (instead of twice the footer
-       distance).  I reason that anyone who customizes `FT` is doing so
-       to overprint some kind of material at the bottoms of pages, or
-       simply to make the margin larger.  (One then wonders why we
-       don't have an `HD` register for the top.)  Also remove register
-       when done with it.
-       * tmac/groff_man.7.man.in (Options) <FT>: Document this.
-
-2022-12-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (TH): Trivially refactor.  Rename
-       `an-footer-location` to `an*footer-location` and set page traps
-       in order descending the page.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `X` register.
-
-       * tmac/doc.tmac (initialization): Add logic supporting `X`
-       register just as our man(7) implementation does.
-       * tmac/groff_mdoc.7.man (Options): Document it.
-       * NEWS: Update item.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?63046>.
-
-2022-12-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Add unit test for `X` register.
-
-       * tmac/tests/doc_X-register-works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-12-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac (Nm): Fix `if` -> `ie` typo/thinko.
-
-       Fixes <https://savannah.gnu.org/bugs/?63527>.  Thanks to John
-       Gardner for the report.
-
-2022-12-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/doc_Nm-works.sh: Add more checks.
-
-2022-12-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/smoke-test_html_device.sh: Add checks for
-       inlining of images when tbl(1) or eqn(1) used.
-
-2022-12-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/andoc.tmac (reload-man): Unplant `doc-break-body-text`
-       trap, added in commit 892703b17e, 6 September.  Its survival
-       into man(7) pages didn't seem to cause any problems but I have
-       no confidence that will remain true forever.
-
-2022-12-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (initialization): Fix problem with `FT` register
-       validation.  Small but valid values were being rejected due to
-       inappropriate use of scaling operator.  Also throw user a bone
-       by expressing what size '1v' is for the output device, in basic
-       units.
-
-2022-12-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man, mdoc]: Fix Savannah #63500.  Support use of `P` (initial
-       page number) register when batch rendering, regardless of
-       switching macro packages between man(7) and mdoc(7) or setting
-       of `C` (continuous numbering) register.  (`P` without `C` means
-       "start numbering each rendered document at \n[P]".)
-
-       * tmac/an.tmac (an-end): Call `an*break-page-with-new-number`
-       instead of invoking `bp`.
-       (an*break-page-with-new-number): If `P` is set and `C` is not,
-       use value of `P` as the next page number.
-       (TH): If `C` register is set, remove `P` register after ending a
-       previous document.
-       (initialization): If `P` is set, assign the page number using
-       the `pn` request if the transition to the first formatted page
-       has not yet occurred; otherwise update page number register `%`
-       directly.  Also ignore it with diagnostic if `ps4html` register
-       {for grohtml's internal use} is set.  Add explanatory comment.
-
-       * tmac/mdoc/doc-common (Dd): If `C` register is set, remove `P`
-       register after ending a previous document.
-       (doc-end-macro): Call `doc-break-page-with-new-number` instead
-       of invoking `bp`.
-       (doc-break-page-with-new-number): If `P` is set and `C` is not,
-       use value of `P` as the next page number.
-       * tmac/doc.tmac (initialization): If `P` is set, assign the page
-       number using the `pn` request if the transition to the first
-       formatted page has not yet occurred; otherwise update page
-       number register `%` directly.  Also ignore it with diagnostic if
-       `ps4html` register (for grohtml's internal use) is set.  Add
-       explanatory comment.
-
-       Fixes <https://savannah.gnu.org/bugs/?63500>.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `P` register.
-
-       * tmac/doc.tmac (initialization): Add logic supporting `P`
-       register just as our man(7) implementation does.
-       * tmac/groff_mdoc.7.man (Formatting with groff, troff, and
-       nroff): Document it.
-       * NEWS: Update item.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?63046>.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Add unit tests for man/mdoc `P` register.
-
-       * tmac/tests/an_P-register-works.sh:
-       * tmac/tests/andoc_P-register-works.sh:
-       * tmac/tests/doc_P-register-works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man, mdoc]: Refactor.  Rename a Boolean register to more
-       clearly communicate its purpose.  This also reverses its sense.
-
-       * tmac/an.tmac (TH): Rename `an-is-first-page-of-document` to
-       `an*need-titles-reset`.  Drop redundant store.  Reverse sense of
-       test.
-       (initialization): Initialize it to zero.
-
-       * tmac/mdoc/doc-common (Dd): Rename
-       `doc-is-first-page-of-document` to `doc-need-titles-reset`.
-       Drop redundant store.  Reverse sense of test.
-       (initialization): Initialize it to zero.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Add future regression test for header/footer
-       mishandling that wasn't already covered (not a live bug; was
-       exposed by attempted refactoring).
-
-       * tmac/tests/andoc_check-an-to-doc-transition.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man, mdoc]: Trivially refactor.
-
-       * tmac/an.tmac (an-start-new-document): Rename this...
-       (an*break-page-with-new-number): ...to reflect its reduced
-       responsibility.
-
-       * tmac/mdoc/doc-common (doc-start-new-document): Rename this...
-       (doc-break-page-with-new-number): ...to reflect its reduced
-       responsibility.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man, mdoc]: Refactor to separate page number management from
-       header trap management.
-
-       * tmac/an.tmac (an-start-new-document): Stop removing
-       `an-header` trap.
-       (TH): Clear the trap here even if not continuously rendering,
-       and call `an-start-new-document`.
-
-       * tmac/mdoc/doc-common (doc-start-new-document): Stop removing
-       `doc-header` trap.
-       (Dd): Clear the trap here even if not continuously rendering,
-       and call `doc-start-new-document`.
-
-2022-12-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common: Refactor for better parallelism with our
-       man(7) implementation and to prepare for a synchronized change
-       to both.
-       (Dd): Move open-coded (inlined) operations from here...
-       (doc-start-new-document): ...to this new macro.
-       (doc-end-macro): Drop unnecessary register assignment.  `Dd`
-       takes care of it if there is a subsequent mdoc(7) document.
-
-2022-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix off-by-one error in generated diagnostic message.
-
-       * src/preproc/tbl/table.cpp: Define new preprocessor macro,
-       `PREVIOUS_PAGE_REG`.
-       (table::init_output): Compute value for register named using
-       `PREVIOUS_PAGE_REG`, use it in diagnostic, and then remove it.
-       Also fix verb tense in message.
-
-2022-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Expose the fact of a table's boxedness via a troff
-       register so that macro packages can make more intelligent
-       decisions about space requirements (since box borders occupy
-       significant space on nroff devices).
-
-       * src/preproc/tbl/table.cpp: Define new preprocessor macro,
-       `IS_BOXED_REG`.
-       (table::do_top): Initialize "boxedness" register.
-
-2022-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (TH): Clarify computation and diagnostic message.
-
-2022-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #61878.
-
-       * src/preproc/tbl/table.cpp: Define new preprocessor macro,
-       `STARTING_PAGE_REG`.
-       (table::define_bottom_macro): Have the formatter issue a warning
-       if an unkept, boxed table ends on a different page than it
-       began.
-       (table::do_top): Save current page number when table begins.
-
-       Fixes <https://savannah.gnu.org/bugs/?61878>.
-
-2022-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #61878.
-
-       * src/preproc/tbl/tests/\
-       warn-on-long-boxed-unkept-table.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2022-12-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp: Write comments to generated output;
-       these correspond to functions in this file and to major
-       operations of table construction.
-       (init_output, compute_widths, define_bottom_macro, do_row)
-       (do_top, do_bottom): Do it.
-
-2022-12-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.  Rename class `constant_int_reg` to
-       `readonly_register`.  Say "readonly" instead of "const" to
-       try to avoid confusion with C++ constness.  Drop "int" because
-       integer-valued registers are the norm, not the exception.
-
-       * src/roff/troff/column.cpp (init_column_requests):
-       * src/roff/troff/div.cpp (init_div_requests):
-       * src/roff/troff/input.cpp (top level, init_input_requests):
-       * src/roff/troff/node.cpp (init_node_requests):
-       * src/roff/troff/reg.h: Do it.
-
-2022-12-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.  Rename class `constant_reg` to
-       `readonly_text_register`.  Say "readonly" instead of "const" to
-       try to avoid confusion with C++ constness.  Say "text" because
-       this class is _mostly_ used for interpolation of string-valued
-       registers like the version registers `.x`, `.y` and `.Y`.
-       Nevertheless there are some abuses (apparently because the
-       constructors for register classes don't accept integer
-       parameters for initialization--why?).
-
-       * src/roff/troff/input.cpp (top level)
-       (readonly_text_register::readonly_text_register)
-       (readonly_text_register::get_string)
-       (main, init_registers, init_requests): Do it.
-
-2022-12-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.  Rename `number_reg_dictionary` to
-       `register_dictionary`.  It's shorter _and_ non-abbreviated _and_
-       matches our documentation.
-
-       * src/roff/troff/column.cpp (init_column_requests):
-       * src/roff/troff/div.cpp (page_number, init_div_requests):
-       * src/roff/troff/env.cpp (print_env, init_env_requests)
-       (init_hyphen_requests):
-       * src/roff/troff/input.cpp (length_request)
-       (interpolate_number_format, do_register, do_if_request, main)
-       (init_registers, init_input_requests):
-       * src/roff/troff/node.cpp (get_register, init_node_requests):
-       * src/roff/troff/reg.cpp (top level, define_number_reg)
-       (inline_define_reg, alter_format, remove_reg, alias_reg)
-       (rename_reg, print_number_regs):
-       * src/roff/troff/reg.h: Do it.
-
-2022-12-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add regression test.
-
-       * tmac/tests/an_link-trailing-text-hugs-previous.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-12-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/fallbacks.tmac: Really use troff-mode fallbacks only on
-       typesetting devices; because this macro file is loaded so early,
-       we cannot rely on ".if t".  Thanks to Dave Kemper for the
-       discussion in Savannah #63354.
-
-2022-12-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Use more mnemonic register names, thanks to
-       the recent freeing up of some name space.
-       - mJ -> mH: saved automatic hyphenation mode
-       - mX -> mE: formatting in EX/EE context (Boolean)
-
-2022-12-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdf.tmac: Drop deletion of unused string `PDFHREF.TEXT`.
-
-2022-12-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (an-end, AT, UC, DT, PD, SH, IP, BI, BR, IB, IR)
-       (RB, RI, OP, an*end-hyperlink, MR): Refactor; "nop"ify macros
-       that produce formatted output or call other macros using string
-       interpolations--except where we can't: see Savannah #63470.
-
-2022-12-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (R): Drop macro definition, which implements a
-       hack for people who try to use "R" as a font style macro.  This
-       doesn't seem to happen much in actual practice (though perhaps
-       the diagnostic this hack produces is responsible for suppression
-       of the mistake).  Retaining it interferes with the
-       "nop"-ification of this macro file.
-       * NEWS: Add item.
-
-2022-12-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Use truly traditional hyphenation mode on
-       non-groff-compatible formatters.
-
-2022-12-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Update test coverage and expectations.
-
-       * tmac/tests/an_ME-punct-hyphenates.sh: Test both "an.tmac" and
-       "an-ext.tmac" implementations of `ME`.
-       * tmac/tests/an_UE-punct-hyphenates.sh: Test both "an.tmac" and
-       "an-ext.tmac" implementations of `UE`.
-       * tmac/tests/an_UE-breaks-before-long-URIs.sh: Update test
-       expectations.  I appear to have inadvertently fixed some
-       inelegant rendering.
-
-2022-12-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Rename to reflect code reorganization.
-
-       * tmac/tests/an-ext_ME-punct-hyphenates.sh:
-       * tmac/tests/an-ext_MT-body-hyphenates.sh:
-       * tmac/tests/an-ext_UE-breaks-before-long-URIs.sh:
-       * tmac/tests/an-ext_UE-punct-hyphenates.sh:
-       * tmac/tests/an-ext_UR-body-hyphenates.sh: Rename these...
-       * tmac/tests/an_ME-punct-hyphenates.sh:
-       * tmac/tests/an_MT-body-hyphenates.sh:
-       * tmac/tests/an_UE-breaks-before-long-URIs.sh:
-       * tmac/tests/an_UE-punct-hyphenates.sh:
-       * tmac/tests/an_UR-body-hyphenates.sh: ...to these.
-
-       * tmac/tmac.am (tmac_TESTS): Reflect renames.
-
-2022-12-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Remove groff-feature-dependent code for
-       hyperlink management, greatly reducing the size of the file,
-       which we permissively license and encourage people to copy
-       around.  Drop register definitions corresponding to
-       groff-specific output device names.  Drop definition and use of
-       `mL` and `mR` strings for angle brackets; no observable change
-       on non-groff formatters.  Recognize `mG` register to enable
-       testing of these macros even if the formatter is groff.
-       (mV): Radically simplify.  This internal "back-end" for `MT` and
-       `UR` now just stores its argument in a string, `m1`.
-       (mQ): Radically simplify.  This internal "back-end" for `ME` and
-       `UE` now just disables automatic hyphenation, formats the saved
-       `m1` string between angle brackets, suffixes it with the
-       optional argument, and restores automatic hyphenation.
-       (UR, MT): Call `mV` with one argument, not nine.
-       (UE, ME): Call `mQ` with one argument, not nine.
-
-       * tmac/tests/an-ext_MR-works.sh: Add test of this file's
-       simplified `MR` implementation.
-       * tmac/tests/an-ext_MT-works.sh:
-       * tmac/tests/an-ext_UR-works.sh: Move tests of groff-specific
-       hyperlink output from here...
-       * tmac/tests/an_MT-works.sh:
-       * tmac/tests/an_UR-works.sh: ...to these new files.
-       * tmac/tests/an_MR-works.sh:
-       * tmac/tests/an_MT-works.sh:
-       * tmac/tests/an_UR-works.sh: Add tests for valid HTML formatting
-       of hyperlinks, which experience shows is a bit fragile in the
-       face of diversion manipulation and output line continuation.
-
-       * tmac/tmac.am (tmac_TESTS): Run new tests.
-
-2022-12-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Support `mG` register: clear it to force the
-       loading of this file's macros even if they have an
-       implementation in tmac/an.tmac and the formatter claims groff
-       compatibility.  This is to ease these macros' testing under
-       groff and keep the implementations here simple.
-       * tmac/an.tmac: Initialize `mG` register to 1 if not set on
-       command line.
-
-2022-12-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Initialize `mX` register.
-
-2022-12-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Define `mC` string (constant-width typeface
-       used by `EX`/`EE` macros) as `R` in nroff mode.  Thanks to
-       Russ Allbery for prompting me to think more about the
-       limitations of Solaris troff.  Implementations do varying
-       things with the "previous" font restored by `\fP` or an
-       unargumented `.ft` if a requested font is not found.
-
-2022-11-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #63449.
-
-       * src/preproc/tbl/table.h (class table): Add new enumeration
-       constants for use with `flags` member variable: `HAS_TOP_VLINE`
-       and `HAS_TOP_HLINE`, which track properties of the table.
-       Unlike others, these have no correspondence to table region
-       options.
-       * src/preproc/tbl/main.cpp (process_format): Add new local
-       Boolean to track whether we're interpreting a format for the
-       first row.  Use this to "or" on the `HAS_TOP_VLINE` or
-       `HAS_TOP_HLINE` flags if "|" or [_-] are encountered in the
-       first row's format, as appropriate.
-       (process_data): "Or" on `HAS_TOP_HLINE` if a single or double
-       horizontal line is used as the first row's data.
-       * src/preproc/tbl/table.cpp (do_top): On nroff mode devices, add
-       one vee of space above the table if we're going to be drawing an
-       unintersected vertical rule above the table's top.
-
-       Fixes <https://savannah.gnu.org/bugs/?63449>.
-
-2022-11-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #63449.
-
-       * src/preproc/tbl/tests/\
-       do-not-overdraw-page-top-in-nroff-mode.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2022-11-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (struct input_entry_format)
-       (input_entry_format::input_entry_format)
-       free_input_entry_format_list, process_format): Trivially
-       refactor.  Rename `pre_vline` to `vline_count`.
-
-2022-11-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp
-       (vertical_rule::contribute_to_bottom_macro, table::print)
-       (table::init_output, table::divide_span)
-       (table::compute_expand_width, table::define_bottom_macro)
-       (table::do_bottom): Produce roff output that is more readable,
-       for maintainability.  Indent control lines inside macro
-       definitions.  Standardize form of `if`, `ie`, and `el` requests.
-       Some output will not be indented because it is produced within
-       narrowly-scoped C++ functions (set_troff_location,
-       table::print_single_hline, table::print_double_hline,
-       table::do_row), I haven't verified that each one is called from
-       a consistent troff indentation level, and I'm not sure it's a
-       win to parameterize those functions in the indentation level.
-
-2022-11-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #61909.
-
-       * src/preproc/tbl/table.cpp (SAVED_INTER_WORD_SPACE_SIZE)
-       (SAVED_INTER_SENTENCE_SPACE_SIZE): Add new preprocessor macros.
-       (block_entry::do_divert): Restore saved inter-word and
-       inter-sentence space when formatting a text entry.
-       (table::init_output): When a table region begions, save the
-       values of inter-word and inter-sentence space.  Add request to
-       the reset macro to restore saved inter-word and inter-sentence
-       space when leaving table region.
-       (table::do_top): Set inter-sentence space to be equal to
-       inter-word space.  This way spaces are "literal" in ordinary
-       table extries (but not text blocks).
-
-       Fixes <https://savannah.gnu.org/bugs/?61909>.
-
-2022-11-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #61909.
-
-       * src/preproc/tbl/tests/\
-       save-and-restore-inter-sentence-space.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2022-11-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Suppress line numbering when formatting tables, and
-       restore it afterward.
-
-       * src/preproc/tbl/table.cpp: Revert much of commit b69062693's
-       {2011-07-20} changes to this file.  They were too complex for me
-       to understand, and permitted Savannah #60140 to persist (or
-       caused it).
-       (ROW_START_LINE_REG, ROW_SAVE_LINE_REG, ROW_MAX_LINE_REG)
-       (REPEATED_NM_SET_MACRO, REPEATED_NM_SUS_MACRO): Drop
-       preprocessor macros.
-       (SAVED_NUMBERING_LINENO, SAVED_NUMBERING_SUPPRESSION_COUNT): Add
-       new preprocessor macros.
-       (table::init_output, table::print_single_hline)
-       (table::print_double_hline, table::define_bottom_macro)
-       (table::do_row, table::do_top, table::do_bottom): Drop old
-       logic.
-
-       (table::init_output): When the table begins, save the current
-       line number register `ln` and the count of remaining lines to be
-       suppressed (the new `.nn` register).  Then suppress numbering
-       for the next 2 billion+ lines of output, with a groveling
-       apology to the elegance police.
-       (table::do_bottom): Restore saved value of `.nn`.  If numbering
-       was active (even if suppressed), restore it with `nm` request.
-       If it wasn't, disable it, in case it was turned on inside the
-       table region.
-
-       Fixes <https://savannah.gnu.org/bugs/?60140>.  Thanks to Hans
-       Bezemer for noting the practical significance of this bug.
-
-2022-11-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #60140.
-
-       * src/preproc/tbl/tests/save-and-restore-line-numbering.sh: Do
-       it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2022-11-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Implement new `.nn` register to report the remaining
-       count of lines to have their numbering suppressed.
-
-       * src/roff/troff/env.h (class environment): Declare new member
-       function `get_no_number_count()`.
-       * src/roff/troff/env.cpp (get_no_number_count): Define new
-       member function, returning value of member variable
-       `no_number_count`.
-       (init_env_requests): Define new ".nn" register and attach it to
-       `get_no_number_count()`.
-
-       * doc/groff.texi (Miscellaneous): Document it.  Include example
-       of use to determine whether current output line will be
-       numbered.  Also clarify meaning of register; `.nn` is not
-       decremented except when output line numbering is enabled.
-       * man/groff.7.man (Read-only registers): Document it.
-
-       * src/roff/groff/tests/dot-nn_register_works.sh: Test it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       * NEWS: Add item.
-
-       See <https://lists.gnu.org/archive/html/groff/2022-11/\
-       msg00153.html>.
-
-2022-11-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/fallbacks.tmac: Comment out four of the fallback
-       character definitions for (preconv'd) Unicode character input
-       added to address Savannah #58930 (corresponding to \[dg], \[dd],
-       \[%0], and \[rn]; they are failing for not yet understood
-       reasons involving "macros" attached to groff character info
-       structs, and the semantics of what it means for a character to
-       "exist" per the 'c' conditional operator.  Fixes regression when
-       using "tty-char.tmac" (which nroff loads by default).  Problem
-       introduced by me in commit 132182bd71, 23 October.  The hope is
-       to resolve this issue post-groff 1.23.0.  Thanks to Dave Kemper
-       for the report and discussion in Savannah #63332.
-
-2022-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (SY, YS, mV): Remove `mA`, `mI`, and `mT`
-       registers when done with them.
-
-2022-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.h (character_exists):
-       * src/roff/troff/node.cpp (character_exists): Boolify.
-
-2022-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [doc]: Add make(1) dependency.
-
-       * doc/doc.am (doc/groff-man-pages.pdf): Add dependency on our
-       FreeEuro font since we embed it.
-
-2022-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Refactor generation of "freeeuro.pfa" to make more
-       economical use of existing infrastructure, per a suggestion from
-       Deri James.  This also puts the file where gropdf's "download"
-       file can find it when running it in a separate build directory.
-       We use it to generate "groff-man-pages.pdf".
-
-       * font/devps/freeeuro.pfa: Rename this...
-       * font/devps/freeeuro.ps: ...to this.  We can now use the suffix
-       rule that also applies to "symbolsl.ps" and "zapfdr.ps".
-
-       * font/devps/devps.am (DEVPSFONTFILES): Move "freeeuro.pfa" from
-       here...
-       (DEVPSFONTFILES_GENERATED): ...to here.
-       (EXTRA_DIST): Ship the "new" "freeeuro.ps" file.
-
-2022-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devps/psstrip.sed: Stop stripping comment lines in
-       general instead of preserving only ones that use the form in the
-       Document Structuring Conventions.  This way we won't strip
-       copyright notices, like Werner Lemberg's in the FreeEuro font.
-       Thanks to Deri James for pointing this out.
-
-2022-11-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       tmac/an-ext.tmac: Refactor to reduce code size.
-
-       * tmac/an-ext.tmac: Refactor to reduce code size.  `UE` and `ME`
-       have nearly identical implementations so...
-
-       (mQ): Define new macro to perform the requisite actions, and...
-
-       (UE, ME): Make these into wrappers calling mQ.
-
-2022-11-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add unit tests for `MT/ME` and `UR/UE`.
-
-       * tmac/tests/an-ext_MT-works.sh:
-       * tmac/tests/an-ext_UR-works.sh: Do it.
-
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2022-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl: Throw warning if paper format is
-       unrecognized.
-
-2022-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (Msg): Align more closely with
-       diagnostic message format prescribed by GNU Coding Standards:
-       emit space (only) prior to message severity.
-
-2022-11-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/meref.me.in: Drop unnecessary initialization parameters
-       from document.  The line and title length do not need to be set
-       in troff mode; the document lays out fine for a variety of paper
-       formats if these are not forced to 6.5 inches.  Also drop
-       redundant initialization of `pp` register.
-
-2022-11-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Fix Savannah #63377.
-
-       * tmac/doc.tmac (Nm): Properly leverage new
-       `doc-in-name-section` variable.  Set page topic `doc-topic-name`
-       to the first encountered argumentful `Nm` call in the "Name"
-       section while handling other "Name" section concerns, instead of
-       later after deciding we're not in the "Synopsis" section.
-       Problem caused by me when fixing antediluvian mdoc bug in commit
-       0d85615c62, 5 November.
-
-       Fixes <https://savannah.gnu.org/bugs/?63377>.  Thanks to John
-       Gardner for the report.
-
-2022-11-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Add tests for `Nm` macro.
-
-       * tmac/tests/doc_Nm-works.sh: Do it.  Test regression reported
-       in Savannah #63377.  Also ensure that we handle the case where
-       multiple `Nm` items are declared in the "Name" section (as might
-       happen in library man pages).
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-11-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/papersize.tmac: Improve integration with mm(7) macro
-       package.  If a paper format has been selected, set `W` register
-       to new line length (if not already set on command line).
-       Similarly, set `O` register to 1 inch for the symmetric
-       horizontal margins otherwise assumed by this macro file.  This
-       means that "groff -mm" and "groff -dpaper=letter -mm" are _not_
-       synonymous (when groff is configured to use U.S. letter as the
-       default paper format), because groff mm(7) uses a page offset of
-       0.963 inches on typesetters for compatibility with DWB mm.
-       * NEWS: Add item.
-
-       See discussion in <https://lists.gnu.org/archive/html/\
-       groff/2022-11/msg00081.html> and (some) follow-ups.
-
-2022-11-16  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       * src/devices/gropdf/gropdf.pl: If the argument to the paper
-       format option '-p' matches a recognized format but includes a
-       trailing 'L' or 'l' ("legalL" or "a4l", for example), rotate the
-       document's MediaBox.
-
-2022-11-16  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       * src/devices/gropdf/gropdf.pl: Fix incorrect hotspot placement
-       if page is in landscape orientation.
-       (FixRect): Perform coordinate transform if page is rotated.
-       (Rotate): New function performs relevant trigonometry.
-
-       Fixes <https://savannah.gnu.org/bugs/?63380>.  Thanks to Blake
-       McBride for the report.
-
-2022-11-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Integrate better with papersize.tmac by no longer
-       forcing line (and title) length to 6 inches for typesetters on
-       initialization.  Gather default line length from output device
-       description, possibly modified later (by other macro file or
-       input).  No change to terminal ("nroff mode") output.
-       * NEWS: Add item.
-
-2022-11-16  Peter Schaffter <peter@schaffter.ca>
-
-       * tmac/papersize.tmac: If a paper format has been selected,
-       smuggle right margin setting to mom(7) if not overridden by the
-       user.  See discussion in <https://lists.gnu.org/archive/html/\
-       groff/2022-11/msg00081.html> and (some) follow-ups.
-
-2022-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/groff-man-pages.pdf)
-       (doc/groff-man-pages.utf8.txt): Add dependencies on new
-       `TMAC_PACKAGE_MAN` and `TMAC_PACKAGE_MDOC` convenience macros.
-
-2022-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am (TMAC_PACKAGE_MAN, TMAC_PACKAGE_MDOC): Define
-       convenience macros for in-tree documents to depend on.
-
-2022-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Trivially refactor.  Rename `an-section` to
-       `an*section`.
-
-2022-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grolbp/lbp.cpp (usage): Tweak usage message.  The
-       output driver should be perfectly capable of handling output
-       from non-GNU (but device-independent) troffs.
-
-2022-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/ps.cpp (usage): Employ more informative
-       metasyntactic variable names in usage message.  Also summarize
-       program's function and direct reader to man page if help
-       explicitly requested (inferred from identity of output stream).
-
-2022-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Trivially refactor for congruence with
-       documentary terminology.  Rename strings and macros.
-       - an-title                 -> an*topic
-       - an-abbreviate-page-title -> an*abbreviate-page-topic
-       - an-title-abbv            -> an*topic-abbv
-       - an-title-string          -> an*topic-string
-       - an-title-length          -> an*topic-length
-       - an-title-length-prev     -> an*topic-length-prev
-       - an-title-new-length      -> an*topic-new-length
-       - an-page-title-style      -> an*topic-style
-       (TH): Recast diagnostic message to refer to "section", not
-       "volume" title.
-
-2022-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Refactor to reduce code size.  `UR` and `MT`
-       have identical implementations so...
-       (mV): Define new macro to perform the requisite actions, and...
-       (UR, MT): Make these into wrappers calling mV.
-
-2022-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (UR, MT): Fix problem with incorrect line
-       lengths and occasional "can't adjust" warnings when using
-       hyperlinks.  Reduce the line length within the diversion by the
-       amount of indentation used in the context.  Without this, lines
-       were getting set too short.  (You might think they'd be too
-       long, but when creating a new environment, the _formatter's_
-       default line length is used; that's 65n on terminal devices.)
-
-2022-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add test to ensure that link text (when the hyperlink
-       itself is not formatted because the device supports
-       hyperlinking) uses the correct line length and is adjusted.
-
-       * tmac/tests/an_adjust-link-text-correctly.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2022-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am: Refactor.
-       (MOSTLYCLEANFILES): Populate macro incrementally, adjacent to
-       the targets that build the files to be cleaned.  This will
-       enable cleaner refactoring in the future.
-       (DEFAULT_BASE35_FONTS): Add new macro storing the targets of the
-       PostScript Level 2 standard base 35 font descriptions.
-       (devpdffont_DATA): Populate using `DEFAULT_BASE35_FONTS`.
-       (URW_BASE35_FONTS): Add new macro, empty if [!HAVE_URW_FONTS];
-       and [HAVE_URW_FONTS] otherwise naming the `U` foundry font
-       description counterparts of the `DEFAULT_BASE35_FONTS`.
-       (devpdffont_DATA): Append `URW_BASE35_FONTS`.
-       ($(DEFAULT_BASE35_FONTS) $(URW_BASE35_FONTS)): Assert dependency
-       on "font/devpdf/download".  This isn't literally true, but
-       BuildFoundries generates all of these together, so if the
-       "font/devpdf/download" target rule runs successfully, the font
-       description files named in these macro expansions will be
-       generated too.
-
-2022-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Add new command-line option to
-       specify the generated font description's "spacewidth" parameter;
-       in commit bf7f6862c3, 2021-09-24, I made libgroff complain if
-       this directive is missing (since any font, even a "special" one,
-       can be selected as current and the formatter's behavior when
-       encountering an input space should be well-defined under that
-       circumstance).  Adding this option enables a well-formed font
-       description to be produced.
-       * src/utils/afmtodit/afmtodit.pl (usage):
-       * src/utils/afmtodit/afmtodit.1.man (Synopsis, Options):
-       Document it.
-       * NEWS: Add item.
-
-2022-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Use our own fatal exit
-       function instead of Perl's "die".
-       (croak): New subroutine emits argument as part of diagnostic
-       message and exits with status 1.
-       (usage): Exit with status 2, not 1, on usage errors.
-
-       * NEWS: Document new exit behavior.
-
-2022-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am (font/devpdf/download): Improve
-       comprehensibility of comments in generated "download" file.
-       Stop bracketing path element separator with spaces.
-
-2022-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Stop
-       capitalizing beginning of diagnostic message (per GNU Coding
-       Standards).  Drop ellipsis from end since no further diagnostics
-       relevant to that message are expected.  Trim trailing slashes
-       from font path elements.
-
-2022-11-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devps/devps.am: Refactor.  Turn two identical target
-       rules into a (BSD-make-style, old-fashioned) pattern rule.
-
-2022-11-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Rechristen self "GNU roff".
-
-2022-11-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/pic/pic.ypp: Slightly refactor.  Rename parameter
-       `form` (format) to `fmt` to make its nature as an abbreviation
-       clear.
-       (format_number, do_sprintf): Reorder null pointer equality
-       comparisons to avoid inadvertent lvalue assignment.
-       (do_sprintf): Declare lists of valid format conversion
-       specifiers and modifiers explicitly instead of as happenstance
-       literals.  Recast diagnostic messages to refer to "invalid", not
-       "bad" input; refer to input keyword correctly as "sprintf" (not
-       "snprintf"); and report the identity of the invalid conversion
-       specifier we reject.
-
-2022-11-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac (Fl, doc-flag-recursion, doc-print-recursive)
-       (doc-print-prefixes, Ar, Nm, Pa, Xr, doc-do-func, Fn)
-       (doc-do-func-args, Fo): Remove now-relic resets of type size to
-       previous value.  Since commit 5125754cdf, 23 February, no mdoc
-       macro ever changes the type size.
-
-2022-11-08  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Cater for invalid entries in download file.
-
-       * src/devices/gropdf/gropdf.pl: Test if path in the "download"
-       file points to a readable file.  Also change order so that the
-       first valid entry is used as the font to embed.  This replaces
-       previous order where last found entry is used.
-
-       Fixes <https://savannah.gnu.org/bugs/?62950>.
-
-2022-11-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Set page topic in roman in "Name" section.
-
-       * tmac/doc.tmac (Nm): If in the "Name" section of the page, set
-       argument(s) with the `No` (normal formatting) macro instead of
-       handling them...normally.  Since `Nm`'s usual behavior is to set
-       the next argument in boldface, in this circumstance it is set in
-       roman.  Aligns page rendering with man(7) and fixes a bug
-       documented in the 4.3BSD-Reno mdoc.samples(7) page (1990-06-22),
-       upon which the groff_mdoc(7) page is based.
-       * tmac/groff_mdoc.7.man (Bugs): De-document bug.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?62926>.
-
-2022-11-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common: Add internal register
-       `doc-in-name-section` to keep track of whether a macro is called
-       within the "Name" section of the document, to prepare a means of
-       fixing a long-standing bug with `Nm`.
-       (Sh): Canonicalize capitalization of section heading sooner.
-       Set or clear `doc-in-name-section` based on result.
-       (Rd): Add new register to dump.
-       * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
-       Handle new register.
-
-2022-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Use font CR, not CB, for `Cm` ("command modifier") and
-       `Fl` ("flag") macros on typesetters.
-
-       * tmac/mdoc/doc-ditroff (doc-Cm-font, doc-Fl-Font): Switch to
-       Courier roman from Courier bold.  This congrues better with
-       other `Li` literals, which were not in boldface.
-
-2022-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-nroff (doc-Li-Font): Switch from roman to bold.
-       On typesetters, the use of Courier (roman) plainly distinguishes
-       unquoted literals from their context.  On terminals there was no
-       such visible distinction.  Fortunately, in groff_mdoc(7) itself,
-       this does not result in a blinding blitz of boldface because the
-       `Ql` (quoted literal) macro is so often used, and it maintains
-       the roman style.  This change further aligns groff mdoc(7) with
-       groff man(7) style conventions.  (Also see how we handle
-       literals for typesetters and terminals in the "ms.ms" document.)
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Make `Sx` macro perform quotation, not italicization.
-       It's thorougly inconsistent with English composition practices
-       to refer to (sub)section headings within a document as if they
-       were major works.
-
-       * tmac/doc.tmac (Sx): Implement.
-       * tmac/mdoc/doc-ditroff (doc-Sx-font):
-       * tmac/mdoc/doc-nroff (doc-Sx-font): Delete.
-       * tmac/groff_mdoc.7.man (Section Cross References): Rename...
-       ((Sub)section cross references): ...to this.  Recognize
-       existence of `Ss` macro, curiously overlooked before.
-       * NEWS: Add item.
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Drop now-unused `doc-pageref` string.  It was nowhere
-       interpolated outside of state management macros.
-
-       * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
-       * tmac/mdoc/doc-common: Do it.
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (doc-header, doc-footer): Revise for
-       clarity and to use correct typefaces for titles.
-       (doc-header): Add new strings to ease title construction.
-       `doc-xref` stores the fully formatted page topic and section
-       number, e.g., "troff(1)"; `doc-abbv` stores the its potentially
-       abbreviated form when it is too long to fit.
-       (doc-footer): Use `doc-xref` as above.  Stop setting the `Os`
-       and `Dd` parameters in the ("semantic"?) font used for the
-       page's section number (probably unnoticed all these years
-       because the font used to render that was (Times) roman).
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-common: Rename strings for clarity.
-       - doc-document-title -> doc-page-topic
-       - doc-document-title-saved -> doc-page-topic-saved
-       * tmac/mdoc/doc-common: Use new name.
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff (doc-page-topic-font):
-       * tmac/mdoc/doc-nroff (doc-page-topic-font): Set man page topic
-       names in italics.
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Rename strings for clarity.
-       - doc-caption-font -> doc-page-topic-font
-       - doc-caption-font2 -> doc-page-section-font
-       * tmac/mdoc/doc-common (doc-header, doc-footer): Use new names.
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac: Delete suppression of `Pa` font selection in a
-       "Files" section.  This special handling was not documented.
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff (doc-Pa-font): Set file specifications
-       in italics on typesetters.  (Terminals already use italics.)
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff (doc-Xr-font):
-       * tmac/mdoc/doc-nroff (doc-Xr-font): Set man page topic cross
-       references in italics.
-
-2022-11-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Rename `doc-Tn-font-shape` to
-       `doc-Tn-font` for better parallelism with other font selection
-       strings for mdoc macros, since the `Tn` macro no longer
-       manipulates the type size.
-       * tmac/doc.tmac (Tn): Use new name.
-
-2022-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Debugging): Fix misleading claim.  The
-       arguments to the `tm`, `tmc`, and `tm1` requests are not read in
-       copy mode.  For example, you don't need to double backslashes to
-       get them to interpolate registers or strings.
-
-2022-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (an-end):
-       * tmac/mdoc/doc-common (doc-end-macro): Ensure that document
-       footer appears in continuous rendering mode even when a final
-       pending output line in the document is 1v from the page bottom.
-       Replace `fl` call with `br`, which IMO has clearer semantics.
-       Extend page length by 1v before doing so if the current vertical
-       position is within 1v of the page bottom.
-
-       Thanks to Alex Colomar for the report.
-
-2022-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man, mdoc]: Regression-test special case of continuous
-       rendering when the last pending output line in the document is
-       1v from the (notional) page bottom.
-
-       * tmac/tests/an_output-footer-when-continuously-rendering.sh:
-       * tmac/tests/doc_output-footer-when-continuously-rendering.sh:
-       Do it.
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2022-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (TE): Update diagnostic to mention another
-       failure mode: a man page that is simply a `so` request requires
-       soelim(1) to be run if the sourced page uses tbl(1).
-
-2022-11-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/xditview/xditview.am
-       ($(GXDITVIEW_GROFF_VERSION_H)): Run `$(MKDIR_P)` and `printf` as
-       separate rule commands in order to use them with `$(AM_V_at)`
-       and `$(AM_V_GEN)`, respectively.  Prevents noise from build.
-
-       Fixes <https://savannah.gnu.org/bugs/?63302>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Fix Savannah #63299.
-
-       * src/preproc/eqn/main.cpp: Revise input file line number
-       handling.
-       (read_line): Stop dealing with `current_lineno` here; it's now
-       up to its caller (`do_file()`) to manipulate the line number.
-       (do_file): When reading new file, initialize `current_lineno` to
-       1 instead of 0.  Reset it to zero when encountering EOF (so that
-       diagnostics will not include a line number at all).  When
-       performing nested call to `read_line()` to gather '.EN' from
-       input, increment the line number.  Write correct line number in
-       output groff `lf` requests; in groff, its first argument assigns
-       the number of the _next_ input line.  Increment line number at
-       end of outer `read_line()` loop.
-
-       Fixes <https://savannah.gnu.org/bugs/?63299>.  Thanks to Alex
-       Colomar for the report.
-
-2022-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Regression-test Savannah #63299.
-
-       * src/preproc/eqn/tests/\
-       diagnostics-report-correct-line-numbers.sh: Do it.
-       * src/preproc/eqn/eqn.am (eqn_TESTS, TESTS, EXTRA_DIST): Run
-       test.
-
-2022-10-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl (fail, warn, construct_command)
-       (version): Restore trailing newlines to `print`ed output.  They
-       went missing when I removed the assignment of the output record
-       separator in commit 6f2e367836, 24 October.  Thanks to Dave
-       Kemper for catching this.
-
-2022-10-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/preconv.cpp: Trivially refactor.  Rename
-       `default_encoding` to `fallback_encoding` for clarity.  Update
-       comments and debugging diagnostic messages accordingly.
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grolj4]: Absorb lj4_font(5) man page into grolj4(1).
-
-       * src/devices/grolj4/lj4_font.5.man: Delete, moving content...
-       * src/devices/grolj4/grolj4.1.man (Fonts): ...hither.
-
-       * doc/doc.am (GROFF_MAN_PAGES1):
-       * src/devices/grolj4/grolj4.am (man5_MANS, EXTRA_DIST): Stop
-       formatting and shipping removed page.
-
-       * src/roff/groff/groff.1.man:
-       * src/utils/hpftodit/hpftodit.1.man: Drop references to page.
-
-       Fixes <https://savannah.gnu.org/bugs/?61819>.
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `SN` register to configure subsection heading
-       indentation.
-
-       * tmac/doc.tmac: Recognize `SN` register if set on command line
-       and use groff man(7)-compatible default if it is not.
-       * tmac/mdoc/doc-common (Ss): Use this register instead of a
-       literal.
-       * tmac/groff_mdoc.7.man (Formatting with groff, troff, and
-       nroff): Document it.
-       * NEWS: Update item.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?62926>.
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `IN` register to configure paragraph
-       indentation.
-
-       * tmac/doc.tmac: Recognize `IN` register if set on command line
-       and use groff man(7)-compatible defaults if it is not.
-       * tmac/mdoc/doc-common (Sh): Use this register instead of
-       `doc-paragraph-indentation`.
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Stop setting pargraph indentation
-       defaults here.
-       * tmac/groff_mdoc.7.man (Formatting with groff, troff, and
-       nroff): Document it.
-       * NEWS: Update item.
-
-       * tmac/tests/doc_Mt-works.sh:
-       * tmac/tests/doc_indents-correctly.sh: Update test expectations.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?62926>.
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (Sh): Fix code style nit.  Set paragraph
-       indentation absolutely rather than incrementally.  mdoc(7)
-       doesn't have relative inset macros like man(7)'s `RS`/`RE`, so
-       the relative measurement could mislead the reader.  (The
-       section heading itself uses an indentation of 0.)
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Fix Debian #1022179.
-
-       * tmac/mdoc/doc-common (Ss): Indent entire subsection heading by
-       3 ens, even if it breaks across output lines.  (Change and
-       restore indentation explicitly instead of using a temporary
-       indent to achieve this.  Also indent absolutely by 3n instead of
-       retreating by one quarter inch.)
-
-       Fixes <https://bugs.debian.org/1022179>.  Thanks to наб for the
-       report.
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/doc_indents-correctly.sh: Add regression test for
-       Debian #1022179.
-
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Fix misleading register name.
-
-       * tmac/mdoc/doc-common (Sh):
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Rename `doc-subheader-indent` to
-       `doc-paragraph-indentation`, because the latter is what it's
-       used for.
-
-2022-10-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_POPPLER): Improve shell code portability.
-       Per the GNU Autoconf manual, "The -a, -o, '(', and ')' operands
-       are not present in all implementations, and have been marked
-       obsolete by Posix 2008.  ...portable uses of test should never
-       have more than four arguments, and scripts should use shell
-       constructs like '&&' and '||' instead."
-
-2022-10-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/preconv.cpp: Alter usage message handling.
-       (usage): Summarize purpose of program and steer reader to man
-       page (only) if help was explicitly requested, and exit
-       successfully from here...
-       (main): ...instead of calling scope.
-
-2022-10-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/preconv.cpp (usage): Use more
-       communicative metasyntactic variable names.
-       * src/preproc/preconv/preconv.1.man (Synopsis, Options): Align
-       with updated usage message.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp: Alter usage message handling.
-       (usage): Summarize purpose of program and steer reader to man
-       page (only) if help was explicitly requested, and exit
-       successfully from here...
-       (main): ...instead of calling scope.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grolbp/lbp.cpp: Alter usage message handling.
-       (usage): Summarize purpose of program and steer reader to man
-       page (only) if help was explicitly requested, and exit
-       successfully from here...
-       (main): ...instead of calling scope.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grolbp/lbp.cpp (main): Handle `getopt_long()`
-       return value more idiomatically.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grolbp/lbp.cpp: Fix code style nits.
-       (main): Use standard C library symbols `EXIT_SUCCESS` and
-       `EXIT_FAILURE` instead of integer literals as arguments to
-       `exit()`.  Add assertion.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/tty.cpp: Alter usage message handling.
-       (usage): Summarize purpose of program and steer reader to man
-       page (only) if help was explicitly requested, and exit
-       successfully from here...
-       (main): ...instead of calling scope.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/tty.cpp: Fix code style nits.
-       (main): Use standard C library symbols `EXIT_SUCCESS` and
-       `EXIT_FAILURE` instead of integer literals as arguments to
-       `exit()`.  Replace `assert(0)` call with communicative
-       predicate.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp: Alter usage message handling.
-       (synopsis, help): Coalesce these two functions...
-       (usage): ...into this one.  Summarize purpose of program and
-       steer reader to man page only if help was explicitly requested,
-       rather than blitzing user with text upon a usage error.  Also
-       drop option summary from usage message, as it duplicates
-       groff(1).
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Alter usage message handling.
-       (help): Rename this subroutine...
-       (usage): ...to this.  Summarize purpose of program and steer
-       reader to man page only if help was explicitly requested, rather
-       than blitzing user with text upon a usage error.  Also drop
-       option summary from usage message, as it duplicates grog(1).
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Drop relic code and comments.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Migrate expansion of Perl interpreter in shebang.
-       Use the same technique as afmtodit, mmroff, gropdf, and pdfmom.
-
-       * src/utils/grog/grog.am (grog): Replace "@PERL@" instead of
-       '^\(#! \).*perl'.
-       * src/utils/grog/grog.pl: Use "@PERL@" in shebang.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [afmtodit]: Give program a usage message.
-
-       * src/utils/afmtodit/afmtodit.pl: Add new scalar `want_help` of
-       Boolean sense.  Recognize new long option `--help`, attached to
-       `$want_help`.  Stop stripping off directory name components from
-       program name when emitting diagnostics.  No other groff program
-       does this (well, gropdf did until recently), and it might save
-       users some confusion if they're working with multiple copies of
-       afmtodit.
-       (usage): New subroutine reports usage message.  If help was
-       explicitly requested, summarize purpose of program and steer
-       reader to man page.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [afmtodit]: Migrate expansion of Perl interpreter in shebang.
-       Use the same technique as mmroff, gropdf, and pdfmom.
-
-       * src/utils/afmtodit/afmtodit.am (afmtodit): Replace "@PERL@"
-       instead of "/usr/bin/perl".
-       * src/utils/afmtodit/afmtodit.pl: Use "@PERL@" in shebang.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [gropdf] Give program a usage message.
-
-       * src/devices/gropdf/gropdf.pl: Add new scalar `want_help` of
-       Boolean sense.  Recognize new long option `--help`, attached to
-       `$want_help`.
-       (usage): New subroutine reports usage message.  If help was
-       explicitly requested, summarize purpose of program and steer
-       reader to man page.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/xditview/xditview.c (Syntax): "#if 0" out
-       reference to `-noPolyText` option, whose effect is likewise
-       bracketed in another file.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (enable_warning, disable_warning):
-       Recast diagnostic messages for clarity.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pfbtops]: Fix code style and diagnostic nits.
-
-       * src/utils/pfbtops/pfbtops.c (error): Exit with `EXIT_FAILURE`
-       status (from standard C library) instead of status 2.
-       (main): Exit with `EXIT_SUCCESS` status when writing version or
-       help information.  Exit with status 2 when dying due to usage
-       error.  Use `fprintf()` and `strerror()` to construct error
-       message when dying due to inability to open input file instead
-       of using `perror()`, which anonymizes its caller and thus should
-       never be used in serious work.  Avoid it like `gets()`.
-       * NEWS: Add item for exit status changes.
-
-       Continues the long process of fixing Savannah #52463.
-
-2022-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man pages]: Don't document macro package compatibility wrapper
-       directory if it's not used.
-
-       * Makefile.am (.man): Use sed to replace
-       '@COMPATIBILITY_WRAPPERS@' in man page text with value of
-       `compatibility_wrappers` shell variable.  Document its purpose.
-       * src/preproc/eqn/eqn.1.man (Description):
-       * src/preproc/grn/grn.1.man (Options):
-       * src/roff/groff/groff.1.man (Installation directories):
-       * src/roff/troff/troff.1.man (Environment): Mention
-       `@SYSTEMMACRODIR@` only if `@COMPATIBILITY_WRAPPERS@` expands to
-       something other than "no" (it could be "yes" or "manual").
-
-       Thanks to Alexander Kanavin and Jeremy Puhlman for the report.
-
-2022-10-21  Robert Yang <liezhi.yang@windriver.com>
-
-       * font/devpdf/util/BuildFoundries.pl:
-       * src/devices/gropdf/gropdf.pl:
-       * src/devices/gropdf/pdfmom.pl: Replace use of '-w' in shebang
-       line with "use warnings;".
-
-2022-10-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/fallbacks.tmac: Define fallback characters for many code
-       points from the Unicode General Punctuation Block.  This is to
-       ease migration from other documentation formats; in many cases
-       there are more idiomatic *roff ways of getting results that
-       typeset better and are amenable to fine tuning.  For instance,
-       Unicode defines spaces and dashes of various discrete widths;
-       when typesetting with *roff, you can have a space or dash (among
-       other things) of any length achievable by the output device.
-       * tmac/ps.tmac: Migrate non-breaking hyphen fallback character
-       definition from here to the foregoing.
-
-       Fixes <https://savannah.gnu.org/?58930>.  Thanks to Dave Kemper
-       for the report and discussion.
-
-2022-10-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac:
-       * tmac/s.tmac: Escape newlines when opening conditional blocks.
-
-       Fixes <https://savannah.gnu.org/?63197>.  Thanks to Bjarni Ingi
-       Gislason for the report and Dave Kemper for the quick fix.
-
-2022-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grodvi/dvi.cpp (usage):
-       * src/devices/grohtml/post-html.cpp (usage):
-       * src/devices/grolbp/lbp.cpp (usage):
-       * src/devices/grolj4/lj4.cpp (usage):
-       * src/devices/grops/ps.cpp (usage):
-       * src/devices/grotty/tty.cpp (usage):
-       * src/devices/xditview/xditview.cpp (usage):
-       * src/preproc/eqn/main.cpp (usage):
-       * src/preproc/grn/main.cpp (usage):
-       * src/preproc/html/pre-html.cpp (usage):
-       * src/preproc/pic/main.cpp (usage):
-       * src/preproc/preconv/preconv.cpp (usage):
-       * src/preproc/refer/refer.cpp (usage):
-       * src/preproc/soelim/soelim.cpp (usage):
-       * src/preproc/tbl/main.cpp (usage):
-       * src/roff/groff/groff.cpp (synopsis, help):
-       * src/roff/nroff/nroff.sh:
-       * src/roff/troff/input.cpp (usage):
-       * src/utils/addftinfo/addftinfo.cpp (usage):
-       * src/utils/hpftodit/hpftodit.cpp (usage):
-       * src/utils/indxbib/indxbib.cpp (usage):
-       * src/utils/lkbib/lkbib.cpp (usage):
-       * src/utils/lookbib/lookbib.cpp (usage):
-       * src/utils/pfbtops/pfbtops.c (usage):
-       * src/utils/tfmtodit/tfmtodit.cpp (usage):
-       * src/utils/xtotroff/xtotroff.c (usage): Update usage message.
-       Present different modes of operation on separate output lines.
-       Sort options in English lexicographic order.  Document help
-       option(s) as last mode of operation.
-
-2022-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl: Revise handling of argument 0.
-       Rename scalar `progname` to `prog` for brevity (and preparation
-       for writing a usage message).  Also stop stripping off directory
-       name components from it.  No other groff program does this, and
-       it might save users some confusion if they're working with
-       multiple copies of gropdf.
-
-2022-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Migrate terminology from "paper size" to "paper format" or
-       "paper dimensions" as appropriate in documentation and
-       diagnostic messages.  "Format" implies an orientation (which can
-       be overridden in many cases) whereas size does not.  When only
-       the magnitudes of measurements are at issue (mainly for internal
-       purposes), use the term "dimensions".
-
-       * NEWS:
-       * PROBLEMS:
-       * doc/groff.texi:
-       * m4/groff.m4 (GROFF_PAGE):
-       * man/groff_font.5.man:
-       * man/groff_tmac.5.man:
-       * src/devices/grodvi/dvi.cpp (main):
-       * src/devices/grolbp/grolbp.1.man:
-       * src/devices/grolbp/lbp.cpp (main):
-       * src/devices/grolj4/grolj4.1.man:
-       * src/devices/grolj4/lj4.cpp (lj4_printer::lj4_printer, main):
-       * src/devices/grolj4/lj4_font.5.man:
-       * src/devices/gropdf/gropdf.1.man:
-       * src/devices/grops/grops.1.man:
-       * src/devices/grops/ps.cpp (main):
-       * src/roff/groff/groff.1.man:
-       * tmac/papersize.tmac: Do it.
-
-2022-10-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff (doc-left-parenthesis)
-       (doc-right-parenthesis, doc-left-bracket, doc-right-bracket):
-       Drop thin and hair space escape sequences from these string
-       definitions.  (Also, doc-right-bracket was inconsistent with
-       doc-left-bracket, the former inserting horizontal motion only
-       before the bracket character.)  Eliminates excess space when
-       using Pq, Po, Pc and Bq, Bo, Bc macros and formatting for
-       typesetters, and aligns output with behavior of `Pq` and `Bq` as
-       documented in groff_mdoc(7).
-
-       Fixes <https://bugs.debian.org/1021795>.  Thanks to наб for the
-       report.
-
-2022-10-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff: Use groff-canonical typeface names in
-       font selection escape sequences.  Migrate 'C' to 'CR' and 'CO'
-       to 'CI'.  (Admittedly, "Courier oblique" is more pedantically
-       correct than "Courier italic".  But the iron ball of Unix troff
-       history and its style trio [later quartet] of "R", "I", "B"
-       {then "BI"} will not be ignored.)
-
-2022-10-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff: Drop nilpotent type size escape
-       sequences from string definitions.
-
-2022-10-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Document a CSTR #54 erratum regarding \n(st and \n(sb.
-
-       * doc/groff.texi (Page Motions):
-       * man/groff.7.man (Writable registers):
-       * man/groff_diff.7.man (New registers): Do it.
-
-       * PROBLEMS: Further clarify.  Note DWB and Heirloom behavior.
-
-2022-10-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/main.cpp (read_line): Fix switched test
-       consequents when updating `current_lineno`.
-
-2022-10-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/xtotroff/xtotroff.c (main): Annotate "xtotroff" as a
-       GNU program in version information.
-
-2022-10-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/xditview/xditview.am
-       ($(GXDITVIEW_GROFF_VERSION_H): Perform correct substitution to
-       get groff version string into `Version_string` C symbol.
-       Continues commit c73decb58f, 9 October.
-
-2022-10-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.1.man (Files): Fix ordering error.
-
-       Fixes <https://savannah.gnu.org/bugs/?63228>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-10-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/lex.cpp (get_delimited_text): Clear line
-       number when hitting EOF.
-       * src/preproc/eqn/main.cpp: Revise end-of-file handling.  Clear
-       line number upon reaching EOF so that we don't report a nonsense
-       value one greater than the number of lines in the input file.
-       (read_line): Boolify.  Make static (local linkage only), since
-       it has no external callers.  Introduce new Boolean variable
-       `is_end_of_file`.  Clear `current_lineno` if EOF, and increment
-       it otherwise.
-       (do_file, main): Clarify diagnostic messages.
-
-2022-10-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Improve diagnostics involving unprintable characters.
-
-       * src/preproc/eqn/main.cpp (input_char_description): New
-       function constructs a human-readable string describing
-       characters.
-       (read_line, inline_equation, main): Call new function and adjust
-       diagnostic message wording to accommodate the phrase it returns.
-
-       Fixes <https://savannah.gnu.org/bugs/?63218>.
-
-2022-10-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Improve diagnostics.
-
-       * src/preproc/eqn/lex.cpp (file_input::~file_input):
-       * src/preproc/eqn/main.cpp (main): Die if `fclose()` fails and
-       report underlying system error.
-       (inline_equation): Identify inline equation context.
-
-2022-10-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (2c, 1c): Throw diagnostic if changing columnation
-       with a footnote pending.  This isn't necessarily an error per
-       se, but in many cases it will flag an undesirable page layout
-       due to the limited flexibility of me(7)'s footnote support at
-       present.  See <https://savannah.gnu.org/bugs/?63176>.
-
-2022-10-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/main.cpp: Fix code style nits.
-       (usage): Align output with man page.  Document separate
-       invocation modes separately.
-       (main): Use standard C library symbols `EXIT_SUCCESS` and
-       `EXIT_FAILURE` with `exit()` calls instead of integer literals.
-       Replace `assert(0)` call with communicative predicate.  Check
-       return value of `fclose()`, and exit with fatal error if it
-       fails.  Distinguish `ferror()` status and `fflush(stdout)`
-       failures when cleaning up before exit.
-
-2022-10-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_color_draw_node): Clarify
-       diagnostic.
-
-2022-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/dvi.tmac: Always render \[aq] as a neutral apostrophe.
-       Thanks to the TC fonts, we can do this even when the default CM
-       text fonts are in use.
-
-       Fixes <https://savannah.gnu.org/bugs/?63200>.
-
-2022-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/ec.tmac: Remove apparently unnecessary remappings of
-       styles (and reassertion of style slots in the font mounting
-       position list, albeit in an unusual order (RBI instead of RIB)).
-       This code frustrated the rendering of man pages with post-1.22.4
-       groff for the 'dvi' output device when using EC fonts.  Instead
-       remap the T and H family typefaces in all four styles
-       explicitly.  (The CW and CWI faces were already handled.)  Also
-       add remappings of groff+PostScriptish font names "CB" and "CBI"
-       to CW EC faces of normal weight, corresponding to dvi.tmac; see
-       commits 529e2ca0c4, 2002-03-23 and c9741da6c0, 2021-05-06.
-
-       Fixes <https://savannah.gnu.org/bugs/?63194>.
-
-2022-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an_works-with-ec.sh: Add regression test for
-       Savannah #63194.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/ec_works.sh: Add unit test to validate use of EC
-       fonts when "-mec" option given.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/latin2.tmac:
-       * tmac/latin5.tmac:
-       * tmac/latin9.tmac: Perform the character remapping shenanigans
-       of the fix for Savannah #63112 only if the output device is
-       "latin1" (a terminal using an 8-bit character encoding).  Only
-       then can we be sure that Latin-1 glyphs will be unavailable when
-       other encodings are used and that `\N` escape sequences will
-       identify correct glyph indices in a font (because there is no
-       font per se accessible to groff--simply a terminal implementing
-       a character encoding).
-
-2022-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (GetType1): Clarify diagnostic.
-       When failing to open a font file for embedding in a PDF, mention
-       this context.
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.tables: Update against Unicode 15.
-       No substantive changes.
-
-       Fixes <https://savannah.gnu.org/bugs/?63188>.
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: If URW fonts were located, add the directory
-       where they were found to the configuration report.
-
-       Attempts to fix <https://savannah.gnu.org/bugs/?62860> (2/2).
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4: Try to make gropdf's search for URW font files
-       more deterministic.  To disambiguate cases where multiple--not
-       necessarily identical--copies may be found on the system, search
-       _only_ in the directory given to the `--with-urw-fonts-dir`
-       configure option, if present.  This populates the "Foundry" file
-       generated by the build, causing gropdf to search there first.
-       (GROFF_URW_FONTS_PATH): Stop `AC_SUBST`ing `urwfontsdir` here.
-       (GROFF_URW_FONTS_CHECK): `AC_REQUIRE` `GROFF_URW_FONTS_PATH` to
-       be run first.  If `urwfontsdir` is not null, search only there
-       for URW fonts.  Assign `urwfontsdir` the value of the directory
-       in which the fonts are found.  Assign it an empty value if none
-       are found.  Either way, `AC_SUBST` the variable.
-
-       Attempts to fix <https://savannah.gnu.org/bugs/?62860> (1/2).
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (LoadFont): Clarify diagnostic.
-       gropdf opens "fonts" in two distinct ways.  On the one hand, it
-       opens groff font description files for essentially all
-       nontrivial output.  On the other, it may open actual Type 1 font
-       files for embedding in a PDF.  Make failure of the former case
-       less confusable with the latter.
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Document new XN/XH and related macros.
-
-       * doc/groff.texi (Creating a table of contents):
-       * doc/ms.ms (Creating a table of contents):
-       * tmac/groff_ms.7.man (Creating a table of contents): Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?63110>.
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [gxditview]: Support `-version`, `--version` option.  As a C
-       program, gxditview had no access to the (C++) libgroff
-       `Version_string` symbol, so construct a header file to store
-       this datum at build time.  If groff gets other user-facing C
-       programs, we should consider generating this header in
-       src/include instead.
-
-       * src/devices/xditview/xditview.am: Generate "groff_version.h"
-       file.
-       (GXDITVIEW_GROFF_VERSION_H): Define new macro.
-       ($(GXDITVIEW_GROFF_VERSION_H)): Define target to generate file.
-       (XDITVIEW_GENHDRS): Add $(GXDITVIEW_GROFF_VERSION_H).
-
-       * src/devices/xditview/xditview.c: Include new header file.
-       (Syntax): Report newly supported options.
-       (main): Recognize and handle new options.
-
-       * src/devices/xditview/gxditview.1.man (Synopsis): Document
-       them.
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [gxditview]: Update usage message production and contents.
-
-       * src/devices/xditview/xditview.c: Use C99 Boolean type.
-       (Syntax): Accept additional Boolean argument indicating whether
-       the usage message is to be issued due to an error.  Write
-       message to stderr if so, and stdout otherwise.  Stop presuming
-       length of output line; guessing where to wrap is unreliable due
-       to variable terminal width and length of argv[0].  Write one
-       line per invocation mode of the program.  Stop duplicatively
-       documenting standard X Toolkit options.  Exit with standard C
-       library `EXIT_FAILURE` status if there was an error, and
-       `EXIT_SUCCESS` otherwise.
-       (main): Refactor to prepare for `--version` support.
-
-       * src/devices/xditview/gxditview.1.man (Synopsis): Sync list of
-       options with usage message.
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Recognize "--version" as
-       synonym for "-v".  To achieve this, use Getopt::Long instead of
-       Getopt::Std.
-       * src/utils/afmtodit/afmtodit.1.man (Synopsis, Options):
-       Document it.
-
-2022-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/pdfmom.pl: Recognize "--version" as synonym
-       for "-v".
-       * src/devices/gropdf/pdfmom.1.man (Synopsis, Description):
-       Document it.
-
-2022-10-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl (version): Identify as a GNU program.
-
-2022-10-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grolj4/grolj4.1.man (Typefaces): Add new
-       subsection.
-
-       Fixes <https://savannah.gnu.org/bugs/?60929>.  Thanks to T. Kurt
-       Bond for the report.
-
-2022-10-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/meref.me.in (Columnated Output): Document persistence of
-       `$s` register value across columnation mode changes.
-
-       Fixes <https://savannah.gnu.org/bugs/?62717>.  Thanks to Dave
-       Kemper for the report.
-
-2022-10-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/meref.me.in: Annotate empty default arguments more
-       consistently.
-
-       Fixes <https://savannah.gnu.org/bugs/?62801>.  Thanks to Dave
-       Kemper for the report.
-
-2022-10-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/meref.me.in: Fix documentation error.
-       (Summary) <\_>: Describe as "underrule", not "underscore".
-       These are distinct: the latter is a glyph; the former is drawn
-       by typesetters and rendered with SGR attributes on terminals.
-
-2022-10-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * NEWS: Advise users of changes to "name" directive handling in
-       font description files.
-
-       Fixes <https://savannah.gnu.org/bugs/?61423>.  Thanks to Dave
-       Kemper for the report.
-
-2022-10-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/number.cpp: Refactor and fix code style nits.
-       Boolify and rename static (local) functions.
-       - parse_expr   -> is_valid_expression
-       - start_number -> is_valid_expression_start
-       - parse_term   -> is_valid_term
-       Rename preprocessor macro `SCALE_INDICATOR_CHARS` to
-       `SCALING_UNITS`.
-       (is_valid_expression, is_valid_term): Rename parameters and
-       demote them from `int` to `bool`.
-       - scaling_indicator -> scaling_unit (no demotion)
-       - parenthesised     -> is_parenthesized
-       - rigid             -> is_mandatory
-       (is_valid_expression_start, is_valid_expression, is_valid_term):
-       Return Boolean rather than integer literals.
-       (get_vunits, get_hunits, get_number_rigidly, get_number)
-       (get_integer): Update call sites of renamed functions.  Replace
-       Boolean-valued integer literals used as Booleans with Boolean
-       literals and annotate their purposes.  (See <https://\
-       stackoverflow.com/questions/38076786/\
-       why-doesnt-c-support-named-parameters>.)
-       (get_vunits, get_hunits, get_number, get_integer): Replace `0`
-       in assertions with a communicative predicate.  In all of these
-       it's an unhandled `switch()` case.
-
-2022-10-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_expr_test, do_zero_width): Use
-       better terminology in diagnostic messages.
-
-2022-10-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Fix Savannah #63151.
-
-       * src/roff/troff/input.cpp (read_draw_node): Throw "delim"
-       warning diagnostic when a drawing escape sequence ends the line
-       without a closing delimiter.
-
-       Fixes <https://savannah.gnu.org/bugs/?63151>.
-
-2022-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/fallbacks.tmac: Define fallbacks for characters in ISO
-       Latin-{2,5,9} but not in Latin-1.
-
-       Fixes <https://bugs.debian.org/782903>.  Thanks to Rafal Pietrak
-       for the report.
-
-2022-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Fix Savannah #63149.
-
-       * src/roff/troff/reg.cpp (alter_format): Throw comprehensible
-       diagnostic when input delete character encountered in register
-       format.
-
-       Fixes <https://savannah.gnu.org/bugs/?63149>.
-
-2022-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Describe an input delete character comprehensibly.
-
-       * src/roff/troff/input.cpp (token::description): The delete
-       character (ISO 127 decimal, EBCDIC 7) is a valid `TOKEN_CHAR`
-       but is not printable.  Don't attempt to output it literally in
-       diagnostics; describe it in a phrase instead.
-
-2022-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Apply consistent terminology.
-
-       * src/roff/troff/input.cpp: Rename functions to better align
-       with our documentation, and decouple their names from an
-       assumption of diagnostic severity.  Also give them imperative
-       names since they are called for their side effects, not their
-       return values.
-       - empty_name_warning -> diagnose_missing_identifier
-       - non_empty_name_warning -> diagnose_invalid_identifier
-       (diagnose_missing_identifier): Refer to absent operand as
-       "identifier", not "name", in diagnostic messages since the
-       latter (strictly) refers to the request/macro/string/diversion
-       name space, and this function is also used to gather register
-       identifiers.
-
-2022-10-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Fix Savannah #63112 (3/3).
-
-       * tmac/latin2.tmac: Replace characters that ISO Latin-1 has but
-       Latin-2 doesn't.  Map characters that ISO Latin-2 has and
-       Latin-1 doesn't to their numeric code points.
-
-2022-10-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Regression-test Savannah #63112 (3/3).
-
-       * tmac/tests/latin2_works: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Fix Savannah #63112 (2/3).
-
-       * tmac/latin5.tmac: Replace characters that ISO Latin-1 has but
-       Latin-5 doesn't.  Map characters that ISO Latin-5 has and
-       Latin-1 doesn't to their numeric code points.
-
-2022-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Regression-test Savannah #63112 (2/3).
-
-       * tmac/tests/latin5_works: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Fix Savannah #63112 (1/3).
-
-       * tmac/latin9.tmac: Replace characters that ISO Latin-1 has but
-       Latin-9 doesn't.  Map characters that ISO Latin-9 has and
-       Latin-1 doesn't to their numeric code points.
-
-2022-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Regression-test Savannah #63112 (1/3).
-
-       * tmac/tests/latin9_works: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp: Refactor to parallelize logic in
-       similar routines; namely, those handling escape sequences that
-       accept newlines as argument delimiters.
-
-2022-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp: Fix inconsistencies in handling of
-       escape sequences that accept newlines as delimiters.  Some threw
-       spurious warnings as in Savannah #63011; others failed to treat
-       a newline-terminated escape sequence also as the ending of an
-       input line.
-       (do_name_test, do_zero_width): Suppress spurious warning.
-       (do_zero_width, do_width, do_special): Synthesize newline to
-       terminate input line.
-
-2022-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/\
-       some_escapes_accept_newline_delimiters.sh: Add test cases for
-       `\A` and test formatted output of escape sequences, not just the
-       absence of diagnostics from permitted use of newlines as
-       argument delimiters.
-
-2022-09-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libdriver/input.cpp (do_file): Make use of
-       positioning commands before the first page is started fatal
-       errors; they suggest ill-formed input.  The 'p' command
-       clobbers the vertical position anyway.  (See
-       https://bugs.debian.org/421437 for discussion.)
-
-2022-09-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdf.tmac: Add inclusion guard; if a `pdfmark` macro is
-       already defined, skip inclusion of this file.  Unfortunately
-       there are multiple name collisions with pdfmark.tmac.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp:
-       * src/roff/troff/request.h: Trivially refactor.  Boolify
-       `interpolate_macro` and `request::invoke`.  Also rename
-       parameter `no_next` to `do_not_want_next_token`, exposing
-       potentially confusing interface design.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (spring_trap, interpolate_string)
-       (interpolate_string_with_args): Improve error diagnostics: when
-       a sprung trap or an interpolation fails because it's being
-       attempted on a request, say so explicitly and _name_ it.  If the
-       argument to the trap-planting request or to a string
-       interpolation escape sequence is itself an interpolation, this
-       name might not be obvious.  Consider:
-         .wh \n[pos] \*[mac]
-         .em \*[mac]
-         .itc 1 \*[mac]
-         \*[\*[mac]]
-       Supplying this information requires no additional overhead.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (interpolate_string): Trivially
-       refactor.  Rename function parameter from `s` to `nm` to more
-       obviously align with `interpolate_string_with_args()`.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_zero_width, token::description)
-       (interpolate_string, interpolate_string_with_args)
-       (token::get_char): Revise diagnostic messages to stop presuming
-       the identity of the escape character.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (set_escape_char): Recast error
-       message to describe attempted operation and tell the user what
-       we're doing about being instructed to use an invalid escape
-       character.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_size): Be more helpful to
-       ambiguous type size escape sequence users; offer advice in
-       terms of the current escape character.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp (main): Fix SEGV when exiting
-       gxditview.  The `postdriver` pointer always referred to
-       allocated memory except when the `-X` option was given; it was
-       then assigned the address of a #defined string literal.  It was
-       thus statically allocated and an error to attempt to `free()`
-       it.  Duplicate the string on the heap instead so that we can
-       clean up uniformly regardless of postprocessor.  Problem caused
-       by me when introducing `xexit()` in commit 6769e56aab, 20 June.
-
-2022-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (@o, n2, sk (f, ++): Consistently call `@err`
-       macro with `do`.
-
-2022-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Initialize new register `_f`, the value of `$m`
-       {column count} of the previous pending footnote, to zero,
-       meaning there is no previous pending footnote.
-       (@o): Emit diagnostic when flushing footnotes into a different
-       column layout than the pending footnote last added.  Set `_f` to
-       zero.
-       ((f): Emit diagnostic when enqueueing footnote using a different
-       column layout than the previous pending footnote used.  Set `_f`
-       to `$m`.
-
-       Fixes <https://savannah.gnu.org/bugs/?58736>.  Thanks to Dave
-       Kemper for the report and discussion.
-
-2022-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Explicitly initialize and annotate internal
-       register `?f`.
-
-2022-09-08  Nikita Ivanov <nikita.vyach.ivanov@gmail.com>
-
-       * tmac/ps.tmac: Fallback definitions for glyphs that usually
-       come from special fonts should use `schar` instead of `fchar`.
-       {Define fallback special characters using `schar` instead of
-       `fchar` for glyphs that we do not expect to find in text fonts;
-       that is, they don't have bold, italic, and bold-italic stylistic
-       variants.  This means all special character definitions in the
-       file except for rules, ligatures, and digraphs.  Problem dates
-       back to a series of commits from March 2002 to February 2003,
-       straddling the introduction of the `schar` request in November
-       2002. --GBR}
-
-       Fixes <https://savannah.gnu.org/bugs/?62955>.
-
-2022-09-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Slightly simplify new `XN` macro feature to align it more
-       closely with Berkeley TOC macro behavior; don't prepend the
-       table of contents entry with the section number (`\*[SN]`).  If
-       desired, a document can define `XN-REPLACEMENT`.  This does not
-       regress "pdfmark.ms" because it uses an alternative, older
-       implementation of these features from "spdf.tmac".
-
-       * tmac/s.tmac (XH-UPDATE-TOC): Update comments.
-       (XN-REPLACEMENT): Do it.
-
-2022-09-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdf.tmac (pdf*href-I): Call `pdf:error` macro by its
-       correct name.  Both this macro file and
-       contrib/pdfmark/pdfmark.tmac seem to want to use the 'pdf'
-       prefix for their macro names, with much confusing overlap.
-       Problem dates back to commit 87046b2948, 2011-07-26.
-
-2022-09-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS_CHECK): If Ghostscript or awk are
-       unavailable, skip only the prepopulation of the URW font search
-       path instead of the entire check.  This way we still locate the
-       URW fonts if they are in one of several standard locations.
-
-       Fixes <https://savannah.gnu.org/bugs/?62775>.
-
-2022-09-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.
-
-       * src/roff/troff/input.cpp (do_name_test): Boolify and rename
-       local variables to..."impredicate" their names.
-         - bad_char -> got_bad_char
-         - some_char -> got_some_char
-
-2022-09-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grodvi, ...]: Trivially refactor.
-
-       Tidy up #includes of the "assert.h" header, which we locally
-       provide to ensure a C99-conformant implementation.  Drop
-       inclusion of header from files that don't directly need it, add
-       it where they do, and spell the inclusion consistently with
-       double quotes to cue the reader of its local status.
-
-       * src/devices/grodvi/dvi.cpp:
-       * src/devices/grolj4/lj4.cpp:
-       * src/libs/libdriver/printer.cpp:
-       * src/preproc/eqn/box.cpp:
-       * src/preproc/eqn/delim.cpp:
-       * src/preproc/eqn/pile.cpp:
-       * src/preproc/eqn/script.cpp: Add inclusion.
-
-       * src/include/driver.h:
-       * src/libs/libgroff/fontfile.cpp:
-       * src/preproc/eqn/eqn.h:
-       * src/preproc/html/pushback.cpp:
-       * src/preproc/refer/refer.h:
-       * src/preproc/tbl/table.h:
-       * src/utils/addftinfo/addftinfo.cpp: Drop inclusion.
-
-       * src/include/itable.h:
-       * src/include/stringclass.h:
-       * src/libs/libbib/linear.cpp:
-       * src/libs/libbib/search.cpp:
-       * src/libs/libgroff/color.cpp:
-       * src/libs/libgroff/font.cpp:
-       * src/libs/libgroff/nametoindex.cpp:
-       * src/libs/libgroff/prime.cpp:
-       * src/libs/libgroff/searchpath.cpp:
-       * src/preproc/html/pre-html.cpp:
-       * src/preproc/preconv/preconv.cpp:
-       * src/preproc/soelim/soelim.cpp:
-       * src/utils/indxbib/indxbib.cpp:
-       * src/utils/lkbib/lkbib.cpp:
-       * src/utils/lookbib/lookbib.cpp: Respell inclusion.
-
-       Fixes <https://savannah.gnu.org/bugs/?63079>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-09-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff, ...]: Trivially refactor.
-
-       Boolify and rename internal library function from
-       `invalid_input_char` to `is_invalid_input_char`.
-
-       * src/include/lib.h: Do it.
-
-       * src/libs/libgroff/font.cpp (text_file::next_line):
-       * src/preproc/eqn/lex.cpp (file_input::read_line):
-       * src/preproc/eqn/main.cpp (read_line, main):
-       * src/preproc/pic/lex.cpp (file_input::read_line,
-       simple_file_input::get, simple_file_input::peek):
-       * src/preproc/pic/main.cpp (top_input::get, top_input::peek)
-       (do_file):
-       * src/preproc/refer/command.cpp (input_stack::push_file):
-       * src/preproc/refer/refer.cpp (do_file, do_bib):
-       * src/roff/troff/env.cpp (environment::make_tag):
-       * src/roff/troff/input.cpp (file_iterator::fill)
-       (file_iterator::peek, get_char_for_escape_parameter)
-       (transparent_translate, read_request, asciify)
-       (input_char_description, read_string, transparent_file,
-       set_string): Update call sites.
-
-2022-09-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Tweak diagnostic messages.
-
-       * src/roff/troff/input.cpp (token::description)
-       (input_char_description): Consistently use articles in
-       descriptive noun phrases.
-
-2022-09-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Tweak diagnostic messages.
-
-       * src/roff/troff/input.cpp (non_empty_name_warning): Say
-       "identifier", not "name", in diagnostic message; it can be
-       thrown for attempted assignments to invalid register
-       identifiers, and some of our documentation refers to identifiers
-       in the name space shared by requests, macros, strings, and
-       diversions as "names".
-
-       * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file):
-       * src/roff/troff/input.cpp (get_char_for_escape_parameter)
-       (token::usable_as_delimiter, non_empty_name_warning)
-       (pipe_source, psbb_locator::psbb_locator, open_request)
-       (opena_request, define_class, pipe_output, system_request):
-       Consistently say "_is_ not allowed".  The zero copula poses too
-       great a risk of incomprehension IMO.
-
-2022-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Add internal string `doc-Lk-font` to manage the typeface
-       in which to render URIs.
-
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Add it.  Use roman instead of (Courier)
-       bold.  This is more consistent with man(7)'s `UR` and less with
-       mandoc(1).
-
-       * tmac/doc.tmac (Lk): Use it instead of `doc-Sy-font`.
-
-2022-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Fix Savannah #59738.
-
-       * tmac/doc.tmac (Lk): Process further macro arguments more like
-       other macros do, calling `doc-print-recursive`.  This permits
-       recognition of end-of-sentence punctuation in the argument list.
-
-       Fixes <https://savannah.gnu.org/bugs/?59738>.
-
-2022-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Regression-test Savannah #59738.
-
-       * tmac/tests/doc_Lk-respect-sentence-ending-punctuation.sh: Do
-       it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Fix code style nit.  Rename `doc-arg-limit` to
-       `doc-arg-count`.  This register doesn't track any sort of limit
-       on the number of arguments you can give to an mdoc(7) macro, or
-       anything like that.  It is simply a count of the number of
-       arguments visible to the currently operating macro.
-
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-common:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff:
-       * tmac/mdoc/doc-syms: Do it.
-
-2022-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Fix errors in documentation regarding which escape
-       sequences accept newlines as argument delimiters, and other
-       inaccuracies.
-
-       * doc/groff.texi (Escape Sequences): Cover general cases before
-       exceptional ones.  Leaders can be used as argument delimiters.
-       Call out letters and numerals as (usually) usable as well.
-       Correct an almost completely inaccurate list of escape sequences
-       that accept a newline as an argument delimiter: \A, \b, \o, \w,
-       \X, and \Z do; \B does not.  Correct example of use of newline
-       as delimiter with \o escape sequence.  Stop referring to the
-       decimal point as an "operator".  Drop "newline" from a list of
-       prohibited delimiters by several escape sequences since it has
-       already been discussed.
-
-       * man/groff.7.man (Escape sequences): Replace weaksauce cross
-       reference to our Texinfo manual with a proper discussion of
-       acceptable delimiters in escape sequences, synced with the
-       foregoing change.  Stop using quotation marks around escape
-       sequences, except for "\ " which obviously needs it.
-
-       Fixes <https://savannah.gnu.org/bugs/?63002>.  Thanks to Dave
-       Kemper for the report.
-
-2022-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Don't throw a spurious warning when using newline as
-       delimiter with the few escape sequences that permit this.
-
-       * src/roff/troff/input.cpp (do_overstrike, do_bracket, do_width)
-       (do_special): Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?63011>.  Thanks to Bjarni
-       Ingi Gislason for the report and Dave Kemper for the discussion.
-
-2022-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Add regression test for Savannah #63011.
-
-       * src/roff/groff/tests/\
-       some_escapes_accept_newline_delimiters.sh: Do it.
-       * src/roff/groff/groff.am (groff_TESTS): Run it.
-
-2022-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_special): Fix code style nit;
-       align function definition with declaration (internal linkage).
-
-2022-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/ps.cpp (ps_printer::special)
-       (resource_manager::process_file): Fix code style nit.  Mark
-       static structs initialized within functions and never modified
-       thereafter as `const`.  This attempts to work around an apparent
-       false positive from AddressSanitizer.  If it doesn't pacify
-       ASAN, please explain to me how constant structure members
-       initialized to string literals and pointers to functions within
-       the translation unit can ever be null.  If that is infeasible,
-       please report a bug to your compiler vendor.
-
-       Fixes (addresses, at any rate) https://savannah.gnu.org/bugs/\
-       ?61643>.  Thanks to Bjarni Ingi Gislason for the report.
-
-2022-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Refactor: relocate most rendering option handling to
-       "doc.tmac" from "doc-ditroff" and "doc-nroff", cutting down on a
-       lot of duplication.  The `S` register retains separate handling.
-
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Do it.
-
-2022-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff (doc-setup-page-layout):  In troff mode,
-       if the user does not define the `LL` register, use the device's
-       default line length, not 6.5 inches.  If the user does not
-       define the `LT` register, make the default line length for
-       titles the same as the regular line length, not 6.5 inches
-       independently of it.  This is consistent with man(7)'s handling
-       of `LL` and `LT`.
-
-2022-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `AD` string to set default adjustment mode.
-
-       * tmac/mdoc/doc-common (Sh): Set adjustment mode to
-       user-specified default, not troff's default (and not only in
-       troff mode).
-
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Process `AD` string setting from command
-       line as man(7) does.
-
-       * tmac/groff_mdoc.7.man (Formatting with groff, troff, and
-       nroff): Document it.
-
-       * NEWS: Add and update items.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?63046>.
-
-2022-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac (doc-tag-list): Fix code style nit: don't give
-       `ad` request a numeric argument.  Say `l` instead of `0`.
-
-2022-09-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Align inter-paragraph spacing with man(7).
-
-       * tmac/mdoc/doc-common: Use `doc-paragraph-space` when spacing
-       prior to section and subsection headings instead of spacing by
-       the 1v default.
-       * tmac/mdoc/doc-ditroff: Align inter-paragraph distance amount
-       in troff mode with man(7), reducing to 0.4v from 0.5v.
-
-2022-09-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-nroff: Map monospaced fonts (CR, CB, CI, CBI) to
-       standard styles as man(7) has done for 15 years.  This silences
-       warnings from the formatter when a man page attempts to use
-       fonts from the Courier family in tbl(1) tables, which is about
-       the only place a reasonable man page attempts such a thing.
-
-2022-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Stop prefixing center header with name of operating
-       system.  This was hard-coded to "BSD" and stuck on all mdoc(7)
-       pages using a default manual section number, regardless of host
-       operating system.  Bad idea.  Further, the argument to the `Os`
-       call, if any, or a default, is always disclosed in the left
-       footer.
-
-       * tmac/mdoc/doc-common: Do it.
-       (Dt): Initialize `doc-volume` as empty and annotate it;
-       calling the macro with a numeric second argument overrides the
-       fallback default of "LOCAL".  A slash is no longer needed to
-       separate a recognized architecture string from the OS name, so
-       drop it.
-
-       * tmac/tests/doc_smoke-test.sh: Update test expectations.
-
-2022-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Drop dead code.  The register
-       `doc-volume-operating-system-ateol`, introduced in groff 1.18
-       {July 2002}, was being tested but never set to a nonzero value.
-       In fact, it seems never to have been.
-
-       * tmac/mdoc/doc-common: Get rid of it...
-       (Dt): ...and the dependent block.
-
-2022-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Make `Ux` render "Unix" in mixed case.
-
-       * tmac/mdoc/doc-syms (Ux): Do it.  Also remove local string
-       after we're done with it.
-
-       Continues work begun prior to groff 1.22.4 release.
-
-2022-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Align spacing around headers with man(7).
-
-       * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
-       * tmac/mdoc/doc-common (Rd):
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Stop defining, saving, and restoring
-       `doc-header-space`.
-
-       * tmac/mdoc/doc-common (doc-header): When starting new document
-       and not continuously rendering, space by one half-inch instead
-       of by the now-defunct `doc-header-space` amount (which,
-       strictly, should not have applied to this measurement).  If
-       continuously rendering, extend page length by 1v to accommodate
-       header line.  After formatting header, if not continuously
-       rendering, space to 1 inch below first text baseline.
-
-2022-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Support `C` register for consecutive page numbering.
-
-       * tmac/mdoc/doc-common (Dd): Reset page number to 1 upon new
-       document only if not consecutively numbering.
-
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Process `C` register setting from command
-       line as man(7) does.
-
-       * tmac/groff_mdoc.7.man (Formatting with groff, troff, and
-       nroff): Document it.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?63046>.
-
-2022-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Align trap management more closely with man(7).
-
-       * tmac/mdoc/doc-common: Call new macro (see below)
-       `doc-set-up-continuous-rendering` when initializing, if that
-       mode is configured.
-       (doc-ne): New macro replaces `ne` request
-       in continuous rendering mode.  It extends the page length by the
-       amount in the argument or by 1v if none given.
-       (doc-bp): New macro replaces `bp` request in continuous
-       rendering mode, setting the page length to the vertical drawing
-       position.
-       (doc-set-up-continuous-rendering): New macro renames requests to
-       emplace the foregoing.
-       (Dd): Interpret this macro call strictly as starting a new
-       mdoc(7) document.  (andoc.tmac already makes this assumption,
-       and has for over 20 years.  groff_mdoc(7) and mandoc_mdoc(7)
-       also prescribe the sequence `Dd`, `Dt`, `Os`.)  We require this
-       invariant even more rigidly now because it's the only way we can
-       be sure that we can process multiple documents while rendering
-       headers and footers with information corresponding to the
-       appropriate document.  (man(7)'s `TH` has an advantage here in
-       that calling it is "atomic": from its arguments alone you can
-       obtain everything you need to know to format the header and
-       footer.  In mdoc(7), permuting the initialization macro order
-       reliably produces chaos.)  Break the page (if necessary)
-       _before_ processing any arguments (instead of after), to flush
-       the previous page's footer.  Stop calling `doc-set-up-titles`
-       here; we don't have enough information to do that yet.  Also
-       stop writing the PDF bookmark here, because `doc-document-title`
-       and `doc-section` will not reflect the new page content yet.
-       (Os): Once the `doc-operating-system` string content has been
-       determined, call `doc-set-up-titles`, write the PDF bookmark for
-       the page, and call `doc-header`, causing the page header to be
-       formatted.  These changes further imply a stronger requirement
-       on initialization macro ordering being canonical.
-
-       Fixes <https://savannah.gnu.org/bugs/?62774> (7/7).
-
-2022-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Trivially refactor.  Relocate string and macro
-       definition within file.  mdoc(7) mandates that the document
-       setup macros `Dd`, `Dt`, and `Os` be called in that order;
-       arrange their definitions accordingly, for maintainability.
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Refactor.  Rename strings and macro for clarity.  These
-       things don't only affect headers.
-       - doc-header-string ->       doc-pageref
-       - doc-header-string-saved -> doc-pageref-saved
-       - doc-setup-header ->        doc-set-up-titles
-
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-common: Do it.
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Refactor.  There is no difference in
-       `doc-header-string` and `doc-setup-header` between the files
-       "doc-ditroff" and "doc-nroff", so define them only once, in
-       "doc-common".
-
-       * tmac/mdoc/doc-common:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Do it.
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Align footer management more closely with man(7).
-
-       * tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
-       * tmac/mdoc/doc-common (Rd):
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Stop defining, saving, and restoring
-       `doc-footer-space`.
-
-       * tmac/mdoc/doc-common (doc-break-body-text): New macro, called
-       only when not continuously rendering, schedules a page break.
-       (doc-footer): Stop vertically spacing by `doc-footer-space`,
-       instead relying upon a trap to move us here.
-
-       * tmac/mdoc/doc-ditroff (doc-setup-header):
-       * tmac/mdoc/doc-nroff (doc-setup-header): Set traps at the end
-       of the page where man(7) does by default; break the body text at
-       1 inch from the page bottom, and write the footer at ½ inch.
-
-       * tmac/mdoc/doc-nroff (doc-setup-header): Add 1/6 em "thin
-       space" between man page name and parenthesized section, for
-       precise parity with doc-ditroff implementation.  (`\|` does not
-       take up any character cells on nroff devices.)
-
-       Fixes <https://savannah.gnu.org/bugs/?62774> (6/7).
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (Dt, Dd): Emit diagnostic warnings if
-       macros called with no arguments.
-
-       Fixes <https://savannah.gnu.org/bugs/?62774> (5/7).
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Fix code style nit: stop using Control+G as an escape
-       sequence argument delimiter.  This is not necessary in groff and
-       hasn't been for at least thirty years.  See the node/section
-       "Implementation Differences" of our Texinfo manual.  Our mdoc
-       implementation does not operate in compatibility mode, so using
-       control characters like this obfuscates input to no advantage.
-
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-common:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff:
-       * tmac/mdoc/doc-syms: Do it.
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (doc-footer): Pull more footer concerns
-       into this macro.  Don't bail out if continuously rendering;
-       instead, format the appropriate footer text if we are.  For now,
-       break the page only if we are not continuously rendering.
-       (doc-end-macro): Call `doc-footer` instead of formatting footer
-       here.
-
-       Fixes <https://savannah.gnu.org/bugs/?62774> (4/7).
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (doc-end-macro): When continuously
-       rendering, set the page reference (e.g., "ls(1)") in the right
-       footer instead of repeating the left footer.  Thanks to Ingo
-       Schwarze for the discussion.
-
-       * tmac/tests/doc_smoke-test.sh: Update expectations of footer
-       regression test.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?62926>.
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (doc-end-macro): Reset strings to reduce
-       info leaks from one man page to the next.
-
-       Fixes <https://savannah.gnu.org/bugs/?62774> (3/7).
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (Dt): Stop reinitializing `doc-volume`
-       and `doc-section`.  This is the job of package initialization
-       {and, soon, the end-of-input macro}.
-
-       Fixes <https://savannah.gnu.org/bugs/?62774> (2/7).
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common: Populate default date string
-       `doc-date-string` with "UNDATED".
-       (Dd, Dt, Os): Make more orthogonal: stop touching
-       `doc-topic-name`.  It is "doc.tmac"'s job to initialize it and
-       the `Nm` macro's job to update it.
-       (Dd): Do nothing if given no arguments.  (You can still blank
-       out the document date with an explicitly empty argument:
-         .Dd ""
-       .)
-
-       Fixes <https://savannah.gnu.org/bugs/?62774> (1/7).
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common: Change `doc-default-operating-system`
-       string from "BSD" to "GNU", per discussion with Ingo Schwarze.
-       See <https://lists.gnu.org/archive/html/groff/2022-07/\
-       msg00280.html>.
-
-       * tmac/tests/doc_smoke-test.sh: Update expectations of footer
-       regression test.
-
-2022-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (Dt): Delete lingering and useless
-       definition of `doc-command-name` string.  Thanks to Steffen
-       Nurpmeso for the report.  See commit e9e92ee008, 27 August.
-
-2022-09-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/pic/pic.ypp (not_lower_than): Emit deprecation
-       warning for use of 'rand()' with a (non-empty) argument.  The
-       man page has declared it thus for over 30 years, at least since
-       groff 1.02 (June 1991).
-
-2022-09-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/pic/pic.ypp (object_spec): Emit deprecation
-       diagnostic for "plot" command.  The man page has declared it
-       thus for over 30 years, at least since groff 1.02 (June 1991).
-
-2022-09-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/pic/pic.ypp (placeless_element): Explicitly say
-       that an unsafe command is being ignored in diagnostic.
-
-2022-09-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/main.cpp (main): Drop man page reference from
-       deprecation diagnostics.  The man page might be installed with a
-       prefix determined at configuration time, and that's too much
-       trouble to mess with for construction of a message.  Trust the
-       user of these ancient options to try reading the man page with
-       the same name as the command.
-
-2022-09-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Revise discussion of measurements.
-
-       * doc/groff.texi: Drop Texinfo @codequote* command brackets
-       around revised sections; relevant nodes have been reviewed for
-       correct glyph usage.  Move concept index entries for obsolescent
-       term "machine units" to same location as "basic units".
-       Bump document date.
-       (Measurements): Rewrite presentation.  We have already
-       introduced page geometry concepts, including the concept of
-       basic units.
-       (Motion Quanta): New subsection node; introduce this concept
-       much sooner, right after measurement units.  Relocate
-       documentation of `.H` and `.V` registers from a miscellaneous
-       read-only register list here.  Introduce example of rounding to
-       horizontal motion quantum.
-       (Default Units): Revise discussion.  Stop abusing @result
-       notation in example.
-       (Built-In Registers): Relocate `.H` and `.V` as above.
-
-       * man/groff.7.man: Sync with Texinfo content updates.
-
-       Fixes <https://savannah.gnu.org/bugs/?61432>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-09-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Drop groff_filenames(5) document.  It says nothing accurate that
-       is not covered elsewhere.
-
-       * contrib/groff_filenames: Delete.
-       * doc/doc.am (GROFF_MAN_PAGES): Drop.
-       * src/roff/groff/groff.1.man: Drop cross reference to it.
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?61818>.
-
-2022-09-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/tbl.1.man (Table data): Generalize discussion
-       of roff control line use in tables.
-       (Examples): Illustrate how to embed a comment in a table.
-
-2022-08-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * NEWS: man(7)'s `TS` no longer adds vertical space.  See commit
-       7ec36dc9b9, 30 July.
-
-2022-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/main.cpp (main): Issue deprecation warning
-       upon use of '-p' or '-s' options.  The eqn(1) man page has
-       documented these as deprecated since at least groff 1.02 (June
-       1991).  Don't count on them sticking around another 30 years.
-
-2022-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/main.cpp (main): Clarify error diagnostics
-       regarding invalid option arguments.  Identify the option being
-       handled at the time and characterize the argument as "invalid",
-       not "bad".
-
-2022-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Drop support for undocumented '-D' option.  It has been
-       undocumented, and issued a warning of its obsolescence upon use,
-       for 30 years, since groff 1.06 (September 1992).  That's plenty
-       long enough for a deprecation cycle.
-
-       * src/preproc/eqn/main.cpp (main): Do it.
-       * NEWS: Add item.
-
-2022-08-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: (EX, EE): Always break line, even if call invalid.
-
-       * tmac/an.tmac (EX, EE):
-       * tmac/an-ext.tmac (EX, EE): Do it.  Ingo Schwarze pointed out
-       that page authors will expect breaking semantics from these
-       macros even if using them in an ill-formed way.  In a
-       well-formed document, the breaks are redundant but harmless (the
-       later `nf` and `fi` requests, respectively, also cause breaks).
-
-2022-08-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Trivially refactor.
-
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-common: Rename string `doc-command-name` to
-       `doc-topic-name`; the former is misleading for man pages not in
-       sections 1, 6, or 8.
-
-2022-08-25  Bjarni Ingi Gislason <bjarniig@vortex.is>
-
-       * man/groff_char.7.man: Fix bad example syntax.
-
-       Fixes <https://savannah.gnu.org/bugs/?62959>.
-
-2022-08-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Trivially refactor.
-
-       * tmac/mdoc/doc-common:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Stop using "Null" as an empty string
-       indicator when comparing a string interpolation to an empty
-       parameter will serve just as well; it is also more idiomatic.
-       The string in question, `doc-section`, is never formatted if it
-       is empty anyway; the very tests at issue, which populate
-       `doc-header-string`, ensure this.
-
-2022-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (environment::set_family): Throw error
-       if user requests a font family that (when combined with the
-       current style) can't be resolved to a real font name.  Fixes a
-       regression introduced by me in commit d8cb8cf9d8, 2021-09-15,
-       arising from a revision of font selection logic in node.cpp to
-       enable a bunch of _other_ font error diagnostics.
-
-       Fixes <https://savannah.gnu.org/bugs/?62941>.  Thanks to Dave
-       Kemper for the report and two useful end points for a bisection.
-
-2022-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (environment::set_family): Add some
-       paranoia.  Add `assert()`s on the previous font mounting
-       position still being valid and the font family dictionary lookup
-       not returning a null pointer.  Add an early return for the
-       latter case (which should be impossible).
-
-2022-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.cpp (font_family::make_definite):
-       Refactor.  Rename parameter from inscrutable `i` to
-       `mounting_position`.  Add `assert()` to enforce invariant: we're
-       passed a mounting position that is nonnegative.  Use `pos` as
-       short alias of parameter once we're into the function body.
-       Relocate conditional branches to front-load early returns as
-       well as those requiring little code to handle.  This reduces the
-       average indentation level of the function, a readability win.
-
-2022-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Restore robustness to `EE` misuse.
-
-       * tmac/an.tmac: Add `an*is-in-example` register to track state
-       of within-exampleness.  Not doing so can cause a spurious use of
-       `EE` to wrongly set the inter-paragraph distance to zero.
-       (TH): Initialize register.
-       (EX): Test register; if set, ignore macro call and, if
-       `CHECKSTYLE` warnings are on, throw diagnostic.  Set register.
-       (EE): Test register; if clear, ignore macro call and, if
-       `CHECKSTYLE` warnings are on, throw diagnostic.  Clear register.
-
-       * tmac/an-ext.tmac (EX, EE): Similar, using `mX` register.
-       Because AT&T troff had no `return` request, invert the sense of
-       the tests and put the entire macro bodies inside conditionals.
-
-       This regressed post-1.22.4.  Thanks to Ingo Schwarze for the
-       report and a proposed patch.
-
-2022-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Refactor.  Rename `mX` to `mZ` so we can use
-       `mX` for an "in-example" state register in a future commit.
-       Rename `mE` to `mF` to store the current font's mounting
-       position.  Bizarrely, `mF` was not already used for this
-       purpose.
-
-2022-08-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/error.cpp (do_error_with_file_and_line):
-       Trivially refactor.  Use separate string constant for invariant
-       material.  (This will make it easier to, for example, store the
-       diagnostic level strings in an array that can be indexed by
-       their corresponding `enum` type.)
-
-2022-08-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (fatal_with_file_and_line)
-       (error_with_file_and_line, debug_with_file_and_line): Align more
-       closely with GNU Coding Standards regarding diagnostics: don't
-       suffix the colon after the program name with a space when
-       location information follows.
-
-2022-08-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grohtml/grohtml.1.man: Fix erroneous claim.
-       Images are not generated when "baseline rules" or "box rules"
-       are encountered in the input.  These are troff special
-       characters; the former is converted to an underscore and the
-       latter to U+2502, "box drawings light vertical".  This remains
-       true even if a series of them is drawn with the `\l` escape
-       sequence.  (I also checked vertical line drawing with `\L`.
-       grohtml's handling of that provoked a rather wet eructation from
-       my lower esophageal sphincter--the output is assuredly not
-       correct.  But it's still not an image.)
-
-2022-08-22  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Bug #62934 - after glyph remapped mark it as used
-
-       When many glyphs are remapped from code points above 255
-       such as writing documents in cyrillic with the U-TR fonts,
-       gropdf starts reusing code points in the range 128-255.
-       If subsequently one of those code points is actually required,
-       such as \(em (code 138), and it has been replaced by a
-       cyrillic, then it needs to be mapped to another free code.
-
-       To determine if a particular code point is free each glyph
-       has a USED flag. The bug was caused because after remapping
-       \(em to the next free glyph the USED flag was not set. So the
-       next new cyrillic character to be entered was given the same
-       code point as had been allocated to \(em.
-
-       * src/devices/gropdf/gropdf.pl: Set the USED flag on remapped
-       glyphs.
-
-       Fixes <https://savannah.gnu.org/bugs/?62934>.
-
-       Thanks to Nikita Ivanov for spotting the problem and testing
-       the fix.
-
-2022-08-20  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Bug #62923 - problem using aliased glyphs
-
-       With a large font if 2 characters above the 255 code
-       point limit are aliased, the aliased glyph has incorrect meta
-       data.
-
-       * src/devices/gropdf/gropdf.pl: Instead of duplicating a pointer
-       to the font metadata, duplicate the data itself. Then, if the
-       glyph is remapped to a code point under 256, the metadata is
-       preserved.
-
-       Fixes <https://savannah.gnu.org/bugs/?62923>.  Thanks to Nikita
-       Ivanov for the report.
-
-2022-08-18  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Improve parsing of troff font files.
-
-       * src/devices/gropdf/gropdf.pl: Allow the glyph code number
-       to be octal or hex as well as a decimal number. If entity_name
-       is missing use name instead.
-
-2022-08-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Support pic(1) "flyback" feature.
-
-       * tmac/s.tmac (PF): Add macro; it does what `PE` formerly did,
-       minus vertical spacing.
-       (PE): Call `PF` and vertically space as before.
-
-       * doc/groff.texi (ms Insertions):
-       * doc/ms.ms (Tables, figures, equations, and references):
-       * tmac/groff_ms.7.man (Tables, figures, equations, and
-       references): Document it.
-
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?60558>.
-
-2022-08-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (@PS): Validate better; check for 2 arguments
-       exactly.
-
-2022-08-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pic]: Recognize `.PY` as synonym of `.PF`.
-
-       * src/preproc/pic/main.cpp:
-       * src/preproc/pic/pic.h: Add new Boolean variable,
-       `want_alternate_flyback` to record `.PY` usage.
-
-       * src/preproc/pic/main.cpp (top_input::get, top_input::peek):
-       Recognize it.  Update diagnostic messages to mention it.
-       (main): Define `PY` troff macro as empty if not defined.
-
-       * src/preproc/pic/troff.cpp (troff_output::finish_picture):
-       Don't advance the vertical position if `want_alternate_flyback`.
-       Write out the `PY` macro call if it was on the input.
-
-       * src/preproc/pic/pic.1.man: Document it.
-
-       * tmac/pic.tmac (PY): Define the same as `PF`.
-
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?62901>.
-
-2022-08-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pic]: Refactor `flyback_flag`.
-
-       * src/preproc/pic/main.cpp:
-       * src/preproc/pic/pic.h:
-       * src/preproc/pic/troff.cpp: Rename to `want_flyback`.
-
-       * src/preproc/pic/main.cpp:
-       * src/preproc/pic/pic.h: Demote type from `int` to `bool`.
-
-       * src/preproc/pic/main.cpp (top_input::get, top_input::peek):
-       Use parentheses to clarify operation precedence.
-
-2022-08-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/eqn.1.man: Expand to include lists of
-       recognized primitives and predefined macros.
-
-2022-08-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * NEWS: Add item for new groff mm `V` register support.
-
-2022-08-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/lex.cpp (do_delim): Recognize "delim on" even
-       in compatibility mode, enabling tbl to toggle eqn delimiter
-       recognition when it is run in compatibility mode as well.
-       * src/preproc/eqn/eqn.1.man (Controlling delimiters): Update.
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?62852>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-08-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (TH): Fix spurious complaint from `CHECKSTYLE`
-       feature when a custom manual section title is declared for a
-       standard section number.  Thanks to Quentin Monnet for the
-       report.
-
-2022-07-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdfpic.tmac: Finish incomplete string renames.  Continues
-       0fd6ab6b4c, 21 January.
-               pdfpic*file-name -> pdfpic*file-name-base
-               pspic-args -> pdfpic*pspic-args
-
-2022-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (TS): Stop inserting space before tables.  Unlike
-       ms(7), man(7) has no concept of "displays" and thus none of
-       "display distance".  It is up to the page author to use
-       paragraphing macros around tables if vertical space is desired.
-       And not up to us to impose it.
-
-       Fixes <https://savannah.gnu.org/bugs/?62841>.
-
-2022-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Regression-test Savannah #62841.
-
-       * tmac/tests/an_TS-adds-no-vertical-space.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::do_bottom): Avoid
-       overprinting a double-boxed table's bottom border on nroff
-       devices.
-
-2022-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Expand regression test for Savannah #49390.  Check for
-       overlap of double box borders, too.
-
-       * src/preproc/tbl/tests/\
-       do-not-overlap-bottom-border-in-nroff.sh: Do it.
-
-2022-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #49390.
-
-       * src/preproc/tbl/table.cpp (table::do_bottom): Avoid
-       overprinting a boxed table's bottom border on nroff devices.
-
-       Fixes <https://savannah.gnu.org/bugs/?49390>.  Thanks to Osamu
-       Sayama for the report.
-
-2022-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #49390.
-
-       * src/preproc/tbl/tests/\
-       do-not-overlap-bottom-border-in-nroff.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2022-07-28  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Improve slant application to lowercase Greek letters.
-       <https://lists.gnu.org/archive/html/groff/2022-07/msg00210.html>
-
-       * tmac/pdf.tmac: Slant only if the glyph is sourced from a
-       special font, not a regular (text) font containing Greek glyphs.
-
-2022-07-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Add italic correction support to `I` and `BI`
-       macros.  Call `par*define-font-macro` with newly recognized
-       third argument indicating that italic corrections should be
-       applied.
-       (par*define-font-macro): Apply the corrections if directed.
-
-2022-07-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (input_char_description): Clear
-       static buffer on every entry to the function so that calling it
-       twice in succession where the second call populates the buffer
-       with less data than the first doesn't leave garbage characters
-       in a diagnostic message.  Problem appears to date back to 1991
-       or earlier.
-
-       Fixes <https://savannah.gnu.org/bugs/?62813>.
-
-2022-07-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (token::usable_as_delimiter):
-       (do_non_interpreted, interpolate_arg): Recast diagnostic
-       messages for clarity.
-
-2022-07-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Initialize section number registers. Fixes
-       warnings when starting section numbering at a depth greater than
-       1.
-
-       Fixes <https://savannah.gnu.org/bugs/?62812>.
-
-2022-07-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PAGE): Use 'grep -q' instead of redirecting
-       standard output to null device.  The '-q' option was
-       standardized in POSIX Issue 5 (1997) or earlier.  Also drop the
-       redirection of the standard error stream; we have already
-       checked the file named in "$descfile" for existence and
-       readability.  grep should thus not emit diagnostic messages.
-
-2022-07-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PAGE): Macro used awk(1) without
-       `AC_REQUIRE`-ing a relevant macro or checking for its existence.
-       Fortunately, sed is powerful enough for our needs.  Remove
-       dependency on awk.  Cope with "search" directive in resolv.conf
-       having multiple arguments.  Match "domain" directive in same
-       file instead of "dom", which I cannot find attested (this logic
-       dates to 1991).  Rename `dom` shell variable to `domains` for
-       clarity, since its multiplicity could be greater than 1.
-
-2022-07-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PAGE): Refactor: drop AC_DEFINE of
-       `PAGEA4`.  This symbol appears to be a relic; it is nowhere
-       tested or dereferenced.
-
-2022-07-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tty-char.tmac: Drop definition of \[sd] special
-       character.  This was superseded by commit 78e666246c, 8 May,
-       which defined a fallback for the character in tty.tmac instead.
-       Thanks to Dave Kemper for the catch.
-
-2022-07-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
-       Skip test if "pdfinfo" command not available.
-
-2022-07-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Add sanity checks for font description file generation
-       for PDF output device, prompted by discussion with Ingo
-       Schwarze.  See <https://lists.gnu.org/archive/html/groff/\
-       2022-06/msg00094.html>.
-
-       * font/devpdf/tests/basic-fonts-present.sh:
-       * font/devpdf/tests/urw-fonts-present.sh: Add files.
-
-       * font/devpdf/devpdf.am (font_devpdf_TESTS): Add the former test
-       unconditionally, and the latter only if `HAVE_URW_FONTS`.
-
-2022-07-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am: Refactor to simplify.  Now that
-       symbol.map lives in the "devpdf/generate" directory along with
-       the other map files, it doesn't need a dedicated Makefile target
-       to produce it.
-       (DEVPDFFONTMAP_1, DEVPDFFONTMAP_2): Coalesce and rename to...
-       (devpdffontmapdata): ...this.
-       (font/devpdf/map/symbol.map:): Drop target.
-       (devpdffontmap_DATA, font/devpdf/download): Update dependencies.
-
-2022-07-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Recast
-       diagnostic message so that the user understands the consequence
-       of failure to locate a Type 1 font file (that isn't one of the
-       base 14 PostScript level 1 fonts): the font will be unavailable
-       for the "pdf" output device.
-
-2022-07-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Separate
-       lists of Type 1 font names with spaces as well as commas, for
-       better diagnostic message readability.  Also begin message in
-       lowercase (per GNU Coding Standards).
-
-2022-07-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Verify that
-       `$foundrypath->[$j]` is defined before operating on it.
-
-2022-07-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [afmtodit]: Clarify diagnostic message.
-
-       * src/utils/afmtodit/afmtodit.pl: When we have excess Adobe
-       Glyph List mappings for a groff special character identifier
-       {making the reverse mapping from groff special character to font
-       glyph name ambiguous}, report that we're ignoring the excess.
-       Use "print STDERR" instead of Perl "warn" built-in since we want
-       diagnostic messages to start with the name of the program
-       emitting them.
-
-2022-07-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Name and place PS->groff glyph name maps consistently.
-
-       * font/devps/symbolmap: Rename from this...
-       * font/devps/generate/symbol.map: ...to this.
-
-       * font/devpdf/devpdf.am (font/devpdf/map/symbolmap): Rename
-       target...
-       (font/devpdf/map/symbol.map): ...to this.
-       (font/devpdf/map/symbol.map): Copy "devps" version of file from
-       its new location in the "generate" subdirectory.
-
-       * font/devpdf/Foundry.in: Reflect rename.
-
-       * font/devps/generate/Makefile (symbolmap): Rename target...
-       ($(srcdir)/symbol.map): ...to this.
-
-       * font/devps/devps.am (DEVPSGENFILES, EXTRA_DIST):
-       * font/devps/generate/Makefile (S, EURO $(SPECIALFONTS), clean):
-       * src/utils/afmtodit/afmtodit.1.man: Reflect rename and
-       relocation.
-
-       * font/devps/generate/dingbats.rmap: Rename from this...
-       * font/devps/generate/dingbats-reversed.map: ...to this.
-
-       * font/devps/devps.am (DEVPSGENFILES):
-       * font/devps/generate/Makefile (ZDR):
-       * src/utils/afmtodit/afmtodit.1.man: Reflect rename.
-
-       * font/devps/generate/lgreekmap: Rename from this...
-       * font/devps/generate/slanted-symbol.map: ...to this.
-
-       * font/devps/devps.am (DEVPSGENFILES):
-       * font/devps/generate/Makefile (SS):
-       * src/utils/afmtodit/afmtodit.1.man: Reflect rename.
-
-       * font/devps/generate/textmap: Rename from this...
-       * font/devps/generate/text.map: ...to this.
-
-       * font/devpdf/Foundry.in:
-       * font/devpdf/devpdf.am (DEVPDFFONTMAP_1):
-       * font/devps/devps.am (DEVPSGENFILES):
-       * font/devps/generate/Makefile (TEXTMAP):
-       * src/devices/gropdf/gropdf.1.man:
-       * src/devices/grops/grops.1.man:
-       * src/utils/afmtodit/afmtodit.1.man: Reflect rename.
-
-2022-07-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/ms.ps): Add dependency on "eqn", and call
-       groff with "-e" option.
-       * src/utils/grog/tests/smoke-test.sh: Update expected "grog"
-       output for the ms.ms document.
-
-2022-07-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/ms.ps): Add dependency on "tbl".
-
-2022-07-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.cpp (suppress_node::tprint): Add source
-       file line number after its name when emitting "grohtml-info", to
-       aid debugging.
-
-2022-07-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.cpp (get_register, get_string): Reorder
-       null pointer inequality comparisons; they don't need to be in a
-       funny order because it's pretty hard to mistype `!=` as an
-       assignment operator.  Annotate them as null pointers to ease any
-       future migration to ISO C++11.  Use primitive type constructor
-       instead of C-style cast operator; this seems more idiomatic.
-
-2022-07-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (generateImages): Flush the
-       standard error stream after writing to it in a loop.
-
-2022-07-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (RP): Recognize new optional arguments
-       `no-renumber` and `no-repeat-info`, the latter as a synonym for
-       the existing `no`.  The former suppresses the page number
-       manipulation that normally occurs.  Drop now-unnecessary `pn 0`
-       request.
-       (top level, cov*first-page-init, RP, cov*print): Rename
-       `cov*rp-format` to `cov*use-rp-format` for clarity.
-       (cov*break-page): New macro breaks the cover page at the end,
-       resetting next page number to 1 only if desired by user.
-       (cov*print, cov*rp-print): Call `cov*break-page` instead of
-       invoking `bp`.
-
-       * doc/groff.texi (Document Description Macros) <RP>:
-       * doc/ms.ms (Document description macros) <RP>:
-       * tmac/groff_ms.7.man (Document description macros) <RP>:
-       Document them.
-
-       * NEWS: Add item.
-
-2022-07-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Rename register `cov*rp-no` to
-       `cov*rp-no-repeat-info`.
-
-2022-07-08  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       * font/devpdf/util/BuildFoundries.pl (LocateFile): Some systems
-       store .afm files in a parallel directory to the Type 1 files,
-       restore original path after checking for parallel directory.
-
-2022-07-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am (font/devpdf/download): Call
-       "BuildFoundries" with new `--strict` option so that the build
-       fails if the AFM files for the URW fonts can't be found.
-
-2022-07-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl: Add Boolean-valued scalar
-       `beStrict` (defaults false) and new command-line option
-       `--strict` to make it true.
-       (LoadFoundry): Check return value of subroutine `LocateAF`.
-       Emit diagnostic if it is null, as a warning if not "strict", and
-       fatal if so.
-
-2022-07-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries): Add
-       dependency on "afmtodit" since "BuildFoundries" calls this
-       program when generating groff font description files from URW
-       fonts.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Fix Savannah #62690.
-
-       * tmac/s.tmac (P1, SC, UC, P2): Drop undocumented support for
-       document-private macros used by Kernighan & Cherry's
-       "Typesetting Mathematics -- User's Guide (Second Edition)".
-
-       Fixes <https://savannah.gnu.org/bugs/?62690>.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Fix Savannah #62688.
-
-       * tmac/s.tmac (DE): Set no-space mode when ending displays.
-       (@EN): Set no-space mode after outputting the display distance
-       so that it doesn't combine with inter-paragraph space.
-
-       Fixes <https://savannah.gnu.org/bugs/?62688>.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Regression-test Savannah #62688.
-
-       * tmac/tests/s_no-excess-space-around-displays.tmac: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Fix Savannah #62687.
-
-       * tmac/s.tmac (@MC): Honor `MINGW` register even when setting
-       only two columns, as clearly implied by our documentation.
-
-       Fixes <https://savannah.gnu.org/bugs/?62687>.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Regression-test Savannah #62687.
-
-       * tmac/tests/s_honor-MINGW-when-two-columns.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Fix Savannah #62686.
-
-       * tmac/s.tmac (@MC): Set no-space mode before doing a paragraph
-       reset, not after: we don't want vertical space at the top of the
-       first column when entering multi-column mode, because then it
-       doesn't align with the tops of subsequent columns.
-
-       Fixes <https://savannah.gnu.org/bugs/?62686>.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Regression-test Savannah #62686.
-
-       * tmac/tests/s_mark-column-start-correctly.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (IX): Drop.
-       * NEWS: Add item.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Add "sorry" implementations for documented but
-       unsupported Unix Version 7 ms macros.  This way it's easier to
-       tell when a historical document needs one and this case is
-       distinguishable from a document-private macro warned about with
-       "groff -w mac".
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (UX): Drop undocumented support for this macro.
-       This implementation isn't consistent with historical ones, which
-       identified the trademark holder.  But doing that is a problem,
-       so just stop trying to cope.  Also, spelling Unix in full caps
-       was an imposition by the AT&T legal department on the CSRC.
-
-       "The name Unix is a trademark, originally owned by Bell Labs and
-       subsequently traded off like a baseball card among a number of
-       companies." -- Ben Klemens
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Replace incomplete documentation of unimplemented macros.
-
-       * doc/groff.texi (Missing ms Macros):
-       * doc/ms.ms (AT&T ms macros not appearing in groff ms): Drop,
-       replacing with...
-
-       * doc/groff.texi (Unix Version 7 ms Macros Not Implemented by
-       groff ms):
-       * doc/ms.ms (Unix Version 7 ms macros not implemented by groff
-       ms):
-       * tmac/groff_ms.7.man (Unix Version 7 macros not implemented by
-       groff ms): ...these.
-
-2022-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_translate): Throw an error
-       diagnostic when the user attempts to translate space characters.
-       {By contrast, translating _to_ [unbreakable, unadjustable]
-       spaces is an old troff hack often seen as ".tr ~ ", and largely
-       superseded by groff's "\~" escape sequence, now widely supported
-       by other troffs.}
-
-       Fixes <https://savannah.gnu.org/bugs/?60803>.  Thanks to T. Kurt
-       Bond and Oliver Corff for the report.
-
-2022-07-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/pipeline.c: Refactor.  Drop function rename via
-       preprocessor macro usage.  Declare and define `c_error` by its
-       correct name.
-       (run_pipeline): Update call sites.  Stop flushing standard error
-       stream after calling libgroff's `error` function (which
-       `c_error` wraps); libgroff already guarantees this operation.
-
-2022-07-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (abort_request): Flush the standard
-       error stream before exiting, to improve chances of user seeing
-       any message as arguments to the `ab` request.
-
-2022-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp
-       (char_buffer::run_output_filter): Die if platform supports
-       neither `fork()` nor `spawn()` for child process creation.
-
-2022-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (cleanup): Add function to tidy
-       memory before exiting.
-       (main): Register aforementioned function with `atexit()`.  Die
-       if registration fails.
-
-2022-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (do_file): Die if `fclose()`
-       fails; such a situation suggests a pretty hosed environment.
-
-2022-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (checkImageDir): If `mkdir()`
-       fails, use `strerror()` to report the underlying problem.
-
-2022-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp: Refactor.  Drop unnecessary
-       prototype for static function.  Use idiomatic C++98 null pointer
-       constant.  Annotate it as null pointer to ease any future
-       migration to ISO C++11.  Boolify.  Use C++98 bool data type
-       instead of preprocessor macros `TRUE` and `FALSE`.  Demote some
-       global Boolean variables from `int` to `bool` and rename some to
-       be more clear: `show_progress` -> `want_progress_report`;
-       `debugging`; `eqn_flag` -> `need_eqn`.
-       (make_message): Rename this...
-       (make_string): ...to this.  Align more closely with contemporary
-       version of example from Linux man-pages printf(3) page.  Use
-       `vsnprintf()` to determine size of memory buffer needed prior to
-       allocation instead of iteratively growing it until it is large
-       enough.  Always die if `vsnprintf()` fails: this function now
-       always returns a valid pointer if it returns at all.
-       (makeFileName, setupAntiAlias, imageList::createPage,
-       imageList::createImage): Update call sites to use
-       `make_string()`.
-       (char_buffer::can_see): Demote return type from `int` to `bool`.
-       (char_buffer::skip_spaces): Drop unused member function.
-       (char_buffer::read_file, makeTempFiles): Demote return type from
-       `int` to `void`.  Stop returning after calling functions that
-       don't return.
-       (char_buffer::read_file): Call `sys_fatal()` if `fread()`
-       returns an error, similarly to other calls into the standard C
-       library that this file makes.  Improve check for error from
-       `fread()` by not regarding a return value of zero when the
-       end-of-file indicator is set as an error condition.
-       (makeFileName, checkImageDir, char_buffer::run_output_filter,
-       scanArguments): Call `fatal()` instead of `error()` and then
-       `exit(1)`.
-       (makeFileName, scanArguments): Dismiss Shlemiel the Painter:
-       save return value of `strlen()` and call `strcpy()` multiple
-       times instead of mixing `strcpy()` and `strcat()`; the latter
-       approach rescans the string unnecessarily.
-       (char_buffer::run_output_filter): Stop passing unnecessary null
-       pointer argument to diagnostic message functions.  Stop calling
-       `fflush()` after libgroff diagnostic function, which always
-       {ultimately} flushes the standard error stream itself.
-       (makeTempFiles, do_file, main): Boolify.
-       (makeTempFiles, do_file): Reorder null pointer equality
-       comparisons to avoid inadvertent lvalue assignment.
-       (scanArguments, main): Use `EXIT_SUCCESS` and `EXIT_FAILURE`
-       constants from C library instead of integer literals for exit
-       status.
-       (do_file): Demote return type from `int` to `bool`.  Return
-       Boolean literals.  Drop conditional with empty consequent.
-       (main): Declare local variables closer to the points of use.
-       Stop trying to be a register allocator: stop reusing loop index
-       variable `i` as integer storage for another (albeit related)
-       purpose; introduce `operand_index` instead.  Clarify logic by
-       splitting combined initialization and comparison operations, and
-       by testing function return value directly instead of storing it
-       in a pointless temporary.  Use `EXIT_SUCCESS` and `EXIT_FAILURE`
-       constants from C library instead of integer literals for exit
-       status.
-
-2022-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp (run_commands): Trivially refactor.
-       Rename variable for clarity; add comment.
-
-2022-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp
-       (char_buffer::run_output_filter): Return wait status of child
-       process.
-       (char_buffer::run_output_filter, main): Rename local variable
-       `status` to `wstatus` to recognize distinction between exit
-       status (a 7-bit quantity) and wait status (a wider type).
-       (main): Issue fatal diagnostic if child process exited with
-       nonzero status.  Since the child's output to the standard error
-       stream is lost, advise re-running with different output driver
-       to see them.  This unhappy shortcoming is filed as Savannah
-       #62673.  Explicitly return zero otherwise.
-
-       Fixes <https://savannah.gnu.org/bugs/?60782>.
-
-2022-06-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/ab_works.sh: Add regression test for
-       Savannah #60782.
-
-2022-06-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.
-
-       * src/roff/troff/input.cpp (token::next): Rename statement label
-       to use documentary terminology.
-       * src/roff/troff/node.cpp (make_composite_node)
-       (make_glyph_node): Make functions static since nothing outside
-       this translation unit calls them.
-       * src/roff/troff/node.cpp (make_glyph_node): Refactor optional
-       argument and its usage.  Put it down, flip it, and reverse it.
-       That is, demote its type from `int` to `bool`, invert its sense,
-       and rename it since it affects warning, not error, diagnostics.
-       (character_exists): Update only call site of `make_glyph_node()`
-       that uses non-default argument value.
-
-2022-06-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Adjust diagnostic message text to clarify and better
-       match terminology used in documentation.
-
-       * src/roff/troff/input.cpp (set_escape_char, do_overstrike)
-       (do_bracket, do_name_test, do_width, do_special):
-       * src/roff/troff/node.cpp (suppress_node::tprint): Migrate from
-       "escape" to "escape sequence".
-
-       * src/roff/troff/node.cpp (make_composite_node)
-       (make_glyph_node): Clarify what went wrong.
-
-       * src/roff/troff/input.cpp (token::get_char)
-       (check_missing_character): Migrate from "normal character" to
-       "ordinary character" (see groff_char(7)).
-
-2022-06-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Rename a function for clarity.
-
-       * src/roff/troff/input.cpp (add_to_node_list): Rename this...
-       (add_to_zero_width_node_list): ...to this.
-       (do_zero_width): Update call site.
-       * src/roff/troff/token.h: Update declaration.
-
-2022-06-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp (handle_unknown_desc_command):
-       Refactor to skip unnecessary string comparisons.  We explicitly
-       return in the final case instead of falling off the end of this
-       void function for consistency if additional cases are added.
-
-2022-06-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp (handle_unknown_desc_command):
-       Partially revert commit 64dc40d23a, 19 June.  I forgot to save
-       and restore the previous values of the globals
-       `current_filename` and `current_lineno`, and, noticing that this
-       function has 3 return paths, decided that it's cheaper just to
-       go back to `error_with_file_and_line()`.
-
-2022-06-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Add more search paths to the Foundry file.
-
-       * font/devpdf/Foundry.in: Use the directory specified with the
-       config flag --with-urw-fonts-dir to populate the default foundry
-       as well as the U foundry. Important to populate the download
-       file with font files to embed the fonts not part of the base
-       pdf fonts or if user wants all fonts embedded.
-
-2022-06-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (UR, MT): Fix problem with hyphenation
-       occurring before the end of the line when the line length was
-       not the device default (common for man pages at the terminal)
-       and hyperlinks were enabled.  The issue is that the new
-       environment we created inherits the default environment's line
-       length (its state at troff initialization, prior to macro
-       package loading and configuration).  This latent issue was
-       exposed by post-groff 1.22.4 changes to enable the hyphenation
-       of link text and add the hyperlink feature.  Fix it by copying
-       the line length at the time the macro is called, which is
-       necessarily after man(7) sets up the line length, to the new
-       environment.
-
-2022-06-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/psrm.cpp (resource_manager::output_prolog):
-       (resource_manager::supply_resource):
-       (resource_manager::read_download_file): Update diagnostic
-       message language and report underlying problem encountered by
-       system when failing to open files.  This will probably be the
-       text for ENOENT in most cases, but should help avoid frustration
-       in those where it isn't.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/psrm.cpp
-       (resource_manager::read_download_file): Align diagnostic message
-       wording with gropdf in the same circumstance.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Throw warning in font category when a font selection
-       escape sequence is used after the output line continuation
-       escape sequence on an input line, because it is ignored.
-
-       * src/roff/troff/env.cpp (environment::set_font): Do it.
-
-       * doc/groff.texi (Warnings):
-       * src/roff/troff/troff.1.man (Warnings): Document it.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (font_change): Boolify.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (LoadFont): Revise error message
-       when a font can't be found for embedding.  User failure to add
-       an entry for locating the font file seems a more likely scenario
-       than outright corruption of the file.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (font_change): Warn upon selection of a
-       nonexistent font name.
-
-       Fixes <https://savannah.gnu.org/bugs/?62656>.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Revise `environment::set_font` to return Boolean value
-       indicating success of font selection operation.
-
-       * src/roff/troff/env.cpp (environment::set_font):
-       * src/roff/troff/env.h (environment::set_font): Do it.
-
-       This prepares the way for a fix for Savannah #62656.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp: Use single exit path, freeing
-       memory allocated for strings.
-       (xexit): Add `exit()` wrapper; free allocated memory.
-       (main): Use it in all three exit paths.
-
-2022-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp: Refactor to be more meticulous with
-       memory.  Add globals `saved_path`, `groff_bin_path`, and
-       `groff_font` to store pointers into the process environment
-       returned by `putenv()`; once used, they need to remain valid for
-       the lifetime of the program.
-       (xstrdup): Add `strdup()` wrapper: dies if `strdup()` fails.
-       (main): Split nested `strsave()` and `xputenv()` (until recently
-       `putenv()`) calls.  Free duplicate strings prior to exit.
-
-2022-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp (main): Rename temporary variable to
-       avoid shadowing one in enclosing scope, which can lead to
-       cut-and-paste errors (ask me how I know).
-
-2022-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp: Slightly refactor to indirect
-       `putenv` calls through an error-checking wrapper.
-       (xputenv): Add new function to die if `putenv()` fails.
-       (main): Update call sites to use it.
-
-2022-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [groff]: Add information to diagnostic messages.
-
-       * src/roff/groff/groff.cpp (main): Report underlying system
-       error if `putenv()` fails.
-       (handle_unknown_desc_command): Set globals `current_filename`
-       and `current_lineno` from `filename` and `lineno` arguments
-       passed to us to we can use the simpler interface of `error()`
-       rather than `error_with_file_and_line()`.
-
-2022-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Update return type of `font::load_desc` function to
-       enable more informative diagnostics from callers.
-
-       * src/include/font.h (font::load_desc): Change return type from
-       `bool` to `const char` pointer.
-       * src/libs/libgroff/font.cpp (font::load_desc): Return null
-       pointer literal on failed `open()` or validation failures.
-       Return filespec on success.
-
-       * src/libs/libdriver/input.cpp (do_file):
-       * src/preproc/grn/main.cpp (getres):
-       * src/roff/groff/groff.cpp (main):
-       * src/roff/troff/input.cpp (main): Compare `font::load_desc()`
-       return value to null pointer literal instead of treating it as a
-       Boolean.
-
-       * src/roff/groff/groff.cpp (main): Report full filespec of
-       troublesome "DESC" file when complaining of missing "postpro"
-       directive.
-
-2022-06-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp: Add new Boolean global,
-       `need_postdriver`, and initialize it true.
-       (main): Make `need_postdriver` false if the `-X` or `-Z` options
-       are given.  Test it later.  This prevents groff from exiting
-       with a fatal error if an output driver is not available, but
-       also not required.  Also reorder null pointer equality
-       comparison to avoid inadvertent lvalue assignment.
-
-       Fixes <https://savannah.gnu.org/bugs/?62640>.
-
-2022-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp (help): Revise usage message for
-       expressiveness and clarity.
-
-2022-06-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Correct display of pathnames used.
-
-       * font/devpdf/util/BuildFoundries.pl: Convert array to
-       string of pathnames.
-
-2022-06-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Fix to gropdf.
-
-       * src/devices/gropdf/gropdf.pl: If pdfbookmark was called
-       within 5p of top of page (e.g. straight after a .bp when
-       \n[nl] was zero) the click destination would be off by a
-       page.
-
-2022-06-19  Ingo Schwarze <schwarze@openbsd.org>
-
-       * font/devpdf/devpdf.am: Always build PDF font description
-       files.
-
-       Build font/devpdf/download and the various TR, TB, CR etc.
-       files in the same directory even when they are not required
-       by the build because USE_GROPDF is unset, usually because
-       ghostscript is either unavailable or deliberately disabled
-       by the person running the build.  These files need to be
-       built and installed anyway, and can be used on the target
-       system when the required infrastructure is available at run
-       time.
-
-2022-06-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Revise introduction of vertical spacing concept to avoid
-       render inference that the formatter will compute a vertical
-       spacing appropriate to the type size automagically--it will not.
-
-       Fixes <https://savannah.gnu.org/bugs/?62617>.  Thanks to Dave
-       Kemper for the report.
-
-2022-06-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Revise discussion of end-of-sentence detection.
-
-       * doc/groff.texi (Filling):
-       * man/roff.7.man (Concepts): Do it.  "Spaces" is a now a term
-       with a much more restricted usage.  Emphasize the input context,
-       now explicitly identified as plain text files with Unix line
-       endings.
-
-       Fixes (one hopes) <https://savannah.gnu.org/bugs/?62593>.
-       Thanks to Ingo Schwarze for the report and Dave Kemper for the
-       discussion.
-
-2022-06-10  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Changes to BuildFoundries.
-
-       * font/devpdf/util/BuildFoundries.pl: Collect search paths into
-       an array rather than a colon delimited string, this allows
-       the @PATH_SEPARATOR@ character (':' or ';') to be used to
-       delimit paths yielded by the command 'gs -h' but still use ':'
-       to delimit paths in the Foundry file. This means the same
-       Foundry file can be used on all systems.
-
-       * font/devpdf/Foundry.in: Add more likely paths to find the URW
-       fonts.
-
-2022-06-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Weaken dependency on TeX, instead using it (to generate
-       the DVI and PDF forms of our Texinfo manual) only if it is
-       available.
-
-       * m4/groff.m4 (GROFF_USE_TEX_CHECK): Check for presence of 'tex'
-       executable in path.  Set shell variable `groff_use_tex` to "yes"
-       if present, and "no" otherwise.  This check runs only if the
-       'makeinfo' and 'texi2dvi' version checks have already passed.
-
-       * configure.ac: Run the new check.  Set Automake conditional
-       `USE_TEX` only if shell variable `groff_use_tex` is "yes".
-       Report whether "groff.dvi" and "groff.pdf" are (re-)buildable.
-
-       * doc/doc.am: Parameterize names of groff.{dvi,pdf} targets as
-       Make macros `GROFF_DVI` and `GROFF_PDF`.  Define them only if
-       `USE_TEX`.  Do _not_ update `EXTRA_DIST` macro; leave the
-       literal file names there because we require that distribution
-       archives contain these files.
-       (.texi.dvi, .texi.pdf): Update suffix rules to check `USE_TEX`
-       and fail, complaining of missing 'tex' program, if these targets
-       are attempted without it being true.  Only manually specifying
-       the file names as targets to 'make' or attempting to generate a
-       distribution archive without TeX present should cause these
-       errors.
-
-       * INSTALL.REPO: Update dependency information.
-
-       Fixes <https://savannah.gnu.org/bugs/?62592>.  Thanks to Deri
-       James for the report.
-
-2022-06-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (.texi.dvi, .texi.pdf, $(DOC_GNU_EPS)): Quote names
-       of programs when aborting because they're missing.
-
-2022-06-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PROG_MAKEINFO, GROFF_PROG_TEXI2DVI):
-       Largely revert commit d5013ededc, 21 May: run checks for
-       'makeinfo' and 'texi2dvi' programs regardless of presence of
-       ".tarball-version" file.  Their presence is a necessary (but not
-       sufficient) condition for refresh of formatted forms of our
-       Texinfo manual if the source is modified.
-
-       Begins addressing <https://savannah.gnu.org/bugs/?62592>.
-
-2022-06-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Rename some groff Autoconf macros to better match
-       Autoconf's own naming conventions.
-
-       * m4/groff.m4 (GROFF_MAKEINFO): Rename to...
-       (GROFF_PROG_MAKEINFO): ...this.
-       (GROFF_TEXI2DVI): Rename to...
-       (GROFF_PROG_TEXI2DVI): ...this.
-
-       * configure.ac:
-       * m4/groff.m4 (GROFF_TEXI2DVI): Update call sites.
-
-2022-06-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (SH, SS, B, I, SM, SB): Set input trap with `it`
-       instead of `itc` for better Unix Version 7 man(7) compatibility.
-
-       Fixes <https://savannah.gnu.org/bugs/?51468>.  Also see
-       discussion at
-       https://lists.gnu.org/archive/html/groff/2022-06/msg00020.html
-       et sequentia (amid a vigorous bikeshedding of `\&`'s name).
-
-2022-06-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Regression-test use of input traps.
-
-       * tmac/tests/an_use-input-traps-correctly.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-06-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (LoadDesc): Validate device
-       description file for essential directives and acceptable values
-       as grops(1) does.
-
-2022-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff, grohtml, grops, grotty]: Update wording of diagnostic
-       messages to refer to "motion quantum" rather than "resolution"
-       where appropriate.
-
-       * src/devices/grohtml/post-html.cpp
-       (html_printer::html_printer):
-       * src/devices/grops/ps.cpp (ps_printer::ps_printer):
-       * src/devices/grotty/tty.cpp (tty_printer::set_char)
-       (tty_printer::add_char, tty_printer::end_page):
-       * src/roff/troff/env.cpp (line_length, title_length): Do it.
-
-2022-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl: Do more "DESC" file validation.
-       (LoadDesc): Bomb out gracefully if any of "unitwidth", "res", or
-       "sizescale" missing from "DESC" file.  This prevents Perl
-       warnings about use of uninitialized values, and undoubtedly
-       mangled output.
-
-2022-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl: Revise diagnostic message
-       handling.
-       (top level): Add new scalar `progname` to house executable name.
-       (Msg): Output messages in format recommended by GNU Coding
-       Standards manual.  Identify who's talking (Savannah #52463).
-       Rename `lev` scalar to `fatal` since it is used only as a
-       Boolean for immediately exiting with failure status.  Report
-       diagnostic severity as part of message.
-       (Warn, Die): Add new subroutines through which all diagnostics
-       are now emitted.
-       (top level): Migrate a use of Perl `die` builtin to our `Die`.
-       (top level, ToPoints, LoadDownload, LoadDesc, do_x, GetPoints,
-       LoadSWF, LoadPDF, LoadStream, BuildStream, ParsePDFHash,
-       LoadFont, GetType1, GetChunk, RemapChr, do_N): Migrate `Msg(0,
-       ...)` calls to `Warn` and `Msg(1, ...)` to `Die`.  Begin
-       messages in lowercase (GNU Coding Standards).  Recast a few
-       messages for clarity.
-
-       Continues the long process of fixing Savannah #52463.
-
-2022-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (Load_Config): Drop unused
-       subroutine and its commented-out call site, which came in that
-       way in July 2011.
-
-2022-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (LoadFont): Warn if a font to be
-       embedded in PDF output cannot be located in the "download" file.
-
-       Fixes <https://savannah.gnu.org/bugs/?62572>.  Thanks to Deri
-       James.
-
-2022-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/a4.tmac: Drop file from distribution.  It has been
-       superseded by papersize.tmac for nearly 20 years.
-       * tmac/tmac.am (TMACNORMALFILES): Delete reference.
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?62569>.
-
-2022-06-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Parameterize X11-related man pages, so they don't get
-       spuriously generated (and not cleaned) when building with X11
-       support disabled.
-
-       * Makefile.am (.man): Fix logic nit: drop unnecessary removal of
-       target before clobbering it with sed.
-       * src/devices/xditview/xditview.am (GXDITVIEW_MAN1): Add new
-       macro, expanding to nothing if `WITHOUT_X11` and to the target
-       name otherwise.
-       (man1_MANS): Append `GXDITVIEW_MAN1` expansion, not a literal.
-       * src/devices/xditview/xditview.am (XTOTROFF_MAN1): Add new
-       macro, expanding to nothing if `WITHOUT_X11` and to the target
-       name otherwise.
-       (man1_MANS): Append `XTOTROFF_MAN1` expansion, not a literal.
-       * doc/doc.am (GROFF_MAN_PAGES1): Append foregoing expansions
-       instead of literals.
-
-2022-06-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Add `AM_CONDITIONAL`: `HAVE_URW_FONTS`, so our
-       Automake files can more easily cope with their absence.
-       * font/devpdf/Foundry.in: Add easily matched phrases to
-       comments, to clearly delimit the URW foundry portion of the file
-       so it can be omitted if those fonts are absent.
-       * font/devpdf/devpdf.am (font/devpdf/Foundry): Generate file
-       differently depending on `HAVE_URW_FONTS`; keep the existing
-       procedure if true, and delete the URW section from the generated
-       file otherwise, avoiding diagnostic messages from afmtodit(1)
-       and our BuildFoundries script.
-
-       Fixes <https://savannah.gnu.org/bugs/?62570>.
-
-2022-06-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries):
-       Generate script using the `PATH_SEPARATOR` Automake macro.
-       * font/devpdf/util/BuildFoundries.pl: Add `pathsep` scalar to
-       house the build-time path separator.
-       (LocateFile): Use it.
-       (LoadFoundry, CheckFoundry): Stop using spaces as part of the
-       path separation delimiter.  It is not idiomatic.
-
-2022-06-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Explicitly identify poppler tools in report.
-
-2022-06-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl: Trivially refactor.  Drop
-       unused hash `foundry`.  Drop scalar `warn` that was set and
-       updated but never tested.
-
-2022-06-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl: Alter script to write to
-       the standard output stream instead of (re)writing a file named
-       "download" in the current working directory.  This recovers from
-       a problem I introduced in commit 6e62be835d, 2 May, as an
-       unforeseen side effect of improving build parallelism so that
-       the "download" file wouldn't be read until it was fully
-       populated.  As a side benefit, this approach is more Unixy, and
-       less dependent on $PWD.
-       (top level): Stop calling `WriteDownload` with an argument.
-       (LoadFoundry): Close only the file handle of interest when done,
-       not all of them (including `STDOUT`, which we now need).
-       (CheckFoundry): Same--just for cleanliness, since at present
-       running the script in 'check' mode doesn't write to any streams.
-       (WriteDownload): Stop taking an argument and manipulating file
-       handles.  Write download file to standard output.
-       (LoadDownload, WriteDownload): Drop `top` scalar, used as a
-       mutex to serialize read and write access to "download" file; it
-       is no longer needed since the "download" file is now only read.
-
-2022-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Rename shell variables and Autoconf/Automake macros of
-       Boolean sense to have names more like logical predicates and
-       avoid doofy "DONT" nomenclature.
-
-       * m4/groff.m4 (GROFF_MAKE_RM): Rename shell variable
-       `groff_is_rm_defined` to `groff_make_defines_rm` (purely for
-       clarity; it already had a good name).
-       (GROFF_MAKE_RM): Rename this...
-       (GROFF_MAKE_DEFINES_RM): to this, to make parallelism obvious,
-       and enabling...
-       * configure.ac: ...rename of `MAKE_DONT_HAVE_RM` to
-       `MAKE_DEFINES_RM` with sense of test reversed.  Also interpolate
-       `GROFF_MAKE_DEFINES_RM` instead of `GROFF_MAKE_RM`.  This in
-       turn enables...
-       * Makefile.am: ...revision of conditional from
-       `MAKE_DONT_HAVE_RM` to "!`MAKE_DEFINES_RM`".
-
-2022-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS_PATH)
-       (GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_APPDEFDIR_OPTION)
-       (GROFF_UCHARDET): Recast help strings to more closely parallel
-       structure and style of Autoconf's own help strings.
-       (GROFF_WITH_COMPATIBILITY_WRAPPERS): Recast to tighten wording.
-
-2022-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac:
-       * m4/groff.m4 (GROFF_APPDEFDIR_OPTION, GROFF_APPDEFDIR_DEFAULT)
-       (GROFF_APPDEFDIR_CHECK): Rename m4 macros and shell variable
-       from "*appres*" to "*appdef*.  Update interpolation sites.
-
-       * configure.ac:
-       * m4/groff.m4 (GROFF_APPDEFDIR_CHECK): Further rename this...
-       (GROFF_APPDEFDIR_NOTICE): ...to this, for consistency with other
-       post-report output macros.
-
-       * Makefile.am:
-       * PROBLEMS:
-       * doc/automake.mom:
-       * src/devices/xditview/xditview.am: Update interpolation sites
-       of `appresdir`.
-
-       * Makefile.am:
-       * src/devices/xditview/gxditview.1.man:
-       * src/roff/groff/groff.1.man: Update interpolation sites of
-       `APPRESDIR`.
-
-       * NEWS: Add item.
-
-2022-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_X11, GROFF_UCHARDET): Drop redundant
-       messages (which are easily overlooked amid the torrent of
-       "checking" output anyway).  Discovery failures of X11 and the
-       uchardet library are already parts of the configuration report
-       at or near the end of output.
-
-2022-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PNMTOPS_NOSETPAGE): Partially revert change
-       from 21 May and document why in a comment.
-
-2022-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/troffrc: Skip loading of "papersize.tmac" if not in troff
-       mode.
-
-       Fixes <https://savannah.gnu.org/bugs/?62238>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-05-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Report use of "g" prefix for commands and macro
-       package compatibility wrappers.
-       * m4/groff.m4 (GROFF_G): Fix code style nits.  Update
-       indentation to match recent practice.
-
-2022-05-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Fix code style nits and tweak report.  Stop
-       superfluously using braces for shell parameter expansions that
-       don't require them.  The shell is not make(1).  Say
-       "installation _directory_ prefix" since another kind of prefix
-       can be used by groff (the "g" in front of command and macro
-       package names shared with AT&T troff).
-
-2022-05-31  Dave Kemper <saint.snit@gmail.com>
-
-       * doc/groff.texi: Fix content and style nits.
-         - Remove redundancy ("fixed-width... character that can't be
-           adjusted").
-         - Fix incorrect word ("environment value" -> "environment
-           variable").
-         - Add or change the placement of a couple tie{}s to comport
-           with style-guide recommendation.
-         - Grammarify.
-         - Clarify and tighten wording.
-
-       Fixes <https://savannah.gnu.org/bugs/?62551>.
-
-2022-05-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.cpp (font_position): If mounting a font
-       fails and a third argument was given (to the `fp` request),
-       report its value in the diagnostic message.  This could reveal a
-       prohibited attempt at directory traversal.  See commit
-       a891161bc9, 7 November.
-
-2022-05-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/fontfile.cpp (font::open_file): Refactor.
-       Move more logic, including memory allocation, inside conditional
-       that accepts only file names without '/' characters, skipping
-       unnecessary work in the alternative.  Annotate use of zero
-       literals as null pointers to ease any future migration to ISO
-       C++11.  Add 'const' qualifier to variable that doesn't require
-       modification (and which is used in the LHS of an equality
-       comparison, so that clumsy operator misuse will provoke a
-       compiler warning).
-
-       Fixes <https://savannah.gnu.org/bugs/?62532>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-05-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: In configuration report, say that we're
-       reporting compiler options along with the compiler executable.
-       Fix leftover test(1) comparison with garbage, overlooked in
-       commit faa22d89d2, 20 May.
-
-2022-05-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/meintro_fr.ps): Build with '-t' option.
-
-       Fixes <https://savannah.gnu.org/bugs/?62542>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-05-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.1.man (Options) <-l>: Handle case where
-       no default print spooler is configured, and report formatter
-       behavior correctly if it isn't.
-
-       Fixes <https://savannah.gnu.org/bugs/?62535>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-05-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am (.man): Process '@PSPRINT@' substitutions with
-       "makevarescape.sed".
-
-2022-05-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PROG_YACC, GROFF_MAKEINFO, GROFF_TEXI2DVI):
-       Fix logic error in detection of build scenario: the presence of
-       a ".git" directory is not an indicator that we're not building
-       from a distribution archive, because we might be building from a
-       snapshot archive (which also lacks it).  Instead, perform checks
-       required only by builds from Git checkouts and snapshot archives
-       if the ".tarball-version" file is not present.
-
-2022-05-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am (EXTRA_DIST): Ship "HACKING" file.
-
-2022-05-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * bootstrap.conf: Add "pkg-config" to `buildreq`.  Not having it
-       causes pretty horrible macro expansion problems and diagnostics
-       when 'autoreconf' is run; they're still pretty bad even if you
-       use `AC_REQUIRE` and `m4_pattern_forbid`.  So just demand it.
-
-2022-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devps/S:
-       * font/devps/symbolmap: Drop excess mapping of `*U` special
-       character.  groff maps it to the Adobe Glyph List name
-       'Upsilon1'.  (The AGL 'Upsilon' is a homoglyph of the Latin
-       capital 'Y'.)
-       * PROBLEMS: De-document build-time warning, now resolved.
-
-2022-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.tables: Regenerate using Unicode
-       14.0.  No substantive changes.
-
-2022-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/make-afmtodit-tables: Refactor.  Drop
-       unused variable `prog`.  Use value of `CPP` from environment (if
-       defined) and use parameter expansion to apply a default if null
-       or not set.  Use for loop to eliminate duplicative if statement.
-       Test input files for readability, not just existence.  Use more
-       portable test(1) and shell syntax.  Swap usage error and fatal
-       error exit statuses; using "1" for failure and "2" for usage
-       errors is more common in shell scripts I've seen.  Update usage
-       message to put non-literal parameter in full caps, and clarify
-       its name.  Update comment blocks written to generated files to
-       further clarify data provenance.
-
-2022-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PRINT): Refactor.  Stop performing checks
-       for spooler options if none is available.  Stop redundantly
-       reporting command name used for spooling PostScript files.  If
-       an option is required for spooling DVI files, report it alone
-       instead of repeating the command name as well.
-
-2022-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Fix insensitivity of groff(1) man page to configured spooler.
-
-       * Makefile.am (.man): Replace `@PSPRINT@` in man page sources
-       with name of configured print spooler command.
-       * src/roff/groff/groff.1.man (Options) <-l>: Use configured
-       print spooler command instead of literal 'lpr'.
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_UCHARDET_CHECK): Fix grammar nit in failure
-       message when user demands uchardet support but the library
-       cannot be located.
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS): Fix logic error in
-       computation of verb to be used in notice message.
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PROG_YACC, GROFF_URW_FONTS_CHECK)
-       (GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_UCHARDET_NOTICE):
-       Improve shell code portability.  Per the GNU Autoconf manual,
-       "The -a, -o, '(', and ')' operands are not present in all
-       implementations, and have been marked obsolete by Posix 2008.
-       ...portable uses of test should never have more than four
-       arguments, and scripts should use shell constructs like '&&' and
-       '||' instead."
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.1.man (Installation directories): Don't
-       output a tagged paragraph for the X11 application defaults
-       directory if the build symbol '@APPRESDIR@' is not defined (that
-       is, we didn't build with X11 support).
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK): Fix code style
-       nits.  Use lowercase for shell variables we define.  Don't quote
-       literal operands to test(1) that don't contain syntactically
-       shell-significant characters.  Update indentation to match
-       recent practice.
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS_NOTICE): Don't emit the notice if
-       Ghostscript isn't available, since it was a prerequisite for
-       the `GROFF_URW_FONTS_CHECK` macro in the first place.
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Add print spooler determination to configuration
-       report.
-
-       * m4/groff.m4 (GROFF_PRINT): Add shell variable
-       `groff_have_spooler` to house the name of the print spooler
-       {"lp" or "lpr"} or the word "no".
-       * configure.ac: Report determined spooler, or its absence.
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Skip
-       seekability check of the standard input stream if there is no
-       controlling terminal.
-
-       Fixes <https://savannah.gnu.org/bugs/?62506>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-05-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS): Migrate from
-       `AC_FOREACH` to `m4_foreach` to avoid obsolescence warning from
-       GNU Autoconf 2.70 or later.
-
-       Fixes <https://savannah.gnu.org/bugs/?61059>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man: Rename "pilot" list macros for man(7) from
-       `BL`/`EL` to `LS`/`LE`, per suggestion from Alejandro Colomar.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_MAKEINFO, GROFF_TEXI2DVI): Check for
-       makeinfo(1) and texi2dvi(1) programs only if building from Git,
-       not a distribution archive.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/meintro_fr.ps): Call groff with `-K utf8`
-       instead of `-k`, in case the "configure" script didn't find
-       uchardet (and preconv(1) thus can't auto-detect an encoding).
-
-       Fixes <https://savannah.gnu.org/bugs/?59463>.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Skip
-       a check if /dev/stdin is not a character special device.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PDFTOOLS): Rename this...
-       (GROFF_POPPLER): ...to this.
-       * configure.ac: Update call site.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_UCHARDET_CHECK): Rename this...
-       (GROFF_UCHARDET_NOTICE): ...to this.
-       * configure.ac: Update call site.
-
-       * m4/groff.m4 (GROFF_UCHARDET_NOTICE): Tighten wording of
-       message reported to user.
-
-       Fixes <https://savannah.gnu.org/bugs/?59481>.  Thanks to Dave
-       Kemper for the report.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PNMTOOLS_CAN_BE_QUIET)
-       (GROFF_PNMTOPS_NOSETPAGE): Skip check if prerequisite not met.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS_CHECK): Rename this...
-       (GROFF_URW_FONTS_NOTICE): ...to this.
-       (GROFF_URW_FONTS): ...and this...
-       (GROFF_URW_FONTS_CHECK): ...to this.
-       (GROFF_URW_FONTS_NOTICE): Give lengthy notice message a one-line
-       summary.
-       * configure.ac: Update call sites.
-
-2022-05-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS): Refactor.  If our prerequisites
-       are not met (availability of 'awk' and 'gs'), don't even run the
-       check logic or print a "checking" message.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Handle missing programs required to construct files needed at
-       runtime by gropdf more gracefully.  Rename and refactor
-       configuration-time logic to be more understandable.
-
-       * configure.ac:
-       * m4/groff.m4: Rename `GROFF_PDFDOC_PROGRAMS` macro to
-       `GROFF_CHECK_GROPDF_PROGRAMS`.  Rename shell variable
-       `make_pdfdoc` to `use_gropdf`.  Set it explicitly to "no" or
-       "yes" instead of null or not null.
-
-       * configure.ac:
-       * m4/groff.m4:
-       * doc/doc.am: Rename `BUILD_PDFDOC` to `USE_GROPDF`.
-
-       * configure.ac: Call `GROFF_GROPDF_PROGRAM_NOTICE`.
-
-       * doc/doc.am: Bracket definition of `PROCESSEDDOCFILES_PDF`
-       macro and `$(PROCESSEDDOCFILES_PDF)` dependency declaration in
-       Automake `if USE_GROPDF` conditional.  This prevents attempts
-       to build PDF documents using groff that are doomed to fail.
-
-       * m4/groff.m4: Refactor gropdf runtime-dependency program check.
-       Split into two macros: one (`GROFF_CHECK_GROPDF_PROGRAMS`)
-       performs the check, the other (`GROFF_GROPDF_PROGRAM_NOTICE`)
-       issues a notice at the end of the configuration process if at
-       least one program was not found.  Rename `docnote` shell
-       variable to `gropdf_notice`.  Tighten wording of notice.  Drop
-       unused `make_install_pdfdoc` and `make_uninstall_pdfdoc` shell
-       variables.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Handle missing programs required at runtime by grohtml more
-       gracefully.  Rename and refactor configuration-time logic to be
-       more understandable.
-
-       * configure.ac:
-       * m4/groff.m4: Rename `GROFF_HTML_PROGRAMS` macro to
-       `GROFF_CHECK_GROHTML_PROGRAMS`.  Rename shell variable
-       `make_htmldoc` to `use_grohtml`.  Set it explicitly to "no" or
-       "yes" instead of null or not null.
-
-       * configure.ac:
-       * m4/groff.m4:
-       * doc/doc.am: Rename `BUILD_HTML` to `USE_GROHTML`.
-
-       * configure.ac: Call `GROFF_GROHTML_PROGRAM_NOTICE`.
-
-       * doc/doc.am: Bracket definition of `PROCESSEDDOCFILES_HTML`
-       macro and `$(PROCESSEDDOCFILES_HTML)` dependency declaration
-       in Automake `if USE_GROHTML` conditional.  This prevents an
-       attempt to build an HTML version of the "pic.ms" document that
-       is doomed to fail (noisily).
-
-       * m4/groff.m4: Refactor grohtml runtime-dependency program
-       check.  Split into two macros: one
-       {`GROFF_CHECK_GROHTML_PROGRAMS`} performs the check, the other
-       {`GROFF_GROHTML_PROGRAM_NOTICE`} issues a notice at the end of
-       the configuration process if at least one program was not found.
-       Rename `html_docnote` shell variable to `grohtml_notice`.
-       Tighten wording of notice.  Drop unused `make_install_htmldoc`
-       and `make_uninstall_htmldoc` shell variables.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_NOTICE): Add newline at
-       end of buggy Ghostscript notification, so that the multiple
-       possible lengthy notices after the configuration report have
-       blank lines separating them.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Check for m4 program at configuration time.
-
-       * m4/groff.m4 (GROFF_PROG_M4): Define new macro to perform the
-       check and error out if the program is missing.
-       * configure.ac: Call the new macro.
-       * tmac/tmac.am (tmac/groff_man.7.man)
-       (tmac/groff_man_style.7.man): Use the new implicitly AC_SUBST-ed
-       variable `M4` to run the program.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_PROG_YACC): Update wording of error
-       message: we search for "yacc", so report it as missing if it is
-       not found (along with "byacc" and "bison").
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Fix shell style nits.  Get rid of string
-       {non-}nullity tests and comparisons involving concatenation with
-       garbage (usually "x").  See 13 November entry regarding m4.  Use
-       idiomatic shell "brace style" for control structures.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Trivially refactor libgroff allocator configuration.
-
-       * m4/groff.m4 (GROFF_USE_GROFF_ALLOCATOR): Update description of
-       configuration flag to clarify that it's implemented in a
-       library.  Rename shell variable to prefix it with "groff_",
-       putting it in an ad hoc name space as with other variables.  If
-       feature disabled, set variable to literal "no".
-       * configure.ac: Use renamed variable and interpolate it directly
-       into configuration report, simplifying shell logic.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Revise configuration report for intelligibility.
-       Add report of C++ compiler and flags used: we compile much more
-       C++ than C code so this seems appropriate.  Report Perl
-       interpreter version so that we can collect build reports and
-       turn the ratchet past Perl 5.6.1 at some point.  Fix X11
-       "resources" misnomer (application defaults are what is meant).
-       Rephrase generally.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am (EXTRA_DIST): Ship "ChangeLog.122" in distribution
-       archive.  Overlooked in commit c11995df16, 19 February 2021.
-
-2022-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh:
-       Fix portability problem: POSIX says that "od -c" (and "od -t c")
-       are supposed to emit printing characters as defined by the
-       underlying locale, but GNU coreutils od doesn't do this and
-       macOS od does.  Set `LC_ALL` to "C" when running it to force
-       3-digit octal reporting of characters with their eighth bit set.
-
-       Fixes <https://savannah.gnu.org/bugs/?62357>.  Thanks to John
-       Gardner for the report.  Also see <https://pubs.opengroup.org/\
-       onlinepubs/9699919799/utilities/od.html>.
-
-2022-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * INSTALL.extra (In Case of Trouble): Add advice on using the
-       test suite, particularly if it fails.
-
-       Fixes <https://savannah.gnu.org/bugs/?62478> (one hopes).
-
-2022-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Input Line Traps):  Expand discussion.  The
-       `it` and `itc` requests count neither input lines (strictly) nor
-       text lines.  Instead, they count input lines that _directly
-       produce formatted output_ (and, in the case of `itc`, are not
-       "interrupted" or continued with the `\c` escape sequence).  This
-       is useful--empty requests and requests that don't put nodes on
-       the output don't break things--but does demand some explanation.
-       Clarify and provide example.
-       * man/groff.7.man (Escape sequence short reference) <it>: Sync.
-
-2022-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (environment::choose_breakpoint): Tweak
-       diagnostic message ("can't" -> "cannot").
-       * doc/groff.texi (Breaking): Update example.
-
-2022-05-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Copy Mode):
-       * man/groff.7.man (Copy mode): Fix omission; `\?` is interpreted
-       in copy mode.
-
-2022-05-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (PT): Unclutter name space; remove
-       `pg*saved-page-number-format` string when we're done with it.
-
-2022-05-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Add unit tests, including one XFAIL for bad behavior.
-
-       * src/preproc/tbl/tests/check-horizontal-line-length.sh:
-       * src/preproc/tbl/tests/check-line-intersections.sh:
-       * src/preproc/tbl/tests/check-vertical-line-length.sh:
-       * src/preproc/tbl/tests/table-lacks-spurious-top-border.sh: Do
-       it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run tests.
-       (tbl_XFAIL_TESTS, XFAIL_TESTS): Expect one test failure.
-
-2022-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/tty.cpp (tty_printer::add_char): Modify
-       diagnostic message: what gets written "above [the] first line"
-       might not be a character (glyph) per se, but a line (rule) from
-       a drawing command, and in fact the occurrence of these from
-       boxed tables is the most common cause of this message I've seen.
-
-2022-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grotty]: Do more input validation.
-
-       * src/devices/grotty/tty.cpp (tty_printer::draw): Throw warning
-       if an unsupported geometric primitive is encountered.
-       (tty_printer::line): Throw warning if a line is diagonal.  Die
-       if length of a horizontal or vertical line is not a multiple of
-       the appropriate motion quantum of the device (troff should never
-       emit such nonsense, and currently doesn't appear to).
-
-2022-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/tbl.1.man (Miscellaneous): Document GNU tbl's
-       use of `#T` and `T.` registers.
-
-2022-05-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_color_draw_node): Tweak
-       diagnostic message to better distinguish drawing commands and
-       device control commands.
-
-2022-05-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Mitigate double-free problem exposed by malformed
-       input.
-
-       * src/roff/troff/mtsm.h (struct statem): Place member variable
-       `issue_no` behind `DEBUGGING` preprocessor symbol, omitting it
-       from production and ordinary development builds.
-       * src/roff/troff/mtsm.cpp (no_of_statems): Place global variable
-       behind `DEBUGGING` preprocessor symbol, omitting it from
-       production and ordinary development builds.
-       (statem::statem): Make constructor trivial if `DEBUGGING` not
-       defined in preprocessor; it manipulates only `issue_no` and
-       `no_of_statems`, which are synchronized.
-       (statem::statem {copy}): Gate assignment of `issue_no` member
-       variable from copy constructor behind `DEBUGGING` preprocessor
-       symbol.
-       (statem::flush, mtsm::inherit): Gate debugging output, already
-       runtime-gated on `debug_state` symbol, of `issue_no` member
-       variable, so that we don't reference it when it is not declared.
-
-       See <https://savannah.gnu.org/bugs/?62040>.
-
-2022-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer]: Rename a test artifact; it's a bibliographic database
-       file, not a refer(1) command file.
-
-       * src/preproc/refer/tests/artifacts/62124.ref: Rename this...
-       * src/preproc/refer/tests/artifacts/62124.bib: ...to this.
-       * src/preproc/refer/refer.am (EXTRA_DIST):
-       * src/preproc/refer/tests/report-correct-line-numbers.sh: Use
-       new name.
-
-2022-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/command.cpp (process_commands): Begin
-       migration to use existing global variables for location reports
-       in diagnostic messages.  Save current file name and line number
-       before calling `command_loop()` and restore them afterward.
-       Also decrement line counter before entering that loop because it
-       would be too far advanced by one due to the final newline on a
-       parsed input line.
-
-2022-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.cpp (main): Report system error on
-       `fflush()` failure.  POSIX Issue 5 a.k.a. SUSv2 (1997) specifies
-       several possible `errno` values this C standard library function
-       can set; see
-       <https://pubs.opengroup.org/onlinepubs/007908799/xsh/fflush.html>.
-
-2022-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer]: Refactor: drop unused version of function (taking only
-       a `const char *` parameter).
-
-       * src/preproc/refer/command.cpp (process_commands): Drop
-       definition.
-       * src/preproc/refer/command.h (process_commands): Drop
-       declaration.
-
-2022-05-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.cpp (do_file): Fix another off-by-one
-       line number reporting bug exposed by fix for Savannah #62391.
-
-2022-05-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/tests/report-correct-line-numbers.sh: Add
-       more regression tests.
-
-2022-05-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer]: Trivially refactor: boolify.
-
-       * src/preproc/refer/command.cpp (input_stack::push_file): Demote
-       and rename local variable from `int` to `bool`.
-       (bol): Renamed from this...
-       (is_at_beginning_of_line): ...to this.
-
-2022-05-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer]: Trivially refactor.
-
-       * src/preproc/refer/command.cpp (input_stack::push_file):
-       * src/preproc/refer/refer.cpp (do_file): Drop unnecessary
-       construction of integer from integer (return type of `getc()`)
-       in argument to error diagnostic functions; parallelizes with
-       other diagnostic function calls.
-
-2022-05-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/command.cpp: Refactor to simplify.
-       (get_location): Demote return type from `int` to `void`.  The
-       function only ever returned a `1` literal.
-       (input_stack::error): Update call site to stop uselessly testing
-       return value of `get_location()`.
-
-2022-05-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (dist-info-bits, install_infodoc, dist-gnueps): Fix
-       logic error.  When checking both source and build trees for
-       files to copy, break after successfully copying the files, not
-       after the first iteration of the loop unconditionally.  This
-       caused the Info documents not to be installed from out-of-tree
-       builds, and potentially would prevent them and doc/gnu.eps from
-       being included in the distribution archive if for some reason
-       they didn't build and that build failure were not treated as an
-       error.  Problems introduced by me in commits e78bd20d54, 27
-       March, and d79c3f3a4a, 11 November.
-
-2022-05-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_APPRESDIR_OPTION): Update comments and
-       human-readable output to (1) stop claiming that existing
-       gxditview application defaults in the installation directory
-       will be backed up; this is no longer true as of commit
-       c66cb7725f, 3 April; and (2) refer to these files as
-       "application defaults", not "resources".  (X11 application
-       defaults are client-side and mandatory [for Xt-based programs];
-       X resources are stored server-side and need not be configured to
-       determine an X client's geometry and rendering.)
-
-2022-05-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devX100-12/devX100-12.am (devX100_12_fontdir):
-       * font/devX100/devX100.am (devX100_fontdir):
-       * font/devX75-12/devX75-12.am (devX75_12_fontdir):
-       * font/devX75/devX75.am (devX75_fontdir): Define macros without
-       an extra "font/" layer in the directory hierarchy.
-
-       Fixes problem introduced by me in commit 3c82cbbfe5, 27
-       February.
-
-2022-05-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries): Spell
-       dependency on `$(SH_DEPS_SED_SCRIPT)` using that macro expansion
-       instead of a literal file name.  See doc/automake.mom.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/eqn.am (MAINTAINERCLEANFILES):
-       * src/preproc/pic/pic.am (MAINTAINERCLEANFILES):
-       * src/preproc/refer/refer.am (MAINTAINERCLEANFILES): Preserve
-       byacc/bison output artifacts unless "maintainer-clean"ing.  Per
-       the GNU Automake manual, "The intermediate files generated by
-       yacc (or lex) will be included in any distribution that is made.
-       That way the user doesn’t need to have yacc or lex."
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am: Stop manually handling "test-groff".  Per the
-       GNU Automake manual, "If configure built it, then distclean
-       should delete it."  This is taken care of automatically if we
-       don't interfere.
-       (BUILT_SOURCES, MOSTLYCLEANFILES): Drop "test-groff".
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/eqn.am (neqn): Produce temporary file first
-       and set its permissions before moving it into place.  If
-       anything in the future ever has a dependency on it, this avoids
-       a race where the file exists, satisfying a dependency, but
-       execution is attempted before its `x` permission bit is set.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Ensure that we install *.me source files, but don't
-       include them in the distribution archive.
-
-       * doc/doc.am (dist_otherdoc_DATA): Move `$(GENERATEDDOCFILES)`
-       from here...
-       (nodist_otherdoc_DATA): ...to here.
-       (.PRECIOUS): Add `$(GENERATEDDOCFILES)` so that make(1) doesn't
-       automatically remove "intermediate" objects in the .me.in -> .me
-       -> .ps chain.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Handle "gnu.eps" file better.
-
-       * doc/doc.am (GENERATEDDOCFILES): Remove `$(DOC_GNU_EPS)`.
-       (EXTRA_DIST): Ship `$(DOC_GNU_EPS)` in distribution archive.
-       ($(DOC_GNU_EPS)): Simplify rule commands; stop trying to copy
-       the file around since it will either be (1) in the distribution
-       archive from which a build is performed; or (2) missing because
-       a build is being done from Git, in which case we expect the PNM
-       tools to be available.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (clean_otherdoc): Drop target: it doesn't seem to
-       accomplish anything.
-       (clean_infodoc): Drop target, moving its rules into...
-       (maintainer-clean-local): ...this.  Drop deps, both gone now.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (distclean-local): Drop target: stop cleaning
-       generated forms of our Texinfo manual with the "distclean"
-       target.  They ship with the distribution archive and should
-       remain in the tree even if the user needs to re-./configure.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Fix problems exposed by high build parallelism.
-
-       * font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries)
-       (font/devpdf/DESC, font/devpdf/Foundry): Drop
-       unnecessary removal of target prior to creating it.
-       (font/devpdf/Foundry): Add creation of destination build
-       directory as other targets do.
-       (font/devpdf/download): Create dedicated target instead of
-       lumping its generation under the stamp file.  Add missing
-       dependencies on `$(DEVPDFFONTMAP_1)`, `$(DEVPDFFONTMAP_2)`,
-       `font/devpdf/Foundry` and `font/devpdf/enc/text.enc`.  Remove
-       now-unnecessarily complicated "forgery" of "GEN" line in quiet
-       builds.  Tweak format of comment written to "download" file to
-       make field identities clearer.  Construct output (with multiple
-       shell commands) in temporary file so it is not read prematurely
-       by the "BuildFoundries" script.  Move target into place as the
-       last step.
-       (font/devpdf/stamp): Relocate target to follow its dependencies.
-       Add dependency on "font/devpdf/download".
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Tweak diagnostic messages in BuildFoundries script.
-
-       * font/devpdf/util/BuildFoundries.pl (LoadFoundry)
-       (WriteDownload, CheckFoundry): Recast for specificity and
-       consistent style.
-       (Die): Stop reporting line number with fatal errors; none of the
-       call sites are parsing input.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer]: Fix off-by-one error in line number for some
-       diagnostics.
-
-       * src/preproc/refer/command.cpp (input_item::get_location):
-       Decrement reported line number by one after looping over input
-       so that we report the line number as it was before the last
-       newline character seen.  This off-by-one error was partially
-       masked by...
-       * src/preproc/refer/refer.cpp (do_file): ...initialization of
-       `current_lineno` to zero.  However, for syntax problems (as
-       opposed to the semantic problems of refer(1) command
-       processing), this could result in complaints about the line
-       number before they occurred, even on "line zero".  Initialize
-       the variable to 1.
-
-       Fixes <https://savannah.gnu.org/bugs/?62391>.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/tests/report-correct-line-numbers.sh: Add
-       regression test for Savannah #62391.
-
-2022-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/tfmtodit/tfmtodit.cpp (usage): Tweak usage message.
-       Condense `-v` and `--version` into a single output line with
-       brace and pipe notation, which we do not use in our man pages,
-       but consistently do in our usage messages.  Use lowercase for
-       option arguments since they are separated from option flag
-       letters by space.  Call `fprintf()` once instead of 3 times.
-
-2022-05-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.cpp (main): Tweak wording of
-       diagnostic messages to refer to options consistently and to
-       characterize input as "invalid" rather than "bad".
-       (usage): Document --version option.  Use more informative
-       metasyntactic variable names.  Organize usage message
-       consistently with our others, and stop wrapping the output
-       lines: we know neither the width of the terminal nor the length
-       of the `program_name` string we're interpolating.  See commit
-       b4de44f0, 19 July 2021.
-
-2022-05-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (string_iterator::backtrace): Fix
-       spurious output when `mac.filename` is empty.  Provoked by:
-         $ printf '\\(' | troff -b
-
-2022-05-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.cpp: Trivially refactor.  Demote
-       global variable `recognize_R1_R2` from integer to Boolean.
-       (main, do_bib): Give expressions to `assert()` meaningful
-       content.
-       (is_list): Demote return type from `int` to `bool`.
-       (do_file): Demote and rename integer local variables
-       `start_of_line` to Boolean `at_start_of_line`.
-       (is_list, do_file): Reorder equality comparisons to avoid
-       inadvertent lvalue assignment.
-
-2022-05-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Reduce and rationalize in-tree document dependencies.
-       This eliminates spurious rebuilds of numerous documents
-       {including the 380+-page groff-man-pages collections}.  It also
-       fixes missing dependencies when using the build's groff to
-       generate PostScript documents.
-
-       * .gitignore: Drop old name of devpdf stamp file.
-       * doc/.gitignore: Drop now-unused "example.stamp" file.
-       * doc/doc.am (PROCESSEDDOCFILES_HTML, PROCESSEDDOCFILES_PDF)
-       (PROCESSEDDOCFILES_TXT): Add new macros grouping targets by the
-       format/output driver used to produce them, to better organize
-       dependencies for their generation.
-       (PROCESSEDDOCFILES): Redefine as simply the expansions of the
-       foregeoing.
-       (PROCESSEDFILES_DEPS_HTML, PROCESSEDFILES_DEPS_HTML,
-       PROCESSEDFILES_DEPS_PDF, PROCESSEDFILES_DEPS_TXT): Add new
-       macros defining prerequisites for production of the
-       corresponding output document formats.
-       ($(PROCESSEDDOCFILES_HTML), $(PROCESSEDDOCFILES_PDF),
-       $(PROCESSEDDOCFILES_PS), $(PROCESSEDDOCFILES_TXT)): Declare the
-       dependencies using expansions of the foregoing macros.
-       (MOSTLYCLEANFILES): Drop "doc/automake.pdf", now part of
-       `PROCESSEDDOCFILES_PDF`.
-       (doc/automake.pdf): Drop dependencies already supplied by
-       `PROCESSEDFILES_DEPS_PDF`.
-       (HTMLDOCFILES): Drop macro.  "doc/pic.html" is now in the
-       expansion of `PROCESSEDDOCFILES_HTML`.
-       (htmlpic_DATA): Redefine as expansion of
-       `PROCESSEDDOCFILES_HTML` instead of `HTMLDOCFILES`.
-       (PROCESSEDEXAMPLEFILES_HTML) [BUILD_HTML]: Define as
-       "doc/webpage.html", otherwise as empty.
-       (PROCESSEDEXAMPLEFILES_PS): Contain "doc/webpage.ps" and
-       "doc/grnexampl.ps".
-       (PROCESSEDEXAMPLEFILES): Redefine as expansions of
-       `PROCESSEDEXAMPLEFILES_HTML` and `PROCESSEDEXAMPLEFILES_PS`.
-       ($(PROCESSEDEXAMPLEFILES_HTML), $(PROCESSEDEXAMPLEFILES_PS)):
-       Declare dependencies using `PROCESSEDFILES_DEPS_HTML` and
-       `PROCESSEDFILES_DEPS_PS`, respectively.
-       (HTMLEXAMPLEFILES): Drop macro.  "doc/webpage.html" is now in
-       the expansion of `PROCESSEDDOCFILES_HTML`.
-       (nodist_htmlexamples_DATA): Drop macro, no longer needed.
-       ($(PROCESSEDDOCFILES_PS)): Relocated and redefined above.
-       ($(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES)): Drop overbroad
-       dependency declarations in favor of the above.
-       (MOSTLYCLEANFILES, doc/examples.stamp): Drop generation and
-       removal of unnecessary stamp file.
-       (doc/pic.html, doc/webpage.html): Add explicit dependency on
-       required preprocessors.  Drop redundant and spurious
-       dependencies.
-       * font/devhtml/devhtml.am (MOSTLYCLEANFILES)
-       (font/devhtml/stamp): Generate and remove stamp file to enable
-       reliable target dependencies for build-time generation of HTML
-       documents by groff.
-       * font/devpdf/devpdf.am (MOSTLYCLEANFILES, font/devpdf/stamp):
-       Rename stamp file from "font/devpdf/build_font_files".
-       (font/devpdf/stamp): Drop unnecessary dependency on "afmtodit".
-       * font/devps/devps.am (MOSTLYCLEANFILES, font/devps/stamp):
-       Generate and remove stamp file to enable reliable target
-       dependencies for build-time generation of PostScript documents
-       by groff.
-       * font/devutf8/devutf8.am (MOSTLYCLEANFILES)
-       (font/devutf8/stamp): Generate and remove stamp file to enable
-       reliable target dependencies for build-time generation of
-       UTF-8-encoded text documents by groff.
-
-       Fixes <https://savannah.gnu.org/bugs/?62084>; thanks to
-       Sergei Trofimovich for the report.  Also fixes
-       <https://savannah.gnu.org/bugs/?62297>; thanks to Bjarni Ingi
-       Gislason for the report.
-
-2022-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Fix code style nits in Automake files.
-
-       * doc/doc.am: Put spaces around (Auto)make variable assignments,
-       for consistency with the rest of this .am file, and our others.
-       * font/devpdf/devpdf.am (font/devpdf/build_font_files): Use
-       shell '>' operator instead of touch(1).
-       * font/devhtml/devhtml.am (font/devhtml/DESC):
-       * font/devps/devps.am (font/devps/DESC): Construct target in
-       temporary file, since doing so is a multi-step process, moving
-       it to the target name when it is complete and usable by
-       dependencies.
-
-2022-04-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.cpp (main): When complaining of
-       unrecognized option, report the entire option string (after
-       the leading dash), not just its first character.
-
-2022-04-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/error.cpp: Trivially refactor.  Explicitly
-       compare pointer lvalues to null pointers instead of punningly
-       treating them as Booleans.  Annotate use of zero literals as
-       null pointers to ease any future migration to ISO C++11.
-
-2022-04-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (an*abbreviate-inner-footer): Clean up better
-       before early returns.  Remove temporary registers.
-
-2022-04-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/fallbacks.tmac: Add fallbacks for U+02C6 MODIFIER LETTER
-       CIRCUMFLEX ACCENT and U+02DC SMALL TILDE to Basic Latin
-       characters.
-
-2022-04-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Fix portability problem.  Don't pass echo(1) arguments
-       containing backslashes because implementations handle them
-       differently.  Use printf(1) instead.  Thanks to Bertrand
-       Garrigues for reporting the problem and confirming the fix on
-       his build host.
-
-       * tmac/tests/e_chapter-titles-work.sh:
-       * tmac/tests/e_ld-works.sh:
-       * tmac/tests/localization-works.sh: Do it.
-
-2022-04-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (ppsz): Recognize "com10" (U.S.
-       commercial envelope) paper format.
-
-       Addresses the original issue reported in
-       <https://bugs.debian.org/1009248>.  We have however broadened
-       its scope; see <https://savannah.gnu.org/bugs/?62344>.
-
-2022-04-27  Dave Kemper <saint.snit@gmail.com>
-
-       * src/devices/gropdf/gropdf.pl (ppsz): Recognize ISO B-series
-       paper formats using strings of the form "b0-b6", not "isob0-b6",
-       for consistency with libgroff and papersize.tmac.
-
-       Fixes <http://savannah.gnu.org/bugs/?62346>.
-
-2022-04-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor to simplify.  Ingo's removal of the
-       "--with-doc" "configure" option, among other changes, clears the
-       way to remove many phony targets and simplify dependencies
-       involving generation of the 5 formats of our Texinfo manual.
-       (build_infodoc, doc, doc_all, doc_txt, dvi, doc_dvi, pdf,
-       doc_pdf, html, doc_html): Drop phony targets.
-       (all): Depend directly on doc/groff.{info,txt,html,dvi,pdf}.
-       * NEWS: Add item since "make doc" is no longer necessary and
-       will do nothing.
-
-2022-04-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Handle `\R` sequences in text blocks robustly.
-
-       * src/preproc/tbl/table.cpp (table::add_entry): Fix SEGV when
-       repeating glyph table entry syntax (`\Rx`) used in a text block.
-       Lift extraction of entry string to be done unconditionally,
-       rather than in 5 different special cases.  This frees us up to
-       rewrite the entry if necessary, changing '\R' to '\&' inside a
-       text block.  Recast diagnostic to describe the problem
-       clearly--"bad repeated character" suggests that something is
-       wrong with the "argument" to `\R`, when really the problem is
-       the _context_.
-
-       Fixes <http://savannah.gnu.org/bugs/?62366>.
-
-2022-04-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #62366.
-
-       * src/preproc/tbl/tests/\
-       do-not-segv-when-backslash-R-in-text-block.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2022-04-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/string.cpp (string::extract): Check return
-       value of `malloc()` for nullity, and only poke into the buffer
-       returned if it is valid.  Discovered while troubleshooting
-       Savannah #62366.
-
-2022-04-23  Bertrand Garrigues <bertrand.garrigues@laposte.net>
-
-       gnulib: replace non-recursive-gnulib-prefix-hack with
-       automake-subdir option
-
-       'non-recursive-gnulib-prefix-hack' is deprecated by gnulib's
-       commit f8eed11b15e9141d061900e4068ea1f3ba9b63f6 and replaced by
-       '--automake-subdir'.
-
-       * bootstrap.conf:
-       (gnulib_modules): Remove option
-       'non-recursive-gnulib-prefix-hack'.
-       (gnulib_tool_option_extras): Add option '--automake-subdir'.
-       (bootstrap_post_import_hook): Remove the invocation of
-       'build-aux/prefix-gnulib-mk'.
-
-       * doc/automake.mom: update documentation accordingly.
-
-       Fixes <http://savannah.gnu.org/bugs/?61708> and
-       <https://savannah.gnu.org/bugs/?62205> , issues reported and fix
-       suggested by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.  Fix
-       also suggested by Werner LEMBERG <wl@gnu.org> (see
-       
<https://repo.or.cz/ttfautohint.git/commit/a938fc63cb55ef48393a924d7083b13c1352d294>).
-
-2022-04-23  Bertrand Garrigues <bertrand.garrigues@laposte.net>
-
-       Update gnulib submodule
-
-       * gnulib now points on c8b8f3bbcde37a53cd226f4c9cebd0dde6aca37f
-
-       * bootstrap: merge the latest version from gnulib/build-aux
-       {groff's bootstrap has a patch for OS X}.
-
-       * bootstrap.conf: update copyright date.
-
-2022-04-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (XH-UPDATE-TOC): Modify Keith Marshall's new XN/XH
-       feature to indent TOC entries by section heading depth.  The
-       increment is 2 ens per depth level.
-
-2022-04-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (XA): Drop apparently useless `ll` request.  It
-       doesn't do anything according to my tests.
-
-2022-04-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/label.ypp: Drop redundant declaration of
-       `yyparse`.  Both byacc 20140715 and GNU Bison 3.3.2 supply the
-       the function prototype themselves.  Addresses
-       "-Wredundant-decls" warning from GCC.
-
-       Fixes <https://savannah.gnu.org/bugs/?43569>.
-
-2022-04-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/grn/hdb.cpp (DBGetType): Lower fatal diagnostics
-       to errors when encounting invalid element type characters.
-       Return a value interpreted by our caller as an error indication
-       instead.  Helps compilers determine that we're not implicitly
-       falling through our cases.  Addresses "-Wimplicit-fallthrough"
-       warnings from GCC.
-
-       Fixes https://savannah.gnu.org/bugs/?54702>.
-
-2022-04-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/grn/hdb.cpp (DBRead): Add more validity checking.
-       Verify that the number of conversions returned by fscanf() is as
-       expected instead of throwing this information away--abort
-       processing ("giving up" like pic(1) does) if it does not.
-       Consistently report this abandonment in diagnostic messages.
-       Similarly validate pointer returned by fgets().  Soften handling
-       of invalid text condition from fatal error, introduced in
-       commit eb4f0675e, 16 August, to a normal one with abandonment of
-       Gremlin file.  Addresses "-Wunused-result" warnings from GCC.
-
-2022-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/grn/main.cpp (conv): Throw an error diagnostic
-       when failing to open a Gremlin picture file.
-
-2022-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Fix extraneous space in output after `ME` or `UE` when
-       mandoc wrapper is used.
-
-       * tmac/an-ext.tmac (UE, ME): Double backslashes in macro
-       definitions when interpolating `.$` register (just like we tell
-       everyone else to do).  This one was interesting to track down.
-       When using just `-man`, the problem never manifested; only with
-       `-mandoc`.  The difference is that with the former, the `.$`
-       register is initialized to zero; with the latter, because `TH`
-       is aliased to another macro (then unaliased), `.$` has the
-       argument count to the `TH` macro, not to the macros actually
-       being called.  This caused the wrong branch of a conditional to
-       be taken and put an extra space node on the output.
-
-       Fixes <https://savannah.gnu.org/bugs/?62044>.
-
-2022-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/cp1047.tmac:
-       * tmac/latin1.tmac:
-       * tmac/latin2.tmac:
-       * tmac/latin5.tmac:
-       * tmac/latin9.tmac: Stop remapping input soft hyphen characters
-       with `tr` requests in character encoding macro files.  The
-       formatter does this for us now.
-
-2022-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Translate 8-bit NBSP and SHY on input.
-
-       * src/roff/troff/input.h: Define constant integers for "input"
-       no-break spaces and soft hyphens for EBCDIC and non-EBCDIC
-       (presumably ASCII/ISO 8859/Unicode) systems.
-
-       * src/roff/troff/input.cpp (token::next): Translate the input
-       character codes for NBSP to \~ and SHY to \%.
-
-       Fixes <https://savannah.gnu.org/bugs/?58962>.  Thanks to Dave
-       Kemper for the report, code review, and his suggestion to push
-       more work to compile time.
-
-2022-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [groff]: Regression-test Savannah #58962.
-
-       * src/roff/groff/handle_special_input_code_points.diff: Do it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2022-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_if_request): Clarify diagnostic;
-       at the point it is thrown, we know not merely that we're in a
-       conditional expression, but processing an output comparison
-       operator.
-
-2022-04-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi:
-       * doc/ms.ms:
-       * man/groff.7.man: Characterize "roff language" in the singular,
-       not the plural, emphasizing the similarity of extant specimens.
-
-       * doc/groff.texi (Conventions Used in This Manual): Add
-       paragraph discussing denotations of "groff" and "roff".
-
-       Fixes <https://savannah.gnu.org/bugs/?62233>.  Thanks to John
-       Gardner and Dave Kemper for the discussion.
-
-2022-04-12  Ingo Schwarze <schwarze@openbsd.org>
-
-       Delete the harmful, ill-designed, buggy, and essentially
-       unmaintained and untested --with-doc option of the configure
-       script.
-
-       * configure.ac: Delete five AM_CONDITIONAL variables, one
-       autoconf(1) macro call, and some related diagnostic output.
-       * doc/doc.am: Delete two BUILD_EXAMPLES and one BUILD_OTHERDOC
-       conditional and use BUILD_HTML instead of BUILD_HTMLEXAMPLES.
-       * m4/groff.m4: Delete the GROFF_DOC_CHECK macro and simplify the
-       macros GROFF_HTML_PROGRAMS, GROFF_INSTALL_INFO, GROFF_MAKEINFO,
-       and GROFF_PDFDOC_PROGRAMS.  This also deletes more than thirty
-       configuration variables.
-       * Makefile.am: Delete comments about 16 variables that are no
-       longer set.
-       * NEWS: Add details regarding the rationale.
-
-2022-04-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/preconv.cpp (unicode_entity): Convert
-       input U+00A0 to \~ as troff would, not to \[u00A0].
-
-       Fixes <https://savannah.gnu.org/bugs/?62300>.
-
-2022-04-11  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf] fails to deal with 255th glyph in font.
-
-       * src/devices/gropdf/gropdf.pl: a pdf font can only contain 255
-       glyphs. The array which holds the glyph names also holds the
-       start position (zero) as first element, it is legal for it to
-       contain 256 elements, so truncate to 256 (not 255).
-
-       Fixes <https://savannah.gnu.org/bugs/?62294>.
-
-2022-04-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [localization]: Define hyphenation mode registers for Japanese
-       and Chinese.  They are set to zero but must be defined so that
-       macro packages can rely on their existence without causing 'reg'
-       warnings.
-
-       * tmac/ja.tmac:
-       * tmac/zh.tmac: Do it.
-
-2022-04-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Add test for multi-lingual man(7) scenario.
-
-       * tmac/tests/localization-works.sh: Test two more cases.  Ensure
-       that the 'trap bit' (hyphenation value 2, which has nothing to
-       do with any language) is preserved when switching locales back
-       from a CJK language, since those languages' modes
-       unconditionally clear it.  We test Japanese and Chinese; we have
-       no localization macro file for Korean at this time.
-
-2022-04-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Slightly refactor `an*abbreviate-inner-footer`.
-
-       * tmac/an.tmac (an*abbreviate-inner-footer): Discard
-       unnecessary string.
-
-2022-04-09  Ingo Schwarze <schwarze@openbsd.org>
-
-       Fix the configuration of texi2dvi.
-
-       * m4/groff.m4: Set groff_have_texi2dvi if texi2dvi(1) is
-       available and usable, even if the availability was specified by
-       the user by manually providing the configure variable
-       PROG_TEXI2DVI, and not only if it was autodetected.
-       Also, set the PROG_TEXI2DVI Makefile variable to the name of
-       the texi2dvi program specified by the user or autodetected,
-       and not to the string "found", such that this Makefile variable
-       can be used for invoking the program.
-       * doc/doc.am: Call the texi2dvi program specified by the user
-       or autodetected rather than hardcoding "texi2dvi".  This lets
-       the groff build succeed on systems where the first texi2dvi
-       in the $PATH is an old version unfit for groff's purposes.
-
-2022-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Abbreviate long `TH` arguments more carefully.
-
-       * tmac/an.tmac: Do it.
-       (an*scan-string-for-backslash): Add new helper macro.
-       (an*abbreviate-inner-footer): Rewrite.  Use the foregoing and a
-       different technique to compute available space and shorten the
-       string.
-
-       Fixes <https://savannah.gnu.org/bugs/?62257>.
-
-2022-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add regression test for Savannah #62257.
-
-       * tmac/tests/an_do-not-abbreviate-escape-using-TH-arguments.sh:
-       Do it.
-       * tmac/tmac.am (tmac_TESTS): Run it.
-
-2022-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Trivially refactor.  Rename strings `an-ifoot`
-       to `an*ifoot` and `an-outer-footer-text` to `an*ofoot`.
-
-2022-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Refactor.  Abbreviate page title and inner
-       footer only once per document instead of once per page.
-       Exception: the legacy macros `AT` and `UC` change the inner
-       footer, so re-abbreviate it if they are called.
-       (TH, AT, UC): Call abbreviation macros from here...
-       (an-header, an-footer): ...instead of here.
-
-2022-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Refactor: initialize header/footer environment
-       only once.  Also rename it to `an*env-header-and-footer`.
-       (TH): Do it here...
-       (an-header, an-footer): ...instead of here.
-
-2022-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Trivially refactor.
-       (an*prepare-page-title): Rename this...
-       (an*abbreviate-page-title): ...to this.
-       (an-prepare-inner-footer): And this...
-       (an*abbreviate-inner-footer): ...to this.
-       (an-header, an-footer): Update call sites.
-
-2022-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/other.cpp (hmotion_box::output): Fix typo in
-       generated MathML diagnostic message.
-
-2022-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (EXTRA_DIST): Add "groff.dvi" and "groff.pdf" to
-       ensure that the GNU-released groff distribution archive contains
-       our Texinfo manual in these formats.  (This doesn't increase the
-       build-dependency requirements unless you want to "make dist", in
-       which case it _should_.)
-
-2022-04-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Add nroff mode fallback for `UL` macro.
-
-       * tmac/s.tmac (UL): On nroff devices, bracket the first argument
-       with \(ul (underline rule) special character escape sequences.
-       {In plain language, '.UL "like this"' renders "_like this_".}
-       See corresponding 12 February change to "tmac/e.tmac".
-
-2022-04-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Drop unnecessary `-I` options to groff.
-       (DOC_GROFF): There is no need to look at the top of the build
-       directory for any file inclusions.
-       (doc/webpage.html): There is no need to look in `doc_builddir`
-       for file inclusions, since that is the current working directory
-       when "webpage.ms" is processed.
-
-2022-04-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Trivially refactor.  Use `RM` macro idiomatically.
-       Automake ensures that it is defined to call an `rm` command with
-       the `-f` option, and this in turn ignores failures to delete
-       nonexistent files, so...
-       (uninstall_doc_examples, uninstall-pdf): Stop adding superfluous
-       `-f` flag.
-       (clean_infodoc uninstall-pdf, uninstall-html): Stop prefixing
-       command with `-` to ignore error exit status.
-       (uninstall-html): Drop superfluous `-r` flag; we're only
-       deleting files with this command, not directories.
-
-2022-04-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Trivially refactor shell style in rule commands.
-       The placement of `&&` was inconsistent.  Always begin a
-       continued rule line with it, and don't give it its own
-       indentation level.  In general, operators adjacent to line
-       continuations should _follow_ the continuations because they are
-       easier for humans to spot at the (possibly indented) beginning
-       of a physical line.
-
-2022-04-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am: Rename `TFLAG` macro, which means "tmac flag", to
-       `MFLAG`, because it expands to `-M` options to groff, not the
-       `-T` option, which can be bewildering.
-       * doc/doc.am (DOC_GROFF): Update expansion site.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Rename `DOC_GROFF_ONLY` to `DOC_GROFF`.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor.  Drop ghastly hack used to get file
-       names into troff diagnostics when reading from standard input.
-       We've refactored so that it no longer does, making the hack
-       unnecessary.  For the same reason, no users of the `DOC_GROFF`
-       macro remain, so delete it.  Add comments to explain what
-       `DOC_SED` and `DOC_GROFF_ONLY` are for.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor.
-       (doc/pic.html, doc/webpage.html): Drop indirection of source
-       document through `DOC_SED` macro.  It was not necessary since
-       neither of these documents are parameterized in configuration
-       options (that is, they don't contain @VERSION@ or @g@).
-
-2022-04-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Trivially refactor.
-       (doc/webpage.html): Tidy up dependency list.  Create directory
-       using the same macro interpolation we use to change into it.
-
-2022-04-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor and fix error in builds in remote
-       out-of-source-tree builds exposed by pending commit and `make
-       distcheck`.  The images generated for the pic.html and
-       webpage.html files were being built in the wrong directory, and
-       subsequently not found by an install rule.
-       (imagedir): Add comment explaining purpose of macro.  It should
-       _not_ be used with any file specifications relative to the
-       source or build trees--it is for installation directories only.
-       (htmldocimagedir, exampleimagedir): Drop macros.
-
-       (doc/pic.html, doc/webpage.html): Replace interpolations of
-       `imagedir` with literal "img", since these files are being
-       generated within the build tree: the directory name is known.
-
-       (mostlyclean_doc, install_doc_htmldoc, install_doc_examples):
-       Replace interpolations of `htmldocimagedir` relative to
-       `doc_builddir` with "img" literals.
-
-       (install_doc_htmldoc, uninstall_doc_htmldoc): Interpolate
-       concatenation of `htmldocdir` and `imagedir` instead of
-       `htmldocimagedir` (relative to `DESTDIR`).
-       (install_doc_examples, uninstall_doc_examples): Interpolate
-       concatenation of `exampledir` and `imagedir` instead of
-       `exampleimagedir` (relative to `DESTDIR`).
-
-2022-04-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor.  Relocate "doc/grnexampl.ps" target to
-       group it with other me(7) documents.  Put addition of
-       "doc/examples.stamp" to `MOSTLYCLEANFILES` adjacent to its
-       target rule.  Relocate same rule so that it precedes the target
-       depending on it (make(1) might not benefit from this, but human
-       readers can).
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor.
-       (DOC_GROFF_ONLY): Drop preprocessor options from groff command.
-       This macro is now, simply, a way to run the in-tree groff: no
-       assumptions about preprocessors, macro packages, or output
-       device are made.
-       (doc/pic.html, doc/webpage.html): Add only necessary
-       preprocessor options after expansion of `DOC_GROFF_ONLY`.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor.  Add explicit dependencies of compiled
-       man page documents on preprocessors needed to generate them.  In
-       their target rules, explicitly use groff's preprocessor options,
-       freeing us up to simplify the `DOC_GROFF_ONLY` macro.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Rationalize dependencies.  Drop dependency of
-       `PROCESSEDEXAMPLEFILES` and `PROCESSEDDOCFILES` on expansion of
-       `hdtbltmac_DATA`, because nothing in this directory uses the
-       hdtbl package.  Move dep of same expansions on "gnu.eps" to
-       "doc/webpage.html", which actually uses it.  Put the numerous
-       dependencies of "doc/pic.html" and "doc/webpage.html" in a
-       parallel ordering so that they are easier for humans to
-       evaluate.  These targets' dependencies on `bin_PROGRAMS` and
-       `prefixexecbin_PROGRAMS` are overkill and should be reviewed at
-       a later date.
-
-2022-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Refactor use of target and suffix rules.
-       (doc/meintro.me, doc/meintro_fr.me, doc/meref.me): Add target
-       rules, with lengthy, exasperated comment about lack of feature
-       parity in various make(1) implementations.
-       (doc/meintro_fr.ps): Add target rule, as this seems to be the
-       only way to keep GNU Make from ignoring a '_fr.me._fr.ps' suffix
-       rule in favor of '.me.ps', which doesn't call preconv (and
-       doesn't need to--and moreover we don't want to build English
-       me(7) documents with the `-mfr` option).  Depend on `preconv`.
-       (doc/webpage.ps): Convert from suffix rule to target rule.
-       (doc/ms.ps, doc/pic.ps, doc/webpage.ps): Add target rules and
-       dependencies.
-       (.ms.ps): Add commented-out suffix rule (since nothing uses it,
-       but might in the future).
-       (doc/meintro_fr.ps, .me.ps, doc/pic.ps, doc/webpage.ps): Migrate
-       expansions of `DOC_GROFF` to `DOC_GROFF_ONLY` to prepare for a
-       forthcoming simplification.
-
-2022-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Clean generated doc files better.  doc/me*.me were
-       getting left behind in the build tree.
-       (MOSTLYCLEANFILES): Add `GENERATEDDOCFILES`.  This includes
-       `DOC_GNU_EPS`, so...
-       (clean_maintdoc): Drop phony target that manually removes it.
-       (maintainer-clean-local): Drop dependency on foregoing.
-
-2022-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/xditview/xditview.am (install_xditview)
-       [!WITHOUT_X11]: Stop backing up existing "GXditview" and
-       "GXditview-color" application defaults files.  There is no
-       symmetric restoration of them in the uninstall target, and it
-       seems like unjustifiable complexity to add such.  These are
-       groff-specific file names, installed (by default) to /usr,
-       not /etc, so they are not going to be "configuration files" in
-       Debian-based systems, for example (and likely not elsewhere).
-       There are other ways to supersede application defaults for
-       programs using the X Toolkit Intrinsics.
-
-2022-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Stop treating "gnu.eps" as an "example" file; it
-       is also used by pdfmark's cover.ms, which is ordinary
-       documentation.  We therefore must not omit it when building.
-       (install-data-hook): Add dependency on new phony target,
-       "install_doc_gnu_eps".
-       (install_doc_examples): Move installation of "gnu.eps" from
-       here...
-       (install_doc_gnu_eps): ...to here.  Also refactor the loop we
-       use to locate the file to follow a more idiomatic pattern.
-
-2022-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (dist-info-bits, install_infodoc, dist-gnueps): Fix
-       code style nit: use consistent "brace style" in conditionals and
-       loops.
-
-2022-04-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (mostlyclean_doc): When cleaning, try harder to
-       remove the image directory created by the "pic.html" and
-       "webpage.html" targets.
-
-2022-04-02  Ingo Schwarze <schwarze@openbsd.org>
-
-       * doc/doc.am: Stop installing doc/meintro.me.in,
-       doc/meintro_fr.me.in, and doc/meref.me.in.
-
-2022-03-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/webpage.ms: Die horribly if `PSPIC` call fails.
-
-2022-03-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pspic.tmac (pspic*error-hook): Define (as empty).
-       * man/groff_tmac.5.man (Auxiliary packages) <pspic>: Document.
-       * NEWS: Add item.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/webpage.ps): Relocate target rule.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
-       * tmac/tests/pdfpic_falls-back-to-PSPIC.sh: Remove output file
-       even when skipping test.  Quote `fail` variable when checking it
-       with `test -z`.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff_tmac.7.man (Auxiliary packages): Tweak sboxes
-       documentation to imply ms dependency.
-
-       Fixes <https://savannah.gnu.org/bugs/?62062>.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (an*bookmark): Trivially refactor.  Now that
-       we're no longer doing arithmetic on our first argument, simplify
-       our definition.  Made possible by commit 3baf0e2f3, 23 February.
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/preconv.cpp (detect_file_encoding): Demote
-       an error diagnostic to a debugging message.  libuchardet has no
-       man page, and inspecting the source of the
-       `uchardet_handle_data` function we find that it effectively
-       returns a Boolean value (if the result of a
-       `reinterpret_cast`(!) is not `NS_OK`).  This is useless
-       information for a user-facing tool.  We're designed to muddle on
-       regardless (see preconv(1)).
-
-2022-03-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grodvi/dvi.cpp (dvi_printer::set_color)
-       (draw_dvi_printer::fill_next):
-       * src/devices/grops/ps.cpp (output::put_color):
-       * src/libs/libgroff/color.cpp (color::print_color): Construct
-       doubles instead of casting to them.
-
-2022-03-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [doc]: Refactor handling of "gnu.eps" file.
-
-       * doc/doc.am: Put "gnu.eps" in a Make macro, `DOC_GNU_EPS`.
-       ($(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES),
-       doc/webpage.html, install_doc_examples): Migrate dependency to
-       `DOC_GNU_EPS`.
-       (doc/webpage.ps): Add (missing) dependency on `DOC_GNU_EPS`.
-       (DOC_GROFF_ONLY): Drop `-I` flag; it's not necessary given the
-       following.
-       (.ms.ps): Drop `-mwww` argument from suffix rule.  A truly
-       generic ms document won't need it.
-       (doc/webpage.ps): Add target rule.  Include `-mwww` argument.
-       (doc/webpage.ps, doc/webpage.html): Pass `-I` option to
-       `DOC_GROFF` and `DOC_GROFF_ONLY` (respectively) to enable
-       location of "gnu.eps" file.  Search the build and source trees'
-       "doc" directories because the file can be generated as part of
-       the build or can come with the distribution archive.
-       (EXTRA_DIST): Drop redundant inclusion of "doc/gnu.xpm".
-       (clean_maintdoc): Add phony target to dispose of `DOC_GNU_EPS`.
-       (maintainer-clean-local): Depend on "clean_maintdoc".
-
-       * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
-       * tmac/tests/pdfpic_falls-back-to-PSPIC.sh: Update tests to look
-       for "gnu.eps" in "doc" directory of build tree.  Give generated
-       files distinguishable names so their tests can run concurrently.
-
-2022-03-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Add new macro `PROCESSEDDOCFILES_PS` to isolate
-       names of targets in PostScript format.  Expand this macro in
-       definition of `PROCESSEDDOCFILES` and use it to move PostScript
-       font description file dependencies of the latter and
-       `PROCESSEDEXAMPLEFILES` to the former.  (At present, the
-       dependency might seem superfluous, since those files are in the
-       source distribution, but it's conceivable that in the near
-       future, they will be produced at build time from Adobe font
-       metric files; see font/devps/generate/Makefile).  The "pic.html"
-       and "webpage.html" targets already had such a dependency because
-       of the way grohtml (pre-grohtml) works.
-
-2022-03-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * INSTALL.extra: Add a section on uninstalling.
-
-2022-03-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Create target rule for "doc/grnexampl.ps" instead
-       of relying on a suffix rule.  Explicitly depend on grn and eqn
-       executables.  Produce output using their groff flags, "-ge".
-
-2022-03-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdfpic.tmac (PDFPIC): Fix breakage when no temporary
-       directory environment variables are defined: actually use string
-       interpolation syntax in comparand to output comparison
-       operator.  Problem introduced by me in commits adc1999af and
-       24900cf6d, 15 February.
-
-2022-03-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devX100-12/devX100-12.am:
-       * font/devX100/devX100.am:
-       * font/devX75-12/devX75-12.am:
-       * font/devX75/devX75.am: Fix in-tree build; expand `fontdir`
-       instead of `abs_top_builddir` Make macro when defining Automake
-       variable for generated artifacts.  Problem introduced by me in
-       commit 3c82cbbfe, 27 February.  Thanks to Robert Goulding for
-       the report.
-
-2022-03-22  Ingo Schwarze <schwarze@openbsd.org>
-
-       * doc/doc.am: delete redundant "SUFFIXES +=" line
-
-2022-03-22  Ingo Schwarze <schwarze@openbsd.org>
-
-       * doc/doc.am: fix non-portable syntax in the meintro_fr.ps
-       target: This rule requires DOC_GROFF and hence $<, so turn it
-       into a suffix rule.
-
-2022-03-22  Ingo Schwarze <schwarze@openbsd.org>
-
-       * doc/doc.am: fix non-portable syntax in the doc/me*.me targets:
-       POSIX does not define the meaning of $< in non-suffix rules, so
-       use the portable $? instead.  This is adequate here because each
-       of these three rules has exactly one prerequisite.
-
-2022-03-22  Ingo Schwarze <schwarze@openbsd.org>
-
-       * doc/doc.am: fix non-portable syntax in the groff-man-pages.*
-       targets by using DOC_GROFF_ONLY rather than DOC_GROFF in order
-       to not use $< outside a suffix rule; DOC_GROFF functionality is
-       not needed here in the first place.
-
-2022-03-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac:
-       * tmac/doc.tmac: Stop remapping input hyphens on `utf8` device.
-
-2022-03-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac: Stop remapping ` and ' on `utf8` output device.
-       Aligns mdoc(7) with commit 697e6db7f, 19 October 2020 (for
-       man(7)).
-
-2022-03-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Fix bug introduced in commit
-       0d451902c, 10 March.  Don't store a newline in the version
-       string.  Put `\n` in its interpolation context as necessary.
-
-2022-03-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Install ptx.tmac.
-
-       * tmac/tmac.am (TMACNORMALFILES): Add it.
-       * NEWS: Report availability.
-
-       Fixes <https://savannah.gnu.org/bugs/?62201>.  Thanks to Ralph
-       Corderoy for the report.
-
-2022-03-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Drop ditroff(7) document.  It says nothing that is not covered
-       elsewhere.
-
-       * man/ditroff.7.man: Delete.
-       * doc/doc.am (GROFF_MAN_PAGES):
-       * man/man.am (man7_MANS, EXTRA_DIST): Stop processing, shipping.
-       * src/roff/groff/groff.1.man: Drop cross reference to it.
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?61817>.
-
-2022-03-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [preconv]: Trivially refactor.
-
-       * src/preproc/preconv/preconv.cpp: Use diagnostic message
-       functions from libgroff where possible.  Explain in a comment
-       why we don't use `debug()`.  Boolify and rename some variables,
-       and use Boolean literals to assign to them.
-         debug_flag         -> is_debugging
-         invalid_warning    -> emit_invalid_utf8_warning
-         incomplete_warning -> emit_incomplete_utf8_warning
-       Rename `expected_bytes` to `expected_byte_count`.  Except for
-       the debugging flag, these are all members of `struct
-       conversion`.
-       (get_tag_lines): Migrate to `warning()`.
-       (detect_file_encoding): Migrate to `error()` and `fatal()`, as
-       appropriate.
-       (utf8::invalid, utf8::incomplete, get_tag_lines): Don't break a
-       line in the middle of a diagnostic; doing so frustrates grepping
-       and necessarily makes an assumption about the terminal width.
-
-2022-03-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.
-
-       * src/roff/troff/input.cpp: Rename global variable
-       `have_string_arg` to `have_multiple_params` and demote it from
-       an integer to a Boolean.  Assign Boolean literals to it.
-       (read_long_escape_parameters, get_copy, token::next): Do it.
-
-2022-03-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #62191.
-
-       * src/preproc/tbl/main.cpp (table_input::get): Increment input
-       line counter when encountering an escaped newline; this fixes
-       inaccurate diagnostics from the formatter at any point in a
-       document after a line-continued row of table data.  Also drop a
-       "perhaps" comment.  I tested the surmise (setting the FSM state
-       to "START"), and it results in bad formatting.
-
-       Fixes <https://savannah.gnu.org/bugs/?62191>.  Problem appears
-       to date back to groff 1.02 (June 1991) at the latest.
-
-2022-03-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #62191.
-
-       * src/preproc/tbl/tests/count-continued-input-lines.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2022-03-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Environments): Clarify environment handling.
-       * man/groff.7.man (Environments): Add new section.
-
-       Fixes <https://savannah.gnu.org/bugs/?62036>.  Thanks to Dave
-       Kemper for the report and a suggested patch.
-
-2022-03-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (initialization): Define `@b` as empty if
-       formatting for HTML, because no page breaks occur in that
-       format.
-
-       Fixes <https://savannah.gnu.org/bugs/?62039>.
-
-2022-03-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grodvi/dvi.cpp (usage): Align usage message with
-       man page; disclose `-l` option.
-
-2022-03-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grodvi/dvi.cpp (main):
-       * src/devices/grops/ps.cpp (main): Update diagnostic:
-       characterize bad `-w` argument as "invalid", not "bad", and
-       explicitly report it as ignored.
-
-       * src/devices/grodvi/dvi.cpp (main): Report invalid parameter
-       in `-w` diagnostic.
-
-2022-03-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grodvi/dvi.cpp (dvi_printer::set_color)
-       (draw_dvi_printer::fill_next):
-       * src/devices/grops/ps.cpp (output::put_color):
-       * src/libs/libgroff/color.cpp (color::print_color): Explicitly
-       cast `enum` divisors to `double`; quietens
-       `-Wdeprecated-enum-float-conversion` warnings.
-
-       Fixes <https://savannah.gnu.org/bugs/?61964>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-03-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Recover more quickly from missing `EE` calls.
-       (initialization): Define new strings, `an*body-family` and
-       `an*example-family` to house the font families used in these
-       rendering contexts.
-       (TH, SH, SS): Restore the font family to `an*body-family`.
-       (TH): Set font style to roman as well.
-       (EX): Change to `an*example-family` instead of literal "C".
-
-       Fixes <https://savannah.gnu.org/bugs/?62187>.
-
-2022-03-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Test register for existence before using it to
-       set hyphenation mode.  A site troffrc or other local
-       customization might remove the register (which is guaranteed to
-       be set under the stock configuration) and, perversely, Heirloom
-       Doctools troff interprets a `do` request, instead of ignoring it
-       as a historical troff implementation would, so if they borrow
-       our me(7) changes, the register would be unset, interpolate
-       zero, and hyphenation would wind up disabled.
-
-       Fixes <https://savannah.gnu.org/bugs/?62181>.  Thanks to Dave
-       Kemper for the report.
-
-2022-03-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Rename test to apply naming scheme.
-
-       * tmac/tests/pdfpic_falls_back_to_PSPIC.sh: Rename this...
-       * tmac/tests/pdfpic_falls-back-to-PSPIC.sh: ...to this.
-       * tmac/tmac.am (tmac_TESTS): Use new name.
-
-2022-03-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/ps.cpp (usage): Align usage message with man
-       page synopsis.
-
-2022-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Input Line Traps): Fix error; input traps do
-       _not_ ignore control lines.  Error appears to have crept in with
-       the first version of our Texinfo manual, shipped with groff 1.14
-       {December 1999}.
-
-2022-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devps/devps.am: Rename targets.
-       (fonts):
-       (devps_fonts): Rename these...
-       (maintainer-font-descriptions):
-       (devps_font-descriptions): ...to these.  Add comments explaining
-       what they're for and why they aren't used in a build.
-
-       * font/devps/generate/Makefile: Add `outdir` variable to store
-       destination directory of font description files, and update all
-       targets that write artifacts to use this directory.  This makes
-       the targets "phony", which I don't regard as a problem since the
-       generated artifacts are kept under source control, and this
-       isn't really a user-facing script (even though it gets
-       installed).  I think there is a good chance that this will
-       become a shell script, because to avoid regressions we need to
-       generate the font descriptions using both the 229-glyph and
-       314-glyph versions of the Adobe fonts' AFM files (so that we get
-       wider glyph coverage _and_ more kerning pair data) and we need
-       to add kerning information for the ellipsis (Savannah #58897).
-       (symbolsl.afm): Revise generation process to be sensitive to
-       failure.
-
-2022-03-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devps/symbolsl.afm: New file.
-       * font/devps/devps.am (EXTRA_DIST): We have long shipped
-       "symbol.afm" with the distribution archive--I don't see why we
-       don't ship "symbolsl.afm" and "zapfdr.afm" as well (metrics for
-       `SS`, the slanted symbol font, and ZDR, reversed Zapf Dingbats).
-       Like the Type 1 font descriptions themselves, this file is
-       updated only in "maintainer mode", not as part of the build.
-       Moreover, these fonts are not part of the PostScript level 2
-       base 35 fonts so their AFM files are unlikely to be readily
-       available elsewhere.
-
-2022-03-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Trivially refactor.  Store the
-       program's version string in scalar `afmtodit_version` and use
-       that in the usage message and comment embedded in the output.
-
-2022-03-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Fix code style nits.  Migrate
-       to the shebang line style we use in more recently modified Perl
-       scripts.  Replace `-w` with `use warnings;`.  Shorten an output
-       comment since the groff version string can grow long (see commit
-       1264531310, 14 January 2018).
-
-2022-03-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Stop writing full file name to
-       the generated font description file as the "name" (i.e., don't
-       include directory components).
-
-       Fixes <https://savannah.gnu.org/bugs/?62150>.  Thanks to Dave
-       Kemper for the discussion and code review.
-
-2022-03-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.1.man:
-       * src/utils/afmtodit/afmtodit.pl: Update and align man page
-       synopsis, option descriptions, and command usage output.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/X.tmac: Redirect `fchar` requests for \[lq] and \[rq] to
-       \[dq] since the X11 Type 1-based text fonts encode ISO 8859-1
-       {Latin-1} and don't have typopgrapher's quotes.  Drop `fchar`
-       request for \[aq], which _is_ represented, per recent changes.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * /font/devX100-12/CB:
-       * /font/devX100-12/CBI:
-       * /font/devX100-12/CI:
-       * /font/devX100-12/CR:
-       * /font/devX100-12/HB:
-       * /font/devX100-12/HBI:
-       * /font/devX100-12/HI:
-       * /font/devX100-12/HR:
-       * /font/devX100-12/NB:
-       * /font/devX100-12/NBI:
-       * /font/devX100-12/NI:
-       * /font/devX100-12/NR:
-       * /font/devX100-12/TB:
-       * /font/devX100-12/TBI:
-       * /font/devX100-12/TI:
-       * /font/devX100-12/TR:
-       * /font/devX100/CB:
-       * /font/devX100/CBI:
-       * /font/devX100/CI:
-       * /font/devX100/CR:
-       * /font/devX100/HB:
-       * /font/devX100/HBI:
-       * /font/devX100/HI:
-       * /font/devX100/HR:
-       * /font/devX100/NB:
-       * /font/devX100/NBI:
-       * /font/devX100/NI:
-       * /font/devX100/NR:
-       * /font/devX100/TB:
-       * /font/devX100/TBI:
-       * /font/devX100/TI:
-       * /font/devX100/TR:
-       * /font/devX75-12/CB:
-       * /font/devX75-12/CBI:
-       * /font/devX75-12/CI:
-       * /font/devX75-12/CR:
-       * /font/devX75-12/HB:
-       * /font/devX75-12/HBI:
-       * /font/devX75-12/HI:
-       * /font/devX75-12/HR:
-       * /font/devX75-12/NB:
-       * /font/devX75-12/NBI:
-       * /font/devX75-12/NI:
-       * /font/devX75-12/NR:
-       * /font/devX75-12/TB:
-       * /font/devX75-12/TBI:
-       * /font/devX75-12/TI:
-       * /font/devX75-12/TR:
-       * /font/devX75/CB:
-       * /font/devX75/CBI:
-       * /font/devX75/CI:
-       * /font/devX75/CR:
-       * /font/devX75/HB:
-       * /font/devX75/HBI:
-       * /font/devX75/HI:
-       * /font/devX75/HR:
-       * /font/devX75/NB:
-       * /font/devX75/NBI:
-       * /font/devX75/NI:
-       * /font/devX75/NR:
-       * /font/devX75/TB:
-       * /font/devX75/TBI:
-       * /font/devX75/TI:
-       * /font/devX75/TR: Regenerate font descriptions with xtotroff,
-       using updated ISO-8859_1 map.  \[aq] and \[oq] are now aliases
-       of "'" and \[ga] is an alias of "`".  This change probably
-       should have been made when the X11 fonts were corrected in
-       XFree86 4.0 (March 2000).  See
-       <https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html>.
-
-       Fixes <https://bugs.debian.org/243238>.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libxutil/DviChar.c (ISO_8859_1_map): Fix incorrect
-       assignment of Latin-1 grave accent to \[oq] special character;
-       reassign it to the neutral apostrophe.  Map \[aq] to neutral
-       apostrophe.  Map \[ga] to '`'.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/xtotroff/xtotroff.1.man (Options) <-d>: Document new
-       option.
-       * src/utils/xtotroff/xtotroff.c (usage): Align with man page.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Manipulating Filling and Adjustment):
-       Explicitly identify the page offset as an output line property
-       that is not determined until a break occurs.
-
-       (Line Layout) <po>: Correct error; the page offset for terminal
-       devices is set by "tty.tmac", not "troffrc".  (The manual has
-       been wrong for a long time; we've had it in tty.tmac since James
-       Clark put it there in 1992.)  Recast and tighten wording.  Drop
-       the word "horizontal"; there is no vertical page offset (as
-       such) in *roff.  Replace hand-waving about unexpected results
-       with a description of the formatter's behavior.  Document
-       request behavior without an argument before getting into the
-       weeds (and CSTR #54 errata).  Migrate terminology from "scaling
-       indicator" to "scaling unit".
-
-       Fixes <https://savannah.gnu.org/bugs/?58035>.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Expressions): Expand '|' operator explanation.
-       Split discussion of its application into horizontal and vertical
-       contexts.  Add example of vertical usage.
-
-       Fixes <https://savannah.gnu.org/bugs/?60820>.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp: Trivially refactor.  Drop `#define`
-       that was working around a GCC 2.95-era libstdc++ problem.
-       Shorten long line.
-       (get_char_for_escape_parameter): Demote parameter from `int` to
-       `bool` and use Boolean literal for default argument.  Annotate a
-       null pointer constant.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Rename some internal functions.
-
-       * src/roff/troff/input.cpp: Do it.
-       (read_escape_name):
-       (read_long_escape_name):
-       (read_two_char_escape_name):
-       (get_char_for_escape_name):
-       (read_increment_and_escape_name): Rename these...
-       (read_escape_parameter):
-       (read_long_escape_parameters):
-       (get_char_for_escape_parameter):
-       (read_two_char_escape_parameter):
-       (read_increment_and_escape_parameter): ...to these.
-       (read_two_char_escape_parameter, read_long_escape_parameters,
-       read_escape_parameter, read_increment_and_escape_parameter,
-       get_copy, token::next): Update call sites.
-
-2022-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (get_char_for_escape_name): Recast
-       diagnostic messages to more accurately refer to escape
-       "sequence" rather than "name".  "Name" is a confusing term here,
-       given that it also applies to a group of objects sharing a name
-       space (natch): requests, macros, strings, and diversions.
-       Further, the "escape name" cited by these diagnostics is not the
-       escape function selector; that is, the character after the
-       escape character which determines how the escape sequence is to
-       be interpreted.  These diagnostics are only thrown after that
-       function is known, however, when parsing of an escape sequence
-       parameter is attempted.
-       (input_char_description): Drop leading articles ("a") from
-       input character descriptions, to economize in diagnostic
-       messages this function helps produce.
-       (non_empty_name_warning): Use zero copula for economy.
-
-       * src/roff/troff/input.cpp (empty_name_warning, read_size)
-       (token::get_char, check_missing_character):
-       * src/roff/troff/number.cpp (start_number, parse_term): Recast
-       messages to more consistently use the form "expected X, got Y"
-       where feasible.
-
-       * src/roff/troff/number.cpp (start_number): Say "numeric
-       expression missing" instead of "missing number"; we don't
-       require a terminal symbol in the expression grammar here.  Also
-       use `tok.description()` where we can, and remove assumption that
-       the escape character is the default.
-
-2022-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (AT, UC, HP): Add deprecation warnings.  For the
-       last, only do so if we're not inside a synopsis (SY/YS), since
-       our definition of `SY` calls `HP` internally.  (This does seem
-       hypocritical.  Perhaps if we knew the correct CSS incantation
-       to speak in grohtml, we could un-deprecate `HP`.)
-
-2022-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.an (M4CHECK): Rename stamp file to make its purpose
-       clearer.
-
-2022-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Tweak customization management.
-
-       * tmac/an.tmac: Load "man.local" with `msoquiet` request, so
-       people can get rid of the file if they don't need it.
-       (PT, BT): Define these macros only if not already defined.  This
-       is slightly less paranoid but far more ergonomic, given
-       interactions with the andoc wrapper.  Now user-defined page
-       header traps (PT) defined in man.local can take effect on the
-       first page rendered.
-
-       * tmac/groff_man.7.man.in (Hooks): Document how to remove page
-       headers and/or footers entirely.
-
-       Fixes <https://savannah.gnu.org/bugs/?61954>.
-
-2022-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer,mm]: Add and use `ref*reset` macro to clean up between
-       bibilography entries.
-
-       * tmac/refer.tmac (]-): Move string clean up logic from here...
-       (ref*reset): ...to this new macro.  Now we can also use it...
-
-       * contrib/mm/refer-mm.tmac (ref*][-first-pass): ...here.
-
-       Problem appears to date back to refer-mm.tmac's introduction in
-       January 2011.  Thanks to Bjarni Ingi Gislason for the root-cause
-       analysis and proposed fix, to which I applied the DRY principle
-       and added a reset of `ref*string` as well.
-
-       Fixes <https://savannah.gnu.org/bugs/?60657>.
-
-2022-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mm]: Regression-test Savannah #60657.
-
-       * contrib/mm/tests/remove-stale-bib-entry-data.sh: Do it.
-       * contrib/mm/tests/artifacts/60657.ref: Add new file.
-       * contrib/mm/mm.am (mm_TESTS): Run test.
-       (EXTRA_DIST): Ship test artifact in distribution archive.
-
-       Thanks to Bjarni Ingi Gislason for the straightforward
-       bug reproducer.
-
-2022-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer]: Report correct line number in bibliography file
-       diagnostics.
-
-       * src/preproc/refer/refer.cpp (do_bib): Set line number to 1
-       upon successfully opening a bibliography file.
-
-       Problem appears to date back to groff 1.02 (June 1991) at the
-       latest.
-
-       Fixes <https://savannah.gnu.org/bugs/?62142>.
-
-2022-03-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [refer]: Regression-test Savannah #62124.
-
-       * src/preproc/refer/tests/report-correct-line-numbers.sh: Do it.
-       * src/preproc/refer/tests/artifacts/62124.ref: Add new file.
-       * src/preproc/refer/refer.am (refer_TESTS): Run test.
-       (EXTRA_DIST): Ship test artifact in distribution archive.
-
-2022-03-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/div.cpp
-       (top_level_diversion::transparent_output):
-       * src/roff/troff/input.cpp (transparent_translate): Suppress two
-       troublesome (i.e., more or less spurious) error diagnostics
-       about transparent output/throughput unless the environment
-       variable `GROFF_ENABLE_TRANSPARENCY_WARNINGS` is present.  This
-       is a bit of a bodge until we get diversion sanitization worked
-       out.  See Savannah #61407.
-
-2022-03-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [preconv]: Stop assuming that the default input stream, or an
-       explicit '-' operand, is the only unseekable stream.  Check
-       instead.
-
-       * src/preproc/preconv/preconv.cpp (do_file): Add new Boolean
-       `is_seekable`.  Test the input stream with `fseek()` per a
-       suggestion from Ingo Schwarze.  Report unseekability in debug
-       output and skip coding tag and uchardet tests altogether
-       {precisely paralleling our description in the preconv(1) man
-       page}.  Also update debugging output to say "<standard input>"
-       instead of "-".
-
-       Fixes <https://savannah.gnu.org/bugs/?62131>.
-
-2022-03-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [preconv]: Regression-test Savannah #62131.
-
-       * src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Do
-       it.
-       * src/preproc/preconv/preconv.am (preconv_TESTS): Run test.
-
-2022-03-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (process_format): Update diagnostic
-       to recognize that a font mounting position is also an acceptable
-       argument to the 'f' column modifier.
-
-2022-02-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Refactor X11 font description generation.  Integrate it with our
-       "new" (post-2014) Automake-based build system.
-
-       * src/utils/xtotroff/Makefile.in: Delete relic of old build
-       system.  Also, it had a bug: it generated X11 output device
-       'DESC' files with a "unitwidth 10" directive even for the "-12"
-       devices, which is not correct (the in-tree DESC files we've been
-       shipping for years were nevertheless correct, apparently fixed
-       by hand by James Clark in groff 1.07 [March 1993]).
-
-       * src/utils/xtotroff/xtotroff.am: Define `xtotroff` variable for
-       use by X11 font description generation targets below.
-
-       * font/devX100-12/devX100-12.am:
-       * font/devX100/devX100.am:
-       * font/devX75-12/devX75-12.am:
-       * font/devX75/devX75.am: Add new (phony) targets, variously
-       named "devX{100,100_12,75,75_12}", to generate the corresponding
-       output device's DESC file and run xtotroff(1) to generate its
-       font description files.  Be sure to set the correct "unitwidth"
-       for the "-12" devices.  Add new dependency-only rule
-       "maintainer-font-descriptions" depending on these new targets
-       for convenience (and future expansion to devps and devlj4).
-
-       * FOR-RELEASE: Document existence of
-       "maintainer-font-descriptions" Make target and when to run it.
-
-       Running this target with the aforementioned bug fix, overwriting
-       the in-tree DESC and font description files using data gathered
-       from a running X server, results in no changes whatsoever.  Say
-       what you will about X11 core font technology--it's stable.
-
-2022-02-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Rename and ship "FontMap-X11".  xtotroff(1) is not very useful
-       without a font name mapping file to read.  To date it has been
-       available only in the source distribution.  Remedy that.  The
-       file is placed directly in the groff font directory alongside
-       the device directories because it applies to four different
-       devices, and four copies of this data are not required.
-
-       * src/devices/xditview/FontMap: Rename to...
-       * src/devices/xditview/FontMap-X11: ...this.
-
-       * LICENSES:
-       * src/devices/xditview/xditview.am (EXTRA_DIST): Reflect rename.
-
-       * src/devices/xditview/xditview.am (install_xditview
-         [!WITHOUT_X11], uninstall_xtdiview): (Un-)install it.
-
-       * src/utils/xtotroff/xtotroff.1.man (Files): Add section
-       documenting the presence and purpose of this file.
-
-2022-02-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [xtotroff]: Add `-d` option to produce font description files in
-       specified directory.
-
-       * src/utils/xtotroff/xtotroff.c: Do it.  Add global `destdir`
-       pointer.
-       (xtotroff_exit): Add new function to clean up storage allocated
-       by `strdup()` (below) for destination directory.
-       (MapFont): Introduce new variable `file_name`, into which we
-       assemble a destination file name from `destdir` (if not null)
-       and the troff font name.  Handle memory allocation failure (by
-       carefully dying).  Free allocated storage on success and failure
-       paths out of the function.
-       (usage): Document new `-d` option.
-       (main): Instruct `getopt_long` to expect a `-d` flag with an
-       argument.  Use `strdup()` to make a copy of any such option
-       argument.  Call `xtotroff_exit()` instead of `exit()`.
-
-       * src/utils/xtotroff/xtotroff.1.man: Document new `-d` option.
-
-2022-02-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [xtotroff]: Trivially refactor.
-
-       * src/utils/xtotroff/xtotroff.c: Boolify.  Include `stdbool.h`
-       and `errno.h` headers.
-       (charExists, CanonicalizeFontName, FontNamesAmbiguous, MapFont):
-       Boolify.  Demote return type from `int` to `bool` and return
-       Boolean instead of integer literals.
-       (FontNamesAmbiguous, main): Reorder equality comparisons with
-       simple left-hand sides to avoid inadvertent lvalue assignments.
-       (FontNamesAmbiguous, MapFont): Refer to font name as "invalid",
-       not "bad", in diagnostic messages.
-       (MapFont, main): Use `strerror()` instead of `perror()` so that
-       diagnostics include the program name and an indication of
-       problem severity.
-       (MapFont): Compare `FILE` stream pointer to `NULL` instead of
-       treating it as a Boolean.
-       (main): Use `EXIT_SUCCESS` and `EXIT_FAILURE` constants from C
-       library instead of integer literals for exit status.
-
-2022-02-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pic]: Fix "unused result" compiler warning.
-
-       * src/preproc/pic/pic.ypp (placeless_element) <SH>: Check return
-       value of `system()` to quieten `-Wunused-result` warning; if it
-       is less than zero, report it to the standard error stream.
-
-2022-02-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/safer.tmac: Drop file from distribution.  It contained
-       only comments.
-       * tmac/tmac.am (TMACNORMALFILES): Delete reference.
-       * NEWS: Add item.  Suggest two workarounds for its absence.
-
-       Fixes <https://savannah.gnu.org/bugs/?61831>.
-
-2022-02-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac (initialization): Drop definition of
-       `doc-curr-size` register.  It is no longer needed since nothing
-       internal to the package now changes the type size.
-
-       * tmac/doc.tmac (Fl, doc-print-recursive, doc-print-prefixes)
-       (doc-generic-macro, Ar, Cd, doc-do-func-decl, Fd, In, Nm, Pa)
-       (Tn, doc-enclose-string, Ef, Bd, doc-save-global-vars)
-       (doc-restore-global-vars, doc-diag-list, Xr, Dl, Vt, Ft, Fa)
-       (doc-do-func, Fn, doc-do-func-args, Fo, Fc, %A, %B, %C, %D, %I)
-       (%J, %N, %O, %P, %Q, %R, %T, %U, %V, doc-do-reference, Hf, An)
-       Lk):
-       * tmac/mdoc/doc-common (Sh, Ss, Rd):
-       * tmac/mdoc/doc-syms (Ux, Bx, At, Dx, Fx, Nx, Ox, Bsx, St, Lb):
-       Drop interpolations of the string and comments documenting that
-       each macro has a side effect on the type size.
-
-2022-02-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/doc.tmac (Tn):
-       * tmac/mdoc/doc-syms (Ux, Bx): Stop interpolating string
-       `doc-Tn-font-size` to set macro arguments at a smaller type
-       size.  This leaves the string without a purpose, so...
-
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Drop definitions of `doc-Tn-font-size`.
-
-       * tmac/mdoc/doc-syms: Drop interpolations of that string from
-       numerous other string definitions.
-
-       Fixes <https://savannah.gnu.org/bugs/?60616>.
-
-2022-02-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Revert addition of man(7) `BD` register.  This feature, which I
-       introduced in commit ea3b27102f (31 January) doesn't work
-       because pdf.tmac normalizes the bookmark depth.  Embedding a man
-       page in a larger PDF document with appropriately nested
-       bookmarks is a project that will have to await another day (or
-       perhaps already has tools to implement it).
-
-       * tmac/an.tmac: Do it.
-       * tmac/groff_man.7.man.in: De-document it.
-
-2022-02-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdf.tmac: Add string containing the name of the macro
-       package for use in diagnostic messages.
-       (pdf:warn, pdf:error): Use it.
-
-       Continues the long process of fixing Savannah #52463.
-
-2022-02-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man,mdoc,me]: Revise hyphenation localization.
-
-       * tmac/an.tmac (an*reset-hyphenation-mode): New macro sets the
-       hyphenation mode appropriate to the locale depending on the
-       values of `cR` (continuous rendering mode) and `HY` (hyphenation
-       enablement); the latter is now interpreted as a Boolean.  Define
-       new register `an*hyphenation-mode` reflecting these conditions.
-       (TH): Call the foregoing instead of invoking `hy` request.
-       (MR): Restore hyphenation mode to `an*hyphenation-mode`.
-       (initialization): Simplify; if not defined, set `HY` to 1.
-
-       * tmac/e.tmac (ld): Set the hyphenation mode here instead of in
-       initialization (which already calls this macro).  Set the mode
-       to 6 for the benefit of anyone borrowing our me(7) changes, but
-       then immediately change to the mode determined by the
-       localization file.
-
-       * tmac/mdoc/doc-common (doc-hyphen-flags): Set a hyphenation
-       mode appropriate to the locale, depending on the values of `cR`
-       and `HY`.
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff: Simplify initialization; if not defined,
-       set `HY` to 1.
-
-       * tmac/cs.tmac:
-       * tmac/de.tmac:
-       * tmac/en.tmac:
-       * tmac/fr.tmac:
-       * tmac/it.tmac:
-       * tmac/sv.tmac: Before switching locales, set a flag if
-       troublesome value 2 of the hyphenation mode is set so that we
-       can preserve it.  Shift man(7) and me(7) logic to follow setup
-       of the new hyphenation mode; for the former, call the new
-       `an*reset-hyphenation-mode`.
-
-       * tmac/groff_man.7.man.in:
-       * tmac/groff_mdoc.7.man: Document updated meaning of `HY`
-       register.
-
-       * NEWS: Add item noting change of man(7) `HY`'s meaning.  Update
-       existing item regarding mdoc(7)'s support for it (groff 1.22.4
-       mdoc(7) didn't recognize the register at all).
-
-       Fixes <https://savannah.gnu.org/bugs/?61734> (for real this
-       time?).
-
-2022-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Regression-test Savannah #61734.
-
-       * tmac/tests/an_reset-hyphenation-correctly.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-02-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff_char.7.man (History): Add new section.
-       (See also): Add cross reference to 1976 edition of CSTR #54.
-
-2022-02-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_man.7.man.in (Document structure macros) <EX, EE>
-       [style]: Add material cautioning writers against asoociating
-       the disablement of filling with some sort of "literal mode".
-       Document still-operational status of inter-sentence space
-       supplementation.
-       (Notes) [style]: Describe an alternative (and macro
-       call-symmetrical) means of using `RS` and `RE` with `TP`.
-
-2022-02-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Add phony targets "man-all" and "man-clean" to
-       {re-}generate and delete all man pages, respectively.
-
-       Arguably fixes <https://savannah.gnu.org/bugs/?61167>.
-
-2022-02-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am (.man): Prefix hyphenation control escape
-       sequences to more configuration-time interpolations to prevent
-       their hyphenation: @DEVICE@, @g@, @INDEX_SUFFIX@, @PAGE@,
-       @TMAC_{AN,M,S}_PREFIX@, @TMAC_MDIR@.
-
-2022-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Refactor `EX` and `EE` macros.
-
-       * tmac/an-ext.tmac: Add new `mC` string to store the font name
-       to be used for example regions.  In AT&T device-independent
-       troff, "CW" was a common name, so use that.  It is however a
-       terrible fit for groff's font family and style-combination
-       functionality, and is inflexible in the face of font selection
-       requests and escape sequences within the example region.  (One
-       either needs to know the names of the fonts available on the
-       output device, or suffer the indignity of mixed constant-width
-       and proportional typefaces.)  Relatedly, drop groff-specific
-       font remapping requests.
-       (EX, EE): Ignore definition if GNU troff is the formatter.  Drop
-       font family manipulation.  Drop specialized logic for groff's
-       DVI output device.
-
-       * tmac/an.tmac (initialization): Resurrect font remapping
-       requests here.
-       (EX, EE): Add new definitions, saving and restoring more state
-       and remapping DVI output device fonts to reflect the absence of
-       CWB and CWBI faces.
-
-2022-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Slightly refactor.  Stop using groff's `HY`
-       register to restore the hyphenation mode, since I plan to change
-       its semantics to a Boolean value (see Savannah #61734).
-       Introduce new register `mJ` to store "1" (if not groff) and the
-       current hyphenation mode otherwise.  Explain why in a comment.
-       (YS, UE, ME, MR): Restore hyphenation mode using `mJ` instead of
-       `HY`.
-
-2022-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: Trivially refactor.  Use a better idiom
-       {seen in James Clark's changes to BSD me(7)} for conditionally
-       defining a (simple) macro.
-
-2022-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/tty.cpp (tty_printer::special): Warn upon
-       encountering unrecognized device control commands using the
-       'tty:' tag.
-
-2022-02-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grotty]: Remove 'sgr' device control command.
-
-       * src/devices/grotty/tty.cpp (tty_printer::special): Do it.
-       * src/devices/grotty/grotty.1.man (Device control commands):
-       {De-}document it.
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?61561>.
-
-2022-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdfpic.tmac: Add support for Cygwin/MinGW temporary
-       directory conventions.
-
-2022-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdfpic.tmac: Search for temporary directories as groff(1)
-       does, instead of going straight to /tmp.
-       (pdfpic@get-temporary-directory): New function checks each of
-       its arguments for validity as a temporary directory; if one is
-       found, its name is left in `pdfpic*temporary-directory`.
-       (pdfpic@cleanup): Remove strings `pdfpic*temporary-directory`
-       and `pdfpic*temporary-file`.
-       (PDFPIC): Call `pdfpic@get-temporary-directory`, using the
-       contents of the environment variables $GROFF_TMPDIR and $TMPDIR,
-       and then /tmp, in that order.  Store the temporary file name in
-       string `pdfpic*temporary-file`.  Use this string in subsequent
-       `sy` and `so` requests.
-
-       Fixes <https://savannah.gnu.org/bugs/?62055> for Unix systems.
-
-2022-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Add test for PDFPIC fallback to PSPIC.
-
-       * tmac/tests/pdfpic_falls_back_to_PSPIC.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Tweak PDFPIC test input.
-
-       * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
-       Eliminate unnecessary blank lines from input.  Also call gs(1)
-       with '-q' in addition to '-o'.  (Why does the latter not imply
-       the former?!)  Thanks to Deri James for the advice.
-
-2022-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdfpic.tmac: Slightly refactor.
-       (pdfpic@cleanup, PDFPIC): Rename `pdfpic*file-name` to
-       `pdfpic*file-name-base` since it is not used as a complete file
-       name (but rather a basis for an ".eps" extension).
-       (PDFPIC): When testing PDF file extension, include the "."; a
-       file name like "mxyzptlkpdf" is too dubious to accept.  Also
-       explicitly compare `systat` register as equal or not equal to
-       zero, since its truth value is inverted from the expectations of
-       *roff expressions.
-
-2022-02-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdfpic.tmac (PDFPIC): Refactor PDFPIC_NOSPACE handling.
-       Stop shelling out to create, and then sourcing, a temporary file
-       just to obtain the value of an environment variable.  groff
-       already has the `\V` escape sequence for that purpose (it's even
-       safe!).  Check that the value of $GROFF_PDFPIC_NOSPACE is a
-       valid numeric expression before assigning it to a register.
-       Trivially, use '=' instead of '==' as an equality operator.
-       *roff languages do not use '=' as an assignment operator, and I
-       believe the '==' synonym to be a sop to C programmers.
-
-2022-02-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Stop attempting to adjust pargraph tag lines.
-
-       * tmac/an.tmac (TP): Disable adjustment inside the diversion.
-       (an-write-paragraph-tag): Restore adjustment outside of it.
-
-       Fixes <https://savannah.gnu.org/bugs/?62051>.
-
-2022-02-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (@z): Conceal bare tab after request name (exposed
-       by no longer stripping the macro file).  See commit ad0575f20, 9
-       December.
-
-2022-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grops,troff]: Migrate to term "scaling unit" in diagnostics.
-
-       * src/devices/grops/ps.cpp (ps_printer::do_import):
-       * src/roff/troff/input.cpp (warnscale_request):
-       * src/roff/troff/number.cpp (parse_term): Do it.
-
-2022-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Add nroff mode fallback for `u` macro.
-
-       * tmac/e.tmac (u): On nroff devices, bracket the first argument
-       with \(ul (underline rule) special character escape sequences.
-       {In plain language, '.u "like this"' renders "_like this_".}
-
-       I regard this as a cosmetic and semantic improvement; since the
-       quarter-em vertical motions used in troff mode were ignored in
-       nroff mode, the effect was not underlining but a sort of
-       strike-through, visible only at spaces in the argument.  The use
-       of this macro was thus invisible in nroff output if no spaces
-       were present in the argument.  This is probably the best we can
-       do without a fatter interface to terminal device capabilities.
-
-2022-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Simulate boxed text support on nroff devices with ISO 6429
-       color escape sequences.
-
-       * tmac/e.tmac (bx): Do it.  Add further fallback for non-groff
-       formatters in nroff mode, bracketing the boxed argument with '|'
-       glyphs.
-       * doc/meref.me.in: Document it.
-
-       Fixes <https://savannah.gnu.org/bugs/?62038>.
-
-2022-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Rename registers `$v` -> `tv`, `$V` -> `dv`.
-
-       * tmac/e.tmac: Do it.  Also include much commentary (including
-       some from James Clark in 1992) attempting to illuminate the
-       confusing history (and naming) of `$[rRvV]`.
-
-       * doc/meref.me.in: Document it.  Introduce new terms
-       "text vertical spacing" and "display vertical spacing" earlier
-       and use them to condense and clarify discussions of their use.
-
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?61710>.
-
-2022-02-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Deferring Output): Add new node introducing
-       and motivating environments, diversions, and traps.
-
-2022-02-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Add more compatibility mode guards.
-
-2022-02-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdf.tmac: Add compatibility mode guards so that we can
-       run even if troff is given the -C option.  Resurrect your
-       vintage 1975 Sixth Edition Unix manuals from '.deth' and format
-       them in PDF today!
-
-       Fixes <https://savannah.gnu.org/bugs/?61995>.
-
-2022-02-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/andoc.tmac: Prefix diagnostic with package file name
-       literally.
-
-2022-02-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Trivially refactor.
-
-       * tmac/an.tmac (an*localize): Rename to...
-       (an*localize-strings): ...this.
-       (TH): Update call site.
-
-2022-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Present several fundamental concepts.
-
-       * doc/groff.texi (Page Geometry):
-       * man/roff.7.man (Concepts): Add new node/section.
-         - page geometry
-         - basic units
-         - device resolution
-         - drawing position
-         - text baseline
-         - page offset
-         - vertical spacing
-         - page break
-
-       Fixes the remainder of <https://savannah.gnu.org/bugs/?58035>.
-
-2022-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Add page length insufficiency check.
-
-       * tmac/e.tmac (@h): Port Keith Marshall's page length checker
-       from ms(7).
-
-       Fixes <https://savannah.gnu.org/bugs/?61034> and
-       <https://savannah.gnu.org/bugs/?61428>.
-
-2022-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Add test for insufficient page length error.
-
-       * tmac/tests/e_rejects-too-short-page-lengths.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Slightly refactor.
-
-       * tmac/e.tmac (@h): Use groff default scaling operator in
-       conditional expression.  Add `do` requests so that the logic for
-       checking the line length works in compatibility mode.  Also move
-       misplaced parenthesis in conditional expression.
-
-2022-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Refactor insufficient page length check.
-
-       * tmac/s.tmac (pg@top): Drop extraneous closing parenthesis from
-       numeric expression.  Change operator from '>' to '>='; a page
-       length right at the boundary causes a spurious extra page break
-       when a paragraphing macro is used to initialize the document.
-       Condense diagnostic emission using the @error macro instead of
-       duplicating it.  Change indentation to fit the style of the rest
-       of the file (use hard tabs).  If aborting, truncate the page
-       length to the current vertical position so that we don't
-       uselessly output further vertical space.
-
-2022-02-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Add test for insufficient page length error.
-
-       * tmac/tests/s_rejects-too-short-page-lengths.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-02-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Vertically space delayed text like other annotations.
-
-       * tmac/e.tmac ((d): Set vertical spacing using percentage in
-       `$V` register.
-       ()d): Restore vertical spacing using percentage in `$v`
-       register.
-
-       Fixes <https://savannah.gnu.org/bugs/?61973>.
-
-2022-01-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Expand '@PAGE@' when generating man pages.
-
-       * Makefile.am (.man): Substitute the './configure'd paper format
-       for @PAGE@.
-       * src/roff/groff/groff.1.man: Use it.
-
-2022-01-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Trivially refactor an-ext.tmac.
-
-       * tmac/an-ext.tmac (EX, EE): Do a better job of keeping the
-       name space promise made in comments at the top of the file.
-       Rename `sP` register to `mP`.  Problem introduced by me in
-       commit 69895ec20, 15 January 2020.  Also rename `la` and `ra`
-       strings to `mL` and `mR`, respectively.  These (undocumented)
-       string names date back to commit 259929625, 15 January 2007.
-
-       * tmac/groff_man.7.man.in (Files) <an-ext.tmac>: Document the
-       aforementioned promise.
-
-2022-01-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Refactor PDF bookmark support.
-
-       * tmac/an.tmac (an*bookmark): New internal macro calls
-       `pdfbookmark` (only if the output device is 'pdf').
-       (initialization): Migrate macro appendments to appropriate
-       definitions.  Two cases...
-       (SH, SS): ...were straightforward.
-       (initialization): Another (for the man page title) was poorly
-       placed when appended to the `TH` macro, skipping over the page
-       header.  Move it instead...
-       (PT): ...here.  But to keep this bookmark from being generated
-       on every page of a document, we need a new variable
-       `an*was-TH-bookmark-emitted` which is tested here and assigned
-       once one bookmark corresponding to a `TH` call has been written.
-       (TH): Initialize `an*was-TH-bookmark-emitted` to zero.
-       (SS): Write the bookmark _before_ the subsection heading text.
-       (initialization): Drop short-lived `BM` register.  It seems
-       harmless to unconditionally include bookmarks in PDF output.  A
-       PDF tool can strip them out if they're not desired, and viewers
-       seem capable of minimizing or reducing the navigation pane (if
-       they even offer one in the first place).
-
-       * tmac/an.tmac (initialization): Rename new `BN` register to
-       `BD`...
-       * tmac/groff_man.7.man.in (Options) <BD>: ...and document it.
-       Also document `PT`'s new bookmarking responsibility.
-
-       Fixes <https://savannah.gnu.org/bugs/?58949> and
-       <https://savannah.gnu.org/bugs/?58950>.
-
-2022-01-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml,groff,nroff,troff]: Tweak usage message.
-
-       * src/devices/grohtml/post-html.cpp (usage):
-       * src/roff/groff/groff.cpp (synopsis):
-       * src/roff/nroff/nroff.sh:
-       * src/roff/troff/input.cpp (usage): Partly revert commit
-       06ae7b0b8, 16 January.  Move an ellipsis back inside a bracketed
-       operand (that is, an optional one).  On reflection, I think this
-       notation makes it clearer that the command can be meaningfully
-       run without operands.
-
-2022-01-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/papersize.tmac: Slightly refactor.  Use new `stringdown`
-       request instead of a combination of `tr`, `di`, `asciify`, and
-       `chop`.
-
-2022-01-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Slightly refactor.
-
-       * tmac/an.tmac (an-prepare-page-title): Rename to...
-       (an*prepare-page-title): ...this.  Also simplify numeric
-       expression.  Add comment regarding necessity of correct
-       environment.
-
-       (an-header): Update call site of `an*prepare-page-title`.
-
-       (TH): Move planting of `an-header` trap from out of the midst of
-       footer trap management.  Add comments.
-
-       (an-header): Move `pl` and `sp` requests from here...
-       (PT): ...to here.  While it's conceptually nice to have these
-       macros consist solely of `tl` requests, it doesn't yield enough
-       power to those who want to redefine them.  Add comment.
-
-       (an-footer, BT): ...simile.
-
-2022-01-27  Dave Kemper <saint.snit@gmail.com>
-
-       [man pages]: Add more references to pic(1)'s .PF.
-
-       * contrib/chem/chem.1.man:
-       * contrib/pic2graph/pic2graph.1.man:
-       * src/utils/grog/grog.1.man: Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?61949>.
-
-2022-01-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Implement PDF bookmark support for man pages.  Limitation: A
-       {sub}section can only be bookmarked if it is specified in the
-       arguments to the `SH` or `SS` requests, not on the next line in
-       an input trap.  Thanks to Deri James for providing the
-       fundamentals (blame me for any weird bits).
-
-       * tmac/an.tmac (an-prepare-page-title): Define a new string,
-       `an*page-ref-string`, which is the man page's own reference
-       {such as "groff(1)"} without any abbreviation, ellipsis, or font
-       selection or italic correction escape sequences.
-       (SS): Define a new string, `an*subsection-heading`, storing the
-       macro arguments (if any).  These could contain font selection
-       escape sequences, for instance, a fact that becomes important
-       later.
-       (initialization):
-       - Recognize `BM` register to enable PDF bookmarks (only on the
-         'pdf' output device); defaults on.  Recognize `BN` register to
-         set a base level/depth for the bookmarks; this is to ease
-         embedding of man pages in other PDF documents that already use
-         bookmarks.  The default is 0.  The registers are not yet
-         documented.
-       - If the output device is 'pdf' and bookmarks are enabled, set
-         `PDFOUTLINE.FOLDLEVEL` and `PDFHREF.VIEW.LEADING` registers
-         {recognized by 'pdf.tmac'}.  Append to `TH`, `SH`, `SS` to get
-         the `an*page-ref-string`, `an-section-heading`, and
-         `an*subsection-heading` bookmarks in the document at the
-         applicable levels.
-
-       * tmac/mdoc/doc-common: Add straw-man implementation--it doesn't
-       support the `BM` and `BN` configuration parameters yet.  (This
-       is enough to get bookmarks for the groff_mdoc(7) page to
-       correctly appear in the new 'groff-man-pages.pdf' document.)
-       (Dt, Sh, Ss): If the output device is 'pdf', place bookmarks in
-       the document at levels 1, 2, and 3.
-
-       Fixes <https://savannah.gnu.org/bugs/?58950>.
-
-2022-01-26  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Allow multiline text in .pdfinfo
-
-       * src/devices/gropdf/gropdf.pl: Use either '\\\\\\\\n' or
-       '\[u000a]' as line separators in the string.
-
-2022-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/trans.tmac: Further follow up commit c64fd60dff.  If the
-       `andoc` wrapper is being used, perform man(7) localization (not
-       just when `an` is loaded).
-
-2022-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man pages]: Fix options used to generate compilations.
-
-       * doc/doc.am (doc/groff-man-pages.pdf): Drop `-rU0` option (it's
-       unnecessary since we don't yet have PDF hyperlink support in
-       this document).  Add `-rC1` option to enable continuous page
-       numbering.
-       (doc/groff-man-pages.utf8.txt): Drop `-rC1 -rU1`.  Continuous
-       page numbering is superfluous since page numbers are not shown
-       in continuous rendering mode.  Stop turning on OSC 8 defaults;
-       we don't know if the document will be viewed with a supporting
-       pager+terminal combination, and further we don't yet have a
-       mechanism for making `MR` man page cross references internal to
-       the document when they indicate groff man pages.
-
-2022-01-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man pages]: Ship compilations in UTF-8 text and PDF.
-
-       Localization support and the resolution of Savannah #61266 have
-       made it practical to batch-render all of groff's man pages as a
-       single giant document.  Provide PDF and UTF-8 text (with ECMA-48
-       escape sequences, but not the italic attribute or OSC 8
-       sequences).
-
-       Reasons for this addition include: {1} it is now possible,
-       whereas I don't believe it was in any previous groff release;
-       {2} many people still don't realize how much more pleasant
-       reading typeset man pages can be (while a subjective assessment,
-       I'm not alone[1]); {3} providing these forms permits full-text
-       searching of groff's entire man page corpus via the PDF viewer
-       or a pager like "less -R", the latter without sacrificing the
-       style variations of the text that aid the reader to comprehend
-       the material; {4} sentimentally, it honors the 50th anniversary
-       of the first Unix manual (dated 3 November 1971)
-       <https://www.bell-labs.com/usr/dmr/www/1stEdman.html>.
-
-       * doc/doc.am (PROCESSEDDOCFILES): Add
-       'doc/groff-man-pages.{pdf,utf8.txt}'.
-       (GROFF_MAN_PAGES{1,2,3}): Add new macro storing names of all man
-       pages generated in the build tree.  Motivate the reason for 3
-       variables in a comment (it's due to groff locale switching).
-       (GROFF_MAN_PAGES_ALL): Add convenience macro for use in
-       dependency lists required by...
-       ('doc/groff-man-pages.{pdf,utf8.txt}'): ...these targets.
-       Generate pages with the lint dial turned all the way up.
-
-       Fixes <https://savannah.gnu.org/bugs/?61900>.
-
-       [1] "The manual was intended to be typeset; some detail is
-       sacrificed on terminals." (man(1), _Unix Time-Sharing System
-       Programmer's Manual_, Eighth Edition, Volume 1, February 1985)
-
-2022-01-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Commit c64fd60dff was not quite cooked.  The localized
-       strings (in English) for the manual section titles need to be
-       set at every document load (i.e., when `TH` is called), but only
-       if the groff locale is "english".  When switching locales, these
-       strings were getting "stuck" in their non-English translations
-       even when returning to an English page.
-
-       * tmac/an.tmac (an*localize): New macro initializes strings.
-       (TH): Call `an*localize` if the locale is "english".
-       (initialization): Drop initialization of section title strings.
-
-       Continues fixing <https://savannah.gnu.org/bugs/?61734>.
-
-2022-01-24  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       [gropdf]: Fix Savannah #61908
-
-       * src/devices/gropdf/gropdf.pl: Adjust text position when
-       given landscape media (i.e -P-l).
-
-       Fixes <https://savannah.gnu.org/bugs/?61908>.
-
-       Thanks to KUBO Koichi for finding the problem and supplying a
-       patch.
-
-2022-01-24  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       * src/devices/gropdf/gropdf.pl: A fix to importing pdf
-       versions > 1.4.
-
-2022-01-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grotty]: Skip part of test if locale doesn't support UTF-8.
-
-       * src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh:
-       Skip test of 'utf8' output device if locale lacks UTF-8 support.
-       But if the 'ascii' or 'latin1' test cases have already failed,
-       report that instead.
-
-       Fixes <https://savannah.gnu.org/bugs/?61891>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2022-01-23 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-
-       [man pages]: Fix typos.
-
-       Fixes <https://savannah.gnu.org/bugs/?61430>.
-
-2022-01-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Fix style nits in test.
-
-       * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
-       - Emit complaints about test environment to standard error.
-       - Replace lingering literal file name with variable expansion.
-       - Skip test if gs(1) fails, instead of reporting failure.
-       - Begin continued lines with operators, for visibility.
-
-2022-01-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Fix misspelled member variable.
-
-       * src/devices/grohtml/post-html.cpp (class html_printer):
-       Rename `supress_sub_sup` to `suppress_sub_sup`.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pdfpic]: Fix Savannah #58206.
-
-       * tmac/pdfpic.tmac (PDFPIC): Scrub null bytes out of pdfinfo(1)
-       output.  Thanks to an anonymous contributor for the patch (the
-       commentary about it is mine, if someone wants an argument).
-
-       Fixes <https://savannah.gnu.org/bugs/?58206>.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pdfpic]: Regression-test Savannah #58206.
-
-       * tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: Do
-       it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pdfpic]: Refactor.
-
-       Now that the package does not abort upon the first whiff of any
-       trouble, avoid littering groff's name spaces.  Take this
-       opportunity to rename registers and strings to have obvious
-       meaning to even the casual reader.
-
-       * tmac/pdfpic.tmac: Do it.
-       (pdfpic@cleanup): New macro removes temporary strings and
-       registers.
-       (PDFPIC): Call the cleanup macro upon entry; this way, if we
-       errored out from a previous call, we avoid confusion.  (We don't
-       clean up upon an error return because the leftover objects might
-       be useful for troubleshooting.)  Rename registers and strings,
-       to get them under name space discipline and also to better
-       suggest their purpose.
-       - convert-pdf     -> pdfpic*do-conversion
-       - pdf-offset-mode -> pdfpic*offset-mode
-       - pspic-args      -> pdfpic*pspic-args
-       - pdf-offset      -> pdfpic*indentation
-       - is-pdf          -> pdfpic*file-extension
-       - img-file        -> pdfpic*file-name
-       - pdf-wid         -> pdfpic*width
-       - pdf-ht          -> pdfpic*height
-       - pdf-deswid      -> pdfpic*desired-width
-       - pdf-desht       -> pdfpic*desired-height
-       Call cleanup macro before returning upon successful operation.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pdfpic]: Improve robustness.
-
-       * tmac/pdfpic.tmac (@abort): Rename to `pdfpic@error`.  This is
-       an auxiliary package, and something else could very well step on
-       the former name (or worse, we break it if we're loaded later).
-       (pdfpic@error): Stop aborting; simply report an error.  It's up
-       to the user how serious `PDFPIC` macro problems are.  As noted
-       in a comment, the user can easily `am pdfpic@error` to tack an
-       `ab` request onto the end of its definition.  Always report
-       input file name and line number.  Replace "[PDFPIC]" prefix with
-       the name of the macro file complaining, to make it easier for
-       groff non-experts to find.
-       (PDFPIC): Return upon errors.  Recast diagnostic messages.  Stop
-       implying that we perform any sort of probing test of file type
-       {there's no telling what pdfinfo(1) will say}.  Apply new
-       'stringdown' request so that we accept '.pdf' file name
-       extension in any lettercase.  Test file argument for existence
-       before proceeding (acknowledge TOCTTOU exposure).  Skip file if
-       pipeline returned a non-zero exit status or the registers into
-       which we extract the height and width are undefined (indicating
-       failure of a temporary file to be created or read).  Reject
-       files with non-positive image width or height reported by
-       pdfinfo.  Validate `width` and `height` arguments, if given,
-       rejecting non-positive values.
-
-       Fixes <https://savannah.gnu.org/bugs/?61892>.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Make `Pa` macro interpolate basic Latin tilde on all
-       output devices.
-
-       * tmac/doc.tmac (Pa): Do it.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix incorrect line numbers in diagnostics.  Line numbers
-       for multiple format-time diagnostics emitted by tbl(1)-generated
-       groff input were off by +5 lines.
-
-       * src/preproc/tbl/table.cpp: Fix it.
-       (NOP_NAME): Add new preprocessor symbol to construct name of
-       "nop" macro to be used as end macro for `ig` requests inside
-       macro definitions.
-       (table::init_output, table::compute_expand_list,
-       table::compute_separation_factor):
-       - Move `entry_list->set_location()` calls to more auspicious
-         locations.
-       - Replace "around line X" language in diagnostic messages with a
-         more idiomatic, and less embarrassing, simple report of an
-         integer.
-       (table::init_output):
-       - Add `entry_list->set_location()` call right before emitting
-         diagnostic about a table row not fitting on a page.
-       - Turn off eqn(1) delimiters when emitting diagnostic about a
-         boxed table not fitting on a page (necessitating `.TS H`
-         support), using new NOP_NAME-based end macro to achieve this
-         inside a macro definition.
-       (table::compute_expand_list): Suppress issue of too-wide table
-       diagnostic when the `EXPAND` table flag is set (corresponding to
-       the `expand` region option), because other code already emits
-       diagnostics in this case.
-
-       Fixes <https://savannah.gnu.org/bugs/?60598>.  Problem appears
-       to date back to commit 3bc4a53a45, 2013-01-07.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Add unit test for format-time diagnostics.
-
-       Ensure that the various format-time diagnostics that a
-       tbl-preprocessed document can generate (1) occur when they are
-       supposed to and (2) are appropriately suppressed by the
-       "nowarn" and/or "nokeep" region options.  One of them is an
-       error and cannot be suppressed by the former, but _can_ be by
-       "nokeep", which is arguably a bug (Savannah #61878).
-
-       * src/preproc/tbl/tests/format-time-diagnostics-work.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TEST): Run test.
-
-2022-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Trivially refactor.
-
-       * src/preproc/tbl/table.cpp (table::compute_expand_width):
-       Declare and initialize variables closer to use.  Also, the width
-       computed is compared to the line length and indentation, so use
-       these well-established *roff terms in the diagnostic message.
-
-2022-01-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #61854.
-
-       * src/preproc/tbl/table.cpp (compute_expand_width): To properly
-       warn if a table is too wide to fit between the indentation and
-       the right margin, we need to compute its column widths including
-       those eligible for expansion via the 'x' column modifier; we
-       cannot use the same expression that we do to determine the
-       amount of space we have to distribute among the expanded
-       columns.  Iterate through columns again (the function was
-       already doing so twice), once to potentially produce the
-       warning, and then as before to distribute any available width.
-       In other words, warnings were only being emitted for too-wide
-       tables where one or more columns used the 'x' modifier.
-
-       Fixes <https://savannah.gnu.org/bugs/?61854>.
-
-2022-01-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Don't add leaders that don't lead anywhere.
-
-       * tmac/s.tmac (toc*end-entry): If no page number string
-       `toc*num` is defined, don't interpolate its emptiness prefixed
-       with a leader (and tab).  This makes "no" as the first argument
-       to `XS` and `XA` work as documented, suppressing not only the
-       page number but the leader after the entry.
-
-       Fixes <https://savannah.gnu.org/bugs/?61853>.
-
-2022-01-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Add regression test for Savannah #61853.
-
-       * tmac/tests/s_XA-literal-no-argument-suppresses-leader.sh: Do
-       it.
-       * tmac/tmac.am (tmac_TESTS): Run it.
-
-2022-01-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Fix bad unit test.
-
-       * tmac/tests/e_chapter-titles-work.sh: Fix missing shell test at
-       end of script, which caused it to exit successfully regardless
-       of any test failures.  Irritating.  This is among the fruits of
-       the "never, ever use 'set -e'" tree.  (This religion has a thick
-       bible: <https://mywiki.wooledge.org/BashFAQ/105>.)  Fortunately,
-       all the tests pass legitimately.
-
-2022-01-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [font]: For 'ascii' and 'latin1' devices, consistently define
-       glyphs for ordinary characters before their special character
-       aliases.  This parallels existing usage for the 'cp1047' device,
-       and, I think, makes the file contents slightly more accessible.
-
-       * font/devascii/R.proto:
-       * font/devlatin1/R.proto: Do it.
-
-2022-01-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Update diagnostic messages.
-
-       * src/devices/grohtml/post-html.cpp (assert_state::add)
-       (assert_state::compare, replace_negate_str)
-       (assert_state::check_value_error, make_val): Make format of
-       internal assertion system messages shorter and more mutually
-       parallel.
-       (html_printer::set_char, html_printer::set_numbered_char)
-       (html_printer::set_char_and_width): Parallelize diagnostic
-       messages with libdriver; see yesterday's commit.
-       (main): Put information in argument to `assert()`; see commit
-       11b43053, 24 November.
-
-2022-01-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [nroff]: Emit usage message on usage errors.
-
-       * src/roff/nroff/nroff.sh: Store the usage message in a shell
-       variable instead of a here document, and sling it to the
-       standard output or standard error streams, as appropriate.
-
-2022-01-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml,groff,nroff,troff]: Tweak usage message.
-
-       * src/devices/grohtml/post-html.cpp (usage):
-       * src/roff/groff/groff.cpp (synopsis):
-       * src/roff/nroff/nroff.sh:
-       * src/roff/troff/input.cpp (usage): Stop putting an ellipsis
-       inside a bracket expression (for file arguments); that suggests
-       misleading complexity.
-
-       * src/devices/grohtml/post-html.cpp (usage): Also don't set
-       metasyntactic variable names in screaming capitals when they are
-       separated from option letters by space and thus can't be
-       confused with them.
-
-2022-01-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libdriver]: Update diagnostic messages.
-
-       * src/libs/libdriver/printer.cpp (printer::find_font): Describe
-       the problem encountered instead of saying lamely "sorry, I can't
-       continue".
-       (printer::set_char_and_width, printer::set_numbered_char):
-       Characterize input as "invalid", not "bad"; see commit bb7512b5,
-       17 September.  When referring to font mounting position, say so.
-       (printer::set_char_and_width): Describe required input character
-       as "ordinary", not "ascii".  Apart from the incorrect casing,
-       doing so better aligns with our terminology in groff_char(7),
-       groff_out(5), our Texinfo manual, and other diagnostic messages;
-       moreover, the use of "ascii" is potentially confusing to those
-       whose environments use another encoding, like UTF-8 or IBM code
-       page 1047.
-
-       Fixes <https://savannah.gnu.org/bugs/?61829>.
-
-2022-01-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grotty]: Check basic Latin ("ASCII") glyph mappings.
-
-       * src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh:
-       Do it.
-       * src/devices/grotty/grotty.am (grotty_TESTS): Run test.
-
-2022-01-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [font,tmac]: Simplify Unicode character mapping process.
-
-       * tmac/unicode.tmac: Drop.  It was originally added in 2005 to
-       suppress horizontal spacing of glyphs in the range U+0483..9.
-       Its purpose has wandered over the years; most recently to map
-       the Basic Latin ("ASCII") hyphen-minus, apostrophe, and grave
-       accent to special characters (and thus ultimately to the General
-       Punctuation block).  But this is unnecessary since the font
-       descriptions for devices with the `unicode` property can provide
-       this information, and anyone who wants to alter the mappings can
-       change either font description files, output device macro files,
-       or troffrc; or add `char` requests to their macro packages or
-       documents (in decreasing magnitude of ambition).
-
-       * tmac/html.tmac:
-       * tmac/tty.tmac: Stop sourcing unicode.tmac.
-
-       * tmac/tmac.am (TMACNORMALFILES): Stop shipping it.
-
-       * font/devutf8/NOTES: Drop remarks about mapping of \[a~],
-       \[a^], and Basic Latin circumflex accent and tilde.  Not only do
-       I disagree with the reasoning (whether these glyphs are "too
-       small" depends on the font used by the terminal emulator, over
-       which we have no control), but this mapping happens in a
-       completely different part of the source tree,
-       src/libs/libgroff/glyphuni.cpp.
-
-       * font/devhtml/R.proto:
-       * font/devutf8/R.proto: Add mappings for the five Basic Latin
-       characters that map surprisingly (see groff_char(7)) and are not
-       syntactically significant to troff.  Three of these are ported
-       from unicode.tmac.
-       (html): Don't migrate the hyphen-minus--yet.
-
-2022-01-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tty-char.tmac: Drop redundant logic.  We don't need to
-       source the `cp1047` or `latin1` files here; `troffrc` will
-       already have loaded `tty` for us, which loads whichever applies.
-
-2022-01-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Separate concerns better; stop re-generating plain
-       text and HTML documents when the 'doc' target is updated; these
-       are already handled by the 'build_infodoc' target.
-       (build_infodoc): Use existing phony targets for plain text and
-       HTML output files instead of repeating filename literals.
-       (doc_all): Remove those same two phony targets from this one's
-       dependencies.
-
-2022-01-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp: Rename `eoi_macro_name` to
-       `end_of_input_macro_name`.  It's long, yes, but better parallels
-       `blank_line_macro_name` and `leading_spaces_macro_name`.  It is
-       not used in lengthy expressions and furthermore clarifies the
-       meaning of the nearby function name `eoi_macro` in one use.
-
-2022-01-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/preconv.1.man (Limitations): Add
-       subsection.
-
-       Fixes <https://savannah.gnu.org/bugs/?55035>.
-
-2022-01-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Be more careful with control characters when they are
-       word-initial in filled text lines.  The idea is to prevent
-       baffling surprises if a sentence is recast in a text editor, and
-       a word beginning with a dot or neutral apostrophe is reflowed
-       onto the beginning of the next input line--suddenly it is parsed
-       as a control character.  Based on a patch by Bjarni Ingi
-       Gislason.
-
-       * contrib/hdtbl/groff_hdtbl.7.man:
-       * doc/automake.mom:
-       * doc/meintro.me.in:
-       * doc/meintro_fr.me.in:
-       * doc/pic.ms:
-       * doc/webpage.ms:
-       * src/devices/gropdf/gropdf.1.man: Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?51312>.
-
-2022-01-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Font Description File Format):
-       * man/groff_font.5.man (Font description file format): Document
-       restriction of kerning adjustment to glyph pairs from within a
-       single font (since that is the scope of the font description).
-
-       Fixes <https://savannah.gnu.org/bugs/?44715>.
-
-2022-01-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * contrib/groff_filenames/groff_filenames.5.man: Remove
-       superfluous paragraphing macro.
-
-       Fixes <https://savannah.gnu.org/bugs/?55084>.  Thanks to Bjarni
-       Ingi Gislason for the report and a suggested patch.
-
-2022-01-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Operators in Conditionals): Update explanation
-       of output-comparison conditional operator.
-
-       Fixes <https://savannah.gnu.org/bugs/?60836>.
-
-2022-01-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Use pnmtops(1)'s -quiet option if possible, to quieten
-       build.
-
-       * m4/groff.m4 (GROFF_PNMTOOLS_CAN_BE_QUIET): Add new macro to
-       test pnmtops for support for (undocumented) '-quiet' option.
-
-       * configure.ac: Perform the check.
-
-       * doc/doc.am: Alter check of shell variable `pnmtops_nosetpage`
-       {processed by AC_SUBST} to correctly match even if pnmtops
-       accepts the '-quiet' option.
-
-2022-01-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Manage hyphenation mode more carefully in localization
-       packages.
-
-       * tmac/{cs,de,it,sv}.tmac: Localize the man(7) package's HY
-       register.
-
-       * tmac/{cs,de,fr,it,sv}.tmac: When localizing the ms(7) package,
-       use mode "2" instead of "3": the 'hy' request complains of
-       contradictory hyphenation modes if "3" is used (the semantics of
-       the hyphenation mode are complex and non-orthogonal; see
-       groff(7) or our Texinfo manual).
-
-       * tmac/{cs,de,en,fr,it,sv}.tmac: If the one language-independent
-       hyphenation bit (don't hyphenate just prior to a page location
-       trap) is set, preserve it; this way a system's troffrc or a
-       macro package can set it and it will not get turned off by the
-       localization package, which for best results should be loaded
-       after any full-service package (and any auxiliary package
-       requiring localized strings, though none are yet distributed
-       with groff).
-
-2022-01-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Add unit test for localization macro files.  Right now
-       this just covers the hyphenation mode.
-
-       * tmac/tests/localization-works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2022-01-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [indxbib]: Document --version in usage message.
-
-       * src/utils/indxbib/indxbib.cpp (usage): Document --version
-       option.  Use more informative metasyntactic variable names.
-       Organize usage message consistently with our others, and stop
-       wrapping the output lines: we know neither the width of the
-       terminal nor the length of the `program_name` string we're
-       interpolating.  See commit b4de44f0, 19 July 2021.
-
-2022-01-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libbib]: Refactor index header checking.
-
-       * src/libs/libbib/index.cpp: Move more header validity checks...
-       (index_search_item::load): ...from here...
-
-       (index_search_item::check_header): ...to here.  Test all size
-       values in header for negative values (never valid) before
-       proceeding.  (These data could be changed to unsigned integer
-       types in the file format, but that would require bumping the
-       file version.  That in turn would make indexes generated with
-       groff 1.23 unusable on systems running older groffs and, perhaps
-       worse, would make groff 1.23 reject index files produced by
-       older groffs.  On the other hand, the regeneration of index
-       files should be, for those who use them, a common activity, and
-       as long as the original database files are kept intact, it seems
-       likely that most people, given modern machines, won't even
-       notice a slowdown in document generation when refer(1) and
-       friends fail to open the indices and fall back to full-text
-       searches of the originals.  So we could still consider revising
-       the file format before the groff 1.23 release.)
-
-       * src/libs/libbib/index.cpp (index_search_item::load):
-       Explicitly perform widening conversion from signed `off_t` value
-       {from a stat(2) buffer} to an unsigned integer; quietens
-       compiler warning about comparison between integers differing in
-       signedness.
-
-2022-01-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac (AC_CHECK_HEADERS): Expect stdbool.h, since we
-       now use it in src/include/lib.h.
-
-2022-01-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libbib, libgroff, indxbib]: Slightly refactor.
-
-       Also, it's silly to test even numbers > 2 for primality.  Stop.
-
-       * src/include/lib.h: Include `stdbool.h` since this header file
-       is used for both C and C++ code.
-
-       * src/include/lib.h (is_prime):
-       * src/libs/libgroff/prime.cpp (is_prime): Boolify.  Return
-       Boolean instead of integer literals and demote return type to
-       `bool`.  Include `assert.h` and add assertion to reject
-       mathematically offensive input.
-
-       * src/libs/libbib/index.cpp
-       (index_search_item::read_common_words_file): Test only odd
-       numbers for primality.
-       * src/utils/indxbib/indxbib.cpp (main): Same.  Since the number
-       comes from user input, make it (a potential hash table size) odd
-       first.
-
-2022-01-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Internationalize and localize.
-
-       * tmac/an.tmac (TH): Indirect predefined manual section titles
-       through new strings `an*section[1-9]` so that they can be
-       localized.
-       (initialization): Give these strings English defaults.
-       (TH): Move `ss` request from here...
-
-       * tmac/en.tmac: ...to here.  It's not the man(7) package's
-       business what the inter-word and inter-sentence spacing values
-       are.  Also, having the correct[disputed] inter-sentence spacing
-       value for English in its localization file restores it for the
-       benefit of multi-lingual documents (mainly roff applications
-       other than man(7)).
-
-       * tmac/{cs,de,fr,it,sv}.tmac: Supply translations for the manual
-       section titles; these were done by a monoglot American employing
-       Google Translate, so those scandalized or running into howlingly
-       wrong locutions are warmly invited to submit corrections.
-
-       * tmac/trans.tmac: Load localized strings.
-
-       Fixes <https://savannah.gnu.org/bugs/?61734>.
-
-2022-01-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Handle auxiliary macro package
-       arguments correctly.
-       (process_arguments): Don't append the argument to the '-m'
-       option to the command line; requested macro packages have
-       dedicated logic.
-       (construct_command): When iterating through requested package
-       list, assume each element is an auxiliary package unless it
-       matches an element in the list of main packages.  If the
-       assumption holds, append the package name to a new list,
-       `auxiliary_package_argument` (prefixed with '-m').  Push this
-       list onto the command line after any main package.
-
-       Also rename `$selected_main_package` to `$main_package` for
-       brevity, and drop unused global lists `m` and
-       `supplemental_package`.
-
-       Fixes <https://savannah.gnu.org/bugs/?61758>.
-
-2022-01-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/tests/smoke-test.sh: Add test cases for user
-       specification of auxiliary macro packages.
-
-2022-01-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Drop unnecessary code.  Apart from being superfluous, it
-       prevented a user-defined value of the `sx` register from being
-       applied to the first footnote marker interpolated, a subtlety
-       that escaped my notice because the first footnotes in our
-       "meref" and "meintro" documents are not numeric, but symbolic,
-       and their markers occurred on lines with vertical space above
-       and below.  (The bug was further masked by an otherwise
-       redundant redefinition of the `*` string inside the `)f` macro.)
-
-       * tmac/e.tmac ()f, +c): Stop redefining footnote marker string
-       `*` after updating the automatic footnote number; its
-       interpolation is already backslash-protected.
-       ()d, pd): Stop redefining delayed text marker string `#` for an
-       analogous reason.
-       (initialization): Drop unneeded `_*` and `_#` strings.
-
-       Thanks to Robert Goulding for his feedback and patience.  See
-       <https://savannah.gnu.org/bugs/?61025>.
-
-2022-01-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/e_footnote-marks-work.sh: Enhance test.  Confirm
-       that the automatic footnote number is reset to 1 by starting a
-       new chapter with the `+c` macro.
-
-2022-01-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Revise `n1` and `n2` interface and behavior.
-
-       There were several bugs in the previous implementation.
-
-       * tmac/e.tmac (po): Issue diagnostic if an attempt is made to
-       set the page offset to a negative value.
-
-       (n1): Accept new optional "C" argument to behave more (but not
-       exactly) like roff(1), as the formerly-recognized "c" argument
-       to `n2` did.  If present, the line length is reduced by the same
-       amount (in new interface register `no`) as the line number field
-       to preserve the overall line length.  Save the previous line
-       length in internal register `_l` and set a flag, stored in `?N`,
-       indicating this reduction.  Otherwise, the macro expects to be
-       able to reduce the page offset to accommodate the line number.
-       If it cannot (for example, with the zero page offset default
-       used by nroff output devices), see above re: the `po` macro.
-
-       (n2): Cache the last line number that may have been output,
-       instead of the current one, so that we can operate on it
-       consistently with user expectations.  Do this earlier, and
-       rename this macro-local variable from `_ln` to `_n` so that we
-       don't need groff's `do` request to operate on it.  Drop
-       recognition of "c" as an optional second argument.  If turning
-       off line numbering: if the line length was shortened (`?N`)
-       restore the saved value and delete `_l` register; otherwise,
-       reverse the change to the page offset.  Delete `_n` register.
-
-       (initialization): Assign `\w'0000'u` to `no` register; this was
-       previously hard-coded in `n1` and `n2`.  Initialize `?N` with 0.
-
-       * doc/meref.me.in (roff Support): Update to reflect interface
-       changes and describe behavior more accurately.
-
-       * doc/meref.me.in (Summary):
-       * tmac/groff_me.7.in (Registers): Document new `no` register and
-       mark it as a groff extension.
-
-       * NEWS: Add item documenting interface changes.
-
-       Fixes <https://savannah.gnu.org/bugs/?61646>.  See the comments
-       in the report for a lengthy enumeration of rendering problems
-       exhibited by the previous implementation.
-
-2022-01-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Add unit test for line numbering feature.
-
-       * tmac/tests/e_line-numbering-works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-12-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grohtml/post-html.cpp (style::style): Add
-       initializer to argumentless constructor to avoid later read from
-       uninitialized memory in `html_printer::do_font`.
-
-       Fixes <https://savannah.gnu.org/bugs/?61748>.
-
-2021-12-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [groff]: Add regression test for Savannah #61748.
-
-       * src/roff/groff/tests/html_works_with_grn_and_eqn.sh: Do it.
-       * src/roff/groff/groff.am (groff_TESTS): Run it.
-
-2021-12-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grohtml/post-html.cpp
-       (html_printer::do_file_components): Emit fatal diagnostic if
-       we're unable to `freopen()` standard output.  Quietens
-       `-Wunused-result` warning from GCC 8.3.
-
-2021-12-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grohtml/html.h (INT_HEXDIGITS): Add new constant
-       to store the maximum possible quantity of digits in the
-       hexadecimal representation of an `int`.
-
-       * src/devices/grohtml/html-text.cpp (html_text::issue_tag):
-       * src/devices/grohtml/post-html.cpp (html_printer::do_body):
-       Guard against format string overflow by large integers in RGB
-       color channel specifications; in a *printf format string, the
-       precision (like the field width) is a _minimum_.  Quietens
-       `-Wformat-overflow` warnings from GCC 8.3.
-
-2021-12-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (get_image_generator): Clarify
-       complex conditional expression.  Quietens `-Wparentheses`
-       warning from GCC 8.3.
-
-2021-12-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Rename new `$x` register to `sx`.  Since we expect the
-       user to set this register directly, it should not be named with
-       a leading '$' per the "me Reference Manual".
-
-       * tmac/e.tmac (initialization, {, }): Do it.
-
-       * tmac/groff_me.7.man:
-       * doc/meref.me.in:
-       * NEWS: Update documentation.
-
-       * doc/meintro.me.in:
-       * doc/meintro_fr.me.in:
-       * doc/meref.me.in: Sync with new register name.
-
-       See <https://savannah.gnu.org/bugs/?61025>.  Thanks to Dave
-       Kemper for the discussion in
-       <https://savannah.gnu.org/bugs/?61710>.
-
-2021-12-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Slightly refactor.
-
-       * src/roff/troff/div.cpp:
-       * src/roff/troff/div.h:
-       * src/roff/troff/input.cpp: Rename variables to reduce confusion
-       between "end macros" and "end-of-input macros".  Call the latter
-       "eoi" macros for brevity.
-
-2021-12-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Fix code style nits.
-         - Use new terminology in diagnostic.  See commit 66ac1a8db9,
-           11 December.
-         - Drop unused '&&&' annotation for macro definitions.  This
-           was a BSD me(7) implementation detail wherein parts of the
-           package were broken out into module files, loaded if/when
-           their macros were called.  groff me(7) is monolithic, except
-           for devtag and refer(1) support.
-         - Remove '&&' end macro when we're done using it.
-
-2021-12-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: (Re-)localize strings.
-
-       * tmac/{cs,de,fr,it,sv}.tmac: Update package localizations to
-       use new resources.  As a happy side effect (and with the new
-       appendix string), the `+c` macro is now localized for Czech,
-       German, and Swedish.
-
-       * doc/meintro_fr.me.in (Les Parties du Document): Update example
-       to reflect mixed-case default string used in chapter headings.
-
-       * tmac/tests/e_ld-works.sh: Add tests for localization.
-
-2021-12-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Internationalize strings.
-
-       * tmac/e.tmac (initialization): Introduce internal
-       `_mo1`..`_mo12`, `_dw1`..`_dw7`, and `_td_format` strings (with
-       English defaults).  Define them outside of the new `ld` macro so
-       that they can be overridden by localization packages.
-       (ld) <dw, mo, td>: Populate via the above new strings.
-       * tmac/trans.tmac: Stop defining `mo` and `dw`.  Instead, make
-       them aliases of the new strings above.   Handle `wa` and `wc`
-       similarly.
-
-2021-12-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Add `ld` macro to re-init date/l10n stuff.
-
-       * tmac/e.tmac (ld): New macro updates `y2` and `y4` registers
-       and `wa`, `wc`, `mo`, `dw`, and `td` strings.
-
-       * doc/meref.me.in (Miscellaneous, Predefined Strings):
-       * tmac/groff_me.7.man (Macros): Document it.
-
-       * tmac/tests/e_ld-works.sh: Add unit test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?61670>.
-
-2021-12-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/e_chapter-titles-work.sh: Add unit test for chapter
-       heading feature.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-12-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Ease localization and customization by exposing
-       strings for "Chapter" and "Appendix" instead of hard-coding
-       these words into the `$c` macro.
-       (initialization): Define new `wa` and `wc` strings.  Separate
-       these and existing localization strings from `y2` and `y4`
-       initialization since the latter don't involve natural languages.
-       ($c): Interpolate these strings in chapter and appendix headings
-       and in calls to `$C` hook macro.  Set "Chapter" and "Appendix"
-       in mixed case instead of full capitals, and set one
-       adjustable nonbreaking word space `\~` between them and the
-       chapter number instead of two unadjustable nonbreaking spaces.
-       {These changes do slightly alter the default output of the
-       package when the `+c` macro is used.}
-
-       * doc/meref.me.in (Predefined Strings):
-       * tmac/groff_me.7.man (Strings): Document new strings.
-
-       * doc/meintro.me.in (Parts of the Basic Paper): Update example
-       to reflect mixed-case default string.
-
-       Fixes <https://savannah.gnu.org/bugs/?61661>.
-
-2021-12-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (@p): Deactivate right alignment (the effect of
-       groff's `rj` request) when starting a new paragraph.
-       * doc/meref.me.in (Paragraphing) <lp>: Document this.
-
-2021-12-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac ()c): Add bounds check to avoid attempting to set
-       a negative indentation, provoking a troff warning.  Problem
-       exposed by formatting "meintro_fr.me" document with default
-       nroff mode line length.
-
-2021-12-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Slightly refactor (boolify).
-
-       * src/roff/troff/div.cpp:
-       * src/roff/troff/div.h:
-       * src/roff/troff/env.cpp:
-       * src/roff/troff/input.cpp: Rename variables and demote from
-         `int` to `bool`.  Initialize and assign them using Boolean
-         literals.  The new names try harder to express a logical
-         predicate, and start with verbs to resist interpretation as
-         noun phrases.
-         - exit_started -> is_exit_underway
-         - done_end_macro -> is_end_macro_finished
-         - seen_last_page_ejector (demoted but not renamed)
-         - began_page_in_end_macro (demoted but not renamed)
-
-2021-12-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Explain presence of undocumented `$r` and `$R`
-       registers.
-
-       Fixes <https://savannah.gnu.org/bugs/?61683>.
-
-2021-12-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (bc): To get to the next column, space by the page
-       length `.p`, not by the distance to the next trap (or 24 inches,
-       as hard-coded in me(7) traditionally).  It is up to any sprung
-       traps to issue further space requests or otherwise ensure a
-       transition to the next column.
-
-       See <https://savannah.gnu.org/bugs/?55081> for discussion.
-
-2021-12-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac ({): Fix missing scaling unit in arithmetic
-       expression: broke footnotes in troff mode.  Problem introduced
-       by me in commit 6eafd208, 16 December.  Thanks to Robert
-       Goulding for the (informal) report.
-
-2021-12-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/{pic,webpage}.html): Quieten build.  Stop
-       passing `-p` (progress) option to postprocessor, which produces
-       TeX-like bracketed page numbers when images occur.
-
-2021-12-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (.ms.html): Drop unused suffix rule.
-
-2021-12-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am (tmac_XFAIL_TESTS): Mark test
-       "e_footnotes-work-with-columns.sh" as expected to fail (as it
-       does now, consequent to a reverted commit).
-
-2021-12-16  Dave Kemper <saint.snit@gmail.com>
-
-       * man/groff_tmac.5.man: Fix minor errors.
-
-       Fixes <https://savannah.gnu.org/bugs/?61633>.
-
-2021-12-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Parameterize line height adjustment when super/subscripting.
-
-       * tmac/e.tmac (initialization): Assign 0.2m to register `$x`.2m.
-       ({, <}: Apply adjustment, multiplied by -1 for superscripts.
-
-       * doc/meref.me.in:
-       * tmac/groff_me.7.man: Document it.
-
-       * NEWS: Add item.
-
-       * doc/meintro.me.in:
-       * doc/meintro_fr.me.in:
-       * doc/meref.me.in: Forego extra line height for more attractive
-       typesetting.
-
-       Fixes <https://savannah.gnu.org/bugs/?61025>.  Thanks to Robert
-       Goulding for the suggestion.
-
-2021-12-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac ($c): Draw the footnote separator no wider than
-       the column width.
-
-       Fixes <https://savannah.gnu.org/bugs/?61675>.
-
-2021-12-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (2c): Accept an empty first argument, permitting
-       the number of columns to be specified but preserving the default
-       column separation.
-
-       Fixes <https://savannah.gnu.org/bugs/?61671>.
-
-2021-12-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (initialization): Initialize `$C` hook, preventing
-       `mac` warnings from troff(1) if chapter title feature is used.
-
-2021-12-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (i, bi): Add italic corrections.
-
-2021-12-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Fix groff warnings and correctness issue.
-       (n2): Prefix `ie` request with `do` because it uses the groff
-       `\B` escape sequence.  Use braces to group multiple requests
-       after an `el` request: `ie` and `el` count as two requests, not
-       one.  Add comment regarding the unfortunate choice of brace
-       style given *roff's syntactical constraints.
-       (n2, (c): Conceal bare tab in request argument list (exposed by
-       no longer stripping the macro file).
-
-2021-12-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Revise diagnostic messages to follow GNU Coding Standards,
-       identifying what is emitting them.
-
-       * tmac/e.tmac (_e): New string holds "e.tmac".
-       (@err): New macro constructs and issues diagnostics.  Add file
-       name to messages when available.  Suppress line number when
-       unavailable.
-       (check_page_length, @z, @h, n2, sk, @p, @(, @), (c, )c, EQ, (f,
-       ++, @U): Call `@err` instead of invoking `tm` request.  Revise
-       wording of messages in an attempt at clarity.
-
-       Continues the long process of fixing Savannah #52463.
-
-2021-12-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Slightly refactor footnote numbering.
-       ()f): Tighten code style and end string definition with comment.
-       (+c, initialization): Drop unused auto-incrementation of
-       footnote number register `$f`.  Add new string `_*` to use when
-       {re-}initializing `*` outside of a footnote diversion, and
-       interpolate the footnote number register instead of a literal.
-
-2021-12-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/e_footnote-marks-work.sh: Add unit test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-12-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Fix automatic numbering of delayed text.
-       (initialization): Add `_#` string for use in multiple
-       assignments of `#` string.
-       (initialization, pd): Remove unused auto-incrementation from
-       `$d` delayed text number register.
-       ()d): Increment `$d` register unconditionally, no longer
-       conditionally on whether the delayed text marker string `#` has
-       been interpolated.
-       ()d, pd): Update `#` string using new `_#` string.  Stop
-       initializing the string with `\k` mark-setting escape sequence.
-
-       * doc/meref.me (Annotations) <)d>: Document now-unconditional
-       incrementation of `$d` register.
-
-       Fixes <https://savannah.gnu.org/bugs/?61632>.
-
-2021-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/e_delayed-text-marks-work.sh: Add test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Rename internal register out of user name space.
-       (@f): Rename `VL` to `__`; remove it immediately after using it.
-
-2021-12-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/meref.me: Fix documentation error; the `$s` macro draws a
-       horizontal line of 2 inches' length, not 1.5 inches.
-
-       Fixes <https://savannah.gnu.org/bugs/?58682>.  Thanks to Dave
-       Kemper for the report.
-
-2021-12-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Generate me(7) manual sources as part of the build.  We had been
-       shipping 'me' sources with the string '@VERSION@' in them and
-       only sed-replacing that to produce generated PostScript, but
-       this replacement was not occurring for users who processed the
-       documents themselves.
-
-       * doc/meintro.me:
-       * doc/meintro_fr.me:
-       * doc/meref.me: Rename these to...
-       * doc/meintro.me.in:
-       * doc/meintro_fr.me.in:
-       * doc/meref.me.in: ...these.
-
-       * doc/doc.am (DOCFILES): Add the new *.in files.  Move the *.me
-       files from here...
-       (GENERATEDDOCFILES): ...to this new variable.
-       (dist_otherdoc_DATA, EXTRA_DIST): Add `$(GENERATEDDOCFILES)`.
-       (doc/me{intro{,_fr},ref}.me): Add new target rules.
-
-       * src/utils/grog/tests/smoke-test.sh: Update test to look for
-       the above source tree documents under their new names.
-
-2021-12-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (.me.txt, .ms.txt): Drop unused suffix rules.
-
-2021-12-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (DOC_SED): Add substitution of command prefix
-       {"@g@"} so we can make accurate reference to groff commands with
-       Unix counterparts in our documentation.
-
-2021-12-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac: Add nroff mode string definitions for 4.4BSD
-       compatibility.
-         - Define '{' and '}' (superscripting) strings as '[' and ']'.
-         - Define '<' and '>' (subscripting) strings as '\(la and
-           '\(ra' if available on the device, otherwise '<' and '>'.
-
-       * tmac/tests/e_footnote-marks-work.sh: Update expected output.
-
-       * doc/meref.me: Document it.
-
-       Fixes <https://savannah.gnu.org/bugs/?61619>.
-
-2021-12-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (doc/meintro_fr.ps): Add target rule (overriding
-       suffix rule) to generate this file using `-mfr` (load the French
-       localization macro file).
-
-2021-11-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Drop redundant `do_divert()` declaration.
-
-       * src/roff/troff/env.h: Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?61433>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2021-11-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Remove `DEBUGGING` preprocessor cruft.
-
-       * src/roff/troff/input.cpp:
-       * src/roff/troff/mtsm.cpp: Stop defining `DEBUGGING`
-       preprocessor macro (as empty).
-
-       * src/roff/troff/input.cpp: Give `DEBUG_OPTION` an empty string
-       value if the former is undefined, so the `getopt_long()` call
-       will compile.
-
-       Fixes <https://savannah.gnu.org/bugs/?61436>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2021-11-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Slightly refactor table format column modifier `p` and
-       `v` validation.
-
-       * src/preproc/tbl/main.cpp (process_format): Make code terser by
-       introducing references to `list->point_size` and
-       `list->vertical_spacing`.  Doing this requires a new scope
-       {because a switch case isn't one} so add it, without updating
-       indentation for this commit.  When complaining of out-of-range
-       type size or vertical spacing, report the limit.
-
-2021-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Improve diagnostic messages.
-
-       Revise diagnostic messages generally to use terminology
-       consistent with the recent rewrite of tbl(1), identify a
-       contextual token when possible, and communicate more helpfully.
-
-       * src/preproc/tbl/main.cpp (process_options): Tell the user
-       which region option is missing a closing parenthesis or cannot
-       accept an empty argument.  Refer to region options as such, not
-       simply "options" (so they can't be confused with command-line
-       options).  Say that input is "invalid" instead of "bad".
-       (process_format): Say "table format specification" instead of
-       just "format".  Say "column classifier" instead of "format".
-       When a column modifier is missing an argument or a closing
-       parenthesis, identify it and refer to it as a "column modifier"
-       instead of omitting context.  Inform user that arguments to `p`
-       and `v` column modifiers must be "(optionally signed) integer"s,
-       not "numbers", lower these diagnostics' levels from error to
-       warning, and indicate that the modifier is ignored.  Clarify
-       diagnostic when extra characters trail `.` at the end of a table
-       format line.
-       (process_data): Say "table entry" instead of "data entry" when
-       discarding an excess one.
-       (process_table): Say we're giving up on "this table region", not
-       this "table", particularly since any table continuations (.T&)
-       are ignored.
-
-2021-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix call to `getopt_long()`.
-
-       * src/preproc/tbl/main.cpp (main): Stop telling `getopt_long()`
-       to look for a `T` option.  Continues b4bbf32e, 16 October 2020.
-
-2021-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Tweak usage message.
-
-       * src/preproc/tbl/main.cpp (usage): Document `--version`.  Give
-       version retrieval mode separate synopsis.  Use more normative
-       synopsis syntax.
-
-2021-11-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix code style nits.
-
-       * src/preproc/tbl/main.cpp (process_input_file)
-       (entry_format::debug_print, process_data, main): Replace
-       `assert(0)` calls with communicative predicates.
-       (struct input_entry_format, input_entry_format::debug_print,
-       process_format): Boolify.  Demote and rename `int`s
-       `last_column` and `equal` to `bool`s named `is_last_column` and
-       `is_equal_width`.  Assign them Boolean literals.
-       (process_format): Boolify.  Demote `have_expand`, `got_format`,
-       and `got_period` from `int` to `bool`.  Use Boolean literals in
-       assignments thereto.
-       (process_options): Swap order of null pointer comparison when a
-       typo or thinko could lead to lvalue assignment.
-       (process_data): Boolify.  Demote `give_up` from `int` to `bool`.
-       Demote and rename `int` `row_comment` to `bool`
-       `seen_row_comment`.  Use Boolean literals in assignments
-       thereto.
-       (main): Use standard C library symbols `EXIT_SUCCESS` and
-       `EXIT_FAILURE` with `exit()` calls instead of `0` and `1`.
-
-2021-11-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Fix Savannah #61520.
-
-       * src/utils/grog/grog.pl: Move hash `preprocessor_for_macro` to
-       global scope since it is now mutable across `do_line` subroutine
-       calls.
-       (do_line): Adjust regex matching an end macro to work better.
-       Check names of macros being defined by the document; if they
-       start with '[' or ']', stop attempting to detect refer(1) usage,
-       by deleting its key from the `preprocessor_for_macro` hash.
-
-       Fixes <https://savannah.gnu.org/bugs/?61520>.
-
-2021-11-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Add regression test for Savannah #61520.
-
-       * src/utils/grog/tests/avoid-refer-fakeout.sh: Do it.
-       * src/utils/grog/grog.am (grog_TESTS): Run test.
-
-2021-11-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Page Motions):
-       * man/groff.7.man (Escape short reference): Fix error: the `\r`,
-       `\u`, and `\d` escape sequences move in ems, not vees, despite
-       being vertical motions.  Add discussion and example.  Thanks to
-       Bjarni Ingi Gislason for pointing out the problem in groff(7)
-       and Tadziu Hoffman for his lucid explanation.
-
-       Fixes <https://savannah.gnu.org/bugs/?61437>.  Thanks to Bjarni
-       Ingi Gislason for the report and a suggested patch.
-
-2021-11-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/include/error.h: Drop `extern` storage class from
-       diagnostic function prototypes.  Drop parameter names from
-       prototypes, in keeping with the Stroustrup-style C++ used in
-       most of groff.
-
-2021-11-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/font.cpp (font::load): Update diagnostic
-       messages to say "kerning pair" instead of "kern pair".
-
-2021-11-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_size): Update diagnostic
-       messages to use more normative language: say "type size" instead
-       of "point-size", and "escape sequence" instead of "escape".
-       * src/roff/groff/tests/\
-       use_point_size_escape_with_single_digit_arg.sh: Update expected
-       diagnostic wording in text.
-
-2021-11-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_size): Boolify.  Update
-       prototype.  Demote return type from `int` to `bool`.  Use
-       Boolean literals for return values.  Similarly demote local
-       variable, rename it from `bad_digit` to
-       `contains_invalid_digit`, and use Boolean literals with it.
-
-2021-11-16  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       * src/devices/gropdf/gropdf.pl: Fixes to importing pdf versions
-       > 1.4.
-
-2021-11-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: If "nowarn", suppress table row warning.
-
-       * src/preproc/tbl/table.cpp (table::init_output): Bracket the
-       generated groff code that emits a warning if a table row
-       overruns a page location trap (usually, is too long to
-       vertically fit on the page) in a test for whether the "nowarn"
-       region option was given, so that this warning is suppressed as
-       well when that option is used.
-       * src/preproc/tbl/tbl.1.man (Region options): Document new
-       "nowarn" behavior.
-
-       {"nokeep" also suppresses this warning, for a different reason;
-       no diversion is created to hold the table row, so its vertical
-       size does not exist to be compared to the distance to the next
-       page trap.}
-
-       Fixes <https://savannah.gnu.org/bugs/?61477>.
-
-2021-11-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::do_vspan): Fix code style
-       nits.  Swap order of null pointer and zero equality comparisons
-       when a typo or thinko could lead to lvalue assignment.  Break a
-       series of 6 and-ed assertion predicates into separate `assert()`
-       calls--sure to be less maddening for anyone who has to debug
-       such a contingency.  Clarify comment since C++98 didn't yet have
-       `nullptr`.
-
-2021-11-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [m4]: Clean up shell variable quoting and bracing.
-
-       * m4/groff.m4 (GROFF_PROG_YACC, GROFF_MAKEINFO)
-       (GROFF_BROKEN_SPOOLER_FLAGS, GROFF_TARGET_PATH_SEPARATOR): Stop
-       bracing shell variable expansions that don't require it; the
-       shell is not make(1).
-       (GROFF_PROG_YACC, GROFF_MAKEINFO): Double-quote shell variable
-       expansions that might produce whitespace.
-       (GROFF_MAKEINFO): Drop unnecessary leading zeroes from version
-       number component construction.  Drop unnecessary escaping of
-       plus sign in expr(1) input.
-
-2021-11-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [m4]: Clean up test(1) usage.
-
-       Get rid of string (non-)nullity tests and comparisons involving
-       concatenation with garbage (usually "x").  Even the GNU Autoconf
-       manual's shell portability material doesn't recommend this.  It
-       must be either a bodge cooked up by shell programmers who
-       couldn't remember to quote variable expansions, or a workaround
-       for shells of such poor quality that they defied the odds and
-       decayed out of usage or got fixed.
-
-       Instead, use double quotes (only where necessary).  Test for
-       non-empty strings with "test -n" and empty strings with "test
-       -z".  Stop quoting literal comparands that obviously have no
-       shell metacharacters in them.
-
-       * m4/groff.m4 (GROFF_PRINT, GROFF_PROG_YACC, GROFF_PERL)
-       (GROFF_DOC_CHECK, GROFF_MAKEINFO, GROFF_TEXI2DVI)
-       (GROFF_HTML_PROGRAMS, GROFF_PDFDOC_PROGRAMS, GROFF_PAGE)
-       (GROFF_TMAC, GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_X11)
-       (GROFF_APPRESDIR_DEFAULT, GROFF_APPRESDIR_CHECK)
-       (GROFF_HAVE_TEST_EF_OPTION, GROFF_BASH, GROFF_UCHARDET)
-       (GROFF_UCHARDET_CHECK, GROFF_PDFTOOLS)
-       (GROFF_USE_GROFF_ALLOCATOR): Do it.
-
-2021-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_TEXI2DVI): Add dependency on
-       `GROFF_MAKEINFO` macro.  Rewrite to also test `MAKEINFO`
-       variable, which is empty if the `makeinfo` command is not
-       installed or too old.  Consequently ignore `texi2dvi` if is too
-       old without having to do a version check (since it and
-       `makeinfo` are distributed together, both being part of GNU
-       Texinfo).
-
-       * doc/doc.am (.texi.dvi, .texi.pdf): Update error message to
-       indicate that `texi2dvi` is _either_ missing or too old.
-
-2021-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_MAKEINFO): Stop throwing a warning if the
-       installed `makeinfo` is old but the distributed Info manual is
-       up to date.  This is not a configure-time problem; the user will
-       be notified when they run 'make' if they modify doc/groff.texi,
-       or if they run 'make doc' (which has required a TeX installation
-       for years).  Empty the `MAKEINFO` variable immediately if a
-       too-old version is detected.  Drop needless `AC_SUBST`itution of
-       the detected `makeinfo` version.
-
-2021-11-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_HTML_PROGRAMS): Clarify message; it is only
-       groff-generated HTML that is disabled by the absence of the
-       programs checked for.  (`makeinfo` can still generate our
-       Texinfo manual in HTML format.)
-
-2021-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Drop `BUILD_INFODOC` symbol.  Ship manual in GNU Info,
-       text, and HTML forms in distribution archive.
-
-       * Makefile.am (MAINTAINERCLEANFILES): Initialize.
-       (MOSTLYCLEANADD): Drop unused variable.
-       * configure.ac: Drop `AM_CONDITIONAL([BUILD_INFODOC]...`.
-       * doc/doc.am (EXTRA_DIST): Rearrange shipment of our Texinfo
-       manual source files to precede all of the generated forms, for
-       clarity.  Drop all `BUILD_INFODOC` conditionals.  Make
-       `build_infodoc` phony target depend on plain text, GNU Info, and
-       HTML forms of Texinfo manual unconditionally.  Also drop unused
-       variables `groffinfodir`, `groffpdfdir`, and `texi2dvi_missing`.
-       (EXTRA_DIST, MAINTAINERCLEANFILES): Add Info form of manual.
-       Drop glob pattern attempting to match the segments that
-       `makeinfo` breaks it into.  It isn't necessary for
-       MAINTAINERCLEANFILES.
-       (EXTRA_DIST, MAINTAINERCLEANFILES): Add text form of manual.
-       (EXTRA_DIST, MAINTAINERCLEANFILES): Add HTML form of manual.
-       (dist-hook): Depend on new (phony) target `dist-info-bits`.
-       (dist-info-bits): Look for the info document in the build
-       directory, then the source directory.  (It could be in either
-       place depending on whether the build from a Git working tree is
-       being done in or out of a separate build directory.)  When
-       found, copy the segments to the assembly area for the
-       distribution archive.
-       (install_infodoc): Refactor.  Remove any groff info files from
-       the destination info directory using a shell glob directly
-       instead of a partly redundant ls(1) command substitution.
-       Similarly, use a shell glob to cp(1) the info files (including
-       any matched segments) to the destination info directory before
-       running `install-info`.  (In this process I learned that
-       `install-info` doesn't "install" anything; instead, it
-       {de-}registers info files with their top-level catalog.)
-
-2021-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (.texi.txt, .texi.html): Reorder pattern rules to
-       make it clearer which formats require only `makeinfo` and which
-       require `texi2dvi`.  The latter imposes more build dependencies,
-       including a full TeX installation.
-
-2021-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mom]: Build more quietly.
-
-       * contrib/mom/mom.am (penguin.{ps,.pdf}): Make targets quiet by
-       default; they are simple file copies.
-
-2021-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Revise a test's setup.
-
-       * src/roff/groff/tests/fp_should_not_traverse_directories.sh:
-       Revise search for device/font description directory to work in
-       within-source-tree builds and (for now) with the approach used
-       by Automake's "distcheck" target.
-
-2021-11-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Accept `\&` as an empty table entry.
-
-       * src/preproc/tbl/table.cpp (table::add_entry): Suppress
-       diagnostic about non-empty table entries classified as `_` or
-       `=` if the entry consists of exactly `\&`.
-
-       * src/preproc/tbl/tbl.1.man (Table data): Document this idiom.
-
-2021-11-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Update diagnostic messages.
-
-       * src/preproc/tbl/main.cpp (process_options, process_format):
-       * src/preproc/tbl/table.cpp (table::add_entry): Align diagnostic
-       text with terminology now used in tbl(1) man page.
-         - "global option" -> "region option"
-         - "specifier" -> "column modifier"
-         - "format" -> "column classifier"
-
-2021-11-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Fix missing colon in diagnostic messages.
-
-       * src/libs/libgroff/error.cpp (do_error_with_file_and_line):
-       Restore missing colon to diagnostic text.  Problem introduced by
-       me in commit 9a038161, 8 November.
-
-2021-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff,grops]: Slightly refactor.
-
-       * src/devices/grops/ps.cpp: Explicitly preprocessor-include
-       "lib.h" since we use the `PI` symbol it defines.
-
-       * src/include/lib.h: Add inclusion guard.  Wrap only `extern "C"
-       and its braces in preprocessor conditionals, so that prototypes
-       are present in the header even for C language code that
-       #includes this header.  Add `static` storage class to `PI`
-       symbol to avoid redefinition errors from the linker.
-
-       * src/libs/libgroff/iftoa.c (if_to_a):
-       * src/libs/libgroff/itoa.c (i_to_a, ui_to_a): Add `const` type
-       qualifier to function definitions for agreement with prototypes
-       in "lib.h".  Drop local copies of prototypes.
-
-2021-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Centralize definitions of {U,}INT_DIGITS.
-
-       * src/libs/libgroff/iftoa.c:
-       * src/libs/libgroff/itoa.c: Move definitions of `INT_DIGITS` and
-       `UINT_DIGITS` from here...
-       * src/include/lib.h: ...to here.
-
-       * src/libs/libgroff/iftoa.c:
-       * src/libs/libgroff/itoa.c: Preprocessor-include "lib.h".  This
-       revealed missing guards around `extern "C"` declarations, so...
-
-       * src/include/lib.h: Add them where necessary.
-
-2021-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (OP): Fix code style nits.  Don't quote macro
-       arguments unnecessarily.  Use consistent backslashing.  Use
-       groff font escape sequence syntax.  Use adjustable non-breaking
-       space escape sequence instead of a non-adjustable one.
-       Parenthesize numeric expression for better readability.
-
-2021-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Make allocator replacement optional.  Switch it
-       off by default, relying on C++ runtime new/delete support.
-
-       * configure.ac: Call new `GROFF_USE_GROFF_ALLOCATOR` m4 macro.
-       Use `AM_CONDITIONAL` to set Automake variable
-       `USE_GROFF_ALLOCATOR` if appropriate.  Report whether the
-       allocator is used in configure script output summary.
-       * m4/groff.m4 (GROFF_USE_GROFF_ALLOCATOR): Define new macro to
-       collect user preference.  The default is off.
-       * src/libs/libgroff/libgroff.am (libgroff_a_SOURCES): Build and
-       link new.cpp only if we are to `USE_GROFF_ALLOCATOR`.
-
-       * NEWS: Add item.
-
-2021-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_TMAC): Report a human-readable message if
-       no system tmac prefix is found, instead of leaving the ellipsis
-       hanging.
-
-2021-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_TMAC): Use separate shell variable for
-       `AC_MSG_RESULT()` content since the human-readable string we
-       populate it with in the empty case is not appropriate for later
-       `AC_SUBST()`-itution.  Problem introduced by me in commit
-       19670348, 31 October.
-
-2021-11-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am (MOSTLYCLEANFILES): Remove `$(TMACMDOCFILES)`.
-       This variable, formerly named `TMACMDOCSTRIPFILES`, should not
-       be used in a clean target because its contents are (no longer)
-       generated files.  Problem introduced by me in commit 24602f42, 4
-       July (only noticeable in within-source-tree builds).
-
-2021-11-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff,pic]: Check `strdup()` return value.
-
-       * src/libs/libgroff/font.cpp (struct text_file): Add `fatal()`
-       member function.
-       (text_file::fatal): Implement it.
-
-       * src/libs/libgroff/font.cpp (font::load_desc):
-       * src/preproc/pic/troff.cpp (troff_output::set_location): Die if
-       `strdup()` returned a null pointer.
-
-2021-11-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/error.cpp (do_error_with_file_and_line):
-       Revise to eliminate `fprintf()` calls, which might perform
-       dynamic memory allocation, rendering this function unsafe to
-       call after memory allocation failures.  Since this function is
-       near the top of our diagnostic output call stack, that would be
-       unfortunate.  `errprint()` does not use dynamic allocation, nor
-       do the `i_to_a()` and `ui_to_a()` functions it calls to format
-       integers.
-
-2021-11-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * configure.ac: Add `strdup` to AC_CHECK_FUNCS since we are
-       using it and the whole point of libgroff's `strsave()` was to
-       get along without it.  But `strdup` has been standardized in
-       POSIX for 20 years (SUSv3, POSIX:2001) and is on its way into
-       ISO standard C (N2353) and C++ (P2391R0) as well.
-
-2021-11-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/strsave.cpp (strsave): Call `strcpy()` only
-       if `malloc()` did not return a null pointer.  Problem noted by
-       Ingo Schwarze.
-
-2021-11-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/fontfile.cpp (font::open_file): Don't open
-       user-specified font file names with slashes in them; i.e., don't
-       traverse directories outside the configured font path.  Also
-       refuse to open the file if the `sprintf()` used to construct its
-       file name doesn't write the expected quantity of bytes to the
-       destination buffer.
-
-       Fixes <https://savannah.gnu.org/bugs/?61424>.  Thanks to Ingo
-       Schwarze for feedback.
-
-2021-11-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Regression-test Savannah #61424.
-
-       * src/roff/groff/tests/fp_should_not_traverse_directories.sh: Do
-       it.
-       * src/roff/groff/tests/artifacts/HONEYPOT: Add test artifact.
-       * src/roff/groff/tests/artifacts/devascii/README: ...and this;
-       we need a directory to make the test work but empty ones tend to
-       look unintentional.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-       (EXTRA_DIST): Ship artifacts.
-
-2021-11-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Fix diagnostic error wording.
-
-       * src/libs/libgroff/font.cpp (font::load): Fix diagnostic
-       message; this is issued when an unrecognized directive is
-       encountered, so it necessarily occurs _before_ any `charset` or
-       `kernpairs` directive.  Give the user a hint accordingly.
-
-2021-11-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Fix paragraph tag regressions.
-
-       * tmac/an-ext.mac (UR, MR): Only create an environment and
-       diversion if we're not already in one of the latter.  If we are
-       {in groff man, this occurs only when collecting a `TP` paragraph
-       tag}, then typeset the URI as part of the indented paragraph.
-       (UE, ME): Pop the diversion and environment stacks only if we
-       pushed them in the first place.  Eliminate spurious space in
-       post-URI arguments by only typesetting excess macro parameters
-       if there were any.
-
-2021-11-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Regression-test Savannah #61425.
-
-       * tmac/tests/an-ext_link-macros-work-in-paragraph-tags.sh: Do
-       it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-11-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (DS): Drop a redundant unconditional break; every
-       display macro we call in the event of a valid call already
-       breaks the line, and it's polite to not break if we're given an
-       invalid argument.  Emit a diagnostic error if the argument we're
-       given is invalid, and immediately end the diversion we just
-       opened.
-
-2021-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (environment::set_font): Clarify
-       diagnostic warning.
-
-2021-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::add_entry): If we see a '\^'
-       entry on the first row of a table, it's invalid, but we need to
-       create an empty entry in its place.  Otherwise, someone can put
-       another '\^' right below the one on the first row, creating a
-       reference to a nonexistent table entry and provoking a SEGV.
-       Issue an error diagnostic (distinct from the one in
-       `do_vspan()`), create the entry, and skip `do_vspan()` (given a
-       '^' in a first-row definition, it issues an error diagnostic and
-       returns early, which suffices).  Problem appears to date back to
-       groff 1.02 (June 1991) at the latest.
-
-       Fixes <https://savannah.gnu.org/bugs/?61417>.
-
-2021-11-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #61417.
-
-       * src/preproc/tbl/tests/\
-       do-not-segv-on-invalid-vertical-span-entry.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-2021-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Fix Savannah #61408.
-
-       * tmac/an.tmac (an-prepare-inner-footer): Don't try to get a
-       substring of an empty string; the man page author might not have
-       specified a third argument to `TH` (or supplied an empty one).
-
-       Fixes <https://savannah.gnu.org/bugs/?61408>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2021-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add regression test for Savannah #61408.
-
-       * tmac/tests/an_inner-footer-abbreviation-works.sh: Do it.
-
-2021-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Tweak computation in URI breaking.
-
-       * tmac/an-ext.tmac (UE, ME): Stop adding the page offset `.o`
-       when performing the available horizontal space computation for
-       the typeset URI string.  This made no difference on nroff
-       devices (grotty; even with `.po 15n`), but it caused the
-       breaking decision to be too conservative on troff devices
-       {grops}, forcing some URIs that would fit on the current line to
-       the next one.
-
-       * tmac/tests/an-ext_UE-breaks-before-long-URIs.sh: Add test of
-       URI with no link text, which also has break points after every
-       character, so that we detect even slight alterations.
-
-2021-11-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Do more device and font description file validation,
-       resolve an assertion failure arising from a negative declared
-       device resolution, and correct a documentation error.
-
-       * src/libs/libgroff/font.cpp (font::load): Include more
-       information about invalid input in diagnostic messages.
-         - When a kern pair's amount is missing or invalid, report the
-           name of the kern pair.
-         - When someone tries to declare the first entry in the charset
-           section as an alias, report the glyph name.
-         - Identify the token for the unnamed character if an attempt
-           is made to alias it.
-         - When an out-of-range character type is applied to a glyph,
-           name the glyph.
-       (font::load_desc): Same.
-         - Drop redundant zero initialization of `res`.
-         - Check all directives that take basic units for positive
-           values, adding `res`, `unitwidth`, `paperwidth`, and
-           `paperlength`.  Update this diagnostic to demand positive,
-           not nonnegative, values.
-         - When the font count is long in a `fonts` directive, report
-           how many font names were declared (and thus expected).  (If
-           the count is short, the next line is read for a font name,
-           like 'tcommand' in our devutf8/DESC.)
-         - When interpreting a `papersize` directive, throw an error
-           and return false if `res` has not yet been encountered,
-           since it is used in subsequent computations.
-         - When a paper format cannot be determined, report the
-           original declared value from the DESC file.  Use `strdup()`
-           to save it since it gets clobbered by the resolving process.
-           `free()` the saved string when we're done, regardless of
-           error condition.
-
-       * doc/groff.texi (Device and Font Files):
-       * man/groff_font.5.man (DESC file format): Document additional
-       exception to order-indifference of directives: (at least one)
-       `res` must precede `papersize`.
-
-       Fixes <https://savannah.gnu.org/bugs/?61414>.
-
-2021-11-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grohtml/post-html.cpp
-       (html_printer::do_file_components): Add assertion.
-
-2021-11-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/ps.cpp (usage): Document -p and --version
-       options.
-
-2021-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-nroff (doc-setup-page-layout): Set the title
-       length to the device line length (register `.l`) if register
-       `LT` is not defined.  This keeps the title length from being set
-       to 78n when the line length is not, preventing the output from
-       looking silly.
-
-2021-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (main): Emit groff code to define
-       macro `T&` as empty if it is not already defined.  (All of our
-       full-service macro packages [except mdoc(7)] already do this, so
-       there's no change in semantics; mom(7) even defines it as an
-       empty _string_.)
-
-2021-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/string_case_xform_requests.sh: Migrate
-       test to POSIX shell, dropping use of process substitution (a
-       Bashism).  Also rewrite to stop using a here document within a
-       command substitution, mainly for paranoia.
-
-       * src/roff/groff/tests/string_case_xform_requests.sh:
-       * src/roff/groff/tests/on_latin1_device_oq_is_0x27.sh: Update
-       shebang lines to use /bin/sh as the interpreter.
-
-2021-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/ps.cpp (encode_subfont): Update assertion to
-       check for `sub` parameter being a null pointer rather than
-       `sub->glyphs`; the latter is a member array of a `subencoding`
-       struct so it can't be a null pointer.  (`glyphs` is an array of
-       pointers to `const char`; the _elements_ of the array can [and
-       are initialized to] be null pointers, but the address of the
-       array itself will never be in a C/C++ implementation.)  Detected
-       by Clang 13's "-Wtautological-pointer-compare".
-
-2021-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/new.cpp (delete): Declare `throw()` (no
-       exceptions thrown); quiets "-Wimplicit-exception-spec-mismatch"
-       from Clang 13.
-
-2021-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4: Fix messaging nits.
-       (GROFF_MAKEINFO): Set `missing` to "missing 'makeinfo'" for
-       consistency with other assignments to `missing`.
-       (GROFF_TMAC): Utter an intelligible result in the configure
-       check when no system macro files requiring groff wrapping are
-       located.
-
-2021-10-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Handle special character escape sequences that map to
-       basic Latin glyphs in device control escape sequences
-       consistently among output devices.
-
-       * src/roff/troff/input.cpp (encode_char): Rearrange
-       conditionals.  This is the logic that puts the "whatever" within
-       a \X'whatever' escape sequence into GNU troff's intermediate
-       output.  Handle adjustable and nonadjustable space escape
-       sequences ("\~" and \ ") first.  Then, if the token is a special
-       character escape sequence, retrieve its "contents" (glyph name).
-       Move the basic Latin mapping for the seven glyph names '-',
-       'aq', 'dq', 'ga', 'ha', 'rs', and 'ti' here, before checking
-       whether the device description issued the
-       'use_charnames_in_special' directive.  This way, the 'html' and
-       'xhtml' output devices can straightforwardly embed these basic
-       Latin characters in device control escapes (notably, "html:",
-       for which the present convention is to follow the this tag
-       immediately with a literal HTML URI, complete with `<a href>`
-       element syntax).  If the special character is none of these and
-       we should 'use_charnames_in_special', proceed as groff 1.22.4
-       and earlier did.  This is a behavior change, as was my addition
-       of this translation mechanism in the first place, so...
-
-       * doc/groff.texi (Postprocessor Access): Document it.
-
-       * src/roff/groff/tests/\
-       device_control_escapes_express_basic_latin.sh: Test it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?61401>.
-
-2021-10-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Map \[ti] correctly in device control escape sequences.
-
-       * src/roff/troff/input.cpp (encode_char): Fix copy-and-paste
-       error.  \[ti] should put '~', not '^', into a device control
-       command.
-
-       Fixes <https://savannah.gnu.org/bugs/?61403>; problem introduced
-       by me in commit 9d61b3d1, 1 October.
-
-2021-10-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Handle degenerate input quietly.
-
-       * tmac/an.tmac (TH): Define new register `an-TH-was-called`.
-       (an-end): Return immediately if that register is not defined;
-       to format the default page footer we must have the information
-       declared in a valid `TH` call.  (`TH` also initializes the type
-       size and baseline spacing registers we use to prepare the page
-       footer environment.)  If the register _is_ defined, remove it
-       just prior to the end of this macro definition, in preparation
-       for next page to be rendered.
-
-       * tmac/tests/an_handle-degenerate-input-quietly.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/61402>, a regression from
-       groff 1.22.4 (problem introduced by me in the course of many
-       changes to trap management and header/footer handling to work
-       nicely in batch rendering with -mandoc and mdoc(7) documents).
-
-2021-10-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Warn if `TE` table macro called but `TW` register (set by
-       tbl(1)) undefined.  Arrange it so that we warn only once per
-       man(7) document, not per table region.
-
-       * tmac/an.tmac (TH): Remove `TW` register when processing new
-       document and clear `an-was-tbl-failure-reported` register.
-       (TE): Check `TW` and `an-was-tbl-failure-reported` registers; if
-       the former is undefined and the latter false, emit the message
-       and set `an-was-tbl-failure-reported`.
-
-       Addresses part of <https://savannah.gnu.org/bugs/?61379>.
-       Thanks to Bjarni Ingi Gislason for the suggestion.
-
-2021-10-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Improve portability.
-
-       * src/devices/grotty/tests/osc8_works.sh: Fix typo in test.
-       Multiple regex quantifiers after an atom were not flagged with a
-       diagnostic by GNU grep 3.3, but were by BSD grep 2.5.1-FreeBSD.
-
-       * src/roff/groff/tests/smoke-test_html_device.sh: Stop trying to
-       set $LC_CTYPE to "C.UTF-8"; some systems don't support this
-       expediency.  Skip the test if the tester hasn't configured the
-       environment adequately.
-
-       * tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Fix
-       portability problems exposed by FreeBSD sed (which version is
-       unclear).  {1} Use POSIX BREs, dropping use of '+' quantifier.
-       {2} Add semicolons to terminate commands before braces on the
-       same line.  Simplify surrounding test structure.
-       * tmac/tests/e_footnotes-work-with-columns.sh: Fix same two sed
-       problems.
-       * tmac/tests/andoc_flush-between-packages.sh:
-       * tmac/tests/doc_accept-mixed-case-section-headings.sh:
-       * tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh: Fix same
-       sed semicolon problem.
-
-       * src/roff/groff/tests/on_latin1_device_oq_is_0x27.sh: Rewrite
-       test to stop using a here document (containing an unpaired
-       single quote) inside a command substitution, which is broken in
-       GNU Bash 3.2 and some other versions.  Instead construct the
-       input with printf(1).  Also gets rid of a Bashism (process
-       substitution) that Ingo pointed out years ago.
-       * src/utils/grog/tests/recognize-perl-pod.sh: Same problem,
-       different solution.  The Perl POD output is far too large to
-       construct programmatically, so move it into an external file...
-       * src/utils/grog/tests/foo.man: ...here.
-       * src/utils/grog/grog.am (EXTRA_DIST): Ship new test artifact.
-
-2021-10-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Make sed-based insertion of `lf` requests more
-       portable: a dance is required to embed a literal newline inside
-       a sed expression inside a shell command executed as part of a
-       Make target rule.  We assume that neither the POSIX shell $''
-       operator nor a working printf(1) is available.
-       (DOC_GROFF): Define a shell variable containing a literal
-       newline, evading make(1) and echo(1)'s valiant attempts to
-       consume it.
-       (doc/pic.html, doc/webpage.html): Repeat trick, slightly
-       modified since the dependency needs to be manually identified.
-
-       Solution adapted from the GNU Autoconf manual, "Newlines in Make
-       Rules".
-
-       Fixes <https://savannah.gnu.org/bugs/?61265>.  Thanks to John
-       Gardner for the report.
-
-2021-10-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (TH): Stop populating `an-extra3` (the default
-       center header) if the section argument is "3p".  "3p" does not
-       always mean a Perl-related man page; Debian- and Arch
-       Linux-based systems[1][2] (at least) have long used a "3perl"
-       suffix, while OpenBSD appears to still use "3p" for Perl[3],
-       which is also used by the POSIX man page distribution[4].
-       Fortunately, Perl and POSIX are reliable at providing a fifth
-       argument to `TH` anyway, so our fallback is as unnecessary as it
-       is non-impartial.
-       * tmac/groff_man.7.man.in (Document structure macros) <TH>:
-       De-document the above behavior.
-
-       [1] https://manpages.debian.org/bullseye/perl-doc/\
-       Pod::Man.3perl.en.html
-       [2] https://man.archlinux.org/man/Pod::Man.3perl
-       [3] https://man.openbsd.org/man3p/Pod::Man.3p
-       [4] https://man7.org/linux/man-pages/man3/system.3p.html
-
-2021-10-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Abbreviate the inside footer if necessary.
-
-       * tmac/an.tmac (an-prepare-inner-footer): Prevent the inside
-       footer from overrunning the center footer.
-       (BT): Use new string `an-ifoot` instead of `an-extra2` in page
-       footers.
-
-       Fixes <https://savannah.gnu.org/bugs/?61386>.
-
-2021-10-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #61386.
-
-       * tmac/tests/an_inner-footer-abbreviation-works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-10-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff_char.7.man (Description, Special character escape
-       forms): Document the `\C` escape sequence.  Fix error: \[a] is
-       _not_ "translated to \a, the uninterpreted leader escape
-       sequence," but requests a glyph _named_ '\a' internally--it
-       appears thus in diagnostic messages and, importantly, in the
-       font description files defining special character glyph names.
-
-2021-10-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac: Refactor to reduce repetition.
-       (an-break-paragraph): New macro handles paragraph-breaking tasks
-       previously duplicated.
-       (SH, SS, P, TP, IP, HP): Call it rather than issuing its
-       constituent requests.
-
-2021-10-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (TP): Reset type size, vertical spacing, and font
-       to defaults before setting the new paragraph.
-
-       Fixes <https://savannah.gnu.org/bugs/?61380>.
-
-2021-10-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Auto-increment): Fix error; the `\R` escape
-       sequence does _not_ support an auto-incrementation amount.
-       * man/groff_out.5.man (Command reference/Simple commands): Fix
-       erroneous claim: 'N' is not a GNU roff extension; it appears on
-       page 27 of CSTR#54 (1992).
-
-2021-10-24  Keith Marshall  <keith.d.marshall@ntlworld.com>
-
-       [ms]: Provide global default XH and XN implementations.
-
-       cf. <https://savannah.gnu.org/bugs/?58946#comment13>
-
-       * tmac/s.tmac (XH-INIT, XN-INIT, XH-UPDATE-TOC)
-       (XH, XN, XH-REPLACEMENT, XN-REPLACEMENT): Implement them, and...
-       * tmac/groff_ms.7.man: ...document them.
-
-2021-10-24  Keith Marshall  <keith.d.marshall@ntlworld.com>
-
-       [ms]: Fix misleading NH macro indentation.
-
-       * tmac/s.tmac (@NH) [.T is html]: .if statement should exhibit
-       same indentation as preceding .DEVTAG-NH statement, but is
-       overindented; fix it.
-
-2021-10-23  Keith Marshall  <keith.d.marshall@ntlworld.com>
-
-       [ms]: Defend against uncontrolled page trap recursion.
-
-       * tmac/s.tmac (pg@top) [HM+FM+.V>.p]: Diagnose insufficient page
-       length, and abort; cf. <https://savannah.gnu.org/bugs/?61294>
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [groff]: Fix code style nits.
-
-       * src/roff/groff/groff.cpp (main, help): Use standard C library
-       preprocessor symbols `EXIT_SUCCESS` and `EXIT_FAILURE` instead
-       of 0 and 1 literals, respectively.  See commit fa4c27e9, 7
-       September.
-       (main): Replace `assert(0)` with a communicative predicate.
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/tty.cpp (tty_printer::special_link):
-       Eliminate casts by retyping `uri` and `pair` to pointers to
-       `const char`s.
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am: Build more quietly.
-       (tmac/stamp-wrap): Prefix all rule commands with `$(AM_V_at)`;
-       since this target is a stamp file instead of a useful artifact
-       to be distributed, make its creation completely silent by
-       default.
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/troff.am: Build more robustly.
-       (src/roff/troff/majorminor.cpp): Drop progress-reporting `echo`
-       in favor of prefixing final rule command with `$(AM_V_GEN)`.
-       Prefix earlier rule commands with `$(AM_V_at)`.  Use `printf`
-       instead of `echo` to build the file, and create a temporary file
-       at first so that we don't race with the compiler on parallelized
-       builds.
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/eqn.am (neqn): Simplify: drop removal of
-       target prior to overwriting it; any system we can build groff on
-       should have a shell that implements the clobbering semantics of
-       the POSIX shell '>' operator.  (If this isn't true, we have
-       _many_ other target rules in our build to which we must add
-       prefatory `$(RM)`s, or I miss my guess.)
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/libgroff.am: Build more quietly and
-       robustly.
-       (src/libs/libgroff/version.cpp): Drop progress-reporting `echo`
-       in favor of prefixing final rule command with `$(AM_V_GEN)`.
-       Prefix earlier rule commands with `$(AM_V_at)`.  Use `printf`
-       instead of `echo` to build the file, and create a temporary file
-       at first so that we don't race with the compiler on parallelized
-       builds.  Drop nilpotent sed transformation; this looks like a
-       relic of past times when we'd drop a trailing ".0" from the
-       version number stored in the C symbol `Version_string`.
-       (charset.alias, ref-del.sed, ref-add.sed): Prefix rule command
-       with `$(AM_V_GEN)`.
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/xditview/xditview.am: Build more quietly.
-       (src/devices/xditview/GXditview-ad.h): Drop progress-reporting
-       `echo` in favor of prefixing rule command with `$(AM_V_GEN)`.
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/devpdf.am: Build more quietly.
-       (font/devpdf/enc/text.enc, font/devpdf/map/symbolmap,
-       $(DEVPDFFONTMAP_1)): Prefix all rule commands with
-       `$(AM_V_at)`; since these are all `mkdir`s and `cp`s, I reason
-       that little can go wrong with them that won't be disclosed by
-       these tools' own diagnostic messages, so they are insignificant
-       from a perspective of build progress.
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Build more quietly.
-       (doc/examples.stamp): Prefix all rule commands with
-       `$(AM_V_at)`; since this target is a stamp file instead of
-       a useful artifact to be distributed, make its creation
-       completely silent by default.
-       (doc/groff.info, .texi.txt): Prefix directory creation with
-       `$(AM_V_at)` and `makeinfo` command with `$(AM_V_GEN)`.
-       (.texi.dvi, .texi.pdf): Prefix directory creation with
-       `$(AM_V_at)` and `makeinfo` command with `$(AM_V_GEN)`.  Send
-       diagnostic message to standard error if `texi2dvi` is
-       unavailable.
-       (.texi.html): Prefix directory creation with
-       `$(AM_V_at)`.  Two HTML versions are produced, in split and
-       unsplit versions; prefix one `makeinfo` command with
-       `$(AM_V_GEN)` and the other with `$(AM_V_at)` so that only one
-       message is produced.
-       (gnu.eps): Drop useless/noisy `echo` command.  Prefix copy
-       operation with `$(AM_V_at)`.  Send diagnostic messages to
-       standard error if there are problems with the Netpbm tools.
-
-       (MOSTLYCLEANFILES): The `mostlyclean` target was leaving a file,
-       `groff.info-3`, behind in the build tree.  At some point our
-       Texinfo manual grew beyond earlier expectations.  Use a glob
-       `[0-9]` instead (giving a hostage to fortune that `makeinfo`
-       will never split our manual into more than nine chunks).
-
-2021-10-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * arch/misc/misc.am:
-       (arch_shdeps_sh): Pull file name into a new variable.
-       (EXTRA_DIST, shdeps.sed): Use it.
-       (shdeps.sed): Build more quietly; prefix with `$(AM_GEN_V)`.
-
-2021-10-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [nroff]: Support groff's -R flag to run refer(1).
-
-       There's no reason not to support calling `refer` with nroff-mode
-       documents; typographically, it's less demanding than tbl(1).
-       GNU troff(1) supports an incompatible `-R` flag to suppress the
-       reading of troffrc{,-end} files, but this is likely not the `-R`
-       that users will want--it is most useful for troubleshooting
-       troff, and nroff already unconditionally loads a macro file
-       {tty-char.tmac}.
-
-       * src/roff/nroff/nroff.sh: Do it.
-
-       * src/roff/nroff/nroff.1.man:
-       * NEWS: Document it.
-
-2021-10-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am (tmac/groff_man.7.man)
-       (tmac/groff_man_style.7.man): Be quieter by default; use
-       $(AM_V_GEN) more consistently with the rest of the build.
-
-2021-10-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_error): Format diagnostic
-       messages in closer alignment with GNU Coding Standards: don't
-       introduce a space between the program name and the input file
-       name.
-
-       * src/roff/groff/tests/string_case_xform_errors.sh: Update
-       expected output.
-
-2021-10-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (distribute_space): Revert an
-       `assert()` I added in commit b93eacd8d7 (5 September); we can
-       indeed reach this code with a negative amount of desired space,
-       and in fact the "show hyphenation points" trick
-       <https://froude.eu/groff/examples/hyphenation-points.html>
-       relies upon it.  Add explanatory comment.
-
-       Fixes <https://savannah.gnu.org/bugs/?61348>.
-
-2021-10-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * test-groff.in: Add support for sboxes.tmac.
-
-2021-10-11  Paul Eggert <eggert@cs.ucla.edu>
-
-       Include <config.h> before any standard headers.
-
-       Gnulib requires that files that might use Gnulib features (which
-       pretty much means every C or C++ source file) must include
-       <config.h> first.  Arrange for that.  This will be needed once
-       Groff updates to the latest Gnulib; see Bjarni Ingi Gislason's
-       problem report in:
-       <https://lists.gnu.org/r/bug-gnulib/2021-10/msg00008.html>
-
-       The only exception I can see is src/utils/addftinfo/guess.cpp,
-       which does not include any standard include file either directly
-       or indirectly, and so need not include <config.h>.
-
-       * src/devices/xditview/Dvi.c:
-       * src/devices/xditview/font.c:
-       * src/devices/xditview/lex.c:
-       * src/devices/xditview/page.c:
-       * src/devices/xditview/parse.c:
-       * src/libs/libbib/map.c:
-       * src/libs/libgroff/change_lf.cpp:
-       * src/libs/libgroff/cmap.cpp:
-       * src/libs/libgroff/cset.cpp:
-       * src/libs/libgroff/fmod.c:
-       * src/libs/libgroff/getcwd.c:
-       * src/libs/libgroff/lf.cpp:
-       * src/libs/libgroff/ptable.cpp:
-       * src/libs/libgroff/quotearg.c:
-       * src/libs/libxutil/DviChar.c:
-       * src/libs/libxutil/XFontName.c:
-       * src/libs/libxutil/xmalloc.c:
-       * src/utils/indxbib/signal.c: Do it.
-
-       [Fixes <https://savannah.gnu.org/bugs/?61315>. --GBR]
-
-2021-10-10  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Handle pdfs > v1.4 loaded by \X'pdf: pdfpic'.
-
-       * src/devices/gropdf/gropdf.pl: Improve loading of pdfs above
-       version 1.4, i.e. handle compressed nodes in /ObjStm. Also
-       improve code in \X'pdf: import'.
-
-2021-10-10  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Add new background boxes to gropdf.
-
-       * src/devices/gropdf/gropdf.pl: New \X'pdf: background' command.
-       * tmac/pdf.tmac: Covenience command .pdfbackground added.
-       * contrib/sboxes/: Files which demonstrate use of background
-       boxes using -ms macros.
-
-2021-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Fix portability problems in 2 tests.
-
-       * src/roff/groff/tests/break_zero-length_output_line_sanely.sh:
-       * tmac/tests/s_PN-works.sh: Migrate from `echo` to `printf` for
-       test inputs containing backslashes to be interpreted literally.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?61302>.  Thanks to
-       Deri James for identifying the problem.
-
-2021-10-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grotty]: Slightly refactor.
-
-       * src/devices/grotty/tty.cpp: Boolify.  Demote numerous
-       variables (and one return type) from `int` to `bool`, use
-       Boolean instead of integer literals with them, and give the
-       variables names resembling logical predicates.
-        - horizontal_tab_flag -> want_horizontal_tabs
-        - form_feed_flag -> want_form_feeds
-        - bold_flag_option -> want_emboldening_by_overstriking
-        - bold_flag -> do_bold
-        - underline_flag_option -> want_italics_by_underlining
-        - underline_flag -> do_underline
-        - overstrike_flag -> want_glyph_composition_by_overstriking
-        - draw_flag -> allow_drawing_commands
-        - italic_flag_option -> want_sgr_italics
-        - italic_flag -> do_sgr_italics
-        - reverse_flag_option -> want_reverse_video_for_italics
-        - reverse_flag -> do_reverse_video
-        - old_drawing_scheme -> use_overstriking_drawing_scheme
-       (class tty_printer:printer): Similarly.
-        - is_underline -> is_underlining
-        - is_bold -> is_boldfacing
-        - cu_flag -> is_continuously_underlining
-       (tty_printer::tty_color): Demote return type as above.  Invert
-       its sense; rename `unknown_color` to `is_known_color`.
-       (tty_printer::color_to_idx): Invert sense of test at
-       `tty_color()` call site.
-
-2021-10-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Finish documenting new `TC-MARGIN` register and
-       `TC-LEADER` special character.
-
-       Fixes <https://savannah.gnu.org/bugs/?61157>.
-
-2021-10-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grotty]: Slightly refactor.
-
-       * src/devices/grotty/tty.cpp (tty_printer::special_link): Use
-       consistent loop styles and drop unnecessary arithmetic.
-
-2021-10-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Fix oversight and improve `MR` test.
-
-       * tmac/an-ext.tmac (initialization): Enable `mY` register to
-       indicate use of grotty(1) (and therefore OSC 8 support) if the
-       "ascii", "cp1047", or "latin1" output devices are used, not just
-       "utf8".
-
-       * tmac/tests/an_MR-works.sh: Drop copy-and-paste cruft from a
-       different test.  Update expected output and check for the
-       presence of "link" device control subcommands, not just correct
-       font selections.
-
-2021-10-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add `MR` macro for man page cross references.
-
-       * tmac/an.tmac (an-prepare-page-title): After a possibly
-       abbreviated man page title is determined, redefine `an-pageref`
-       to set the title portion in the font stored in the `MF` string
-       and bracket it with italic corrections if that font is thought
-       to be oblique.
-       (MR): Add macro to format the text of a man page cross
-       reference, and hyperlink it on HTML and terminal output devices
-       if permitted by the `U` register.
-       (initialization): Define `MF` string as `I` if not already set.
-       Define `an-lic` and `an-ic` strings as either empty or as
-       containing italic corrections.
-
-       * tmac/an-ext.tmac (MR): If the formatter is not GNU troff,
-       define macro to format the text of a man page cross reference.
-
-       * tmac/groff_man.7.man.in: Document it.
-       (Description): Add macro to summary table.
-       (Description/Hyperlink macros): Document new feature.  Note
-       origin in Plan 9 troff.  [style] Add examples of use.
-       (Description/Font style macros): Drop man page cross references
-       from list of items whose typeface conventions are disputed,
-       since we have a semantic macro now and a configurable means of
-       resolving the problem.
-       (History): Add `MR` item.
-       (Options) <MF>: Document new string.
-       (Files) <an-ext.tmac>: Revise discussion to accommodate `MR`.
-       (Authors): Add myself an author of extension macros.
-
-       * tmac/tests/an_MR-works.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       * NEWS: Add item.
-
-2021-10-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (SH, SS): Invoke `ne` request _before_ performing
-       font remapping: any page-breaking decision will be taken before
-       the remapping happens, and so won't be in effect across a page
-       boundary, undesirably impacting header and footer text.
-
-       Fixes <https://savannah.gnu.org/bugs/?61279>.
-
-2021-10-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Regression-test Savannah #61279.
-
-       * tmac/tests/an_font-remapping-does-not-affect-titles.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-10-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (an-abbreviate-title): Rename to...
-       (an-prepare-page-title): ...this.
-
-2021-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Correct erroneous claim: the ".NH S" extension to ms(7)
-       comes from 4.2BSD, not GNU.
-
-2021-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/ms.ms (Creating a table of contents): Sync with recent
-       additions to groff_ms(7), expand, and heavily revise.
-
-2021-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [andoc,man,mdoc]: Fix Savannah #61266.  Resolve problems in
-       batch rendering of man pages to PDF arising from entanglement
-       of end-of-input traps, page location traps, continuous rendering
-       mode, and andoc's reloading of the (m)an and (m)doc packages.
-
-       * tmac/andoc.tmac (reload-doc, reload-man): Remove end-of-input
-       traps alongside others.
-
-       * tmac/an.tmac (an-end): Only perform flush and "manual" page
-       footer placement if in continuous rendering mode, since this
-       macro is not only called by a trap placed only in continuous
-       rendering mode, but also by andoc when changing macro packages.
-       Unconditionally remove the `an-header` trap since the next
-       document might be using a different macro package.
-
-       * tmac/mdoc/doc-common: In initialization, set flag indicating
-       that manual header placement will be required.
-       (Dt): Call `doc-setup-header` (which sets up several types of
-       trap) unconditionally, and break the page if the vertical
-       drawing position is anywhere but at the top.
-       (Os): If the package has just been initialized, call
-       `doc-header` to force the page header to be written.
-       (doc-end-macro): Remove `doc-header` trap since the next
-       document might be using a different macro package.  Break the
-       page.  Set flag indicating that manual header placement will be
-       required for the next document.
-
-       * tmac/mdoc/doc-ditroff (doc-setup-header): Only set page
-       location traps for the header and footer if not continuously
-       rendering.
-       * tmac/mdoc/doc-nroff (doc-setup-header): Stop calling
-       `doc-header` here if continuously rendering.  Emit an
-       unconditional break.  Except for the location of the footer
-       trap, the `doc-setup-header` implementations are now identical.
-
-       Refactoring is needed: some macros and registers have misleading
-       names, there is some code duplication in mdoc, and some of the
-       trap management problems are solved in slightly different ways
-       in man(7) and mdoc(7), perhaps unnecessarily.  We also need some
-       test scripts to protect us from regressions.  But this fixes the
-       rendering problems.
-
-       Fixes <https://savannah.gnu.org/bugs/?61266>.
-
-2021-10-02  Keith Marshall  <keith.d.marshall@ntlworld.com>
-
-       Correct manpage typo/inconsistency.
-
-       * tmac/groff_ms.7.man (TC_LEADER, TC_MARGIN): Correct; should
-       be...
-       (TC\-LEADER, TC\-MARGIN): ...respectively, for consistency
-       with...
-       * tmac/s.tmac (TC-LEADER, TC-MARGIN): ...these.
-
-2021-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (encode_char): Update diagnostic
-       messages to not presume the identity of the escape character;
-       continues 9be3f8e3 (4 June).
-
-2021-10-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/tty.cpp (tty_printer:special_link): Tighten
-       code slightly by taking advantage of preprocessor string literal
-       concatenation.
-
-2021-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Fix `U` enablement override so it actually works the way
-       I had in mind.
-       - The package proper enables it by default, but
-       - the sample site configuration file switches it off, on the
-         assumption that distributors and users will know better than
-         we do when they get a capable pager in place, and
-       - a register setting at the command line (or otherwise prior to
-         the loading of the macro package) is dispositive.
-
-       * tmac/an-ext.tmac: Rename URI output device capability register
-       from `U` to `mU`.
-       (UR, UE, MT, ME): Test both `U` and `mU` before handling
-       hyperlinks specially.
-       * tmac/an.tmac: If `man.local` did not initialize `U`, switch it
-       on.  The hope is that we can drop the stuff in `man.local`
-       completely at some point.
-       * tman/man.local: Only initialize `U` if it is not already
-       defined.
-
-2021-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Use OSC 8 hyperlinks.
-
-       * tmac/an-ext.tmac: Add registers `mY` (output driver is
-       "grotty") and `U` (generate hyperlinks).  `U` is intended to
-       apply to hyperlinking support in general, not just grotty's OSC
-       8 feature.  If the output driver is either grohtml or grotty,
-       make `U` true (`man.local` is read subsequently and can override
-       it).
-       (UR, MT): Conditionalize diversion production on hyperlink
-       support, not grohtml use per se.
-       (UE, ME): Generate device control commands for `tty` device to
-       emit hyperlinks.
-
-       * tmac/groff_man.7.man.in (Options): Document -rU.
-       (Files) [style]: Add example of `U` register enablement.
-
-       * tmac/man.local: Disable `U` register by default, except on the
-       `html` device.
-
-       * NEWS: Add item.
-
-2021-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grotty]: Add OSC 8 hyperlink support.
-
-       * src/devices/grotty/tty.cpp: Do it.  Define `OSC` (Operating
-       System Command) and `ST` (String Terminator) preprocessor
-       symbols for these ECMA-48 (ISO 6429) character sequences.
-       (tty_printer::simple_add_char): Add stripped-down alternative to
-       `add_char()` member function for cases where we want to use many
-       defaults because we're writing a terminal escape sequence, not
-       rendering a glyph.  (A function like `add_char()` that takes 8
-       arguments of varying types is a code smell--phew!)
-       (tty_printer::special): Call `special_link()` member function if
-       the device control command is `link`.
-       (tty_printer::special_link): Add new member function to generate
-       OSC 8 hyperlinks.
-
-       * src/devices/grotty/grotty.1.man: Document it.  Observe in
-       multiple places that disablement of SGR escape sequences
-       disables OSC 8 too.
-
-       * src/devices/grotty/tests/osc8_works.sh: Test it.
-       * src/devices/grotty/grotty.am (TESTS, grotty_TESTS): Run test.
-       (EXTRA_DIST): Ship test.
-
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?60666>.  Thanks to Steffen
-       Nurpmeso for supplying a proof-of-concept.  (I went with my own
-       implementation, though, so blame me if it breaks.)
-
-2021-10-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Convert special character glyphs corresponding to
-       Unicode Basic Latin ("ASCII") code points to those code points
-       when they occur in device escapes.  (They should be correct for
-       IBM code page 1047 as well, but this is untested.)  This is
-       necessary for encoding URLs in device control commands.  Special
-       character identifiers are presumed to be the defaults documented
-       in groff_char(7); this is a design gap that we should consider
-       addressing.  (We don't have a way to ask "is this the special
-       character corresponding to Unicode basic Latin code point X?")
-
-       * src/roff/troff/input.cpp (encode_char): Do it.
-
-2021-09-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man, mdoc]: Draw line after each page more consistently in
-       continuous rendering mode.
-
-       * tmac/an.tmac (an-bp): Move responsibility for line-drawing
-       after each document from here...
-       (an-end): ...to here.  Refactor; drop
-       `an-do-draw-line-after-document` register in favor of testing
-       `\n[.F]` for nullity; if it is not null, then another document
-       is due to be processed (in fact, `.F` already contains its file
-       name), and we need to draw a separating line.  If it is null, we
-       have reached the end of input and none is necessary.
-
-       * tmac/mdoc/doc-ditroff.tmac (doc-setup-page-layout):
-       * tmac/mdoc/doc-nroff.tmac (doc-setup-page-layout): Save
-       configured line length in new register `doc-line-length`.
-       * tmac/mdoc/doc-common.tmac (doc-end-macro): Port the above
-       man(7) feature to mdoc(7); draw a line of this length after each
-       document if continuously rendering.
-
-2021-10-01  Keith Marshall  <keith.d.marshall@ntlworld.com>
-
-       [ms]: Update footnote handling documentation.
-
-       * tmac/groff_ms.7.man: Make some linguistic style adjustments.
-       (FP): Document it; see <https://savannah.gnu.org/bugs/?61022>.
-       (FS-MARK): Likewise, document this recently added feature.
-
-2021-10-01  Keith Marshall  <keith.d.marshall@ntlworld.com>
-
-       [ms]: Support user-defined TOC leader style.
-
-       * tmac/s.tmac (toc*leader-char): Rename it as...
-       (TC-LEADER): ...this; within PX, leave it unchanged, if
-       predefined.
-       (TC-MARGIN): New numeric register; if predefined, leave it
-       unchanged, otherwise define as \w'000'; use it instead of
-       hard-wired definition, within PX; see
-       <https://savannah.gnu.org/bugs/?61157>.
-
-       * tmac/groff_ms.7.man (TC-LEADER, TC-MARGIN): Document them.
-
-2021-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pic]: Update input file name correctly.
-
-       * src/preproc/pic/troff.cpp (troff_output::set_location): Copy
-       the inbound file name argument with `strdup()` and store pointer
-       to this copy in `last_filename` instead of aliasing argument.
-       (troff_output::~troff_output): `free()` the memory allocated by
-       `strdup()` in destructor.
-
-       Fixes <https://savannah.gnu.org/bugs/?61206>.  Pointer
-       assignment instead of a string copy was being performed, which
-       means that after its initial assignment, `last_filename` always
-       shared its value ultimately with the `current_filename` pointer
-       {a libgroff symbol}, so `strcmp()` was always being performed on
-       identical pointers.  Problem appears to date back 30+ years, to
-       the dawn of our repo history.
-
-2021-09-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devlj4/S: Make font name consistent with file name.
-
-2021-09-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/font.cpp (font::load): Throw error if a font
-       description file is missing a `spacewidth` directive, since it
-       is now re-documented as mandatory.  Atypically, we don't return
-       false in this scenario; instead we proceed with the existing
-       logic to compute a space width for the font based on typical
-       practices for Western alphabetic fonts (see, e.g.,
-       <https://type.today/en/journal/spaces>.
-
-       * font/devdvi/EX:
-       * font/devdvi/MI:
-       * font/devdvi/S:
-       * font/devdvi/SA:
-       * font/devps/EURO: Add `spacewidth` directive to font
-       description files we ship that were missing it.  We use the same
-       values that libgroff would have computed, so there should be no
-       visible difference.
-
-2021-09-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am: Mark `$(TEST_SUITE_LOG)` as `.PRECIOUS`.  This
-       prevents the test suite log from being deleted if there are any
-       failures.
-
-       Fixes <https://savannah.gnu.org/bugs/?61213>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl (do_line): Move first-macro-call test
-       for `TH` to a more appropriate location.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Refactor to make it easier to generalize a per-package
-       scoring mechanism.
-
-       * src/utils/grog/grog.pl: Convert `inferred_main_package` from
-       scalar to list.  Add scalar `selected_main_package` to store a
-       "winner" from the list of main packages inferred.
-       (push_main_package): Add subroutine to populate
-       `inferred_main_package`.
-       (do_line, infer_man_or_ms_package): Update to use
-       `push_main_package`.
-       (construct_command): Rewrite to select a main package from the
-       list `inferred_main_package`, taking user-supplied arguments
-       into account as an overriding factor.  Drop now-unused `msupp`
-       list.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp (main): If the `-I` option is given,
-       run the grn preprocessor and pass it an `-M` option with `-I`'s
-       argument.
-
-       * NEWS:
-       * src/roff/groff/groff.1.man (Options): Document it.  Also
-       document that `-I` options are passed to the output driver.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl (do_line): Don't strip groff-style
-       comments \# if AT&T compatibility mode is enabled.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Perform more font description file validation.  Our
-       documentation said that the `name` directive was mandatory but
-       we didn't actually enforce this.  Also be more specific in our
-       complaints of ill-formedness.
-
-       * src/libs/libgroff/font.cpp (font::load): Add local Boolean
-       variable `saw_name_directive`.  Rename `had_charset` to
-       `saw_charset_directive` for symmetry.  Emit distinct diagnostics
-       for `spacewidth` and `slant` directives having a missing,
-       non-numeric, or out-of-range argument.  Emit diagnostic if the
-       file lacks a `name` directive.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Slightly refactor.
-
-       * src/libs/libgroff/font.cpp (struct text_file): Rename member
-       variable `size` to `linebufsize` for clarity (it's certainly not
-       the size of the text file).
-       (text_file::text_file): Initialize `linebufsize` in constructor.
-       (text_file::next_line): Allocate new `buf` using `linebufsize`
-       instead of magic number (which was also stored to `size`, making
-       it only semi-magic, I guess).  Rename local variable `i` to
-       `length` since it is in fact the length (in `char`s) of the
-       string stored in `buf`.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Revisit fix for Savannah #61173.
-
-       * src/libs/libgroff/font.cpp (text_file::text_file): Restore
-       setting of `lineno` member variable to `0` in constructor
-       initializer list, but...
-       (text_file::next_line): ...unconditionally increment it every
-       time through this member function's outer loop.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Align diagnostic message format with libgroff.
-
-       * src/roff/troff/input.cpp (fatal_with_file_and_line): Report
-       the program name if one is defined.
-       (fatal_with_file_and_line, error_with_file_and_line,
-       debug_with_file_and_line): Report the line number of the input
-       file only if it is positive, so that other values can be used
-       for "whole file" complaints.  See commit cd0457b6, 17 September.
-
-2021-09-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Drop redundant diagnostic.
-
-       * src/libs/libgroff/font.cpp (font::load): Drop redundant
-       diagnostic; a missing `charset` directive is already checked for
-       later, circa line 998.
-
-2021-09-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Fix code style nits.
-
-       * src/libs/libgroff/font.cpp (font::font): Use initializer list
-       as much as possible in constructor.
-       (font::unit_scale, font::get_width, font::get_height,
-       font::get_depth, font::get_italic_correction,
-       font::get_left_italic_correction,
-       font::get_subscript_correction, font::get_character_type,
-       font::get_code, font::get_special_device_encoding): These member
-       functions rely on the font being either indexed or associated
-       with an output device that uses the `unicode` directive in its
-       `DESC` file.  The compiler doesn't know this, so annotate the
-       `abort()` calls that conclude them.  Add an `assert()` before
-       each one to more usefully describe the violated invariant in the
-       event this unreachable code is somehow reached.
-       (font::get_width): Annotate special meaning of zero zoom factor.
-
-2021-09-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/include/font.h (UNDEFINED_GLYPH): Use idiomatic C++98 null
-       pointer constant.
-
-2021-09-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Fix compiler warning and dead store.
-
-       * src/devices/grohtml/post-html.cpp (html_printer::special):
-       Update call of `font::load_font()` to stop passing obsolete
-       parameter (deleted by me in 2dff87d3, 17 September).  The value
-       stored to the parameter by that function was never read anyway,
-       so also get rid of the variable that contained it.
-
-       Fixes <https://savannah.gnu.org/bugs/?61187>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2021-09-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Slightly refactor.
-
-       * src/include/font.h (font::scan_papersize): Demote return type
-       from `int` to `bool`.
-       * src/libs/libgroff/font.cpp (font::scan_papersize): As above.
-       Use Boolean instead of integer literals.  Also rename `FILE`
-       stream pointer from `f` to `fp` and perform an explicit
-       comparison against the idiomatic C++98 null pointer constant.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff, troff]: Slightly refactor device and font description
-       file loading.  Remove dead code.
-
-       * src/include/font.h (font::load_font): Drop second parameter.
-       It was never used for its intended purpose.
-       (load): Drop first parameter; likewise.
-       * src/libs/libgroff/font.cpp (font::load, load): As above.
-
-       * src/libs/libgroff/font.cpp (struct text_file): Rename
-       `skip_comments` to `recognize_comments`.  Demote that and
-       `silent` from `int` to `bool`.
-       (text_file::text_file): Use Boolean rather than integer literals
-       in constructor.
-       (text_file::next_line, font::load): Apply above renaming.
-
-       * src/libs/libgroff/font.cpp (font::load): Rename parameter from
-       `head_only` to `load_header_only` to be more communicative.
-       Drop test of font description file name being `DESC`; this code
-       was not being reached.  Stop throwing errors from this function
-       on failure to open the file; the caller will handle this when it
-       sees our false return value.  Rename local variable `command` to
-       `directive` for alignment with our documentation.  Replace "I
-       dont think this should happen" test and comment with `assert()`.
-       (struct table): Rename member from `command` to
-       `numeric_directive` to indicate its specificity, tracking only a
-       subset of valid `DESC` file directives.
-
-       * src/libs/libgroff/font.cpp (font::load, font::load_desc):
-       Remove redundant assignments to the member variable formerly
-       known as `skip_comments`.
-
-       * src/libs/libgroff/font.cpp (font::load_desc): Rename local
-       variable `directive_found` to `numeric_directive_found` to
-       clarify logic.
-
-       * src/roff/troff/node.cpp (mount_font_no_translate): Simplify
-       call of `font::load_font`.  The `not_found` in-out parameter
-       which was so agonizingly passed up through layers of library
-       calls was never actually read.  Drop code that has been `#if
-       0`-ed out since 1993.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/font.cpp (font::load_desc): Clear line
-       number before emitting whole-file validity diagnostics.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/font.cpp (font::load_desc): Emit correct
-       line numbers when complaining of invalid `sizescale`, `hor`, or
-       `vert` values in device description files.
-
-       Fixes <https://savannah.gnu.org/bugs/?61174>.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Increase validation of device and font description
-       files.
-
-       * src/libs/libgroff/font.cpp (font::load): Validate the syntax
-       and value of the `name` directive.
-       (font::load_desc): Issue distinct diagnostics for a `fonts`
-       directive that is missing arguments and for a first argument
-       that can't be interpreted as a valid number.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Make error reporting more flexible.
-
-       * src/libs/libgroff/error.cpp (do_error_with_file_and_line):
-       Interpret a nonpositive line number specially: treat the
-       diagnostic as applying to the entire file, and omit the line
-       number.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Add information to diagnostics.
-
-       * src/libs/libgroff/font.cpp (font::load): Drop unused argument
-       from `error()` call.
-       (font::load_desc): In another, add name of numeric directive
-       that is given an unparsable number.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Tweak code style.
-
-       * src/libs/libgroff/font.cpp (trim_args, font::load)
-       (font::load_desc): Compare pointer explicitly to null pointer
-       literal `0` instead of using logical complementation.
-       (font::load, font::load_desc): Swap order of null pointer
-       equality comparisons when a typo or thinko could lead to lvalue
-       assignment.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Use idiomatic C++98 null pointer constant.
-
-       * src/libs/libgroff/font.cpp (text_file::error)
-       (glyph_to_unicode, font::get_special_device_encoding)
-       (font::load):
-       * src/libs/libgroff/fontfile.cpp (font::image_generator):
-       * src/libs/libgroff/nametoindex.cpp (class charinfo)
-       (character_indexer::named_char_glyph)
-       (character_indexer::numbered_char_glyph):
-       * src/libs/libgroff/string.cpp (string::clear):
-       * src/libs/libgroff/tmpfile.cpp (temp_init::temp_init):
-       * src/libs/libgroff/tmpname.cpp (gen_tempname): Use `0` literal
-       instead of `NULL` to represent a null pointer; this was
-       idiomatic in C++98 and is mostly the practice elsewhere in
-       groff.  Also swap order of null pointer equality comparisons
-       when a typo or thinko could lead to lvalue assignment.
-
-       * src/roff/troff/input.cpp (input_stack::diversion_state)
-       (input_stack::get_diversion_state, charinfo::contains)
-       (glyph_to_name): Similar.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Slightly refactor.
-
-       * src/libs/libgroff/font.cpp (font::load): Use same loop style
-       as `font::load_desc()`.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Fix off-by-one error in font and device description
-       file reader diagnostics.
-
-       * src/libs/libgroff/font.cpp (text_file::text_file): All text
-       files begin with line 1, not line 0.
-
-       Fixes <https://savannah.gnu.org/bugs/?61173>.
-
-2021-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Boolify more interfaces.
-
-       * src/include/font.h (font::unit_scale):
-       * src/libs/libgroff/font.cpp (font::unit_scale): Demote return
-       type from `int` to `bool`.  Use Boolean literals instead of
-       integers.
-
-       * src/libs/libgroff/font.cpp (struct text_file): Rename `next`
-       member function to `next_line`.  Demote its return type from
-       `int` to `bool`.  Use Boolean literals instead of integers.
-
-2021-09-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Boolify local variables.
-
-       * src/libs/libgroff/font.cpp (font::load, font::load_desc):
-       Demote local variables used as Booleans from `int` to `bool` and
-       update literals used with them from integer to Boolean.
-
-2021-09-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grn, groff, troff]: Communicate better when device DESC file
-       can't be loaded.
-
-       * src/libs/libgroff/font.cpp (font::load_desc): Stop writing
-       diagnostic to standard error.
-       * src/preproc/grn/main.cpp (getres):
-       * src/roff/troff/troff.cpp (main): Replace "sorry, I can't
-       continue" fatal diagnostic with a more informative message.
-       Instead say which device's DESC file the program was trying to
-       open, which might reveal a user's logic error or typo.
-       * src/roff/groff/groff.cpp (main): Replace "invalid device" text
-       of fatal diagnostic similarly.  I think it is more helpful to
-       indicate the operation that failed rather than saying the device
-       was invalid, particularly since there are other ways for a
-       device description to be invalid even if a DESC file is found
-       and loaded.
-
-2021-09-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Throw warning diagnostic if device DESC file attempts
-       to load unavailable fonts.
-
-       * src/roff/troff/input.cpp (main): Take advantage of new Boolean
-       return values of `mount_style()` and `mount_font()` to produce
-       warning diagnostics if mounting a style or font as directed by
-       the DESC file fails.  Explain in a comment why, at present, this
-       style mount warning will never actually trip.
-
-2021-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Lift font mounting diagnostic messages to be closer to
-       their user-controlled contexts to provide more information.  In
-       many cases no diagnostic was being thrown at all when an
-       unavailable font was requested by name, which is the method most
-       users prefer, and which meant that failures resulting from typos
-       in font names for many requests (`uf`, `fschar`, `rfschar`,
-       `special`, `fspecial`, `fzoom`, `bd`, `tkf`, `cs`) were going
-       unreported.  Further, promote these font warnings to errors
-       because the request will utterly fail to do what was requested
-       with no reasonable fallback.  Possibly, they were formerly
-       warnings because at the low level they were being emitted, they
-       could also have originated from unavailable fonts encountered in
-       device description files, and while that's bad news, it results
-       in no formatting problems if it doesn't affect fonts that an
-       input document actually uses.
-
-       * src/roff/troff/node.cpp (struct font_lookup_info): New struct
-       keeps the font name or position requested, and the position of
-       successful font lookup.
-       (font_lookup_info::font_lookup_info): Add constructor.
-       (font_lookup_error): New function builds error message using a
-       `font_lookup_info` struct and a message argument.
-       (get_fontno): Rename to...
-       (has_font): ...this.  Add argument to take a pointer to a
-       `font_lookup_info` struct.  Return a `bool` indicating whether
-       the lookup succeeded.  Place former `int` return value into the
-       struct instead.  Populate the other struct members with the
-       requested font name or position, as appropriate.
-       (mount_font_no_translate): Stop throwing warning diagnostic here
-       if a font cannot be loaded.  Instead, throw them...
-       (font_position): ...here, and...
-       (underline_font, define_font_special_character,
-       remove_font_special_character, read_special_fonts,
-       font_special_request, font_zoom_request, bold_font, track_kern,
-       constant_space): ...here, using `font_lookup_info` structs and
-       `has_font()`.
-       (remove_font_special_character): Stop returning early if font
-       lookup fails; it's gratuitously inconsistent with other similar
-       functions (save one, which has a reason to be different).
-       (define_font_special_character): Return early if font lookup
-       fails and say why in a comment (we can't `skip_line()`).
-
-       Fixes <https://savannah.gnu.org/bugs/?59522>.
-
-2021-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * [libgroff, troff]: Further boolify.
-
-       * src/include/font.h (load_font, font): Demote parameters from
-       {pointer to} `int` to `bool` and update default literal from
-       integer to Boolean (except for the pointer).  Update comment.
-       * src/libs/libgroff/font.cpp (load_font, load): Similarly.
-
-       * src/roff/troff/node.h (mount_font):
-       * src/roff/troff/node.cpp (mount_font): Demote return type from
-       `int` to `bool`.
-
-       * src/roff/troff/node.h (mount_style):
-       * src/roff/troff/node.cpp (mount_style): Promote return type
-       from `void` to `bool`.
-
-       * src/roff/troff/node.cpp (mount_font_no_translate): Demote
-       return type and `check_only` parameter from `int` to `bool` and
-       use Boolean rather than integer literals with them.
-       (check_font): Update call site of `mount_font_no_translate` to
-       use Boolean literal.
-       (font_position): Indicate that "error" is ignored by casting
-       return value of `mount_font` to void instead of using a comment.
-       (style): Cast return value of `mount_style` to `void`.
-
-2021-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am: Add `.DELETE_ON_ERROR` special target; both GNU
-       and FreeBSD make(1)s support it so maybe it will be portable
-       enough.  This avoids, among other problems, a target appearing
-       falsely up-to-date (often as an empty file) when the troff
-       process generating it experiences an assertion failure.
-
-2021-09-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Since June 1991 if not earlier, groff (technically, the refer,
-       lookbib, and lkbib programs) has trusted the header contents of
-       binary bibliographic index files (canonically generated with
-       indxbib(1)) regarding the sizes of the data structures that
-       follow in the file, a notorious class of security problem.  In
-       July 2013, the Mayhem Team at Carnegie Mellon University
-       reported to the Debian Bug Tracking System a problem with
-       groff's refer(1) implementation dumping core when reading an
-       index file prepared by a fuzzer.
-
-       * src/libs/libbib/index.cpp (index_search_item::check_header):
-       Add new member function to validate the header of an indexed
-       bibliography file, returning a string describing in detail the
-       first validity problem encountered.
-       (index_search_item::load): Perform the foregoing check before
-       using any of the size values taken from the header; they are
-       relied upon for pointer arithmetic.  If in verification mode
-       {using the undocumented `-V` flag to refer(1), lkbib(1), or
-       lookbib(1)}, report the details of the problem encountered.
-       Regardless of that mode, if there is a validity problem, report
-       corruption of the index file and abandon it, forcing fallback to
-       the text version of the corresponding bibliography file.
-
-       Fixes <https://bugs.debian.org/716109>.
-
-2021-09-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libbib/index.cpp
-       (index_search_item::get_invalidity_reason): Don't complain about
-       a last list element being nonnegative if the list size was zero
-       in the first place, as can happen with an empty index.  More
-       seriously from a language standpoint, avoid reading through a
-       negative array index (this can escape a compiler's attention
-       because we're reading from the midst of a heap-allocated or
-       `mmap()`ed region, but it's still a code smell).
-
-       Fixes <https://savannah.gnu.org/bugs/?61144>.
-
-2021-09-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libbib/index.cpp (index_search_item::load)
-       (index_search_item::get_invalidity_reason)
-       (index_search_item::add_out_of_date_file): Clarify diagnostic
-       messages.  Make it more obvious when we're complaining of a
-       problem in an indexed bibliographic database file (rather than a
-       plain text one).  Dial down the amount of Unix jargon a little.
-
-2021-09-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libbib]: Partially boolify.
-
-       * src/include/search.h:
-       * src/libs/libbib/index.cpp:
-       * src/preproc/refer/refer.cpp:
-       * src/utils/lkbib/lkbib.cpp:
-       * src/utils/lookbib/lookbib.cpp: Demote `verify_flag` from an
-       `int` to a `bool`, rename it to `do_verify`, use Boolean
-       instead of integer literals with it, and update call sites.
-
-       * src/libs/libbib/index.cpp: Rename `do_verify()` member
-       function to `get_invalidity_reason()` (it returns a string).
-       Demote `load()` from `int` to `bool`; do the same for `verify()`
-       and rename it to `is_valid()` as well.  Use Boolean instead of
-       integer literals with them.
-       (index_search_item::is_valid, make_index_search_item): Update
-       call sites of renamed member functions.
-
-2021-09-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libbib/map.c (mapread): Compare return value of
-       `mmap()` to `MAP_FAILED` instead of `(char *)-1`.  `MAP_FAILED`
-       is documented in POSIX Issue 5 a.k.a. SUSv2
-       <https://pubs.opengroup.org/onlinepubs/007908799/xsh/mmap.html>
-       {1997} and should be portable enough by now.
-
-2021-09-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Clamp negative tab stop positions to zero instead of
-       throwing an assertion failure.
-
-       * src/roff/troff/env.cpp (tab_stops::distance_to_next_tab):
-       Replace `assert` with clamping logic, ensuring that `lastpos`
-       can never be negative.  While negative tab stop positions don't
-       make much sense (they result in zero horizontal motion), user
-       input like `.ta T -5` should never provoke an assertion failure.
-
-       (set_tabs): Throw range warning in additional scenario, viz., if
-       a repeating tab offset is negative.
-
-       Fixes <https://bugs.debian.org/990406>.  Thanks to наб for the
-       report.
-
-2021-09-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Boolify `set_tabs` function.
-
-       * src/roff/troff/env.cpp (set_tabs): Demote local variables from
-       `int` to `bool` and give them predicate-like names.
-         - `first` -> `is_first_stop`
-         - `repeated` -> `is_repeating_stop`
-       Use Boolean instead of integer literals in assignments to them.
-
-2021-09-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Deprecate `OP` macro.
-
-       * tmac/an-ext.tmac (OP): Move implementation from here...
-       * tmac/an.tmac (OP): ...to here.  Throw deprecation warning.
-       Throw style warning if wrong number of arguments given.
-
-       * tmac/groff_man.7.man.in (Description): Drop from introductory
-       macro summary.
-       (Description/Command synopsis macros): Move discussion from
-       here...
-       (Description/Deprecated features): ...to here.  Explain why it's
-       deprecated.
-
-2021-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Make `ab` request quiet if given no arguments.  The
-       `tm`, `tm1`, and `tmc` requests provide ample flexibility for
-       constructing diagnostic messages prior to an error exit, and
-       it's convenient to make `ab` itself quiet instead of saying
-       "User Abort." as Unix Version 7 troff did.  Further, there is no
-       standardization across troffs regarding what `ab` should emit if
-       arguments are absent.
-
-       * src/roff/troff/input.cpp (abort_request): Do it.
-
-       * src/roff/groff/tests/ab_works.sh:
-       * src/roff/groff/groff.am (groff_TESTS): Test it.
-
-       * doc/groff.texi (Debugging, Implementation Differences):
-       * man/groff.7.man (Requests/Request short reference):
-       * man/groff_diff.7.man (Implementation differences): Document
-       it.
-
-       Fixes <https://savannah.gnu.org/bugs/?61070>.  Thanks to Dave
-       Kemper for the discussion.
-
-2021-09-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Update exit status literals.
-
-       * src/roff/troff/div.cpp (top_level_diversion::begin_page):
-       * src/roff/troff/input.cpp (exit_troff, abort_request, do_error)
-       (fatal_with_file_and_line): Use standard C library preprocessor
-       symbols `EXIT_SUCCESS` and `EXIT_FAILURE` instead of 0 and 1
-       literals, respectively.
-
-2021-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Drop unused member function.
-
-       * src/roff/troff/token.h (class token): Drop unused `title`
-       member function.  Its implementation was apparently removed in
-       the prehistory of our Git repository: see James Clark's
-       ChangeLog entry of 1990-09-06.
-
-2021-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Remove workaround for Cfront 1.2 bug.
-
-       * src/roff/troff/input.cpp (do_define_macro): Move `dot_symbol`
-       from to file to function local scope as originally intended.
-
-2021-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Rename parameter.
-
-       * src/roff/troff/input.cpp (token::usable_as_delimiter): Rename
-       parameter from `err` to `report_error` to be more communicative.
-
-2021-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Boolify members of `token` class.
-
-       * src/roff/troff/token.h (class token): Demote return type of
-       several member functions from `int` to `bool` and rename them.
-         - `backspace` -> `is_backspace`
-         - `delimiter` -> `usable_as_delimiter`
-         - `dummy` -> `is_dummy`
-         - `eof` -> `is_eof`
-         - `horizontal_space` -> `is_horizontal_space`
-         - `hyphen_indicator` -> `is_hyphen_indicator`
-         - `leader` -> `is_leader`
-         - `left_brace` -> `is_left_brace`
-         - `newline` -> `is_newline`
-         - `page_ejector` -> `is_page_ejector`
-         - `right_brace` -> `is_right_brace`
-         - `space` -> `is_space`
-         - `special` -> `is_special`
-         - `stretchable_space` -> `is_stretchable_space`
-         - `tab` -> `is_tab`
-         - `transparent_dummy` -> `is_transparent_dummy`
-         - `transparent` -> `is_transparent`
-         - `unstretchable_space` -> `is_unstretchable_space`
-         - `white_space` -> `is_white_space`
-         - `zero_width_break` -> `is_zero_width_break`
-       (class token): Drop 1991 comment anticipating that member
-       function `nspaces` could return "2" for a "double space"; this
-       was apparently never implemented.
-       (class token): Drop parameter names from declarations; the
-       prevailing style (familiar from Stroustrup) is not to use them.
-       (token::is_special): Simplify implementation.
-
-       * src/roff/troff/input.cpp (has_arg)
-       (token::usable_as_delimiter): Update definitions of above member
-       functions not defined in token.h.
-
-       * src/roff/troff/div.cpp (begin_page, space_request, need_space)
-       (output_saved_vertical_space, flush_output):
-       * src/roff/troff/env.cpp (fill, no_fill, center)
-       (right_justify, indent, temporary_indent, margin_character)
-       (number_lines, do_break_request, hyphen_word):
-       * src/roff/troff/input.cpp (next_file, do_overstrike)
-       (do_bracket, do_name_test, do_expr_test, do_zero_width)
-       (token::skip, has_arg, skip_line, empty_name_warning)
-       (non_empty_name_warning, do_get_long_name, process_input_stack)
-       (flush_pending_lines, decode_args, read_request)
-       (do_define_string, do_define_character, remove_character)
-       (do_define_macro, length_request, get_delim_number)
-       (get_line_arg, read_size, get_delim_name, do_register, do_width)
-       (read_title_parts, encode_char, do_special, device_request)
-       (output_request, skip_alternative, begin_alternative)
-       (nop_request, do_if_request, do_source, pipe_source)
-       (ps_bbox_request, tag, taga, do_terminal, do_translate)
-       (hyphenation_code, hyphenation_patterns_file_code, define_class)
-       (get_optional_char, check_missing_character, abort_request)
-       (copy_file, transparent_file, do_macro_source)
-       (charinfo_to_node_list, read_draw_node, read_color_draw_node):
-       * src/roff/troff/node.cpp (get_fontno)
-       (remove_font_special_character, bold_font):
-       * src/roff/troff/number.cpp (start_number, parse_term):
-       * src/roff/troff/reg.cpp (define_number_reg, alter_format):
-       Update call sites to use new names.
-
-       * src/roff/troff/input.cpp (token::usable_as_delimiter)
-       (read_draw_node): Return Boolean, not integer, literals.
-
-2021-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Clamp line and title lengths to device horizontal
-       resolution.
-
-       * src/roff/troff/env.cpp (line_length, title_length): Do it.
-
-       Fixes <https://savannah.gnu.org/bugs/?61116>.
-
-2021-09-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (do_hyphenation_patterns_file):
-       Refactor slightly.  Demote `append` from `int` to `bool`.
-       (hyphenation_patterns_file, hyphenation_patterns_file_append):
-       Update call sites to use Boolean, not integer, literals.
-
-2021-09-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/hvunits.h:
-       * src/roff/groff/number.cpp: Mark `H0`, `V0` objects as `const`.
-
-2021-09-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (do_underline_special): Refactor
-       slightly.
-         - Rename `underline_spaces` -> `do_underline_spaces`.
-         - Demote it from an `int` to a `bool`.
-         - Use ternary operator and explicit character literals when
-           writing device control command instead of doing arithmetic
-           on a character literal.
-         - Update call sites to use Boolean literals.
-         - Relocate function to avoid forward reference.
-         - Mark function as static to eliminate external linkage.
-           Remove now-unnecessary prototype.
-
-2021-09-04  Keith Marshall  <keith.d.marshall@ntlworld.com>
-
-       Add "ms" footnote marker placement hook.
-
-       * tmac/s.tmac (FS-MARK): New macro; define as no-op, by default.
-       (@FS): Invoke FS-MARK as first action, allowing caller to "hook" it.
-
-2021-09-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (distribute_space): Refactor slightly.
-         - Rename `force_reverse` to `force_reverse_node_list`.
-         - Rename `reverse` to `do_reverse`.
-         - Demote both of the above from `int` to `bool`.
-         - Use Boolean literals with them.
-         - Add assertions to enforce positive values of `nspaces` and
-           `desired_space`.
-         - Remove now-redundant test for `nspaces` being positive.
-         - Add explanatory comments.
-       (environment::wrap_up_field): Update call sites of
-       `distribute_space` when non-default value of
-       `force_reverse_node_list` is supplied.
-
-2021-09-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Don't adjust nonadjustable lines.  This means that the
-       direction from which an output line in adjustment mode "b" (or
-       its "n" synonym) is filled with supplemental space is not
-       changed if that output line does not require adjustment.  This
-       will result in whitespace changes to documents using that
-       adjustment mode, and these changes will be plainly visible on
-       low-resolution output devices like terminals.
-
-       To illustrate, in the following "A" means an output line
-       requiring adjustment; "F" a line that is "full" and does not;
-       and "L" and "R" indicate distribution of adjustment spaces from
-       the left and right, respectively.
-
-       groff 1.22.4    groff 1.23.0
-       ------------    ------------
-       A    L          A    L
-       A    R          A    R
-       F    L          F    R
-       A    R          A    L
-
-       * src/roff/troff/env.cpp (distribute_space): Return early if
-       either the amount of desired space to be distributed or the
-       count of space nodes in the output line to distribute it among
-       is zero.
-
-       * tmac/tests/an_TH-repairs-ad-damage.sh: Update test to expect
-       space to be distributed differently.
-
-       Fixes <https://savannah.gnu.org/bugs/?61089> and
-       <https://savannah.gnu.org/bugs/?60673>.
-
-2021-09-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Skip core-dump-checking test if a core file already exists.
-
-       * src/roff/groff/tests/regression_savannah_59202.sh: Skip test
-       if a core dump is already present.
-
-2021-09-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #60189.
-
-       * src/roff/groff/tests/break_zero-length_output_line_sanely.sh:
-       Do it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2021-08-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Tweak diagnostic message.
-
-       * src/roff/troff/env.cpp (environment::environment): Use
-       terminology more rigorously in diagnostic.
-
-2021-08-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Fix code style nit.
-
-       * src/libs/libgroff/errarg.cpp (errprint): Replace `assert(0)`
-       with a meaningful predicate.
-
-2021-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Demote `need_space` to Boolean.
-
-       * src/libs/libgroff/error.cpp (do_error_with_file_and_line):
-       Demote local integer `need_space` and its assignments to `bool`.
-
-2021-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Boolify `font::load()` and `font::load_desc()`
-       return values.
-
-       * src/include/font.h (font::load, font::load_desc):
-       * src/libs/libgroff/font.cpp (font::load, font::load_desc): Do
-       it.
-
-2021-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (TRADITIONAL_CPP): Update `AC_MSG_CHECKING`
-       argument to refer to "pre-ISO C90 syntax" instead of a
-       "traditional" preprocessor.  Call `AC_MSG_ERROR` (aborting
-       configuration) if the check (for pre-C90 transformation)
-       succeeds.  We thus withdraw support for such superannuated
-       {"Reiser"} C preprocessors.
-
-2021-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Un-indirect token concatenation through macro.
-
-       * src/include/itable.h:
-       * src/include/ptable.h: Do it.
-
-2021-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Drop support for `TRADITIONAL_CPP`.  This means a C
-       preprocessor that does not support the ANSI C89/ISO C90
-       token concatenation operator "##".
-
-       * src/include/itable.h:
-       * src/include/ptable.h: Do it.
-
-       * Makefile.am: Undocument preprocessor symbol.
-
-2021-08-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Drop `a_delete` preprocessor wrapper for the
-       `delete` operator.  It has been rendered unnecessary by the
-       removal of support for ancient C++ compilers.
-
-       * src/include/lib.h (a_delete): Drop symbol definition.
-
-       * src/devices/grohtml/output.cpp (word::~word):
-       * src/devices/grohtml/post-html.cpp (char_block::char_block)
-       (assert_state::~assert_state, assert_state::add)
-       (assert_state::close, replace_negate_str):
-       * src/devices/grops/ps.cpp (ps_font::ps_font)
-       (subencoding::subencoding, ps_printer::define_encoding)
-       (ps_printer::encode_fonts):
-       * src/devices/grops/psrm.cpp (resource_manager::document_setup)
-       (resource_manager::supply_resource):
-       * src/devices/grotty/tty.cpp (tty_printer::tty_color)
-       (tty_printer::tty_printer, tty_printer::color_to_idx)
-       (tty_printer::add_char):
-       * src/include/itable.h (ITABLE(T)::~ITABLE(T))
-       (ITABLE(T)::define):
-       * src/include/ptable.h (PTABLE(T)::~PTABLE(T))
-       (PTABLE(T)::define):
-       * src/libs/libbib/index.cpp
-       (index_search_item::~index_search_item, make_index_search_item,
-       index_search_item_iterator::index_search_item_iterator,
-       index_search_item::get_tag, index_search_item::munge_filename,
-       index_search_item::search):
-       * src/libs/libbib/linear.cpp (bmpattern::~bmpattern)
-       (file_buffer::file_buffer, file_buffer::load)
-       (linear_searcher::linear_searcher)
-       (linear_searcher::~linear_searcher):
-       * src/libs/libbib/search.cpp
-       (search_list_iterator::search_list_iterator)
-       (search_item::search_item):
-       * src/libs/libdriver/input.cpp (IntArray::~IntArray)
-       (IntArray::append, StringBuf::~StringBuf, StringBuf::append)
-       (get_integer_arg, parse_x_command, do_file):
-       * src/libs/libdriver/printer.cpp (printer::printer)
-       (printer::load_font, text_file::~text_file, text_file::next)
-       (font::~font, font_widths_cache::~font_widths_cache)
-       (font:alloc_ch_index, font::extend_ch, font::compact)
-       (font::load_desc):
-       * src/libs/libgroff/fontfile.cpp (font::open_file):
-       * src/libs/libgroff/relocate.cpp (searchpath, searchpathext)
-       (set_current_prefix):
-       * src/libs/libgroff/searchpath.cpp (search_path::search_path)
-       (search_path::command_line_dir, search_path::open_file)
-       (search_path::open_file_cautious):
-       * src/libs/libgroff/string.cpp (sfree, srealloc)
-       (string::remove_spaces):
-       * src/libs/libgroff/symbol.cpp (symbol::symbol, concat):
-       * src/libs/libgroff/tmpfile.cpp (temp_init::temp_init)
-       (xtmpfile_list_init::~xtmpfile_list_init, xtmpfile):
-       * src/preproc/eqn/box.cpp (set_gfont, set_grfont, set_gbfont)
-       (box_list::append, box_list::~box_list):
-       * src/preproc/eqn/delim.cpp (make_delim_box)
-       (delim_box::~delim_box):
-       * src/preproc/eqn/eqn.ypp (number):
-       * src/preproc/eqn/lex.ypp (file_input::~file_input)
-       (argument_macro_input::~argument_macro_input):
-       * src/preproc/eqn/pile.ypp (matrix_box::~matrix_box)
-       (matrix_box::append):
-       * src/preproc/eqn/special.cpp (special_box::~special_box):
-       * src/preproc/eqn/text.ypp (set_char_type):
-       * src/preproc/html/pre-html.cpp (get_line, scanArguments):
-       * src/preproc/pic/object.cpp (output::~output)
-       (output::set_args, text_item::~text_item)
-       (object_spec::~object_spec, command_object::~command_object)
-       (line_object::~line_object):
-       * src/preproc/pic/pic.ypp (placeless_element, reset_variables)
-       (print_args, text_expr, object_spec, text, sprintf_args, path):
-       * src/preproc/refer/command.cpp (input_item::~input_item)
-       (input_item::peek_char):
-       * src/preproc/refer/label.ypp (lookup_label):
-       * src/preproc/refer/refer.cpp (store_citation, store_reference):
-       * src/preproc/tbl/main.cpp (format::add_rows, format::~format):
-       * src/preproc/tbl/table.cpp (block_entry::~block_entry)
-       (table::~table, table::allocate):
-       * src/roff/groff/groff.cpp (possible_command::~possible_command)
-       (possible_command::clear_name):
-       * src/roff/troff/column.cpp
-       ((justification_spec::~justification_spec)
-       (justification_spec::append):
-       * src/roff/troff/dictionary.cpp (dictionary::lookup):
-       * src/roff/troff/env.cpp (override_sizes, tab_stops::to_string)
-       (hyphen_word, hyphen_trie::insert_hyphenation):
-       * src/roff/troff/input.cpp (read_long_escape_name, token::next)
-       (do_get_long_name, temp_iterator::~temp_iterator)
-       (get_delim_name, pipe_source, read_string, pipe_output)
-       (system_request, open_mac_file, do_macro_source)
-       (do_register_assignment, do_string_assignment, read_draw_node)
-       (copy_mode_error):
-       * src/roff/troff/node.cpp (troff_output_file::set_font)
-       (troff_output_file::~troff_output_file, draw_node::is_tag)
-       (grow_font_table, font_family::~font_family)
-       (font_family::make_definite):
-       * src/utils/hpftodit/hpftodit.cpp (name_list::~name_list)
-       (read_map):
-       * src/utils/indxbib/indxbib.cpp (main, get_cwd):
-       * src/utils/tfmtodit/tfmtodit.cpp (tfm::~tfm, tfm::load): Port
-       uses of `a_delete` to `delete[]`.
-
-2021-08-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Drop `ad_delete` preprocessor wrapper for the
-       `delete` operator.  It has been rendered unnecessary by the
-       removal of support for ancient C++ compilers.
-
-       * src/include/lib.h (ad_delete): Drop symbol definition.
-
-       * src/preproc/pic/object.cpp (graphic_object::print_text):
-       * src/preproc/refer/ref.cpp (reference::reference)
-       (reference::merge, reference::insert_field)
-       (reference::delete_field):
-       * src/preproc/tbl/main.cpp (format::add_rows): Port uses of
-       `ad_delete` to `delete[]`.
-
-2021-08-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_ARRAY_DELETE): Update `AC_MSG_CHECKING`
-       argument to refer to "ISO C++98" instead of "ANSI".  Call
-       `AC_MSG_ERROR` (aborting configuration) if the check fails.
-
-2021-08-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Drop support for `ARRAY_DELETE_NEEDS_SIZE`.
-
-       * src/include/lib.h [ARRAY_DELETE_NEEDS_SIZE]: Drop preprocessor
-       conditional branch.  This abandons support for certain pre-ISO
-       C++98 compilers.  (According to a now-removed comment, unsized
-       array deletion was documented in "ARM", meaning _The C++
-       Annotated Reference Manual_, published in 1989.)
-
-       * Makefile.am: Undocument preprocessor symbol.
-
-2021-08-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Drop redefinition of `INT_MIN`.
-
-       * src/include/lib.h: Drop redefinition of `INT_MIN`.  It was
-       motivated by a bug in the AT&T C++ compiler (cfront), version
-       2.0, released in June 1989.  Implementations have had 30 years
-       to get this right; assume that they have.
-
-       * PROBLEMS: Drop corresponding item.
-
-2021-08-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Drop long-dead `COOKIE_BUG` logic.
-
-       * src/libs/libgroff/new.cpp (operator new, operator delete):
-       Drop preprocessor conditional branches on the `COOKIE_BUG`
-       symbol.  This was de-documented, and an autoconf check for its
-       necessity removed, way back in groff 1.10 (November 1995).  It
-       was relevant only to GCC from versions 2.0 to 2.2.2 (all 1992).
-
-2021-08-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Refactor `font::scan_papersize()`.
-
-       * src/libs/libgroff/font.cpp (font::scan_papersize): Ensure
-       successful return value of `fgets()` before attempting to parse
-       string for paper format.  Convert `test_file` to Boolean and
-       rename to `attempt_file_open`.  Quiets GCC `-Wunused-result`
-       warning.
-
-2021-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Apply naming convention.
-
-       * tmac/tests/e_footnotes_work_with_columns.sh: Rename from...
-       * tmac/tests/e_footnotes-work-with-columns.sh: ...to this.
-       * tmac/tmac.am (tmac_TESTS): Update.
-
-2021-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an.tmac (IP): Make code more accessible by using a
-       Boolean operator rather than an arithmetic one (assembly
-       language programmers are comfortable with the interchangeability
-       of subtraction and comparison, but not everyone is).
-
-2021-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       groff(7): Document more escapes.
-
-       * man/groff.7.man (Escape short reference): Document
-       `\[charNNN]`, `\[uNNNN]`, `\[uNNNN_NNNN...]` escape sequences.
-       Revise descriptions of `\O0` and `\O1` escape sequences.
-       Document `\O2`, `\O3`, `\O4`, and `\O5` escape sequences.
-
-2021-08-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       groff(7): Fix bug in `\?` escape rendering.
-
-       * man/groff.7.man (ESC?): Fix bug in page-private macro: the
-       question mark that ends this uniquely-syntaxed escape sequence
-       was not shown with the mandatory escape character before it.
-       Problem dates back at least to commit 41b0e794, 19 February
-       2007, but possiby to f790bc7a9, 6 January 2002.
-
-2021-08-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Elaborate macro definition discussion.
-
-       Fixes <https://savannah.gnu.org/bugs/?57944>.  Thanks to Dave
-       Kemper for the report.
-
-2021-08-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Make robust against $GROFF_TYPESETTER settings.
-
-       * src/roff/groff/tests/\
-       use_point_size_escape_with_single_digit_arg.sh:
-       * src/roff/nroff/tests/verbose_option_works.sh:
-       * tmac/tests/s_IP-indents-using-paragraph-type-size.sh: Export
-       an empty $GROFF_TYPESETTER to the environment.
-
-       Fixes <https://savannah.gnu.org/bugs/?60140>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2021-08-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Treat an empty $GROFF_TYPESETTER as unset.
-
-       * src/libs/libgroff/device.cpp (device_init::device_init): Test
-       both returned pointer from `getenv()` and, if that's not null,
-       the first character of the string for nullity before assigning
-       it to `device`.
-
-       Fixes <https://savannah.gnu.org/bugs/?61068>.
-
-2021-08-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff]: Rename font class member variable.
-
-       * src/include/font.h (font class): Rename `unscaled_charwidths`
-       member variable to `use_unscaled_charwidths`: since it is a
-       Boolean, make it read more like a logical predicate.
-
-       * src/libs/libgroff/font.cpp (font::get_width, font::load_desc):
-       * src/libs/libgroff/fontfile.cpp (font class): Update
-       initialization and assignments.
-
-2021-08-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (get_copy): Demote integer arguments
-       to Booleans and use Boolean literals for default values.  Rename
-       `defining` to `is_defining`.
-       (get_char_for_escape_name, do_define_macro): Update call sites
-       that use non-default arguments to use Boolean literals and
-       comments to document what's being requested.
-
-2021-08-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (DOC_GROFF_ONLY): Stop running groff in unsafe
-       mode; no documents (in _this_ directory) appear to require it.
-
-2021-08-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grn]: Fix code style issues.
-
-       * src/preproc/grn/hgraph.cpp:
-       * src/preproc/grn/hpoint.cpp:
-       * src/preproc/grn/main.cpp:
-       * src/preproc/grn/hdb.cpp: Drop use of `register` storage class.
-
-       Fixes <https://savannah.gnu.org/bugs/?57733>.  Thanks to Bjarni
-       Ingi Gislason for the report and a suggested patch.
-
-       * src/preproc/grn/hgraph.cpp (len, HGPrintElt, picurve):
-       * src/preproc/grn/hdb.cpp (DBRead): Wrap long lines.
-
-       * src/preproc/grn/hgraph.cpp: Rename function from
-       `Paramaterize` to `Parameterize`.
-       (HGCurve): Update call site.
-
-       * src/preproc/grn/main.cpp (add_file): Drop redundant cast in
-       `realloc()` call.
-       (conv, interpret): Use standard English in diagnostic messages.
-
-2021-08-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/grn/hdb.cpp: Perform more input validation.
-       Improve diagnostics by taking advantage of libgroff
-       infrastructure and tracking the line number of the input file.
-       Add global `lineno`.
-       (DBRead): Increment `lineno` after reading newlines from input.
-       Call `error_with_file_and_line()` instead of `error()`.  If
-       input reports a negative length for the text (string) to follow
-       in the file, exit with a fatal diagnostic.  Check for EOF while
-       reading text string.
-       (DBGetType): Convert `fprintf()` call for warning diagnostic to
-       `warning_with_file_and_line()`.
-       (DBRead, DBGetType): Add contextual information to diagnostic
-       messages.
-
-       Fixes <https://savannah.gnu.org/bugs/?61043>.  Thanks to
-       Savannah user eqkws for the report.
-
-2021-08-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/grn/main.cpp (usage): Update usage message.
-
-2021-08-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grn]: Add and use `malloc()` wrapper.
-
-       * /src/preproc/grn/main.cpp (grnmalloc): New function takes
-       argument of `size_t` type and constant string argument to
-       describe what is being allocated.  Return non-null pointer from
-       `malloc()`, otherwise call `fatal()`, describing what was being
-       allocated and the problem reported by the system.
-
-       * src/preproc/grn/hdb.cpp (DBCreateElt):
-       * src/preproc/grn/hpoint.cpp (PTMakePoint):
-       * /src/preproc/grn/main.cpp (main, interpret): Migrate
-       `malloc()` callers to `grnmalloc()`.
-
-2021-08-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/grn/hdb.cpp (DBRead): Check return value of
-       `sscanf()` and call `fatal()` if no conversions succeeded.  The
-       blithe discard of a useful return value is bad enough, but this
-       one took place inside a do-while such that it could loop
-       forever trying fruitlessly to parse two doubles out of strings
-       that didn't contain them (the loop never checked the EOF status
-       of the file stream from which it was reading, and relied on
-       `fgets()` to keep advancing the stream pointer).  Discovered
-       while root-causing Savannah #61043.
-
-2021-08-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Resolve compiler warnings relating to format string security and
-       ISO C++98 conformance.
-
-       * src/preproc/eqn/delim.cpp (define_extensible_string):
-       * src/preproc/pic/pic.ypp (do_sprintf): Use #pragma to silence
-       GCC "format-nonliteral" warning and explain why our usage is
-       safe in a comment.
-
-       * src/preproc/preconv/preconv.cpp (detect_file_encoding): Use
-       `l` modifier to `%u` `fprintf()` conversion instead of `z`, and
-       cast return values of `size_t` to unsigned long; "ISO C++98
-       does not support the ‘z’ gnu_printf length modifier" (it doesn't
-       support `ll` either).  N.B. this is debugging output only.
-
-       * src/roff/groff/groff.cpp (synopsis):
-       * src/roff/troff/input.cpp (usage): Repeat variadic argument for
-       `%s` conversion in `fprintf()` call because "ISO C++98 does not
-       support %n$ operand number formats".
-
-       * src/roff/troff/env.cpp: Initialize adjustment and hyphenation
-       mode enums without commas at the end of the enumeration lists.
-
-2021-08-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Clean up the interface between `an-footer` and `BT`, and
-       HTML header and footer suppression generally.  Move
-       responsibility for checking the `ps4html` register from the
-       latter to the former.  This is not something a `BT` redefiner
-       {see groff_man(7)} should have to worry about.
-
-       * tmac/an.tmac (BT): Drop test of `ps4html` register and early
-       return.
-       (an-header, an-footer): Return immediately if
-       `an-suppress-header-and-footer` is true.  Remove conditional on
-       `an-is-output-html`.
-       (initialization): Define `an-suppress-header-and-footer`
-       register; true if `an-is-output-html` is true, or if `ps4html`
-       is defined.
-
-2021-08-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (get_resolution): Unbrace a
-       single-statement `while` loop per prevailing coding style.  Add
-       comments noting how we aren't parsing DESC files _precisely_ as
-       our documentation specifies.
-
-2021-08-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Convert font class `int` members to `bool` where appropriate.
-
-       * src/include/font.h (font class): Demote integers to Booleans
-       and use Boolean literals where possible.  Rename some member
-       variables to look like logical predicates.
-         - contains()
-         - is_special()
-         - has_ligature()
-         - tcommand -> has_tcommand
-         - unscaled_charwidths
-         - pass_filenames
-         - use_charnames_in_special
-         - is_unicode
-         - special (private)
-       * src/libs/libgroff/font.cpp (font::font): Construct object
-       using Boolean literal.
-       (font::contains):
-       (font::is_special):
-       (font::has_ligature): Convert return type to `bool`.
-       (font::load):
-       (font::load_desc): Assign to member variables using Boolean
-       literals.
-       * src/libs/libgroff/fontfile.cpp: Initialize appropriate globals
-       using `bool` type and Boolean literals.
-       * src/roff/troff/troff.h:
-       * src/roff/troff/input.cpp (main):
-       * src/roff/troff/node.cpp (troff_output_file::put_char_width):
-       Rename `tcommand_flag` to `device_has_tcommand` to suggest a
-       logical predicate, and to emphasize the formatter's concern with
-       what the output device can accept in the intermediate output
-       language.
-       * src/roff/troff/input.cpp: Initialize `device_has_tcommand`
-       global using `bool` type and Boolean literal.
-
-2021-08-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Clarify breadth of application of `ll` macro.
-
-       * doc/meref.me: Document application of .ll macro only to the 3
-       environments that me(7) uses, not any the user might create.
-       * tmac/e.tmac (@C, xl, ll): Update comments.
-
-       Fixes <https://savannah.gnu.org/bugs/?55060>.
-
-2021-08-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #58736.
-
-       * tmac/tests/e_footnotes_work_with_columns.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-08-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (bc): Fix problem with multiple columns on long
-       pages.  Space to the next page location trap, not 24 inches.
-       Thanks to Dave Kemper and Bjarni Ingi Gislason for help tracking
-       this bug down.
-
-       Fixes <https://savannah.gnu.org/bugs/?55081>.
-
-2021-08-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #55081.
-
-       * tmac/tests/e_columns-work-on-long-pages.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-08-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Localization): Add section.
-
-2021-08-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/cs.tmac:
-       * tmac/de.tmac:
-       * tmac/fr.tmac:
-       * tmac/it.tmac:
-       * tmac/sv.tmac: Update ms package localization to use an
-       appropriate hyphenation mode for the `HY` register (the
-       mode for the pattern files, plus 2 as is traditional in ms).
-
-2021-08-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac (1c): Place comment escape sequence immediately
-       after macro argument.  (When redefining a request, one needs to
-       remember that request arguments are not parsed exactly as macro
-       arguments are.)  Quiets "-w tab" warning.
-
-2021-08-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Fix misleading documentation claim; gremlin(1) pictures
-       cannot be included directly; they must be preprocessed with
-       grn(1).
-
-       * doc/meref.me:
-       * tmac/groff_me.7.man: Replace "gremlin" with "grn".
-
-2021-08-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_me.7.man: Document `n1` and `n2` macros.
-
-2021-08-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [me]: Fix PS/n1 combination diagnostic spew and apparent logic
-       error.
-
-       * tmac/e.tmac (@h): Place comment escape sequence immediately
-       after macro argument.  (When redefining a request, one needs to
-       remember that request arguments are not parsed exactly as macro
-       arguments are.)
-       (n2): Prefix with `do` requests using long register names.
-       (n2): Add macro-local register `|l` to store length of first
-       argument.  Don't attempt to extract a substring beyond the
-       bounds of its source, which produces a warning diagnostic.
-       (&&): Define no-op macro for use as end macro in nested macro
-       definition.
-       (PS): Fix unbalanced-else diagnostic by changing `if` to `ie`.
-       (PS): Initialize `PS_nm_cnt` register to 0 instead of relying on
-       implicit definition.
-       (PS): Prefix with `do` definition of long macro name.
-       (PS): Indent call of end macro.
-       (PS): Add comment after escaped space.
-       (PS, PF): Prefix with `do` call of long macro name.
-
-       Fixes <https://savannah.gnu.org/bugs/?61019>.
-
-2021-08-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl (do_line): Recognize `n1` and `n2` as
-       characteristic me(7) macros.
-
-2021-08-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_me.7.man: Document GF, IE, IF, IS, and PF macros.
-
-2021-08-08  Dave Kemper <saint.snit@gmail.com>
-
-       * tmac/e.tmac: Rename `PE` to `PF` but remove vertical spacing.
-       (PE): New `PE` calls `PF` and then spaces as old `PE` did.
-
-       Fixes <https://savannah.gnu.org/bugs/?60479>.
-
-2021-08-06  Dave Kemper <saint.snit@gmail.com>
-
-       * doc/meref.me: Improve documentation of image-inclusion macros.
-
-       Fixes <https://savannah.gnu.org/bugs/?60478>.
-
-2021-08-06  Dave Kemper <saint.snit@gmail.com>
-
-       GNU pic recognizes two possible endings of a pic block: .PE or
-       .PF.  This fact was documented in doc/pic.ms but not in the pic
-       man page.  The minimal pic implementation provided by pic.tmac
-       also did not include a .PF definition.
-
-       * src/preproc/pic/main.cpp (main): Add dummy definition of `PF`
-       macro.
-       * tmac/pic.tmac (PF): Add macro that performs indentation only.
-       (PE): Call PF for indentation.
-
-       * doc/pic.ms (Interface to [gt]roff/How Scaling is Handled):
-       * src/preproc/pic/pic.1.man (Description, Options): Mention `PF`
-       in addition to `PS` and `PE`.
-
-       Fixes <https://savannah.gnu.org/bugs/?60504>.
-
-2021-08-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/refer-ms.tmac:
-       * tmac/s.tmac (fn@init, @PP): Rename strings
-       `fn@sup-{start,end}` to `fn@mark-{start,end}`.  This makes it
-       more clear that the strings are brackets for the footnote
-       marker, and not so much to do with the note text.  Further, in
-       nroff mode, they aren't superscripts at all, but bracket glyphs.
-
-2021-08-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.1.man (Examples): Add section.
-
-       Addresses part of <https://savannah.gnu.org/bugs/?57667>.
-
-2021-08-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/refer-ms.tmac: Use `fn@sup-{start,end}` instead of
-       `par@sup-{start,end}` when setting refer(1) citation labels.
-       This improves the appearance of the default labels on nroff
-       devices.  Continues commit caeede07, 1 May.
-
-2021-08-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tman/an-ext.tmac (EX, EE): Stop manipulating hyphenation.
-       It's redundant since disabling fill mode already prevents
-       automatic breaking, and therefore automatic hyphenation.
-       * tmac/groff_man.7.man.in (Description/Document structure
-       macros) <EX, EE>: Update documentation.
-
-2021-08-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Update authorship credits.  I appear
-       to have removed or refactored all of the "device" (recte: macro
-       package) inference logic adapted from Ralph Corderoy's grog.sh;
-       see commit 3617f42048f54cc3f0adc282ee3b9e481c75ebd5, 13 June
-       2014.
-
-2021-07-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Refactor through relocation and
-       renaming.  Move several global objects into subroutines.
-         - `@request` -> `&do_line`
-         - `@macro_ms`, `@macro_man`, `@macro_man_or_ms` ->
-           `&infer_man_or_ms_package`
-         - `@main_package` -> `&construct_command`
-       Rename some objects for clarity.
-         - `%Groff` -> `%score`
-         - `@filespec` -> `$input_file`
-       Delete unused object.
-         - `@standard_macro`
-       Add comments.
-
-2021-07-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl (do_line): When matching macro/request
-       names, accept any non-whitespace character (Perl: \S) instead of
-       just a word-constituent character (Perl: \w), since roff
-       identifiers can contain unusual characters (refer(1) and
-       groff_me(7) illustrate some real-world cases).
-
-2021-07-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Refactor macro package inference.
-         - Stop manually populating `Groff` hash.  (It's itching for a
-           rename.)
-         - Stop calling now-dead subroutine `infer_macro_packages`.
-       (do_line): Always store the names of all macros called to the
-       `Groff` hash, incrementing it.  Now it's a proper scoreboard.
-       Populate `inferred_main_package` from here upon encountering
-       characteristic (i.e., uniquely named) macros of each package.
-       Bug fix: drop "SP" from list of characteristic mom(7) macros;
-       it's shared with mm(7).
-       (infer_man_or_ms_package): Update comment.  Return 0 (false) if
-       document appears to be "raw", using no full-service macro
-       package.
-       (infer_macro_packages): Delete; do_line() does this work.
-
-2021-07-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Refactor preprocessor inference.
-         - Add new list, `inferred_preprocessor`.
-         - Drop preprocessor-related keys from `Groff` hash.
-         - Drop scalar `inside_tbl_table`.
-       (do_line): Set up hash `preprocessor_for_macro`.  Detect
-       preprocessor macros the way the preprocessors do, explained in a
-       comment.  Respect AT&T compatibility mode when doing so.  Build
-       list of inferred preprocessors.  This replaces the extensive and
-       gaseous series of `if` statements that manipulated the `Groff`
-       hash.
-       (infer_preprocessors): Completely replace.  Set up a hash
-       `option_for_preprocessor` mapping preprocessor names to groff
-       options (where applicable).  Append to `command` and
-       `preprocessor` lists as appropriate.  Sort the preprocessor
-       options so they don't move around in the argument list depending
-       on the order of their macros' appearance in the input.
-
-       * src/utils/grog/tests/smoke-test.sh: Update test cases to
-       expect preprocessor options to show up in sorted order.
-
-2021-07-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Drop dead code.  Delete global
-       hash `preprocs_tmacs`, unused since commit b0de53c9, 30 June.
-
-2021-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Fix code nit.
-
-       * src/preproc/html/pre-html.cpp (get_image_generator):
-       Type-qualify `keyword_len` as `const` to encourage the compiler
-       to compute this value (the length of a string literal) at build
-       time.
-
-2021-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Slightly refactor.
-
-       * src/roff/troff/node.cpp: Add static `image_filename_len` to
-       store length of cached image file name, so we don't wastefully
-       recompute its length every time one is re-used.
-       (suppress_node::tprint): Compute image file name length only
-       when saving a new image file name.  Use saved length in later
-       expressions.
-       (min): Drop unused inline function.
-
-2021-07-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Fix regression (breaking important pdfmark/pdfroff
-       features) caused by my commit
-       e876d4bfd193abb9a7d1fb6e76519349bded482a, 27 July.  An empty
-       image file name is in fact semantically valid when writing a
-       bounding box; pdfmark uses such boxes to frame hyperlinks.
-       Avoid null pointer dereference by initializing `image_filename`
-       to an empty string literal.  Thanks to Tadziu Hoffman and Keith
-       Marshall for their patient explanations.
-
-2021-07-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Refactor some internal functions.
-
-       * src/roff/troff/node.cpp: Rename two functions that have only
-       one caller.
-         - get_reg_int -> get_register
-         - get_reg_str -> get_string
-       We now have:
-       (get_register, get_string): Use `assert()` aggressively because
-       these are deeply internal and validation is imperative.  Get rid
-       of diagnostic messages (one of which perpetuated the dubious
-       "number register" nomenclature) accordingly.
-       (fetch_register): Also rename `prev_value`, misleadingly
-       specific and seemingly copy-and-pasted out of a context where an
-       auto-increment or -decrement might have been applied.  It's just
-       the `value`.
-       (suppress_node::tprint): Update call site.
-
-2021-07-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Refactor `get_value` member functions.  Given their
-       names and popular "getter/setter" paradigms from many OO
-       languages, the return type is misleading.  Change it from `int`
-       to `bool` since it returns only a success/failure status and
-       modifies an argument (passed by reference) to deliver the
-       requested data.
-
-       * src/roff/troff/reg.h (reg, variable_reg):
-       * src/roff/troff/div.cpp (page_offset_reg, page_length_reg)
-       (vertical_position_reg, high_water_mark_reg)
-       (distance_to_next_trap_reg, page_number_reg, no_space_mode_reg):
-       * src/roff/troff/env.cpp (int_env_reg, vunits_env_reg)
-       (hunits_env_reg, horizontal_place_reg):
-       * src/roff/troff/input.cpp (writable_lineno_reg):
-       * src/roff/troff/reg.cpp (reg, number_reg, variable_reg): Update
-       class and member function definitions to reflect the new type.
-       Update member function definitions to return appropriate Boolean
-       literals instead of 0 and 1.
-
-2021-07-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Fix Savannah #60981.  Refactor device description
-       file handling and make it more robust.  Make pre-grohtml's
-       -F option work as documented and honor device description file
-       semantics documented in groff_font(5).
-
-       * src/preproc/html/pre-html.cpp: Store partial filespecs of HTML
-       and PostScript device files in constant strings.
-       (get_resolution): Initialize `res` to zero.  Only `free()` the
-       pointer `pathp` if `open_file()` succeeded (populating it).
-       Stop checking for valid `sscanf()` conversions of an integer to
-       store in `res`, and don't return early.  Instead process the
-       whole DESC file; per our Texinfo manual and groff_font(5),
-       "Later entries in the file ... override previous values."
-       (get_image_generator): Add new function, paralleling
-       `get_resolution()`, replacing open-coded logic in `main()`.
-       Only the body of the `while` loop significantly differs.
-       Instead of using `sscanf`, process the input character by
-       character matching the keyword and {1,} spaces or tabs
-       after it.  Whatever follows in `linebuf` must be the program
-       name.
-       (imageList::createPage): Add `assert()` to cause failure if an
-       empty image generator program gets this far, because it creates
-       repeated messes if it does.  (Something isn't checking exit
-       statuses.)
-       (main): Condense `image_gen` collection to a function call, a
-       null pointer check, and a fatal diagnostic.  Add a sanity check
-       and a fatal diagnostic if the PostScript resolution is garbage.
-       {It's initialized to -1 and `get_resolution()` will return 0 if
-       it doesn't find one.}
-
-       Fixes <https://savannah.gnu.org/bugs/?60981>.
-
-2021-07-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Delete or rename `debug` symbols to avoid clash with
-       new `debug` function in libgroff.
-
-       * src/preproc/html/pre-html.cpp: Update a comment to refer to
-       "debugging" mode.  Rename static global from `debug` to
-       `debugging`.
-       (html_system, imageList::createPage, imageList::createImage,
-       print_args, char_buffer::do_html, char_buffer::do_image,
-       scanArguments): Update uses of static global.
-
-       * src/preproc/html/pushback.cpp:
-       * src/preproc/html/pushback.h: Delete unused `debug` member
-       variable.
-
-2021-07-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/nroff/nroff.sh: Fix straggling use of `$1`, which
-       might not have a clear meaning in some shells after being
-       shifted (what if we just shifted the last argument?).  Also
-       `continue` after processing a (groff) option argument, as we
-       should make no attempt to parse it.
-
-2021-07-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_suppress): Recast diagnostic
-       messages for clarity, to communicate in terms of what the
-       escape sequence _is_, and to quote literals expected as input.
-       * src/roff/troff/node.cpp (suppress_node::tprint): Recast
-       diagnostic to prevent misinterpretation of image "description"
-       as being HTML IMG tag alt text or something like that.
-       Unfortunately, the new language speaks in terms of internal
-       implementation details ("grohtml-info"), but at least that way
-       it's easier for a user to decide if they care about it.
-
-2021-07-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Avoid using sprintf() with user-controlled format
-       string.
-
-       * src/preproc/html/pre-html.cpp (makeFileName): Add comment
-       noting need for implementation synchrony between this function,
-       which generates \O5 escape sequences, and troff's
-       suppress_node::tprint member function, which interprets them.
-       * src/roff/troff/node.cpp: Rename 2 static globals for clarity.
-         - `last_image_filename` -> `image_filename`
-         - `last_image_id` -> `subimage_counter`
-       (suppress_node::tprint): Set up the buffer for image file name
-       to be written using a constant rather than an embedded literal.
-       Unconditionally initialize the buffer with a string terminator,
-       so there is no chance of a read from uninitialized storage.
-       Drop unused code involving `tem`.  Drop stale comments.  Clarify
-       comment: an `image_filename` doesn't _always_ contain a format
-       string, only sometimes.  Replace use of `sprintf` with manual
-       construction of a new image filename string.  There are two
-       cases, one where a format string {presently "%d"} is present,
-       and one where it is not.  If it is present, locate it
-       {`percent`}.  This means a limited/bounded image ("subimage") is
-       being processed; increment the subimage counter.  Write a new
-       image file name preserving the parts before and after "%d" (the
-       "prefix" and "suffix", and replacing only the middle, using
-       `sprintf` with the subimage counter and the (string literal)
-       format.  Be mindful of string bounds and memory allocation,
-       issuing diagnostics or aborting as necessary.  If the image file
-       name does _not_ contain a format string, but needs only to be
-       copied, do that (`strcpy`), again instead of using `sprintf`.
-
-       Fixes <https://savannah.gnu.org/bugs/?60977>.
-
-2021-07-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Fix Savannah #60971.
-
-       * src/preproc/html/pre-html.cpp (makeFileName): Consistently put
-       a dash at the end of `macroset_template` whether the image file
-       name stem is user-supplied or the default.  Stop adding the dash
-       before the image number in `image_template` instead.  This makes
-       the image file name format reliable whether the image needs to
-       be subdivided (eqn) or not (tbl).
-
-       Fixes <https://savannah.gnu.org/bugs/?60971>.
-
-2021-07-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Reduce noise to standard error stream.
-
-       * src/preproc/html/pre-html.cpp (imageList::createImage): Fix
-       apparent oversight: `EXE_EXT` was not being applied to the
-       second of three commands being run in a pipeline (did Windows
-       users notice?).  Also issue (undocumented!) `-quiet` option to
-       `pnmtopng` to shut up its commentary about counting colors.
-
-2021-07-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Stop discarding standard error output.
-
-       * src/preproc/html/pre-html.cpp (html_system): Stop sending the
-       standard error stream to /dev/null; this just makes debugging
-       harder, and doesn't produce much more output for well-formed
-       input documents.  Rename `save_stdout` to `saved_stdout`.
-
-2021-07-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Fix misspelled variable.
-
-       * src/preproc/html/pre-html.cpp: Rename `IMAGE_BOARDER_PIXELS`
-       to `IMAGE_BORDER_PIXELS`.
-
-2021-07-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [libgroff, troff]: Add debug diagnostic level.
-
-       * src/include/error.h: Declare functions
-       `debug_with_file_and_line` and `debug`.
-       * src/libs/libgroff/error.cpp: Add `DEBUG` to enum `error_type`.
-       (do_error_with_file_and_line): Add case for `DEBUG` in switch.
-       (debug, debug_with_file_and_line): Add new functions.
-
-       Do the same for troff since it has a private implementation of
-       the diagnostic functions (thanks to `output_warning()`).
-
-       * src/roff/troff/input.cpp: Add `DEBUG` to enum `error_type`.
-       (do_error_with_file_and_line): Add case for `DEBUG` in switch.
-       (debug, debug_with_file_and_line): Add new functions.
-
-2021-07-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/hpftodit/hpftodit.cpp (hp_msl_to_ucode_name)
-       (unicode_to_ucode_name): Hush "format nonliteral" compiler
-       warnings by using a preprocessor-defined string literal as an
-       sprintf() format string instead of a C++ variable that just
-       compared identically to the same thing.
-
-2021-07-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/hpftodit/hpftodit.cpp (show_symset): Prevent
-       sprintf() from overunning a static buffer.  Thanks to Bjarni
-       Ingi Gislason for the report.  Resize buffer to be large enough
-       to accommodate a 64-bit unsigned int type formatted as decimal.
-       Also add assert() before the sprintf() to abort if the int type
-       is even larger than that.  Use "%u" conversion instead of "%d"
-       since the quantity is unsigned.
-       (hp_msl_to_ucode_name): Similar, but for a signed int.
-       (unicode_to_ucode_name): Similar, but for a signed int formatted
-       as (unsigned) hexadecimal.
-
-       Fixes <https://savannah.gnu.org/bugs/?60964>.
-
-2021-07-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/nroff/nroff.sh: Refactor, mostly by relocation.  Move
-       locale character set inference logic so that we only run it if
-       we have to (`-T` option was invalid or not given and
-       `GROFF_TYPESETTER` was not set in the environment or invalid).
-       Initialize `T` variable as empty.
-
-2021-07-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/nroff/nroff.sh: Use Version 7 Unix sh-compatible form
-       of parameter expansion; per the GNU Autoconf manual[1], "[o]ld
-       BSD shells, including the Ultrix sh, don't accept the colon for
-       any shell substitution, and complain and die."  This is also the
-       form of such substitutions used elsewhere in the script, so they
-       should be mutually consistent.
-
-       [1] https://www.gnu.org/software/autoconf/manual/autoconf-2.60/\
-       html_node/Shell-Substitutions.html
-
-2021-07-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/nroff/nroff.sh: Slightly refactor.  Rename formerly
-       unused loop index variable from `i` to `arg` to leverage it in a
-       later diagnostic message without a separate definition.  Inside
-       the loop, expand `arg` instead of positional parameter 1, the
-       meaning of which is less obvious after the parameter list is
-       shifted by the new `is_option_argument_pending` logic (commit
-       2b955c57, 20 July).
-
-2021-07-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.1.man (Options) <-S>: Fix error: `-S`
-       sets safer mode (redundantly) but is not passed to pic and troff
-       as was claimed.
-
-2021-07-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/number.cpp (parse_term): Tweak diagnostic
-       messages.  When a left operand to a binary operator is empty,
-       report the operator in question (helpful for string
-       interpolations in complex expressions).  When handling input
-       scaling indicators, drop word "this" from "this context", since
-       the parser's context might not be clear from a file name and
-       line number.  Say "scaling indicator" instead of "scale
-       indicator".
-       (parse_expr, parse_term): Rename function parameter from
-       `scale_indicator` to `scaling_indicator`.
-
-2021-07-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (define_color): Tweak warning
-       diagnostics for clarity.  Only one value is expected when
-       defining a color in the `gray` color space.  Quote recognized
-       color space names when complaining of an unknown one.
-
-2021-07-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [nroff]: Pass a supplied `-c` option to groff.  While at present
-       this does little more than `-P-c` already achieves, that might
-       not be true forever.  Further, there is a distinction between
-       ignoring color-related requests in groff input documents and
-       ignoring color-related commands in device-independent output.
-       This distinction would make it unwise to adapt `-c` to any other
-       purpose in nroff in the future.
-
-       * NEWS: Update item from commit dd725dce, 10 February 2020.
-       * src/roff/nroff/nroff.sh: Pass `-c` option to groff in addition
-       to synthesizing a `-P-c` option (for grotty) when it is seen.
-       * src/roff/nroff/nroff.1.man (Options): Document `-c` as an
-       option recognized by troff(1).
-
-2021-07-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [nroff]: Support space between option flags and their arguments.
-
-       * src/roff/nroff/nroff.sh: Add new `is_option_argument_pending`
-       flag to add an additional state to the option parser.  Set it if
-       an argument-requiring option is encountered with no abutting
-       argument.  If it is set when a new argument is encountered,
-       absorb the argument into the groff option list and clear the
-       flag.  Modernize script in a couple of other ways.
-         - Exit with status 2 upon usage errors so that this condition
-           is easily distinguished from a groff abort (which exits with
-           status 1).
-         - Test shell variables for non-nullity with test(1) -n
-           operator instead of a string comparison.
-       * src/roff/nroff/tests/verbose_option_works.sh: Test correct
-       construction of groff command using this input form.
-       * src/roff/nroff/nroff.1.man (Options): Add spaces between
-       option flags and option arguments.  Sync metasyntactic variable
-       names with groff(1) while we're at it.
-       (Description): Drop sentence warning of whitespace prohibition.
-       (Exit status): Add new section.
-
-       Fixes <https://savannah.gnu.org/bugs/?60943>.
-
-2021-07-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (main): Emit error diagnostic if `-d`
-       or `-r` option is given a malformed argument.  This prevents a
-       string or register with an empty name from being created.
-
-       Fixes <https://savannah.gnu.org/bugs/?60935>.
-
-2021-07-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/nroff/nroff.sh:
-       * src/roff/troff/input.cpp (usage): Use "dev" as metasyntactic
-       variable name for -T option argument to achieve consistency with
-       our other documentation.
-
-2021-07-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [groff]: Comment out vestiges of gideal support.  It would be
-       lovely to have, but no free (and GPL-compatible) implementation
-       has showed up after decades of waiting.  Production of the
-       original was a Ph.D. thesis.  Excited by de Moivre's theorem?
-       Take a stab at it.
-
-       * src/roff/groff/groff.cpp (main): Comment out effect of `-J`
-       option.  It remains recognized, but silently ignored (instead of
-       attempting to execute a nonexistent preprocessor).
-       (synopsis): Add comment reminding us to document the option if
-       we ever get the support.
-       (help): Comment out documentation of option.
-
-2021-07-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [[gnt]roff]: Make usage messages more accurate.
-
-       * src/roff/groff/groff.cpp (synopsis): Drop `-h` and `-v` from
-       normal operation synopsis.  Sort options in en_US lexicographic
-       order.  Tighten presentation of alternate usage forms.
-       (help): Document longer forms of `-d` and `-r`.
-       * src/roff/nroff/nroff.sh: Report `$prog` instead of "nroff"
-       literal.  Refer to `-P` option argument as "arg" instead of
-       "opt", for consistency with groff usage message.  Use opposite
-       case from option letter for option argument.
-       * src/roff/troff/input.cpp (usage): Put brackets around options.
-       Sort options in en_US lexicographic order.  Drop `-v` from
-       normal operation synopsis.  Use opposite case from option letter
-       for option argument.  Put operand name in capitals.  Set valid
-       usage forms on one physical line each (see 89648fb4, 5 June).
-       Add synopsis line for alternate usage forms.
-
-2021-07-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Refactor environment initialization, switching, and
-       copying.
-
-       * src/roff/troff/env.cpp: Rename struct `env_list` to
-       `env_list_node` since it describes a node of a singly-linked
-       list.  Remove constant `NENVIRONMENTS` and array `env_table`.
-       Add static symbol `default_environment_name` to replace string
-       literal.
-       (init_environments): Stop initializing `curenv` through
-       `env_table`.  Use `default_environment_name` for that
-       initialization and add the default environment to
-       `env_dictionary`.
-       (environment_switch): Simplify.  Shorten "dummy environment"
-       diagnostic message.  Stop creating an integer-named
-       environment inside the `env_table` array, only falling through
-       to use the `env_dictionary` if the named environment is not a
-       valid integer or if the array is full.  Instead use
-       `env_dictionary` always.  Drop no longer needed `pop`
-       quasi-Boolean integer with extra state to suppress environment
-       stack underflow errors.  Instead report the error if underflow
-       occurs, regardless of any other circumstance.
-       (environment_copy): Simplify.  Stop searching the `env_table`
-       array for an environment to copy from, only falling through to
-       use the `env_dictionary` if the named environment is not a valid
-       integer or if the array is full.  Instead search
-       `env_dictionary` always.  Emit "no environment specified to copy
-       from" diagnostic only if the `evc` request is given no argument.
-       If the source environment to copy from is given but not found,
-       emit a new diagnostic naming the nonexistent environment.  Fix
-       bug: stop returning early if no copying could be done; instead
-       fall through to the end of the function, which calls
-       `skip_line()` and prevents anything on the remainder of the
-       {invalid} control line from being interpreted.  Problem dates
-       back to commit da3b7137, 6 March 2000 (groff 1.16).
-
-       Fixes <https://savannah.gnu.org/bugs/?60913>.
-
-2021-07-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/evc_produces_no_output_if_invalid.sh:
-         Regression-test Savannah #60913.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2021-07-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Update English hyphenation patterns.
-
-       * NEWS: Add item.
-       * tmac/hyphen.en: Update file using `hyph-en-us.tex` patterns
-       file from the TeX hyph-utf8 project.
-       * tmac/hyphenex.en: Remove explicit hyphenations for words that
-       no longer require them when using the new patterns.  Add one
-       item scraped from an erratum comment in hyphen.en
-       {"dem-o-crat"}.
-
-       The new patterns likely _will_ change the automatic hyphenation
-       break points of your English documents.  Here is a sample of
-       affected words found within groff's own documentary corpus.
-
-       OLD                     NEW
-       ===                     ===
-       ar‐range‐ment           arrange‐ment
-       col‐umns                columns
-       con‐struc‐ted           con‐structed
-       cus‐tom‐ized            cus‐tomized
-       def‐i‐ni‐tions          de‐f‐i‐n‐i‐tions
-       der‐i‐va‐tions          de‐riva‐tions
-       hy‐phen‐a‐tion          hy‐phen‐ation
-       ma‐te‐rial              ma‐te‐r‐ial
-       Mi‐cro‐soft             Mi‐crosoft
-       pipe‐lines              pipelines
-       post‐pro‐ces‐sors       post‐proces‐sors
-       pro‐cessed              processed
-       pro‐cesses              processes
-       spa‐ces                 spaces
-       Wer‐ner                 Werner
-
-2021-07-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Add unit test for `substring` request.
-
-       * src/roff/groff/tests/substring_works.sh: Do it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2021-07-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Remove compatibility mode save registers after using
-       them.
-
-       * tmac/an.tmac:
-       * tmac/andoc.tmac:
-       * tmac/cp1047.tmac:
-       * tmac/devtag.tmac:
-       * tmac/ec.tmac:
-       * tmac/fallbacks.tmac:
-       * tmac/latin1.tmac:
-       * tmac/latin2.tmac:
-       * tmac/latin5.tmac:
-       * tmac/latin9.tmac:
-       * tmac/papersize.tmac:
-       * tmac/pdfpic.tmac:
-       * tmac/psold.tmac:
-       * tmac/pspic.tmac:
-       * tmac/trace.tmac:
-       * tmac/unicode.tmac: Do it.
-
-       * doc/groff.texi (Implementation Differences):
-       * man/groff_diff.7.man (Implementation Differences): Illustrate
-       doing so in relevant examples.
-
-2021-07-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/troffrc: Load the English localization file `en.tmac` by
-       default, instead of dealing with hyphenation language and
-       patterns directly in this file.  (This also replaces a
-       localization-determination mechanism that was never part of a
-       groff release.)
-
-       * src/roff/groff/tests/initialization_is_quiet.sh:
-       * src/roff/groff/tests/localization_works.sh: Rewrite to use
-       explicit macro file loading localization mechanism.
-
-2021-07-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Move core man(7) implementation to an.tmac.
-
-       * tmac/an.tmac: Delete andoc-sourcing wrapper.
-
-       * tmac/an-old.tmac: Rename...
-       * tmac/an.tmac: ...to this.
-
-       * tmac/tests/an-old_AT-and-UC-footer-saved-and-restored.sh:
-       * tmac/tests/an-old_CS-register-off.sh:
-       * tmac/tests/an-old_CS-register-on.sh:
-       * tmac/tests/an-old_CS-register-unspecified.sh:
-       * tmac/tests/an-old_CT-register-off.sh:
-       * tmac/tests/an-old_CT-register-on.sh:
-       * tmac/tests/an-old_CT-register-unspecified.sh:
-       * tmac/tests/an-old_FT-bad-value-should-not-trash-titles.sh:
-       * tmac/tests/an-old_LL-init-sanely.sh:
-       * tmac/tests/an-old_TH-repairs-ad-damage.sh:
-       * tmac/tests/an-old_TH-repairs-hy-damage.sh:
-       * tmac/tests/an-old_TS-do-not-keep-tables-when-cR-set.sh:
-       * tmac/tests/an-old_X-register-works.sh:
-       * tmac/tests/an-old_avoid-two-font-denial-of-service.sh:
-       * tmac/tests/an-old_no-break-after-short-paragraph-tags.sh:
-       * tmac/tests/an-old_page-footers-present.sh:
-       * tmac/tests/an-old_page-header-has-current-data.sh:
-       * tmac/tests/an-old_title-abbreviation-works.sh: Rename...
-
-       * tmac/tests/an_AT-and-UC-footer-saved-and-restored.sh:
-       * tmac/tests/an_CS-register-off.sh:
-       * tmac/tests/an_CS-register-on.sh:
-       * tmac/tests/an_CS-register-unspecified.sh:
-       * tmac/tests/an_CT-register-off.sh:
-       * tmac/tests/an_CT-register-on.sh:
-       * tmac/tests/an_CT-register-unspecified.sh:
-       * tmac/tests/an_FT-bad-value-should-not-trash-titles.sh:
-       * tmac/tests/an_LL-init-sanely.sh:
-       * tmac/tests/an_TH-repairs-ad-damage.sh:
-       * tmac/tests/an_TH-repairs-hy-damage.sh:
-       * tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh:
-       * tmac/tests/an_X-register-works.sh:
-       * tmac/tests/an_avoid-two-font-denial-of-service.sh:
-       * tmac/tests/an_no-break-after-short-paragraph-tags.sh:
-       * tmac/tests/an_page-footers-present.sh:
-       * tmac/tests/an_page-header-has-current-data.sh:
-       * tmac/tests/an_title-abbreviation-works.sh: ...to these.
-
-       * tmac/tmac.am (TMACNORMALFILES): Remove an-old.tmac.
-       (tmac_TESTS): Reflect renames of test files above.
-       (tmac/stamp-wrap): Macro-source `an.tmac` in the man wrapper.
-
-       * tmac/andoc.tmac: Refer to (and macro-source) an.tmac.
-       * tmac/man.tmac: Macro-source `an.tmac`, not `andoc.tmac`.
-       * tmac/tests/andoc_flush-between-packages.sh: Call groff with
-       `-mandoc` option instead of `-man`.  Henceforth, if you want the
-       andoc wrapper, you have to ask for it.
-
-       * tmac/an.tmac: Drop "-old" nomenclature.
-
-       * PROBLEMS:
-       * doc/groff.texi (man):
-       * tmac/man.local: Update documentation appropriately.
-
-       * NEWS: Add item.
-
-       * man/groff_tmac.5.man (Macro packages/man pages):
-       * src/roff/groff/groff.1.man (Usage/Macro packages): Update
-       discussion of an, doc, and andoc.
-       * tmac/groff_man.7.man.in (Files): Update descriptions of
-       an.tmac, andoc.tmac, man.tmac, and mandoc.tmac.
-
-       Fixes <https://savannah.gnu.org/bugs/?60789>.
-
-2021-07-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Slightly refactor.  Make the source code slightly more
-       accessible by using a `bool` type for a function's default
-       parameter used as a Boolean, and comment it at call sites where
-       the default is overridden.
-
-       * src/roff/troff/token.h (get_name, get_long_name): Change type
-       of parameter from `int` to `bool` and default from 0 to `false`.
-       * src/roff/troff/input.cpp (do_get_long_name)
-       (empty_name_warning, get_name, get_long_name): Change type of
-       parameter from `int` to `bool` in declarations and definitions.
-       * src/roff/troff/column.cpp (column_justify):
-       * src/roff/troff/div.cpp (diversion_trap):
-       * src/roff/troff/env.cpp (environment_switch, environment_copy)
-       (do_input_trap, set_hyphenation_language)
-       (do_hyphenation_patterns_file):
-       * src/roff/troff/input.cpp (define_color, composite_request)
-       (do_define_string, do_define_macro, rename_macro, alias_macro)
-       (chop_macro, do_string_case_transform, substring_request)
-       (length_request, asciify_macro, unformat_macro, do_register)
-       (device_macro_request, do_if_request, do_source)
-       (ps_bbox_request, do_open, close_request, do_write_request)
-       (write_macro_request, define_class, copy_file, vjustify)
-       (transparent_file, do_macro_source):
-       * src/roff/troff/node.cpp (font_translate, font_position, style)
-       (get_fontno):
-       * src/roff/troff/reg.cpp (define_number_reg, inline_define_reg)
-       (alter_format, alias_reg, rename_reg): Update call sites.  Add
-       (comment indicating meaning of parameter.
-
-       Do similarly for token::delimiter() member function.
-
-       * src/roff/troff/token.h (token::delimiter): Change type of
-       parameter from `int` to `bool`, name from `warn` to `err` (to
-       match definition and behavior in input.cpp) and default from 0
-       to `false`.
-       * src/roff/troff/input.cpp (token::delimiter): Change type of
-       parameter from `int` to `bool` in definition.
-       * src/roff/troff/input.cpp (do_expr_test, get_delim_number)
-       (get_line_arg, read_size, do_register, read_draw_node):
-       * src/roff/troff/reg.cpp (inline_define_reg): Update call sites.
-       Add comment indicating meaning of parameter.
-
-2021-07-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-footer): Remove string
-       `an-outer-footer-text` after we're done with it.
-
-2021-07-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Remove the stripper script and its vestiges.
-
-       * contrib/hdtbl/hdmisc.tmac:
-       * contrib/hdtbl/hdtbl.tmac:
-       * contrib/mom/om.tmac:
-       * tmac/doc.tmac:
-       * tmac/e.tmac:
-       * tmac/mdoc/doc-common:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff:
-       * tmac/mdoc/doc-syms: Remove `%beginstrip` comment.
-
-       * tmac/strip.sed: Delete.
-
-       * tmac/tmac.am (EXTRA_DIST): Stop shipping `strip.sed`.
-
-       Fixes <https://savannah.gnu.org/bugs/?55091>.
-
-2021-07-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Skip the stripper, part 3/3 (mdoc).
-
-       * tmac/doc-old.tmac-u:
-       * tmac/doc.tmac-u:
-       * tmac/mdoc/doc-common-u:
-       * tmac/mdoc/doc-ditroff-u:
-       * tmac/mdoc/doc-nroff-u:
-       * tmac/mdoc/doc-syms-u: Rename these...
-
-       * tmac/doc-old.tmac:
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-common:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff:
-       * tmac/mdoc/doc-syms: ...to these.
-
-       * tmac/tmac.am (TMACNORMALFILES): Add `doc-old.tmac` and
-       `doc.tmac`.
-       (TMACUNSTRIPFILES, TMACSTRIPFILES): Delete variables.
-       (dist_tmac_DATA): Drop `$(TMACUNSTRIPFILES)`.
-       (nodist_tmac_DATA): Drop `$(TMACSTRIPFILES)`.
-       (TMACMDOCSTRIPFILES): Rename...
-       (TMACMDOCFILES): ...to this.
-       (nodist_mdoc_DATA, MOSTLYCLEANFILES): Reflect above rename.
-       (nodist_mdoc_DATA): Rename...
-       (dist_mdoc_DATA): ...to this.
-       (TMACMDOCUNSTRIPFILES): Delete variable.
-       (EXTRA_DIST): Drop `$(TMACMDOCUNSTRIPFILES)`.
-       ($(TMACSTRIPFILES), $(TMACMDOCSTRIPFILES)): Drop targets.
-
-       The portions above are based on a patch by Ingo Schwarze.
-
-       * tmac/doc.tmac:
-       * tmac/mdoc/doc-common:
-       * tmac/mdoc/doc-ditroff:
-       * tmac/mdoc/doc-nroff:
-       * tmac/mdoc/doc-syms: Bracket macro definitions tightly with
-       `eo` and `ec` requests since they were written under this
-       assumption.  The files in general were also drafted under the
-       assumption that they'd be stripped, so `eo` was in effect for
-       broad swaths of the file including portions outside of any macro
-       definition where comments were used.  But comments are expressed
-       using the escape character!  So we got warnings about an
-       undefined '\"' macro, and that was just the beginning of a
-       wrecking ball of trouble that smashed through the
-       implementation.  Some--but not all--string definitions (and
-       appendments) needed to be bracketed with `eo` and `ec` as well,
-       to delay interpolation of embedded string names that are not
-       defined until macros interpolate them later.  I did what
-       appeared necessary to pass our tests and keep -Tutf8 and -Tps
-       renderings of tmac/groff_mdoc.7 from changing from their
-       strip-influenced output.  Subtle bugs might linger, but some
-       won't be the fault of the unstripping process.  (For instance,
-       try provoking a usage message on the `Hf` macro.)
-
-2021-07-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man pages]: Remove compatibility save register.
-
-       * **/*.man*: Remove page-local compatibility save register after
-       using it.
-
-2021-07-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Simplify `mso` requests.
-
-       * tmac/X.tmac:
-       * tmac/Xps.tmac:
-       * tmac/dvi.tmac:
-       * tmac/html.tmac:
-       * tmac/lbp.tmac:
-       * tmac/lj4.tmac:
-       * tmac/ps.tmac:
-       * tmac/tty-char.tmac:
-       * tmac/tty.tmac:
-       * tmac/www.tmac.in: Move `mso` requests to be inside regions
-       where compatibility mode is turned off.  I believe they were
-       placed where they were because things didn't work when the
-       compatibility mode register being saved was .C, rather than the
-       .cp register introduced in commit 6a37bb5f, 17 April 2020.  Now
-       the logic is less mysterious.  Also, remove the register used to
-       save compatibility mode after we're done with it, to reduce name
-       space clutter.
-
-2021-07-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/it.tmac: Drop sourcing of `latin1.tmac` and set up of
-       hyphenation codes; since the `hyphen.it` file is pure ASCII, we
-       don't need to expect Latin-1-encoded code points in it.
-
-2021-07-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Make localization files work in compatibility mode.
-
-       * tmac/cs.tmac:
-       * tmac/de.tmac:
-       * tmac/en.tmac:
-       * tmac/fr.tmac:
-       * tmac/it.tmac:
-       * tmac/ja.tmac:
-       * tmac/sv.tmac:
-       * tmac/zh.tmac: Save and restore compatibility mode.
-
-       * tmac/den.tmac: Invoke requests with `do`.
-
-       Fixes <https://savannah.gnu.org/bugs/?60874>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2021-07-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #60874.
-
-       * src/roff/groff/tests/initialization_is_quiet.sh: Test it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2021-07-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Integrate Italian localization.
-
-       * NEWS: Add item.  Update an existing list of localization macro
-       files.
-       * doc/groff.texi (Manipulating Hyphenation):  Update table of
-       hyphenation pattern left and right minimums and list of
-       available localization files to include Italian.
-       * man/groff_tmac.5.man: Update list of available localization
-       files to include Italian.
-       * src/roff/groff/tests/localization_works.sh: Test it.
-       * tmac/tmac.am (TMACNORMALFILES): Add `it.tmac` and `hyphen.it`.
-
-       Fixes <https://savannah.gnu.org/bugs/?60828>.
-
-2021-07-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Flesh out Italian localization.
-
-       * tmac/hyphen.it: Add hyphenation patterns from TeX hyph-utf8
-       project.
-       * tmac/it.tmac:
-         - Revise copyright date to just this year (it had been copied
-           from fr.tmac).
-         - Use grave accents instead of acute ones to indicate stress
-           on word-final vowels.  Per the University of Wikipedia and a
-           sampling of apparently well-typeset Italian language
-           documents online, this appears to be correct.  Yell at me if
-           I'm wrong.
-         - Source latin1.tmac instead of latin9.tmac; Italian doesn't
-           require any letter code points from Latin-9, unlike the
-           French file upon which this one was based, and Latin-1 is
-           less of a pain to work with.
-         - Set the hyphenation mode to 1 instead of 4 for congruence
-           with the requirements of the hyphenation patterns.
-         - Set up hyphenation codes.  This (and sourcing latin1.tmac)
-           might not be necessary as the hyphenation pattern file, of a
-           more recent vintage than the others we're using, is pure
-           ASCII.  However I don't understand these issues perfectly so
-           I am making the conservative choice.  Again per the
-           University of Wikipedia, Italian requires only acute and
-           grave accents, in contrast to the rich French diacritical
-           bouillabaisse.
-         - Set the hyphenation language and load the pattern file.
-         - Add comments in parallel with other localization files and
-           to supply text editors with hints.
-
-2021-07-02  Edmond Orignac <edmond.orignac@wanadoo.fr>
-
-       * tmac/it.tmac: Add Italian localization.
-
-2021-07-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Skip the stripper, part 1/3 ("me").
-
-       * tmac/e.tmac-u: Rename to...
-       * tmac/e.tmac: ...this.
-
-       * tmac/tmac.am (TMACNORMALFILES): Add tmac/e.tmac.
-       (TMACUNSTRIPFILES): Remove tmac/e.tmac-u.
-       (TMACSTRIPFILES): Remove tmac/e.tmac.
-
-       Fixes one third of <https://savannah.gnu.org/bugs/?55091>.
-
-2021-07-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl: Simplify parsing.  Dave Kemper pointed
-       out that preprocessors like pic(1) use pretty unsophisticated
-       *roff parsing to determine where to perform their textual
-       replacements.  My enhancements to support input line
-       continuation and cope with brace escapes were thus
-       overengineered.  Remove them.
-         - Drop scalars `is_continued_line` and `logical_line`.
-         (do_line): Stop performing logical line concatenation and
-         detecting input line continuation.  Perform operations on
-         `line` instead of `logical_line`.  Stop removing brace
-         escapes.
-       * src/utils/grog/grog.1.man (Limitations): Update discussion.
-
-       Fixes <https://savannah.gnu.org/bugs/?60862>.  Thanks, Dave!
-
-2021-06-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/reg.cpp (lookup_number_reg, alias_reg): In
-       diagnostic messages, say simply "register" instead of "number
-       register" (there is no other kind).
-
-2021-06-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Refactor input parsing.
-
-       * src/utils/grog/grog.pl:
-         - Add scalar `use_compatibility_mode` (see below).
-         - Add list `request` to store the names of all requests
-           recognized by groff so that they aren't confused with macro
-           names.
-         - Add scalars `have_seen_first_macro_call` (replaces
-           `before_first_command`, but at global scope),
-           `is_continued_line` and `logical_line`.  The latter two
-           enable us to handle *roff input line continuation correctly.
-         (process_arguments): Set `use_compatibility_mode` if `-C`
-         option specified.
-         (process_input): Refactor to greatly simplify, to not attempt
-         to read the first line of an input file as a special case, and
-         to avoid sending `do_line` an undefined argument (when EOF is
-         reached).
-         (do_first_line): Delete.
-         (do_line): Rewrite the early stages of input parsing.
-         - Concatenate continued input lines, setting
-           `is_continued_line` and returning early as each one is seen,
-           storing the accumulating input in `logical_line`.
-         - Check the input line for the form of comment deposited by
-           Perl's Pod::Man, which uses a highly accented dialect of
-           man(7); if it's present, inflate `man_score` to compensate
-           for the page-private `IX` macro it defines but which
-           duplicates the name and function of a 4.2BSD-era ms(7)
-           extension that would otherwise deceive our scoring
-           mechanism, because Pod::Man produces `IX` calls to
-           metastatic excess.  (An alternative to this kludge is
-           documented in comments: if a "standard" macro is redefined,
-           we could delete it from the relevant lists and hashes.)
-         - Strip *roff comments from input.
-         - Normalize control lines; convert the no-break control
-           character to the regular one and remove unnecessary
-           white space.
-         - Remove brace escapes.
-         - Recognize two-character macro calls when not followed by
-           white space in compatibility mode.
-         - Drop logic that erroneously attempted to infer soelim(1) use
-           from macro calls and request invocations.  The grog(1) and
-           soelim(1) man pages now both explain why such an effort was
-           misguided.
-         - Recognize macro definitions created by .am and .am1 requests
-           {not just .de and .de1}.
-         - Ignore all other *roff requests.
-         - What remains must be a ("standard") macro call, so set
-           `have_seen_first_macro_call`.
-
-       * src/utils/grog/grog.1.man (Limitations): Document a further
-       restriction: don't change the escape character, either.
-
-       * src/utils/grog/tests/smoke-test.sh: Comment out pic-detection
-       test on soelim(1).  The pic macro calls are guarded by roff
-       control structures and only worked previously by accident
-       because grog did not recognize *roff input line continuation,
-       now it does and the illusion is dispelled.  (A reliable way to
-       fool grog before and after my refactoring is now documented in
-       its man page.)
-
-       Fixes <https://savannah.gnu.org/bugs/?59622>.
-
-2021-06-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #59622.
-
-       * src/utils/grog/tests/recognize-perl-pod.sh: Test it.
-       * src/utils/grog/grog.am (grog_TESTS): Run test.
-
-2021-06-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.1.man (Limitations): Document further
-       restrictions (no changing of control characters, control
-       structures not interpreted).
-
-2021-06-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Refactor command-line argument handling.
-
-       * src/utils/grog/grog.pl:
-         - Drop scalars `groff_opts`, `device`, and `with_warnings`.
-         - Move scalar `pdf_with_ligatures`...
-         (process_arguments): ...here.  Recognize all groff options
-         that take an optionally whitespace-separated option argument
-         and apply the existing "delayed option" handling to them.
-         Push any groff option except `-m` as-is onto the constructed
-         groff command's argument list (`-m` handling is unchanged).
-         Match long option names exactly, not sloppily.  Stop
-         recognizing `--warnings` option.  Emit error diagnostic if
-         unrecognized long option encountered.
-         (infer_device): Delete subroutine and its top-level call site.
-         (help): Undocument `--warnings`.
-
-       * src/utils/grog/grog.1.man:
-         (Synopsis): Use font style macros instead of .OP.  Undocument
-         `--warnings`.
-         (Options): Note that the groff arguments produced by the grog
-         `--ligatures` option are supported only by the `pdf` device.
-         Undocument `--warnings`.  Undocument groff-incompatible
-         restriction on whitespace before option arguments; grog is
-         compatible now.  Simplify discussion in light of simplified
-         grog logic.
-         (Details): Undocument scenario where grog infers multiple
-         main/major/full-service macro packages; this no longer
-         happens.
-         (Examples): Update to no longer illustrate inclusion of `-T
-         ps` option; this no longer happens by default.
-
-       * NEWS: Document removal of grog's `--warnings` option.
-
-       Fixes <https://savannah.gnu.org/bugs/?57873>; groff options are
-       no longer "mangled".
-
-2021-06-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #57873.
-
-       * src/utils/grog/tests/preserve-groff-options.sh: Test it.
-       * src/utils/grog/grog.am (grog_TESTS): Run test.
-
-2021-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Refactor device (`-T` option) handling.
-
-       * src/utils/grog/grog.pl: Redeclare `device` as a scalar instead
-       of a list.
-       (process_arguments): Generalize handling of `-T` and `-m`
-       options to permit optional whitespace.  Rename scalar `was_T` to
-       `delayed_option`.
-       (infer_device): Stop unconditionally adding a `-T ps` argument
-       to the generated groff command.  Remove logic that validates any
-       given `-T` option argument; instead, let groff fail if a bad one
-       is supplied (its own diagnostics in this scenario were improved
-       in commit 5a721a30, 27 May).  This makes grog agnostic about any
-       differently configured default device in groff itself, and about
-       the GROFF_TYPESETTER environment variable.
-
-       Fixes <https://savannah.gnu.org/bugs/?55301> by getting out of
-       the way.
-
-       * src/utils/grog/tests/PF-does-not-start-pic-region.sh:
-       * src/utils/grog/tests/smoke-test.sh: Update expected output.
-
-2021-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.am (grog): Drop sed replacement of unused
-       configuration variables @g@, @BINDIR@, @libdir@, and @EGREP@.
-       * src/utils/grog/grog.pl (process_arguments, construct_command):
-       Tweak warning diagnostics to use a style where an empty argument
-       will be easy to spot.
-       (do_first_line): Stop emitting pseudo-diagnostic (to standard
-       output!) if we see a "groff options line" [it's not] of
-       incorrect form.  The preprocessor encoding hint convention of
-       concern here is particular to man pages, disregarded by at least
-       one major implementation thereof (man-db man), and not used by
-       other types of roff documents; at this point, we don't yet know
-       if the document we're processing is a man page.
-       (construct_command): Correct comment and related logic error.
-       Clear the inferred main macro package if _any_ `-m` argument
-       matching any main macro package is given.  Warn only if what is
-       specified doesn't match the inference.
-
-2021-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Heavily refactor.
-
-       * src/utils/grog/grog.pl:
-         - Drop import of unused module `Data::Dumper`.
-         - Drop unused scalars `Sp` and `correct_tmac`.
-         - Simplify determination of version number.  Drop hash `at_at`
-           which only stored one key, `GROFF_VERSION`.  Initialize
-           scalar `groff_version` to "DEVELOPMENT".  Rename scalar
-           `before_make` to `in_source_tree` and initialize to zero.
-           Update `groff_version` with Automake-determined version
-           variable if it is defined (i.e., grog is not running outside
-           of, or in an unbuilt, groff source or binary distribution).
-         - Drop unused `Mparams` list.  Replace it with new list
-           `requested_package`, which stores the arguments to any grog
-           `-m` options specified by the user.
-         - Rename many objects so that I, and others, can better
-           comprehend their purpose, and for consistent letter casing.
-           . @Command -> @command
-           . @devices -> @device
-           . $Prog -> $program_name
-           . %macros -> %user_macro
-           . $have_any_valid_args -> $have_any_valid_arguments
-           . &handle_args -> &process_arguments
-           . &handle_whole_files -> &process_input
-           . @preprograms -> @preprocessor
-           . &make_groff_device -> &infer_device
-           . &make_groff_preproc -> &infer_preprocessors
-           . &make_groff_tmac_others -> &infer_macro_packages
-           . &make_groff_tmac_man_ms -> &infer_man_or_ms_package
-           . &make_groff_line_rest -> &construct_command
-         - Drop many unused keys in `Groff` hash.
-         - Add new lists, `macro_ms`, `macro_man`, and
-           `macro_man_or_ms` to support new scoring technique to
-           disambiguate input documents between these two packages.
-         - Append the foregoing 3 lists to new list `standard_macro`,
-           and add these as keys to the `Groff` hash.
-         - Add new list `main_package` to keep track of full-service
-           package names.
-         - Add new scalars `man_score`, `ms_score`, and
-           `inside_tbl_table` to aid disambiguation of .TH macro calls
-           and the many macro names shared between man(7) and ms(7).
-         (process_arguments): Strip '-m' off of argument before storing
-         the remainder in `@requested_package`.
-         (do_line): Detect .TH macro call even if white space occurs
-         between the control character and the macro name.
-         (do_line): Inflate `$man_score` by 100 if .TH is the first
-         macro call seen in a document.
-         (do_line): Fix bug; clear `$before_first_command` in correct
-         scope--after any macro call, not just if we saw a .TH as the
-         first macro call.
-         (do_line): Set `$inside_tbl_table` when we see a .TS call.
-         (do_line): Clear `$inside_tbl_table` when we see a .TE call.
-         Also increment `$Groff{'tbl')' again, increasing the "score"
-         of tbl(1) usage evidence.
-         (do_line): Drop a lot of code that manually increments %Groff
-         keys corresponding to man and ms macros.  This is now done
-         differently and elsewhere.
-         (do_line): Drop "P" from list of characteristic mm(7) macros.
-         (do_line): Simplify matching of mom(7) macros (match $command,
-         not $line).  Extend list of characteristic mom(7) macros.
-         (do_line): Increment $Groff{$key} if $key is in
-         @standard_macro.
-         (infer_man_or_ms_package): Rewrite.  Compute a score for each
-         package by counting occurrences of their characteristic
-         macros.  If both have a score of zero, assume that the input
-         is a raw roff document.  If the scores are equal
-         {doc/webpage.ms, startlingly, comes within 1 point of a tied
-         score}, infer ms(7) if 'TH' was never called, and if it was,
-         issue a diagnostic advising user to supply a disambiguating
-         `-m` option.  Otherwise, the scores are unequal: infer the
-         package of the winner.  Set scalar `inferred_main_package`
-         instead of pushing `-m` options onto `@m`.
-         (infer_macro_packages): Set scalar `inferred_main_package`
-         instead of pushing `-m` options onto `@m`.  Explicitly return
-         0 if we fall off the end of the function.
-         (construct_command): Rewrite handling of -m options.  Add new
-         list `msupp` to store supplementary (non-main) macro package
-         arguments.  If a full-service package was explicitly
-         requested, it had better not clash with what we inferred.  If
-         it does, explicitly unset `inferred_main_package` so that the
-         -m arguments are placed in the same order that the user gave
-         them; caveat dictator.  If `--run` option was given, just
-         print the command; don't preface it with __FILE__ and __LINE__
-         noise.
-         - Remove comments documenting shared variables used by
-           subroutines.  These are far from useless but too tedious to
-           keep up to date while the code is in flux.
-         - Note several places for further code review or refactoring
-           with "XXX" comments.
-         - Add Vim modeline.
-
-       grog now passes all its tests and correctly infers arguments for
-       all in-tree groff documents (except for a known, and already
-       documented in grog(1), false positive detection of soelim in
-       soelim(1)).  This refactor also obviates or resolves several
-       outstanding Savannah tickets.
-
-       Fixes <https://savannah.gnu.org/bugs/?44707> by obviating it;
-       grog no longer cares about file name extensions on man pages (or
-       any other input).
-
-       Fixes <https://savannah.gnu.org/bugs/?55302>; same.  The quality
-       of diagnostic messages has been improved as well.
-
-       Fixes <https://savannah.gnu.org/bugs/?59753>; same.
-
-       Fixes <https://savannah.gnu.org/bugs/?59664>.  The attached
-       patch was a less aggressive refactor of &do_line and %Groff.
-       Its author made the following claim for it: "With this patch,
-       all 'man', 'me', 'mom, and 'ms' files in the repository are
-       correctly identified.  The only example of a 'mm'-file is
-       "letter.mm", which is not recognized correctly."  As noted
-       above, the present refactor achieves correct recognition of all
-       of the files, including letter.mm.
-
-2021-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/tests/smoke-test.sh: Perform whole-line
-       matches.  Apply DRY principle to expected output.  In
-       anticipation of pending changes to grog.pl, uncomment and add
-       tests for several in-tree documents.
-               doc/meref.me
-               contrib/mom/examples/copyright-chapter.mom
-               contrib/mom/examples/copyright-default.mom
-               contrib/mom/examples/letter.mom
-               contrib/mom/examples/mom-pdf.mom
-               contrib/mom/examples/mon_premier_doc.mom
-               contrib/mom/examples/sample_docs.mom
-               contrib/mom/examples/slide-demo.mom
-               contrib/mom/examples/typesetting.mom
-               doc/webpage.ms
-
-2021-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Refactor.  Discard filename extension-based inference.
-
-       * src/utils/grog/grog.pl (do_line): Stop saving the control
-       character in the matched scalar `command` (the request or macro
-       name).  We don't need it, and it simplifies much later matching.
-       (handle_file_ext): Delete.
-       (top level): Drop call site.
-
-       * src/utils/grog/grog.pl: Rename `tmac_ext` scalar to
-       `inferred_main_package`.
-
-2021-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.pl (handle_args): Complain less noisily
-       and more comprehensibly when given unrecognized groff options.
-
-2021-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Handle "--" argument as documented.
-
-       * src/utils/grog/grog.pl (handle_args): Rename scalar
-       `double_minus` to `no_more_options` so it actually communicates
-       something.  Drop openability check of operand encountered after
-       "--"; since it's on the operand list, it will be checked later
-       {in `handle_whole_files`}.  Stop pushing "--" itself onto the
-       `filespec` list.
-
-       Fixes <https://savannah.gnu.org/bugs/?60834>.
-
-2021-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Revise operand handling, diagnostics, and exit status.
-
-       * src/utils/grog/grog.pl: Track more state so that we can
-       process the argument list more intelligently and exit with a
-       meaningful status.  Add `had_inference_problem`,
-       `had_processing_problem`, and `have_any_valid_args` Boolean
-       scalars.
-       (fail): Add diagnostic subroutine for serious problems; sets
-       `had_processing_problem`.
-       (handle_args, handle_file_ext): Stop complaining here about
-       unopenable file operands.
-       (handle_whole_files): Complain only here, with `fail` if a file
-       operand cannot be opened.
-       (make_groff_line_rest): Don't exit immediately if there is a
-       macro package inference clash, because there might be more
-       operands to process.  Instead, set `had_inference_problem`.
-       Stop exiting from this subroutine.
-       (top level): Only call the inference subroutines if we had a
-       valid operand to work with (including an implicit read from
-       stdin).  Exit with a status corresponding to the Booleans
-       declared above.
-
-       * src/utils/grog/grog.1.man (Exit status): Add section; describe
-       semantics of exit status values.
-
-       Fixes <https://savannah.gnu.org/bugs/?60833>.
-
-2021-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Revise diagnostic messages.
-
-       * src/utils/grog/grog.1.man (err): Rename from this...
-       (warn): ...to this.  Prefix diagnostic with command name and
-       diagnostic severity level.  The subroutine didn't change the
-       exit status and was not used to report serious trouble, so
-       "warning" seems appropriate.
-       (make_groff_tmac_man_ms): Update call sites.  Modify diagnostic
-       wording to stop calling macros "requests".
-
-2021-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/grog.1.man (Limitations): Add subsection
-       covering the problem grog has with soelim inference.  Undocument
-       groff's -s option as one that can be inferred, because at
-       present it cannot be.
-
-       Prompted by Savannah #60421.
-
-2021-06-26  Dave Kemper <saint.snit@gmail.com>
-
-       [grog]: Fix erroneous detection of pic(1) usage.
-
-       Fixes <https://savannah.gnu.org/bugs/?60772>.
-
-2021-06-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/grog/tests/PF-does-not-start-pic-region.sh:
-         Regression-test Savannah #60772.
-       * src/utils/grog/grog.am (grog_TESTS): Run test.
-
-2021-06-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Add smoke test.
-
-       * src/utils/grog/tests/smoke-test.sh: Add test.
-       * src/utils/grog/grog.am (grog_TESTS): Run it.
-       (TESTS): Add `grog_TESTS`.
-       (EXTRA_DIST): Ship test.
-
-2021-06-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grog]: Relocate in source tree.
-
-       * src/roff/grog: Move from here...
-       * src/utils/grog: ...to here.
-
-       * MANIFEST:
-       * Makefile.am:
-       * src/utils/grog/grog.am: Reflect move.
-
-       Fixes <https://savannah.gnu.org/bugs/?60788>.
-
-2021-06-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Assigning Formats): Revise discussion.
-       Clarify that a format never causes truncation of an interpolated
-       magnitude.  Note that non-Arabic number formats cannot be used
-       as operands to arithmetic expressions.  Add example of how to
-       work around this.
-
-2021-06-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Clarify diagnostics.
-
-       * src/roff/troff/reg.cpp (reg::set_increment): Update diagnostic
-       to unabbreviate "auto".
-       (reg::alter_format): Update diagnostic to say "assign" instead
-       of "alter", since the documentation consistently uses the former
-       term.
-
-2021-06-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Slightly refactor.  Make the source code slightly more
-       accessible by using a `bool` type for a member function's
-       default parameter used as a Boolean, and comment it at call
-       sites where the default is overridden.
-
-       * src/roff/troff/token.h (token::get_char): Change type of
-       parameter from `int` to `bool` and default from 0 to `false`.
-       * src/roff/troff/input.cpp (token::get_char): Update definition.
-       * src/roff/troff/env.cpp (hyphen_word):
-       * src/roff/troff/node.cpp (remove_font_special_character):
-       * src/roff/troff/input.cpp (do_overstrike, do_bracket, next)
-       (do_define_character, remove_character, get_line_arg)
-       (encode_char, do_if_request, do_translate, char_flags)
-       (hyphenation_code, define_class): Update call sites.  Add
-       comment indicating meaning of parameter.
-
-2021-06-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): When outputting HTML, write the
-       possibly case-transformed (but not yet abbreviated) page title
-       as the `title` element instead of the unaltered first argument
-       to `TH`.
-
-2021-06-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-abbreviate-title): Define with `de`, not
-       `de1`, since it is not intended for call by traps or users.
-
-2021-06-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Tab Stops): Fix erroneous claim; tab stops are
-       not set "every half inch across the page".  This is only true in
-       "line tabs mode", which is not enabled by default.  The default
-       behavior, to keep compatibility with AT&T troff, measures tab
-       stops relative to the current position on the input line.
-
-2021-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-nroff-u: Set the usekeeps register used by tbl
-       to the logical complement of the cR (continuous rendering)
-       register.  This prevents blank lines from creeping into tables
-       in that mode.
-
-2021-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-blank-line-trap, an-leading-space-trap):
-       We say in a comment, "Macros ... that are called by traps of any
-       kind must be defined with `de1` because they might be called
-       from a context where compatibility mode is enabled."  So do it.
-
-2021-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-header): Lightly refactor; tighten.
-
-2021-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-write-paragraph-tag): Lightly refactor
-       for clarity and to reduce code duplicated in both branches of an
-       `ie`/`el` structure.
-
-2021-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Rename `an-HF-remap-I-style` register to
-       `an-remap-I-style-in-headings` for greater clarity.
-
-2021-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common-u (doc-header, doc-end-macro): Partially
-       revert bf4b3dde (from 20 May); per Ingo Schwarze, continuous
-       rendering in mdoc(7) documents has always used only one vee
-       between headers, footers, and man page body text.
-
-2021-06-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/en.tmac: Stop using `do` request; it's unnecessary since
-       the file is already loaded with compatibility mode off.
-
-2021-06-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Fix doc omission; .ID can take an argument.
-
-       * doc/groff.texi (ms Document Control Settings) <DI>:
-       Characterize register setting as a _default_.
-       (ms Displays and Keeps): Add optional variable "indent" argument
-       to syntax summary of ".DS I" and ".ID".  Note that the given
-       indentation is used if present, and \n[DI] otherwise.
-       * doc/ms.ms (Displays and keeps): Add optional variable "indent"
-       argument to syntax summary of ".ID".  Switch fonts more
-       carefully and apply italic corrections.
-       * tmac/groff_ms.7.man (Displays and keeps): Sync with doc/ms.ms.
-
-2021-06-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Properly situate devtag flag-related register
-       names in the package name space.  Rename `need_eo_h` to
-       `s@devtag-needs-end-of-heading'.  Rename `need_eo_tl` to
-       `s@devtag-needs-end-of-title`.
-       ((initialization), par@reset, @SH, par@finish, @NH): Do it.
-       (par@reset): Test their values more idiomatically.
-
-       Fixes last third of <https://savannah.gnu.org/bugs/?42515>.
-
-2021-06-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac-u (@h): Migrate SCCS revision 2.37 to be idiomatic
-       for groff (and not throw warnings of type 'mac').
-
-2021-06-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Improve diagnostics during documentation
-       generation; none should occur normally, but when they do, seeing
-       troff complain about "<standard input>" is disheartening.
-       (DOC_GROFF_ONLY): Add -b option so we get backtraces (also kill
-       off trailing whitespace).
-       (DOC_GROFF):
-       (doc/pic.html):
-       (doc/webpage.html): Add sed expression to inject `lf` request
-       into the stream to identify the file being processed.
-
-2021-06-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/me-revisions: Supplement history with subsequent BSD work
-       from versions 2.29 (1988-04-22) to 8.1 (1993-06-05).
-
-2021-06-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/me-revisions: Add 'me' macro package revision log, scraped
-       from <https://svnweb.freebsd.org/csrg/share/me/revisions>.
-       * doc/doc.am (DOCFILES): Ship it.
-
-2021-06-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac-u: Rename registers for clarity.  Unlike other
-       macro packages supplied by groff, "me" mostly remains within the
-       AT&T 2-character name space, accessing extended names
-       selectively through `do` and `de1` requests.  The package
-       therefore has no characteristic name prefix.
-         need_eo_h  -> devtag-needs-end-of-heading
-         need_eo_tl -> devtag-needs-end-of-title
-         need_tl    -> devtag-needs-title
-       (@html_check_need_title, sh, EQ): The foregoing registers are
-       effectively Booleans, so perform Boolean-style tests on their
-       interpolations.
-
-       Fixes a second third of <https://savannah.gnu.org/bugs/?42515>.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/e.tmac-u: Work in compatibility mode.  It seems this was
-       the intention (reasonable, since "me" originates in pre-groff
-       BSD Unix), but there were several problems.
-       (@R): Prefix register existence test with `do`.
-       (@html_check_need_title): Define with `do` since the macro name
-       is long, and also with `de1` so that we can freely use groff
-       extensions within.  Drop many `do` requests from macro
-       definition.
-       (@check_need_title): Define with `do`, as above.  Add comment
-       explaining why `de1` is not needed for this macro definition.
-       (@S): Prefix macro/string existence test with `do`.  Remove
-       spurious space so that the argument string name is truly defined
-       as empty.
-       (nm, n1, n2): Prefix handling of long register names `_#p` and
-       `_#f` with `do` request.
-       (top level): Prefix `mso` request with `do`.
-       ((x-html): Define with `do` and `de1` instead of `de`.  Drop
-       now-unnecessary `do` requests from macro body.
-       ()x-html): Define with `do` and `de1` instead of `de` for
-       symmetry.
-       (xp-html): Define with `do` and `de1` instead of `de`.  Drop
-       now-unnecessary `do` requests from macro body.
-
-       Fixes <https://savannah.gnu.org/bugs/?60785>.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/devtag.tmac: Work in compatibility mode; define macros
-       with the `de1` instead of the `de` request.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/refer-me.tmac:
-       * tmac/refer.tmac: Add include guards.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/refer-me.tmac: Handle being loaded in compatibility mode.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Properly situate devtag flag-related
-       register names in the package name space.  Rename `need_eo_h` to
-       `an-devtag-needs-end-of-heading'.  Rename `need_col2` to
-       `an-devtag-needs-second-column`.
-       (an-input-trap, SH, SS, HP, (initialization)): Do it.
-       (an-input-trap): Test their values more idiomatically.
-
-       Fixes one third of <https://savannah.gnu.org/bugs/?42515>.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_if_request): Improve diagnostic
-       message; say "conditional operator", not just "conditional".
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-end, an-header): In continuous rendering
-       mode, use same spacing amount after header and before footer as
-       mdoc in its own continuous rendering mode.  Thanks to Ingo
-       Schwarze for the suggestion.
-
-       Fixes <https://savannah.gnu.org/bugs/?60653>.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (P): Define this as the "canonical"
-       paragraphing macro.
-       (LP, PP): Make these aliases of P.
-
-2021-06-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (spring_trap): Tighten lexical
-       discipline; describe macro as "trap-called" rather than
-       "trap-invoked".
-
-2021-06-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Don't spuriously break a page after a paragraph tag when
-       the tag is short enough to fit within the paragraph's
-       indentation.
-
-       * tmac/an-old.tmac (an-write-paragraph-tag): Reserve ("need") 2
-       vees plus 1 basic unit of vertical space regardless of the width
-       of the tag.  In the short tag case, we reverse space by one vee
-       after outputting the diversion in which the tag is stored, but
-       it will always contain a break, and by the time we reverse, we
-       might have already hit a page location trap
-       {an-break-body-text}, and by then it's too late to back up.
-
-       * tmac/tests/an-old_no-break-after-short-paragraph-tags.sh: Test
-       it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?60624>.
-
-2021-06-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Rename environments to be more descriptive.
-         an-env -> an-env-header-or-footer
-         an-2   -> an-env-paragraph-tag
-       (an-header, an-footer, an-write-paragraph-tag): Do it.
-
-2021-06-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Add diagnostic error if .EQ used within .TS/.TE.
-       Introduce register `tbl@within-table` to track whether we're
-       inside a table.
-       (@EQ): Check register and issue error if it is true.
-       (@TS): Set register.
-       (@TE): Clear register.
-
-       Prompted by Savannah #55754.
-
-2021-06-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Permit document to start with .PS.
-       (cov*ab-init): Alias PS to @PS.
-       (PS): Call LP, then re-execute (aliased) self as TS does.
-       (TS): Update comment to parallel the one in PS.
-
-2021-06-11  Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
-
-       Indent an IP paragraph based on the type size of the paragraph
-       text, not a preceding heading.  We have to delay evaluating IP's
-       argument until the font size has been reset, which I've
-       attempted to do by simply passing the argument unevaluated down
-       the call hierarchy, instead of saving it in a number register
-       right away, as appears customary in this ms implementation.
-
-       However, par@reset is called from a great number of places, and
-       these usually set the indent registers beforehand.  I've left
-       this as it is, so now two ways of setting the indents exist: via
-       register and optionally via argument.
-
-       * tmac/s.tmac (par@reset): Move font-size setting stuff before
-       indent-setting stuff; set registers from optional arguments with
-       default "n" scaling indicator before setting indents.
-       (par*start, par@finish): Don't set registers, but instead pass
-       arguments to par@reset.
-       (@IP): Pass argument unevaluated to par*start.
-
-       Fixes <https://savannah.gnu.org/bugs/?59604>.
-
-2021-06-11  Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
-
-       * tmac/s.tmac (@QP, @XP): Be more scrupulous about using "u"
-       scaling indicator.
-
-2021-06-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #59604.
-
-       * tmac/tests/s_IP-indents-using-paragraph-type-size.sh: Add it.
-       * tmac/tmac.am (tmac_TEST): Run it.
-
-2021-06-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Refactor grog even more aggressively.  Make the tedious search
-       for subs.pl unnecessary by inlining it into grog.pl directly.
-       This makes the script stand alone and much more convenient to
-       work with, and doesn't contribute to bloat, in my
-       opinion--subs.pl was 10 times the size of grog.pl, and most of
-       the code in the latter was dedicated to trying to locate
-       subs.pl.
-
-       * Makefile.am: Delete references to $(grog_dir).
-       * configure.ac: Delete call of `GROFF_GROGDIR_DEFAULT` macro.
-       * m4/groff.m4: Delete definition of same.
-       * src/roff/grog/grog.am (GROG, dist_grog_DATA, grogdir): Drop
-       variables.
-       (grog): Remove target's dependency on `$(GROG)`.  Remove sed
-       expression replacing `@grog_dir@` with `$(grog_dir)` in grog.pl.
-       * src/roff/grog/grog.pl: Inline most of subs.pl (except for
-       author/license comment banner).  Delete sub-hunting logic.
-       * src/roff/grog/subs.pl: Delete.
-
-2021-06-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/pic.ms (Basic PIC Concepts, Decorating Objects/Filled
-       Objects, PIC Reference/Semi-Formal Grammar): Fix error: the
-       keyword "solid" sets a line style, not a fill for a closed
-       figure.  Thanks to Dave Kemper and Wim Stockman for reporting
-       and researching this issue.
-
-       Fixes <https://savannah.gnu.org/bugs/?60470>.
-
-2021-06-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * NEWS:
-       * doc/webpage.ms:
-       * man/groff.7.man (Registers/Read-only registers) <.U>:
-       * man/groff_diff.7.man (Language/New number registers) <.U>: Fix
-       error; the sense of this Boolean variable was backwardly
-       documented {perhaps due to an implementation detail from 2004
-       that was reversed in commit 7a0e2f15, 26 February 2008}.
-
-2021-06-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.cpp: Revise usage message.
-       (synopsis): Set primary synopsis on a single output line, for
-       convenience of parsing and also because we have no control over
-       the width of the program name in character cells; it comes from
-       argv[0] and is under user control.  There is thus no point in
-       trying to get pretty formatting.  Also include separate synopsis
-       lines for short and long help options.  Use opposite case from
-       option flags for option arguments.
-       (help): Collate option flags in English lexicographic order.
-       Include space after flag letters for options that take
-       arguments.  Consistently use capitals for option arguments
-       because they are space-separated here.  Illustrate longer forms
-       of -d and -r options.  Update language (some, like "tmac.name",
-       was very old).  Add reference to groff(1) man page at end.
-       (usage): Drop appendnment of notice regarding -h option; this is
-       now covered in `synopsis()` unconditionally.
-
-2021-06-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Eliminate "groff_opts_no_arg.txt" and "groff_opts_with_arg.txt"
-       files from distribution.  They are not needed by any live code
-       in the tree; possibly only groffer ever used them.
-
-       * src/roff/groff/groff.am (GROFF_OPTS_OUTPUT, groffoptsdir)
-       (groffopts_DATA): Delete variables.
-       (MOSTLYCLEANFILES): Stop adding to target.
-       (groff_opts.tmp, groff_opts_no_arg.txt,
-       groff_opts_with_arg.txt): Delete targets.
-
-2021-06-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/grog/subs.pl (version): Report version information in
-       a format consistent with our other programs.
-
-2021-06-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/grog/grog.pl: Refactor initialization so that the
-       program can be run from a build tree--and tested.  Drop much
-       cruft from before Bertrand Garrigues's 2018 work to adopt
-       `git-version-gen`.
-
-2021-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_title-abbreviation-works.sh: Log more
-       accurate messages in test failures.
-
-2021-06-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-abbreviate-title): Add new internal macro
-       to reduce the length of a man page title (i.e., the "ls" in
-       "ls(1)", if it is too wide to fit in the page header (and would
-       overwrite the center header material, usually the title of the
-       manual section).  Since the beginning and end of the title might
-       be important for disambiguation, truncation at either end would
-       be unwise; replace the middle of the title with an ellipsis.
-       Define new an-pageref and an-title-abbv strings for use by other
-       macros and user-defined PT and BT traps.
-       (PT, an-footer): Use new an-pageref string for economy.
-       (an-header): Call an-abbreviate-title after setting the title
-       length.
-
-       * tmac/tests/an-old_title-abbreviation-works.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?43532>.
-
-2021-06-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Copy mode): Add new section.
-
-2021-06-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (else_request, while_request)
-       (pipe_source, open_request, opena_request, pipe_output)
-       (system_request): Update diagnostic messages to not presume the
-       identities of the control or escape characters.
-
-2021-06-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Conventions Used in This Manual): Add node.
-
-2021-05-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.1.man: Expand to aid beginners.
-       (initialization): Define `TeX` string.
-       (Usage): Rewrite.
-       (Usage/Getting started): Add "Hello, world!" example using
-       multiple output devices (formats).
-       (Usage/Using groff as a REPL): Add example of likely interest to
-       programmers.  Or so I hope.  It illustrates the Turing
-       fundamentals; we read, store, test, and branch.
-
-2021-05-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/papersize.tmac: Improve diagnostic message; when
-       complaining about unrecognized input, report back the input we
-       actually received, not what it looks like after we transform it.
-       Also add name of macro package to diagnostic so the user knows
-       who is speaking, continuing the long process of fixing Savannah
-       #52463.
-
-2021-05-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_ms.7.man (Usage/Paragraphs) <QP>: Fix error: .QP
-       paragraphs are indented by \n[QI], not \n[PI].
-
-2021-05-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libdriver/input.cpp (do_file): Make fatal diagnostic
-       from output driver when the device description file "DESC" can't
-       be found more informative by including the name of the device
-       for which the input was prepared.  Also makes malformed input of
-       intermediate format more obvious.
-
-2021-05-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/tbl.1.man (Miscellaneous): Add paragraph
-       cautioning users against making tbl(1) tables conditional
-       document content.
-
-2021-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add style warnings for documents with input lines that
-       are blank or have leading spaces, since they can cause
-       surprising rendering; enabled if the CHECKSTYLE register is
-       greater than 2.
-
-       * tmac/an-old.tmac (an-blank-line-trap, an-leading-space-trap):
-       Issue style warning if enabled (and only if fill mode enabled in
-       leading space trap); in any event, recreate the default *roff
-       behavior.
-       (TH): Install traps.
-
-       * doc/andoc.tmac (reload-doc): Remove man(7) traps before
-       loading doc.tmac.
-
-2021-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/andoc.tmac (reload-doc): Fix spurious blank line.
-
-2021-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Operators in Conditionals):
-       * man/groff.7.man (Control structures/Conditional expressions):
-       Fix omission; the conditional operators "F", "m", and "S" also
-       accept optional spaces and/or tabs between themselves and their
-       arguments.
-
-2021-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Requests/Request short reference) <.ta>:
-       Describe the request as tersely as possible without omitting its
-       essential syntax and semantics.  (The AT&T troff "+" relative
-       prefix for normally absolute positions ".ta 1i +1i +1i" and
-       alignment-specifying suffixes "L", "R", and "C" had both been
-       omitted.)
-
-2021-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Registers/Writable registers): Fix error:
-       \n[nl] interpolates the current vertical position, not the
-       vertical position of the "last printed text baseline"; the
-       latter is \n[.h].
-
-2021-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Manipulating Filling and Adjustment): Update
-       inter-sentence space example to be more illustrative.  Thanks to
-       Dave Kemper and Doug McIlroy for the discussion.
-
-       Fixes <https://savannah.gnu.org/bugs/?60404>.
-
-2021-05-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common-u: Add comment warning source divers that
-       \n[doc-header-space] is re-used for a purpose for which it is
-       not documented.
-       * tmac/mdoc/doc-nroff-u: Initialize doc-{header,footer}-space
-       registers, which define the vertical spacing between body text
-       and the relevant titles (not between the titles and the page
-       margins) to 1v instead of 0.5i.  This is what mdoc(7) has always
-       done in practice, per Ingo Schwarze.
-
-2021-05-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grohtml/post-html.cpp (assert_state::add): Avoid
-       potential deallocation of statically-allocated strings.  Use
-       strsave() to duplicate them so that they can be safely handed to
-       a_delete().  Also update diagnostic message to report name of
-       complaining program (continuing the long process of fixing
-       Savannah #52463).
-
-       Fixes <https://savannah.gnu.org/bugs/?55693>.  Thanks to
-       Petru-Florin Mihancea for the report.
-
-2021-05-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/troffrc-end: Fix transposition error (in commit a248aa33
-       on 15 January) that broke most table image generation in HTML
-       output.
-
-       Fixes <https://savannah.gnu.org/bugs/?60656>.
-
-2021-05-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (UE, ME): Replace calls to HTML-NS macro for
-       emissions of HTML 'A' tags with direct usage of \X device
-       control escapes.  Replace .nop requests with text lines since
-       this file is supposed to be maximally portable to other *roffs.
-
-2021-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (main): Call `scanArguments()`
-       earlier, before trying to load a font description, so that -v,
-       --version, and --help work.
-
-2021-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [grohtml]: Add -C and -G options to postprocessor, to suppress
-       output of CreationDate and Creator HTML comments, respectively.
-       These can inject unwanted noise into build artifacts.
-
-       * src/devices/grohtml/post-html.cpp: Add static globals
-       `do_write_creator_comment` and `do_write_date_comment`.
-       (html_printer::{do_file_components,~html_printer}): Write
-       comments per corresponding global variables.
-       (main): Add to `getopt_long()` call parameter and set as needed.
-       (usage): Document them.
-
-       * src/preproc/html/pre-html.cpp (scanArguments): Add to
-       `getopt_long()` parameter, but ignore.
-
-       * src/devices/grohtml/grohtml.1.man (Synopsis, Options):
-       Document them.
-
-       * src/roff/groff/tests/output_driver_C_and_G_options_work.sh:
-       Test them.
-       * tmac/tmac.am (groff_TESTS): Run test.
-
-       Fixes 1/3rd of <https://savannah.gnu.org/bugs/?60655>.
-
-2021-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (usage):
-       * src/devices/grohtml/post-html.cpp (usage): Fix inaccuracies in
-       supported option summary.
-
-2021-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/html/pre-html.cpp (scanArguments):
-       * src/devices/grohtml/post-html.cpp (main): Use libgroff's
-       warning() instead of printf() to emit diagnostic about
-       unrecognized parameter to `-x` option.  This sends the
-       diagnostic to the standard error stream and continues the long
-       process of fixing Savannah #52463.
-
-2021-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_www.7.man: Stop using the "www" macro package.  The
-       macros it exposes are not part of the quasi-standardized man(7)
-       language, and thus should not be used in man(7) documents.  See
-       groff_man_style(7) for portability advice.  Besides, the
-       extension macros in the permissively-licensed an-ext.tmac are
-       sufficient to support URL and email hyperlinks, and our SH and
-       SS macro implementations already support anchor placement
-       without requiring explicit effort from page authors.
-       (initialization): Stop sourcing www.tmac.  Stop calling .LK and
-       .HR; the page-internal navigation links were being placed after
-       the apropos line instead of at the beginning of the page,
-       contradicting the comment that was there (possibly a bug).
-       (Requests) <URL, LK>: Stop calling .TAG.
-       <LK>: Drop paragraph advising reader to format page for groff's
-       HTML output device to observe the navigation links at that point
-       in the test.
-
-2021-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Comments): Fix error in description of parser
-       operation; '.\"' is an effective whole-line comment not because
-       it is a call of an undefined macro named '\"' (no 'mac' warning
-       is emitted when that warning type is enabled), but because the
-       comment escape is recognized normally and what remains is
-       handled as the empty request.  Clarify that the optional
-       argument to the .ig request is the name of a macro (which will
-       be called normally _and_ end the ignored region; this is
-       analogous to ".de foo bar").
-
-2021-05-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (UR, UE, MT, ME): Rename environment and
-       diversion for clarity; they apply to the link text, not the URL
-       {or email address}.  The latter might not visibly appear,
-       depending on the output driver.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Remove extraneous right-brace escape.
-
-       Fixes <https://savannah.gnu.org/bugs/?60651>.  Thanks to Bjarni
-       Ingi Gislason for catching it.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Copy Mode): Fix omissions from list of escape
-       sequences interpreted even in copy mode.  Add \g, \V, "\.",
-       '\"', \#, \a, \e and \E (with caveat), and \t.  Parallels
-       groff(7) now.  Add cross reference to "Character Translations"
-       node.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Escape Sequences): Fix omission; the escape
-       character in an unrecognized escape sequence is not merely
-       ignored; the sequence produces a warning diagnostic, albeit of a
-       type that is disabled by default.
-       (Escape Sequences/Escape short reference): Fix omissions; \# and
-       \V are interpreted even in copy mode.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-header): Fix missing brace escape.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Slightly refactor footer spacing management when
-       continuously rendering.
-
-       * tmac/an-old.tmac (an-end): Increase the page length _after_
-       flushing a pending output line.  Do so only by the amount of
-       spacing we actually perform next.  Make the scaling indicator on
-       the .sp request explicit.  The amount seemed magical because it
-       was accounting for the one line to be consumed by output of the
-       footer title line.  Instead, move that further increase of the
-       page length from here...
-       (an-footer): ...to here (~250 lines away), before calling BT.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common-u (doc-end-macro): When continuously
-       rendering and after flushing the last line of the body text of a
-       page, vertically space by 3 vees instead of 1, for consistency
-       with our man(7) implementation.  Also increase page length by
-       same amount _after_ flushing a pending output line, for symmetry
-       with other spacing requests (and to prevent nasty surprises
-       analogous to those in Savannah #60611).
-       (doc-header): Put 3 vees of space after the header in continuous
-       rendering mode, not 1 (and increase page length accordingly).
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Add warnings for macros deprecated in groff_man(7),
-       emitted if the CHECKSTYLE register is greater than 1.
-
-       * tmac/an-old.tmac (an-deprecation-warn): New macro emits
-       diagnostic.
-       (DT, PD): Call the foregoing, re-using arguments.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Refactor to move bodies of DT and PD into
-       private macros.
-       (an-reset-tab-stops, an-reset-paragraph-spacing): New names for
-       the former DT and PT.
-       (TH): Call these new macro names.
-       (DT, PD): Wrap the corresponding private macros.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-bp): In continuous rendering mode, draw
-       a horizontal line between a page footer of one man page document
-       and the header of the next, but only if multiple documents are
-       being rendered.
-       (initialization): Use variable to ensure we don't draw this line
-       after finishing the only document we render.
-
-       Fixes other half of <https://savannah.gnu.org/bugs/?60611>.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Fix stochastic vertical space loss problems in continuous
-       rendering mode by being more scrupulous about extending the page
-       length.  As noted in Savannah #60611, sometimes the vertical
-       space between a header line and the first section heading
-       {"Name"} would be reduced or removed altogether, in a way that
-       was highly sensitive to circumstances.  As far as I can tell,
-       the problem is that this vertical space disappeared only when we
-       were in double-secret probation no-space mode; this is the
-       special non-spacing mode {not apparent with inspection of
-       \n[.ns]} that happens when the stealth internal page location
-       trap is sprung.  This trap does not appear in .ptr output but
-       can be disabled with ".vpt 0", which is an alternative fix for
-       this problem {because continuous rendering mode does not use
-       vertical position traps at all}.  Another fix might have been to
-       simply call the moral equivalent of ".pl MAXINT" as soon as
-       continuous rendering mode was decided upon.
-
-       * tmac/an-old.tmac (an-header): In continuous rendering mode,
-       extend the page length by one line before calling PT to output
-       the page header, and afterwards, extend the page length by 3
-       vees and space by that amount (instead of half an inch).
-
-       Fixes half of <https://savannah.gnu.org/bugs/?60611>.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-header, an-footer): Drop no-op .tl
-       requests.
-
-2021-05-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-footer): Improve symmetry with an-header.
-       If rendering to HTML, don't bother setting the
-       an-outer-footer-text, an-extra1, and an-extra2 strings to empty
-       values; instead don't call BT, just as we don't call PT in
-       an-header.
-
-2021-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-end): Drop needless .nr % assignment.
-       Call our (wrapped) bp instead of the .pl request directly.
-       (an-bp): Drop needless .br and (aliased) real .bp request.
-
-2021-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-footer): Refactor complex conditional.
-
-2021-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_X-register-works.sh: Add test for footer
-       creeping into page content.
-
-2021-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (initialization): Ignore P and X rendering
-       parameter registers if specified with continuous rendering
-       enabled (the default in the nroff mode used for terminals), and
-       emit diagnostic.
-
-2021-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_X-register-works.sh: Rewrite.  Increase test
-       coverage and stop assuming that -rcR=1 and -rX=anything is a
-       supported combination.  (Continuous rendering is supposed to
-       suppress the printing of page numbers anyway.)
-
-2021-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (initialization): Refactor handling of P and
-       X rendering parameter register validation in preparation for
-       disabling them in continuous rendering mode, where they don't
-       make any sense.
-
-2021-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_TH-repairs-ad-damage.sh: Tweak test
-       internals to make troubleshooting easier.
-
-2021-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Relocate some initialization logic to
-       be adjacent to (most of) the rest of it.
-
-2021-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Remove useless .if.  Its condition is
-       always true now in the wake of the fix for Savannah #60609.
-
-2021-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Rename many package macros, strings, and
-       registers (and the lone named environment) to be more expressive
-       of their function.  "an-footer" is now the proper complement of
-       "an-header" (setting up an environment and calling a
-       user-redefinable trap macro).
-         an-first         -> an-is-first-page-of-document
-         an-html          -> an-is-output-html
-         an-footer        -> an-break-body-text
-         an-p-footer      -> an-footer
-         an-set-margin    -> an-reset-margin-and-inset-level
-         an-level         -> an-inset-level
-         an-tag-sep       -> an-tag-separation
-         an-no-space-flag -> an-need-no-space-mode
-         an-break-flag    -> an-need-break
-         an-div?          -> an-is-in-diversion
-         an-page-string   -> an-outer-footer-text
-         an-trap          -> an-input-trap
-         an-do-tag        -> an-write-paragraph-tag
-         an-1             -> an-env
-
-       * tmac/andoc.tmac (reload-doc): ...as above for the exposed
-       parts of the interface.
-         an-footer        -> an-break-body-text
-         an-p-footer      -> an-footer
-
-2021-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Rearrange alternating font macros to be in
-       alphabetical order (and the order documented in groff_man(7).
-
-2021-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Refactor alternating font macros.  These
-       macros are hard enough to understand without adding gratuitous
-       structural differences to the reader's burden.  Make their
-       implementations rigidly parallel.  Update comments.
-       (RI, IR, IB, BI, RB, BR): Always define the `an-result` string
-       as empty except for a dummy character '\&' for the sake of
-       compatibility mode.
-       (RI, IR, IB, BI): Defer interpolation of the first argument to
-       the while loop if there are at least two (like the existing RB,
-       BR).  This way the style name arguments to the font selection
-       escape sequences in the appendment to `an-result` match the
-       order of the letters in the macro name (useful to make sense of
-       diffs).
-       (RI, IR, IB, BI, RB, BR): Always remove the `an-result` string
-       after interpolating it.
-       (RB, BR): Only do work if there are any arguments.
-
-2021-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Apply italic corrections more consistently.
-
-       * tmac/an-old.tmac (BI, IB, IR, RI): Apply italic corrections
-       more consistently.  Add lengthy comment rationalizing approach.
-       (RI, BI): An italic correction is now applied after the last
-       argument if it is of even parity (i.e., the 2nd, 4th, 6th, ...).
-
-       * tmac/groff_man.7.man.in (Description/Font style macros): Note
-       that italic corrections are applied.
-
-       Fixes <https://savannah.gnu.org/bugs/?53541>.
-
-       Thanks to Bjarni Ingi Gislason for the report and a suggested
-       patch.
-
-2021-05-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Ignore FT register when appropriate.
-
-       * tmac/an-old.tmac (initialization): Validate user-specified
-       value of \n[FT].  Continuous rendering ignores FT (page location
-       traps are not used for footers in that mode).  Measuring a
-       footer distance from the page top isn't done.  A footer distance
-       of over half the page length is unlikely.  A footer distance of
-       less than one line height is too.  Issue diagnostics in all of
-       these cases.
-
-       * tmac/tests/tmac/tests/\
-       an-old_FT-bad-value-should-not-trash-titles.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?60612>.
-
-2021-05-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Plant the an-footer trap (where we
-       schedule a break in the page text prior to spacing down to the
-       footer) at twice the value of \n[FT], not a hard-coded -1i.
-       This way, the user can't make the an-p-footer trap (planted at
-       \n[FT]) spring before the an-footer trap that should precede it.
-
-       * tmac/groff_man.7.man.in (Options) <-rFT>: Document this.
-
-2021-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK): Add new
-       autoconf macro to check Ghostscript version.  Versions 9.00 <= x
-       < 9.54 suffer from a rendering glitch that affects the AT&T
-       troff (and groff) special character \(lh; see
-       <https://bugs.ghostscript.com/show_bug.cgi?id=703187>.  Store
-       the result of the check.
-       (GROFF_GHOSTSCRIPT_VERSION_NOTICE): Add new macro to report the
-       problem detected by GROFF_GHOSTSCRIPT_VERSION_CHECK to the user.
-
-       * configure.ac: Call the macros in appropriate places.
-
-       Fixes <https://savannah.gnu.org/bugs/?59531>.
-
-2021-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/andoc.tmac (reload-man): Remove removal of RI macro, made
-       unnecessary by commit 551f138 (15 May).
-
-2021-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_HTML_PROGRAMS, GROFF_PDFDOC_PROGRAMS):
-       Tweak autoconf warning messages when Ghostscript (gs) command
-       missing to be more mutually congruent.
-       (GROFF_URW_FONTS_CHECK): Tweak to note that gs is only run to
-       locate the URW fonts if gs is available.
-
-2021-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_AT-and-UC-footer-saved-and-restored.sh:
-       Tweak to be more helpful when troubleshooting exasperating
-       header/footer problems as in Savannah #60609.
-
-2021-05-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Fix missing page footers when continuously rendering
-       multiple documents.  Resolving this uncovered entangled header
-       and footer management bugs with batch processing even when _not_
-       continuously rendering.
-
-       * tmac/an-old.tmac (an-start-new-document): New macro clears
-       header trap so it doesn't get called with stale information.
-       {The TH macro already replants a header trap with every man
-       page if not continuously rendering.}  This macro also absorbs
-       the break-page and page number incrementation logic from TH.
-       (TH): Adapt semantics of "an-first" register to mean not "first
-       page rendered" (apparently) but "first page of new document".
-       If we are _not_ on the first page of a new document and the TH
-       macro is called, we must be batch processing: force the previous
-       man page to end (call an-end if continuously rendering, or
-       an-start-new-document if not).  After all the header and footer
-       strings have been configured for the man page, call an-header if
-       we're on the first page of the document, not (just) if we're
-       continuously rendering.  Zero an-first register at end of macro
-       here unconditionally instead of conditionally in .an-header.
-       (an-header): Drop conditional on continuous rendering.
-
-       When I batch-render our 62 man pages to the terminal, I do note
-       one cosmetic regression: the lj4_font(5) page, when continuously
-       rendered in batch processing, has no space between its header
-       line and first section heading ("Name").  Another cosmetic issue
-       in this scenario is that the footers for every rendered page but
-       the last, which had (wrongly) been absent entirely, are set with
-       no space after them and the header of the next.
-
-       * tmac/tests/an-old_page-footers-present.sh:
-       * tmac/tests/an-old_page-header-has-current-data.sh: Add man
-       page header/footer regression tests.
-       * tmac/tmac.am (tmac_TESTS): Run the tests.
-
-       Fixes <https://savannah.gnu.org/bugs/?60609>.
-
-2021-05-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (initialization): Key the reprocessing guard
-       {like a C language #include guard} on the existence of the TH
-       macro instead of RI.  The latter seemed kind of random and TH
-       is even more guaranteed to exist; it is the macro name most
-       characteristic of the man(7) language and the andoc.tmac
-       superstructure relies on it.  (TH may have been avoided because
-       of its use with tbl(1); however, neither man(7) nor mdoc(7)
-       support tbl's TH feature, and GNU tbl does not supply its own
-       empty fallback definition as it does for TS and TE.  If we ever
-       want TH-like functionality in future man pages, I suggest we
-       pick a new, non-colliding name for it.)
-       (initialization): Relocate load of devtag package; we don't
-       need it before entering compatibility mode.  Move assignment of
-       format of an-page-letter register from a "loose declaration"
-       amid macro definitions to within existence test of X register.
-       Stop initializing an-extra[123] strings outside of any macro;
-       they need to be reinitialized at every TH call when batch
-       rendering.
-       (TH): Call DT in a less surprising place.
-       (TH): Initialize all header/footer-related strings before
-       calling header macros, even those not needed for the default
-       header configuration.
-       (TH): Add style warnings for underspecified arguments.
-       (an-ne): Rename register from "an-need", which is pretty
-       confusing in context, to "an-amount", since (1) a (vertical)
-       amount is what it is, and (2) it's only used within this macro.
-       Also due to factor (2), remove the register after using it.
-
-2021-05-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * m4/groff.m4 (GROFF_URW_FONTS): Update configure script check
-       for URW fonts to recognize recent releases of the URW Base 35
-       fonts from Artifex Software.  Look for the AR (Arial roman
-       equivalent) font under all of the names recognized by
-       fonts/devpdf/Foundry.in.
-       * m4/groff.m4 (GROFF_URW_FONTS_CHECK): Update wording of notice
-       when URW fonts are not found.  Replace dead URL with working
-       one.  Try to hedge against the future, but the Web is an
-       ephemeral place, as are the file names Artifex gives to its
-       fonts.  Thanks to T. Kurt Bond and Thomas Dupond for reporting
-       and investigating the problem.
-
-       Fixes <https://savannah.gnu.org/bugs/?60604>.
-
-2021-05-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (ms Document Control Settings) <DI>:
-       * doc/ms.ms (Document control settings, Displays and keeps)
-       <DI>:
-       * tmac/groff_ms.7.man (Document control settings, Displays and
-       keeps) <DI>: Document this register; it had been mentioned only
-       in passing.
-
-2021-05-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (ms Document Control Settings) <DD>:
-       * doc/ms.ms (Document control settings) <DD>:
-       * tmac/groff_ms.7.man (Document control settings) <DD>: Fix
-       error; changes to \n[DD] take effect at the next display
-       boundary (including the end of the active one), not the next
-       "paragraph" (paragraph macros cannot be called inside a display
-       anyway).
-
-2021-05-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/andoc.tmac (reload-man): Delete no-op line that attempts
-       to restore compatibility mode.  Individual pages have to do
-       this, and ".do cp \n(.C" is not effective for the reason
-       discussed in the 2020-04-16 ChangeLog entry.
-
-2021-05-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (@RT): Delete definition; make it an alias for
-       par@finish.  Until commit 021ba0e7 (1 May), they had identical
-       definitions.  I find it difficult to imagine what use it would
-       be to have an undocumented reset macro that resets everything
-       _except_ the deeply internal \n[.ev]:ai.
-
-2021-05-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Handle HF strings with an embedded font family when
-       applying italic-to-bold-italic remapping; the feature now works
-       on troff devices as well.
-
-       * tmac/an-old.tmac (initialization): Do more validity checking.
-       Store heading family in new string \*[an-heading-family].  Clean
-       up after self.
-       (SH, SS): Include the heading family in the remapping target.
-
-       * tmac/groff_man.7.man.in (Description/Document structure
-       macros) <.SH, .SS>: Document it.
-
-2021-05-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff_char.7.man (Glyph tables/Mathematical symbols): Fix
-       errors in special character descriptions; \[sqrt] is a "special"
-       glyph (that is, it uses mathematical metrics on typesetter
-       devices), and \[radicalex) is not (and is thus a "text" glyph).
-       See Werner Lemberg's ChangeLog entry of 2003-01-05.  Problem
-       dates to 07a6233ad, 27 May 2014.
-
-       The overloaded use of the word "special" really pinches here.
-
-2021-05-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tty.tmac: Replace fallback glyphs for radical extension
-       and square root extension; use \[rn] instead, which works fine.
-
-       Now the only glyph in the page that doesn't render on a UTF-8
-       terminal (if one's font has adequate coverage) is the Bell
-       System logo.
-
-2021-05-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tty.char: Add fallback characters for \[fm] and \[sd].
-
-2021-05-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: If \*[HF] is a bold style, substitute bold italics for
-       italics in section and subsection headings, keeping the font
-       weight consistent.
-
-       * tmac/an-old.tmac (initialization): Set a flag for this based
-       on the interpolation of \*[HF] matching "B" as its last
-       character.
-       (SH, SS): Apply and reverse font remapping based on this flag.
-
-2021-05-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (EX): Work around Savannah #59522 by changing
-       fonts differently on DVI output, avoiding a font warning.
-
-2021-05-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac: If in nroff mode, remap font CBI to BI.
-       * tmac/dvi.tmac: Remap font CBI to CWI.  (Computer Modern
-       Constant Width has no bold styles.)
-
-2021-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (NL, SM, LG): Issue warning diagnostic if macro
-       called with arguments.
-       (par*define-font-macro): Construct font macro with diagnostic to
-       warn if called with excess arguments.
-       (UL, BX): Issue warning diagnostic if macro called with excess
-       arguments.
-
-       Fixes <https://savannah.gnu.org/bugs/?60522>.
-
-2021-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi: Delete redefinition of \putwordAppendix
-       Texinfo macro.  This restores the word "Appendix" to the names
-       of all appendices and fixes two bad internal links to Appendix
-       E, the Register Index, in the DVI and PDF output formats.  Per
-       consultation with Texinfo maintainer Gavin Smith, it's difficult
-       to get the behavior we want, so give up trying for now.
-
-2021-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (@MC): Actually diagnose and recover when user
-       tries to .MC inside a diversion.
-
-2021-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Differences from AT&T ms):
-       * doc/ms.ms (Differences from AT&T ms):
-       * tmac/groff_ms.7.man (Differences from AT&T ms): Document our
-       different default (empty) for the center footer in nroff mode;
-       this behavior appears to date back to June 1991 or earlier,
-       drawing few complaints.
-
-       Fixes <https://savannah.gnu.org/bugs/?59826>.
-
-2021-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/*: Rename files to use consistent scheme; one
-       underscore to separate the package name from the test objective,
-       dashes to otherwise separate words.
-       * tmac/tmac.am (tmac_TESTS): Use new names.
-
-2021-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Restore support for AT&T ms PN register.
-
-       * tmac/s.tmac (pg): Make register PN an alias of %.
-
-       * doc/groff.texi (Differences from AT&T ms):
-       * doc/ms.ms (Differences from AT&T ms):
-       * tmac/groff_ms.7.man (Differences from troff ms): We don't need
-       PN, and it was removed in commit 08291b40 (25 October 2020), but
-       since it is documented in Lesk 1978 we're stuck with it.  Advise
-       users to stick with %.  Also warn them of the hoop they must
-       jump through if they redefine the page trap macro PT, which Lesk
-       1978 also encourages.
-
-       * tmac/tests/s_PN-works.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?59823>.
-
-2021-05-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Restore default IP paragraph indentation after an SH call.
-
-       * tmac/s.tmac (par@finish): Set "ai" register for the current
-       environment to the paragraph indent (PI) setting for the current
-       environment.
-
-       * doc/groff.texi (Highlighting in ms) <IP>:
-       * doc/ms.ms (Highlighting) <IP>:
-       * tmac/groff_ms.7.man (Usage/Highlighting) <IP>: Update
-       documentation.
-
-       * tmac/tests/s_SH_resets_IP_indentation_amount: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?60222>.
-
-2021-05-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (DS): Issue diagnostic and attempt recovery if
-       document attempts to start a display within another display.
-
-       Fixes <https://savannah.gnu.org/bugs/?55136>.
-
-2021-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Implement alternative rendering for automatic
-       footnote numbers in nroff mode, inspired by Heirloom Doctools
-       ms; since superscripting is not universally available on
-       terminals, surround number with square brackets instead.
-       (fn@init): New macro finishes initializing footnote module,
-       setting up aliases to par@sup-{start,end} strings in troff mode
-       and otherwise defining fn@sup-{start,end} as brackets.  Define *
-       string here, using new strings.
-       (par): Call fn@init after par@sup-{start,end} are defined, and
-       prior to other footnote integration material.
-       (par*fp!0): Migrate from par@sup-{start,end} to
-       fn@sup-{start,end}.
-
-       * doc/groff.texi (ms Document Control Settings) <FF>:
-       * doc/ms.ms (Footnotes) <FF>:
-       * tmac/groff_ms.7.man (Usage/Footnotes) <FF>: Document it.
-
-       Fixes <https://savannah.gnu.org/bugs/?60228>.
-
-2021-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * test-groff.in: Stop passing the built groff executable -b and
-       -ww options by default.  This reverses a change from 2017.  Dave
-       Kemper has convincingly argued that there's no way to override
-       -b and turn backtraces on warnings/errors back off, and that the
-       built groff should behave as much like a "normal" one as
-       possible.  The latter factor is of added importance now that we
-       are using test-groff for generation of documents.
-
-       * src/roff/groff/tests/regression_savannah_58153.sh: Adapt.
-
-2021-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (BX): Add alternative implementation for terminal
-       {nroff} devices.  Store width of boxed text, adding .4m only on
-       troff devices (to make room for the vertical box lines).  Break
-       long input line in troff implementation.  If not in troff mode,
-       use ISO 6429 color escapes to render boxed text in black on
-       white.  Use the \Z escape to match breaking semantics of macro
-       in troff mode.
-
-       * doc/groff.texi (Highlighting in ms) <BX>:
-       * doc/ms.ms (Highlighting) <BX>:
-       * tmac/groff_ms.7.man (Usage/Highlighting) <BX>: Document it.
-
-       Fixes <https://savannah.gnu.org/bugs/?60477>.
-
-2021-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am: Make $(PROCESSEDDOCFILES) depend on all the same
-       targets as $(PROCESSEDEXAMPLEFILES); this way the me, ms, and
-       pic.ms manuals are all regenerated upon changes to their
-       underlying macro packages.
-
-2021-04-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * INSTALL.extra: Update.
-       (Evaluation): New section updates material on "test-groff"
-       script.  Also tell people how to preview our Texinfo manual (in
-       info, text, DVI, PDF, and HTML formats).
-       (In Case of Trouble): New section updates bug reporting URL.
-
-       Fixes <https://savannah.gnu.org/bugs/?57863>.
-
-2021-04-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Make the FAM string work more sensibly; it now
-       applies to headers, footers, and footnotes only if set
-       before the first call of a sectioning, paragraphing, or
-       {non-date} document description macro.
-       (PT, BT): Set the font family to that saved for titles.
-       (fn*do-FS): Set the font family to that saved for footnotes.
-       (par@init): Copy the document font family to independent strings
-       for titles and footnotes.
-       (par@reset): If in a footnote environment, set the font family
-       to that saved for footnotes; otherwise use \*[FAM].
-
-       * tmac/groff_ms.7.man (Differences from troff ms/Text settings):
-       Describe placement-dependent effect of FAM string setting.
-
-       * doc/groff.texi (Highlighting in ms):
-       * doc/ms.ms (Highlighting): As above, and suggest different
-       occasions in which ".ds FAM C" and "CW" are convenient.
-
-       Fixes <https://savannah.gnu.org/bugs/?60422>.
-
-2021-04-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (source, source_quietly)
-       (macro_source, macro_source_quietly): Use idiomatic Boolean
-       literals.
-
-2021-04-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi: Drop workarounds for Texinfo pre-5.0 versions;
-       our local macros produced many warnings during generation of our
-       Texinfo manual.
-       (Langlemacro):
-       (Ranglemacro):
-       (Lparenmacro):
-       (Rparenmacro):
-       (Lbrackmacro):
-       (Rbrackmacro): Delete.  Replace call sites with literals.
-       (Lbracemacro):
-       (Rbracemacro): Delete.  Replace call sites with @lbracechar{}
-       and @rbracechar{}.
-       (angles): Reimplement in terms of @guilsinglleft{} and
-       @guilsinglright{}.  Flesh out comment.
-
-       Fixes remainder of <https://savannah.gnu.org/bugs/?59524>.
-
-2021-04-17  Dave Kemper <saint.snit@gmail.com>
-
-       * doc/meintro.me:
-       * doc/meref.me: Correct and make consistent usage of the term
-       "point size".
-
-       Fixes <https://savannah.gnu.org/bugs/?60403>.
-
-2021-04-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (SS): Add devtags support.  Set a subsection
-       title as a second-level heading and add it to a table of
-       contents, if any.  Prompted by a query from Hans Unzner to the
-       groff mailing list.  Thanks, Hans!
-
-2021-04-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (SH): Fix apparent thinko.  Pass the devtags
-       macro a literal "1" argument.  Passing it \n[an-level] wasn't
-       correct (it stores the relative inset level, not a sectioning
-       level), and was useless anyway: SH has already called
-       .an-set-margin by this point, which resets \n[an-level] to 1.
-       man(7) does not support nesting of SH macros.  Also call
-       .DEVTAG-NH by its alias .DEVTAG-SH since section headings are
-       not numbered in man(7).
-
-2021-04-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Adjust editor file encoding hints.
-
-       * tmac/cs.tmac: Tell Vim the file is "iso-8859-2" (ISO Latin-2).
-       * tmac/en.tmac: Stop telling Emacs the file is "latin-1"; it's
-       ASCII.
-       * tmac/fr.tmac: Tell Vim file is "iso-8859-15" (ISO Latin-9).
-
-       Vim users may need to use ":e ++enc=iso-8859-2", for instance,
-       to see correct glyphs.
-
-2021-04-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       The first-order determinant of hyphenation points is language,
-       not territory.  Use ISO 639 2-letter language codes for
-       hyphenation and exception patterns instead of ISO 3166 2-letter
-       territory codes.
-
-       * tmac/*.us: Rename *.us files to *.en.
-       * tmac/troffrc: Change hyphenation language "us" to "en".
-       * tmac/en.tmac: Add English localization file.  Set hyphenation
-       mode to 4.
-       * tmac/troffrc: Derive groff locale from system.
-
-       * doc/groff.texi (Manipulating Hyphenation):
-       * man/groff.7.man (Hyphenation):
-       * man/groff_diff.7.man (Implementation differences): Refer to
-       "U.S. English" hyphenation patterns as simply "English"; they
-       will be mostly correct for Commonwealth English as well, and no
-       alternative English hyphenation patterns for other territories
-       are available.
-
-       * doc/groff.texi (Manipulating Hyphenation):
-       * man/groff_diff.7.man (New requests): Note that default
-       hyphenation mode depends on the language used on the system.
-       Add concept index entry for localization.  Add file index
-       entries for the locale macro files (cs.tmac, etc.).  Update to
-       reflect rename of English hyphenation patterns and .hla
-       identifier from "us" to "en".
-
-       * src/roff/groff/tests/localization_works.sh: Add 10 test cases.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       * tmac/LOCALIZATION: Rewrite.
-
-       Fixes <https://savannah.gnu.org/bugs/?59814>.
-
-2021-04-12  Dave Kemper <saint.snit@gmail.com>
-
-       * doc/meref.me: Correct various small issues.
-
-       Fixes <https://savannah.gnu.org/bugs/?60379>.
-
-2021-04-12  Dave Kemper <saint.snit@gmail.com>
-
-       * man/groff.7.man (Registers/Writable registers) <year, yr>:
-       Drop discussion of Y2K issues.
-
-       Fixes <https://savannah.gnu.org/bugs/?60372>.
-
-2021-04-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Setting Registers) <rnn>: Fix error: the
-       request is not ignored if the second argument (the new name)
-       does not exist.  Problem dates back to 52a6d12a (11 May 2000).
-
-2021-04-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Implement new .soquiet and .msoquiet requests.
-
-       Needed for two planned developments: {1} the i18n patch in
-       Savannah #59814 can use this to quietly attempt to open a
-       localization file.  groff only supports a few locales, so people
-       with LANG=es_ES, for instance, would ordinarily see warning
-       diagnostics on every groff startup; and {2} system- or
-       site-configurable support of per-user {.,}troffrc or man.local
-       files, gracefully failing if they don't exist.
-
-       * src/roff/troff/input.cpp:
-       (do_source): Add new function, taking boolean "quietly"
-       parameter and absorbing function of source(), with added
-       conditional.
-       (source): Convert into a wrapper to call do_source() unquietly.
-       (source_quietly): Wrap do_source(), quietly.
-       (do_macro_source, macro_source, macro_source_quietly): Analogous
-       to the foregoing.
-       (init_requests): Hook "msoquiet" to macro_source_quietly() and
-       "soquiet" to "source_quietly().
-
-       * doc/groff.texi (I/O):
-       * man/groff.7.man (Requests/Request short reference):
-       * man/groff_diff.7.man (Language/New requests): Document them.
-
-       * src/roff/groff/tests/msoquiet_works.sh:
-       * src/roff/groff/tests/soquiet_works.sh: Test them.
-
-       * src/roff/groff/groff.am (groff_TESTS): Add tests.
-
-       Fixes <https://savannah.gnu.org/bugs/?59973>.
-
-2021-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (ms Document Control Settings) <FF>: Update
-       description to cover application of footnote format to footnote
-       markers in general, not just numbers.  Clarify different
-       behavior of format 1 with respect to automatic numbers and other
-       markers.
-       (ms Footnotes) <*>: Describe string operation in more detail.
-       <FS>: Describe more precisely how the optional argument is
-       handled.
-
-       * doc/ms.ms (Footnotes): Synchronize with doc/groff.texi.  Add
-       example using document's own text as a model.
-
-       * tmac/groff_ms.7.man (Usage/Footnotes): Resync relevant
-       portions with doc/ms.ms.
-
-       Fixes <https://savannah.gnu.org/bugs/?60227>.
-
-2021-04-06  Dave Kemper <saint.snit@gmail.com>
-
-       * src/roff/nroff/nroff.sh: Recognize -k and -K options and pass
-       them through to troff.  Document them in usage message.
-       * src/roff/nroff/nroff.1.man: Document new -k and -K options.
-
-       Fixes <https://savannah.gnu.org/bugs/?60349>.
-
-2021-04-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Manipulating Hyphenation):
-       Recast introductory paragraph to better distinguish the
-       automatic breaking of words and placement of hyphens at
-       user-specified hyphenation points (done with the \% escape) and
-       automatic determination of hyphenation points within words (what
-       the pattern files and most of the hyphenation mode parameters
-       are for).  Clarify that what our manual calls "automatic
-       hyphenation" pertains only to the latter.
-       <hw> Correct over-general claim; hyphenation exceptions defined
-       with the .hw request _do_ honor .hy value 2 (don't break a word
-       at the bottom of a page), but none of the others.
-       <\%> Recast description of escape to emphasize independence of
-       its two uses (e.g., "\%pseudo\%unununium" is hyphenated only
-       after "pseudo-", if at all).
-       <\:> Clarify that escape is an input word boundary.
-       <shc> Clarify that the soft hyphen glyph is applied to manual as
-       well as automatically-determined hyphenation points.
-       <hy> Recharacterize as setting the _automatic_ hyphenation mode.
-       Note that restrictions apart from value 2 are not applied to
-       words with manually-assigned hyphenation points.
-       <nh> Note that request affects only automatic hyphenation.
-
-       * man/groff.7.man (Requests/Request short reference) <.hy,.nh>:
-       Clarify that requests deal with _automatic_ hyphenation.
-       (Registers/Read-only registers) <.hy>:
-       Clarify that register applies to _automatic_ hyphenation.
-       (Hyphenation): Add new introductory paragraph summarizing manual
-       hyphenation support and features, including notice that breaking
-       at explicit hyphens is performed in fill mode, i.e., even if
-       _automatic_ hyphenation is disabled.
-
-       Thanks to Peter Schaffter for the report.
-
-       Fixes <https://savannah.gnu.org/bugs/?60332>.
-
-2021-03-27  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Changes to the ghostscript fontnames (9.53.3).
-
-       * font/devpdf/Foundry.in: HI and HBI switch to using
-       Italic rather than Oblique.
-
-2021-03-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Manipulating Filling and Adjustment):
-       * man/groff_diff.7.man (Language/Extended requests): Fix
-       incorrect claim that additional inter-sentence space is applied
-       only in fill mode.  Drop word "parameter" from description of
-       unit used in .ss request arguments; it is a needlessly specific
-       reference to the font file format.  Tighten wording.
-
-       * man/groff.7.man (Control Characters): Fix incorrect claim that
-       end-of-sentence detection is attempted only in fill mode.  Note
-       that .ss request also affects inter-word spacing.
-
-       * man/groff_diff.7.man (Language/Extended requests):
-         - Drop example.
-         - Move discussion of AT&T vs. GNU troff difference in .ss
-           handling from here...
-         (Implementation Differences): ...to here.
-
-       Thanks to Dave Kemper for his continued scrutiny!
-
-2021-03-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (ms Cover Page Macros):
-       * doc/ms.ms (Cover page macros):
-       * tmac/groff_ms.7.man (Usage/Cover page macros): Revise and
-       rename (sub)sections to "Document description macros".
-
-2021-03-15  Dave Kemper <saint.snit@gmail.com>
-
-       * Makefile.am: Fix typos.  Thanks to Bjarni Ingi Gislason for
-       the report.
-
-       Fixes <https://savannah.gnu.org/bugs/?59457>.
-
-2021-03-14  Dave Kemper <saint.snit@gmail.com>
-
-       * man/groff_tmac.5.man: Correct erroneous reference to PSPIC
-       where PDFPIC was intended.  Fix numerous smaller style and
-       content problems.
-
-       Fixes <https://savannah.gnu.org/bugs/?60229>.
-
-2021-03-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Optional man extensions) <CW, EX, PN, Pn>:
-       (Highlighting in ms) <CW>:
-       (Additional ms macros) <CW>: Use "monospaced" to refer to font
-       selected, retaining "constant-width" term only where it explains
-       the macro mnemonic.  Thanks to Dave Kemper for pointing out the
-       issue.  Also fix error: .CW in the ms package seems to have
-       originated with Research Unix, not Berkeley.
-
-       * doc/ms.ms (Highlighting) <CW>: Sync with our Texinfo manual.
-       * tmac/groff_ms.7.man: Sync with ms.ms, omitting FAM advice.
-
-       Fixes <https://savannah.gnu.org/bugs/?60037>.
-
-2021-03-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Identifiers, Strings, Writing Macros)
-       (Diversions): Improve cross-linkage of documentation regarding
-       shared name space of macros, strings, diversions, and boxes.
-
-       Fixes <https://savannah.gnu.org/bugs/?58995>.
-
-2021-03-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Improve diagnostic messages.
-       (@diag): New macro wraps .tm request, always prefixing it with
-       the name of the macro package, as well as file and line
-       indicators only if these are set to non-empty or non-zero
-       values, respectively.
-       (@error, @warning): Call @diag instead of .tm directly.
-       (@fatal): Retire; it had only one call site and it would have
-       greatly complicated @diag to support calling .ab instead of .tm.
-       An ugly alternative would have been to call .ab with a redundant
-       message after calling @diag.
-       (@divert): New macro wraps .di request, remembering the name of
-       the current file (\n[.F]) when a diversion is started.
-       (@error-recover): Call .ab instead of (deleted) @fatal.
-       (pg@super-eject): Tell user what the last file name seen was
-       when recovering from an unfinished diversion when processing
-       ends.
-
-       Fixes <https://savannah.gnu.org/bugs/?55099>.
-
-2021-02-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Fix bug where having line numbering off but the output line
-       number register \n[ln] set to a positive value would cause
-       tbl(1) table rows to spontaneously become numbered.  Use new
-       \n[.nm] register to determine whether line numbering is enabled.
-
-       * src/preproc/tbl/table.cpp (table::init_output, table::do_row)
-       (table::do_bottom): Predicate all conditions on \n[ln]
-       additionally on \n[.nm].
-
-       Thanks to Olle Lögdahl for the report.  Problem appears to date
-       back to commit b69062693d3360efce9d4d63fac337be21e07db7, 20 July
-       2011.
-
-       Fixes <https://savannah.gnu.org/bugs/?59812>.
-
-2021-02-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #59812.
-
-       * src/preproc/tbl/tests/cooperate-with-nm-request.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TEST): Run test.
-
-2021-02-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Implement new read-only register ".nm".  It reports the
-       enablement status of output line numbering (caused by the .nm
-       request) irrespective of the temporary suspension of numbering
-       with the .nn request.  Needed because there was no way to
-       introspect its state, tbl(1) needs to do so, and the writable
-       line number register \n[ln] is not a reliable proxy for it.
-
-       * src/roff/troff/env.h: Add get_numbering_nodes(), returning
-       `int`, to public interface of `environment` class.
-       * src/roff/troff/env.cpp: Implement get_numbering_nodes().
-
-       * src/roff/groff/tests/dot-nm_register_works.sh: Test it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       * doc/groff.texi (Miscellaneous):
-       * man/groff_diff.7.man (Language/New number registers):
-       * man/groff.7.man (Registers/Read-only registers): Document it.
-
-       * NEWS: Add item.
-
-2021-02-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Emit warning diagnostic when using a multi-page
-       table with a repeating header (".TS H").
-       (KS): Rename diversion from "kp*div" to "kp@div" since the name
-       is now referenced outside the keep module.
-       (KF): ...similarly for kp@fdiv.
-       (generally): Update diversion dereference sites and derived
-       names.
-       (@TS): When handling "H" argument, check identity of current
-       diversion and emit appropriately worded warning.
-
-2021-02-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * FOR-RELEASE: Add more procedures and information related to
-       incrementing groff's version number.
-
-2021-02-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/searchpath.cpp (search_path::open_file)
-       (search_path::open_file_cautious): Save errno before calling
-       free() and restore it afterwards.  A future version of POSIX
-       will require that free() not change errno if it succeeds[1];
-       some C library implementations, including recent versions of
-       glibc[2], lack this property.  free() is called in these
-       libgroff functions to clean up after an unsuccessful fopen() of
-       a heap-allocated file name string, and because the errno from
-       fopen() may be passed to strerror() in a diagnostic message, it
-       needs to be accurate.  I checked the rest of groff's codebase
-       and found no other instances of free() being used to clean up
-       after fopen() failure.
-
-       [1] https://www.austingroupbugs.net/view.php?id=385
-       [2] https://sourceware.org/bugzilla/attachment.cgi?id=13073
-
-2021-02-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Address build failure on macOS.
-
-       Follow the advice of the gnulib manual ("Changing your source
-       for use with gnulib") more scrupulously; include config.h in
-       more files.
-
-       * src/libs/libgroff/curtime.cpp [HAVE_CONFIG_H]:
-       * src/libs/libgroff/device.cpp [HAVE_CONFIG_H]:
-       * src/libs/libgroff/fatal.cpp [HAVE_CONFIG_H]:
-       * src/libs/libgroff/string.cpp [HAVE_CONFIG_H]:
-       * src/libs/libgroff/strsave.cpp [HAVE_CONFIG_H]:
-       * src/preproc/eqn/other.cpp [HAVE_CONFIG_H]:
-       * src/preproc/eqn/text.cpp [HAVE_CONFIG_H]:
-       * src/preproc/pic/object.cpp [HAVE_CONFIG_H]: Do it.
-
-       * src/libs/libgroff/assert.cpp [HAVE_CONFIG_H]:
-       * src/libs/libgroff/errarg.cpp [HAVE_CONFIG_H]:
-       * src/libs/libgroff/error.cpp [HAVE_CONFIG_H]: #include
-       config.h using angle brackets instead of quotation marks.
-
-       Fixes <https://savannah.gnu.org/bugs/?60035>.
-
-2021-02-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #60025.
-
-       * tmac/tests/doc_Mt-works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2021-02-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Demote definition of \[yogh] special character escape from
-       unconditional availability to be defined only if the output
-       device defines it or if .AM macro is called to enable support
-       for Berkeley-style accent marks.
-
-       See
-         https://lists.gnu.org/archive/html/groff/2021-01/msg00000.html
-       and follow-ups for discussion.
-
-       * tmac/s.tmac (initialization): Move definition of \[yogh] (only
-       if the output device doesn't already define it) from here...
-       (AM): ...to here.
-
-2021-02-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/ms.ms: Use \[ps] special character instead of local
-       character definition using numeric code point escape, which is
-       less portable.
-
-       Fixes <https://savannah.gnu.org/bugs/?59528>.  Thanks to Bjarni
-       Ingi Gislason for the report and a suggested patch.
-
-2021-02-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (initialization): Call par*define-font-macro with
-       arguments "CW" and "R" in nroff mode to silence font warnings
-       from documents using .CW macro in nroff mode.
-
-2021-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::init_output): Save value of
-       hyphenation maximum consecutive line count register (\n[.hlm])
-       more carefully to keep it from being incorrectly parsed as a
-       decrement, because negative values of \n[.hlm] are valid (in
-       fact, "-1" is the default).  In documents with a large number of
-       tables, this can lead to a Persian chessboard problem and an
-       integer overflow (at the groff language level, caught and
-       handled by src/roff/troff/number.cpp:parse_term()).
-
-       It is wise to wrap a non-literal second argument to the .nr
-       request in parentheses if assignment is desired and its value
-       can be negative.  See section 5.6.1 ("Setting Registers") of the
-       groff Texinfo manual.
-
-       Fixes <https://savannah.gnu.org/bugs/?59993>.
-
-2021-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * test-groff.in: Add support for rfc1345.tmac.
-
-2021-02-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Integrate rfc1345.tmac into build system.
-
-       * contrib/rfc1345/rfc1345.am: Do it.
-       * Makefile.am: Include contrib/rfc1345/rfc1345.am.
-
-2021-02-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (open_mac_file): Report problem when
-       attempting to open macro files (-m arguments) and the error is
-       something other than ENOENT.
-       (process_macro_file): Update diagnostic to be more precise; the
-       file couldn't be _opened_, not necessarily _found_, and clarify
-       that the string being reported back to the user is the argument
-       to the -m option, not a file name.
-       (macro_source): Update diagnostic to report that the file
-       couldn't be _opened_, not necessarily _found_, and include the
-       nature of the problem.
-
-2021-01-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Save and restore hyphenation parameters.
-
-       * src/preproc/tbl/table.cpp (table::init_output): When starting
-       a table, save the hyphenation parameters (\n[.hy], \n[.hla],
-       \n[.hlm], \n[.hym], \n[.hys]).  Restore them in the table reset
-       macro (confusingly called "3init"), which is called before
-       performing each diversion and before exiting a table.
-
-       This enables people to, e.g., turn off hyphenation in a table
-       text block with .nh, just as they can turn off adjustment with
-       .na, without having to manually reset it.  The next text block,
-       and the material after the table, will not be affected.
-
-       Fixes <https://savannah.gnu.org/bugs/?59971>.
-
-2021-01-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #59971.
-
-       * src/preproc/tbl/tests/\
-       save-and-restore-hyphenation-parameters.sh: Do it.
-       * src/preproc/tbl/tbl.am (tbl_TEST): Run test.
-
-2021-01-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am ($(TMACSTRIPFILES)):
-       ($(TMACMDOCSTRIPFILES)): Remove unidiomatic for loop which
-       frustrated parallel make operation.
-
-       Thanks to an anonymous contributor for the report and patch.
-
-       Fixes <https://savannah.gnu.org/bugs/?59958>.
-
-2021-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/ms.ms (Document control settings): Document old FAM string
-       and new FR string.
-
-2021-01-29  T. Kurt Bond <tkurtbond@gmail.com>
-
-       [ms]: Add new string FR to hold an expression for computing the
-       footnote length relative to the line length, consistently for
-       single- and multi-column modes, which \n[FL] has never done.
-
-       * tmac/s.tmac: Initialize FR string to "11/12".
-       (@MC): Compute footnote column width using \*[FR] instead of a
-       hard-coded "11/12" expression.
-       (par@init): Compute default \n[FL] using \*[FR] instead of a
-       hard-coded "11/12" expression.
-
-       * doc/groff.texi (Macro Packages/ms/Document control settings):
-       * tmac/groff_ms.7.man (Usage/Document control registers):
-       Document it.
-
-       Fixes <https://savannah.gnu.org/bugs/?59605>.
-
-2021-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp: Add ADJUST_MAX enumeration constant to
-       record maximum valid numerical adjustment mode.
-       (adjust): Verify numeric argument against ADJUST_MAX instead of
-       a numeric literal.  Ignore excessively large values instead of
-       setting adjustment mode to "right".  Update warning diagnostic.
-
-2021-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for .ad and .na requests.
-
-       * src/roff/groff/tests/adjustment_works.sh: Do it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2021-01-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Manipulating Filling and Adjustment):
-       * man/groff.7 (Requests/Request short reference): Clarify
-       behavior of ".na" and ".ad l".
-
-       Thanks to Bjarni Ingi Gislason for pointing out the potential
-       for confusion and for his careful review of the new text.
-
-       Fixes <https://savannah.gnu.org/bugs/?59795>.
-
-2021-01-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/grog/grog.pl: Report program name in fatal error
-       diagnostics.  Also drop sentence-ending punctuation since Perl
-       supplies additional information.
-
-       Continues the long process of fixing Savannah #52463.
-
-2021-01-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (RE): Style-warn if macro arguments are out
-       of range or redundant.
-
-       Fixes <https://savannah.gnu.org/bugs/?55320>.
-
-2021-01-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Improve style of troffrc{,-end} files.  Follow established
-       idioms and make them consistent with each other.
-
-       * tmac/troffrc:
-       * tmac/troffrc-end:
-         - Identify files in header comments as part of GNU troff.
-
-       * tmac/troffrc:
-         - Clarify purpose of .do request.
-         - Identify .X (set by groff -X) as a register, not a string.
-         - Remove temporary registers one per line to make
-           synchronization with foregoing logic easier.  Fixes name
-           space management nits: an undefined string troffrc!Xps was
-           being removed, and troffrc!{ascii,latin1,utf8,cp1047} were
-           not being removed despite being defined.
-
-       * tmac/troffrc-end:
-         - Clarify that file is read after -m file arguments (not "all
-           macro sets", which can be loaded with .mso after this file
-           is processed).
-         - Advise usage of .do for groff extensions.
-         - Line-break one-off conditionals as troffrc does.
-         - Add empty string comment to empty string definitions.
-
-2021-01-14  Dave Kemper <saint.snit@gmail.com>
-
-       Commit 87edb525, from 2003, added character U+2026 (HORIZONTAL
-       ELLIPSIS) to most base groff fonts, but there has been no
-       kerning information for this character.  To produce consistent
-       typography, it should be kerned the same way as the period,
-       which is in 818 kern pairs across all the devps fonts.
-
-       Apply the following shell command to the groff description files
-       of the PostScript fonts.
-
-         for file in font/devps/*[A-Z]
-           do sed -Ei\~ 's/(.*)(^| )\. (.*)/&\n\1\2u2026 \3/' $file
-         done
-
-       * font/devps/AB:
-       * font/devps/ABI:
-       * font/devps/AI:
-       * font/devps/AR:
-       * font/devps/BMB:
-       * font/devps/BMBI:
-       * font/devps/BMI:
-       * font/devps/BMR:
-       * font/devps/HB:
-       * font/devps/HBI:
-       * font/devps/HI:
-       * font/devps/HNB:
-       * font/devps/HNBI:
-       * font/devps/HNI:
-       * font/devps/HNR:
-       * font/devps/HR:
-       * font/devps/NB:
-       * font/devps/NBI:
-       * font/devps/NI:
-       * font/devps/NR:
-       * font/devps/PB:
-       * font/devps/PBI:
-       * font/devps/PI:
-       * font/devps/PR:
-       * font/devps/TB:
-       * font/devps/TBI:
-       * font/devps/TI:
-       * font/devps/TR:
-       * font/devps/ZCMI: Apply above script.
-
-       Fixes <https://savannah.gnu.org/bugs/?58897>.  However, this
-       will need to be done again if afmtodit is used to regenerate the
-       above files, or afmtodit will need to be modified to add this
-       kerning information itself.
-
-2021-01-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/relocate.cpp (set_current_prefix) [_WIN32]:
-       Move declaration of `pathextstr` to lie within preprocessor
-       conditional, since it is dereferenced only there.
-
-2021-01-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add support for strsignal().
-
-       POSIX.1-2008 added strsignal() to the C library and recommended
-       its use over sys_siglist[], but groff's pipeline management
-       hadn't been updated in that respect since that time.
-
-       * configure.ac: Check for strsignal().
-       * src/roff/groff/pipeline.c (xstrsignal): Return strsignal() if
-       it is defined.
-
-       Thanks to an anonymous contributor for the report and the patch.
-
-       Fixes <https://savannah.gnu.org/bugs/?59835>.
-
-2021-01-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libgroff/relocate.cpp (relocatep): Add assertion to
-       identify logic error if `curr_prefix` is unexpectedly a null
-       pointer.
-       (set_current_prefix) [_WIN32]: Allocate memory from heap for
-       `curr_prefix` only on Windows; on other systems, this file's
-       searchpath() is used to populate `curr_prefix`, and that
-       function (except on Windows) performs its own allocation.  Fixes
-       memory leak noted by Ingo Schwarze.
-       (set_current_prefix) [!_WIN32]: Move logic attempting to set
-       `curr_prefix` by calling searchpathext() from here...
-       [WIN32]: ...to here.  The PATHEXT environment variable has
-       semantics only under Windows, not POSIX systems, so the
-       placement of this code seemed erroneous.
-
-       See <https://savannah.gnu.org/bugs/?55475>.
-
-2021-01-06  Colin Watson <cjwatson@debian.org>
-
-       * contrib/glilypond/glilypond.pl:
-       * contrib/gperl/gperl.pl:
-       * contrib/gpinyin/gpinyin.pl:
-       * tmac/hyphenex.pl: Avoid Perl's unsafe "<>" operator.
-
-       The "<>" operator is implemented using the two-argument form of
-       "open", which interprets magic such as pipe characters, allowing
-       execution of arbitrary commands which is unlikely to be
-       expected.  Perl >= 5.22 has a "<<>>" operator which avoids this,
-       but also forbids the use of "-" to mean the standard input,
-       which is a facility that the affected groff programs document.
-
-       ARGV::readonly would probably also fix this, but I fundamentally
-       dislike the approach of escaping data in preparation for a
-       language facility to unescape it, especially when the required
-       escaping is as non-obvious as it is here.  (For the same reason,
-       I prefer to use subprocess invocation facilities that allow
-       passing the argument list as a list rather than as a string to
-       be interpreted by the shell.)  So I've abandoned this dubious
-       convenience and changed the affected programs to iterate over
-       command-line arguments manually using the three-argument form of
-       open.
-
-       glilypond doesn't need the initial unshift since that's already
-       handled in contrib/glilypond/args.pl.
-
-       Fixes <https://savannah.gnu.org/bugs/?55557>.
-
-2021-01-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Set footnote line length in multi-column
-       environments to 11/12ths of the text line length for consistency
-       with earlier change to FL register default.
-
-       Thanks to T. Kurt Bond for bringing this issue to my attention.
-
-2021-01-04  John Gardner <gardnerjohng@gmail.com>
-
-       * tmac/strip.sed: Escape '.' wildcard when matching lines using
-       .as and .ds requests.
-
-       Fixes <https://savannah.gnu.org/bugs/?59498>.
-
-2021-01-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Document use of SOURCE_DATE_EPOCH and TZ.
-
-       The semantics of SOURCE_DATE_EPOCH to groff were not established
-       with respect to time zone selection, prompting divergent
-       interpretations; Debian and distributions derived from it have
-       for several years patched groff to implicitly use UTC as the
-       time zone when interpreting the current time (or
-       SOURCE_DATE_EPOCH) as a local time.  While a convenient and
-       defensible choice for reproducible build efforts[1], it runs
-       against the grain of user expectations.  Systems programmers
-       like monotonically increasing clocks; the broader user base
-       usually prefers a clock that follows an applicable civil
-       calendar.  To the latter audience, a difference between
-         $ date "+%Y-%M-%d %H:%m:%S"
-       and
-         $ groff <<EOF
-         .af year 0000
-         .af mo 00
-         .af dy 00
-         .af hours 00
-         .af minutes 00
-         .af seconds 00
-         .tm \n[year]-\n[mo]-\n[dy] \n[hours]:\n[minutes]:\n[seconds]
-         EOF
-       is difficult to explain.
-
-       * doc/groff.texi (Environment):
-       * src/devices/grohtml/grohtml.1.man (Environment):
-       * src/devices/gropdf/gropdf.1.man (Environment):
-       * src/devices/grops/grops.1.man (Environment):
-       * src/roff/groff/groff.1.man (Environment):
-       * src/roff/troff/troff.1.man (Environment): Expand description
-       of use of SOURCE_DATE_EPOCH to note that it converts the time
-       {as seconds since the Epoch} to local time, which motivates
-       documentation of the TZ environment variable.  Explain what the
-       time stamps are used for: troff merely stores the human-readable
-       time components in registers; the grohtml, gropdf, and grops
-       output drivers write the information to the output in comments.
-
-       Fixes <https://savannah.gnu.org/bugs/?57218>.
-
-       [1] https://reproducible-builds.org/docs/source-date-epoch/
-
-2020-12-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (.texi.dvi): Call texi2dvi with FORCE_SOURCE_DATE=1
-       in the environment, avoiding an embedded timestamp in the
-       generated groff.dvi file, which frustrated reproducible builds.
-       Thanks to Werner Lemberg for the suggestion.
-
-       * src/roff/groff/tests/string_case_xform_unicode_escape.sh: Fix
-       test to no longer use Bash process substitution, resulting in
-       nondeterministic file descriptor numbers appearing in test logs,
-       frustrating reproducible builds.
-
-       * contrib/pdfmark/pdfmark.am (PDFROFF): Call pdfroff without
-       `--keep-temporary-files` option.  Temporary directories are
-       created with mktemp(1) and files with an embedded process
-       identifier, which frustrates reproducible builds.
-
-       See <https://savannah.gnu.org/bugs/?57218>.
-
-2020-12-21  Dorai Sitaram <ds26gte@yahoo.com>
-
-       * tmac/s.tmac (@IP): Handle inter-sentence space correctly in
-       paragraph tags by copying \n[.sss] from the enclosing
-       environment to that used to format the paragraph tag.
-
-       Fixes <https://savannah.gnu.org/bugs/?59742>.
-
-2020-12-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #59742.
-
-       * tmac/tests/s_IP_respects_inter-sentence_space_in_tags.sh: Do
-       it.
-       * tmac/tmac.am (tmac_TESTS): Run it.
-
-2020-12-21  Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-
-       * src/utils/addftinfo/addftinfo.cpp (usage): Use size_t for loop
-       index when iterating over a count of size_t items.  Quiets
-       signedness mismatch compiler warning.
-
-       Fixes <https://savannah.gnu.org/bugs/?59583>.
-
-2020-12-20  Colin Watson <cjwatson@debian.org>
-
-       * src/devices/gropdf/gropdf.pl:
-       * src/utils/afmtodit/afmtodit.pl: Sort Perl hash keys.  Hash
-       iteration order may differ between runs, which makes builds
-       harder to reproduce.  Sort hash keys in gropdf and afmtodit
-       output to avoid this.
-
-2020-12-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/ms.ms (Basic Information): Tweak unit definitions.  groff
-       defines a typesetter's point as precisely 1/72 inches.  Also use
-       the correct symbol for inch units--strictly, it's the same as
-       that for "seconds" as in subdivisions of the degree, and not a
-       typographical quote of any sort.
-
-       Fixes <https://savannah.gnu.org/bugs/?59463>.
-
-2020-12-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Set footnote line length to AT&T default.
-
-       groff ms has since its initial implementation used a default
-       footnote line length of 5/6ths of the text line length; this may
-       correspond to an early AT&T ms default (perhaps documented in
-       the 1974 version of the M. E. Lesk paper, "Typing Documents on
-       the UNIX System"[1]).  However, as early as V6 Unix (1975), AT&T
-       ms actually used a footnote line length of 11/12ths of the text
-       line length instead[2].
-
-       Heirloom Doctools and neatroff ms also use this default.
-
-       * tmac/s.tmac: Set default footnote line length to 11/12ths of
-       the text line length.
-
-       * doc/groff.texi (ms Document Control Settings):
-       * doc/ms.ms (Document control registers): Document new default.
-
-       [1] https://www.troff.org/using-ms.pdf
-       [2] https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/lib/tmac.s
-
-2020-12-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Lower new unplanted trap error to 'mac' warning.
-
-       * src/roff/troff/div.cpp (top_level_diversion::change_trap):
-       Change error upon invalid attempt to move an unplanted trap into
-       a warning of type 'mac'.
-
-       * doc/groff.texi (Warnings):
-       * src/roff/troff/troff.1.man (Warnings): Recast description of
-       'mac' warning type to include the above scenario.
-
-       Thanks to Bjarni Ingi Gislason for reporting the diagnostic
-       arising in real life, and to Peter Schaffter for the discussion
-       and recommendation.  Some bike sheds get painted quickly!
-
-       Fixes <https://savannah.gnu.org/bugs/?59573>.
-
-2020-12-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_mdoc.7.man: Tweak mandatory macro explanations.
-
-       Update descriptions and template of .Dd, .Dt, .Os usage to
-       reflect recent changes and recommended conventions.
-
-       Thanks to Ingo Schwarze, Colin Watson, and Alan D. Salewski for
-       the discussion, and Florent Rougon and Robert Bihlmeyer (many
-       years ago) for the original report.
-
-       Fixes <https://bugs.debian.org/284002>.
-
-2020-12-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/xtotroff/xtotroff.c (MapFont): Avoid writing past
-       the end of a static buffer.  Problem found and patch supplied by
-       Bjarni Ingi Gislason.  I tweaked it to comment it differently
-       {in case the buffer ever needs to grow, but the prospects of
-       future X11 server-side font rendering development seem dim} and
-       use snprintf() instead of retaining the existing sprintf().
-
-       Fixes <https://savannah.gnu.org/bugs/?55257>.
-
-2020-12-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/xtotroff/xtotroff.c (CanonicalizeFontName)
-       (FontNamesAmbiguous, MapFont, main): Format diagnostic messages
-       more consistently with GNU Coding Standards.  Prefix with name
-       of complaining command.  Put argument literals in quotation
-       marks.  Put each message on one line only.
-
-2020-11-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Parameters): Fix error in example.  Arguments
-       to .als were in the wrong order (.als is not ln(1)).  Also mark
-       output to the standard error stream using the @error Texinfo
-       command instead of @result.
-
-       Thanks to Dorai Sitaram for finding this error.
-
-       Fixes <https://savannah.gnu.org/bugs/?59566>.
-
-2020-11-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Debugging): Update with a more helpful
-       introduction, summarizing available procedures.  Mention
-       backtracing since it is much more useful now (post-groff
-       1.22.4.)
-
-       * man/groff.7 (Debugging): Add new section summarizing
-       material added to our Texinfo manual.
-
-       * man/groff_diff.7.man (Debugging): Add new section describing
-       groff extensions.
-
-2020-11-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Traps): Update.  Organize subsubsections "Page
-       Location Traps" and "Diversion Traps" under new subsection node
-       "Vertical Position Traps" to make the conceptual organization
-       more clear.  Define and discuss trap visibility earlier.
-       Document unit used for page location trap reporting.  Introduce
-       analogy of .wh and .ch requests as queue operations.  Document
-       what happens when the same macro is planted as a trap in
-       multiple locations; supply example.  Supply example of .itc
-       usage.  Consistently refer to an end-of-input macro as such, to
-       contrast it with the "end macro" that can be used with, e.g.,
-       .de and .ig requests.
-
-       * man/groff.7 (Traps): Add new section summarizing
-       language feature.
-
-2020-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common-u (doc-footer): When performing
-       double-sided page layout, set page number on outside of _recto_
-       {odd-numbered} pages, as is conventional and for consistency
-       with man(7).
-
-       * tmac/groff_mdoc.7.man
-       (Formatting with groff, troff, and nroff): Document what
-       double-sided layout (not "printing") means.  Also correct
-       description of continuous rendering, which implied that page
-       headers and footers were not written at all, and used an
-       incorrect groff driver name.
-
-       Fixes <https://bugs.debian.org/919890>.  Also see:
-       https://lists.gnu.org/archive/html/groff/2019-01/msg00021.html
-       Thanks to Ralph Corderoy for the discussion.
-
-       * tmac/tests/doc-D_places_page_numbers_correctly.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2020-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common-u (doc-header): Fix infinite loop when
-       attempting to trim header string (like "FTP(1)") to fit when the
-       available title length won't allow even extreme shortening.
-       Measure the string before and after calling .substring on it,
-       and break out of loop if it didn't get shorter.
-
-       Problem dates back to at least
-       ed63b0ae76a611b581601a1afc192f6a7367be6f (7 July 2002), possibly
-       as far as the Great Mdoc Rewrite of
-       058f72af832fc68488d33cd09ec819e5c560fa09 (23 March 2001).
-
-       One can never check loop invariants too many times...
-
-       Fixes <https://bugs.debian.org/411227>.
-
-       * tmac/tests/\
-       doc-do_not_loop_infinitely_when_shortening_headers.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2020-11-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/nroff/nroff.sh: Recognize -b and -z options and pass
-       them through to troff.  Document them in usage message.
-       * src/roff/nroff/nroff.1.man: Document new -b and -z options.
-
-2020-11-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/div.cpp (top_level_diversion::change_trap):
-       Emit error diagnostic if an attempt is made to move an unplanted
-       macro.  This could have been a warning, as it's pretty harmless
-       {though possibly a big surprise to anyone who was wondering why
-       their .ch was a no-op}, but there's no good warning category for
-       this kind of problem and I am not about to start a bike shed
-       discussion about it right now.
-
-2020-11-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi: Update.  Add introductory material.  Rewrite
-       the first section of the "gtroff Reference" chapter of our
-       Texinfo manual.  It is written as an introduction for readers
-       who want to go straight to "raw" troff without knowing much or
-       anything about existing macro packages.  Thanks to Dave Kemper
-       and John Gardner for feedback and support.
-
-       Clarify whitespace usage.  "Whitespace" is defined in this
-       manual as "spaces, tabs, and newlines".  Say only "spaces and
-       tabs" when newlines should not be included.
-
-       Rename "Font Files" to "Device and Font Files".
-
-       Rename "Manipulating Filling and Adjusting" to "Manipulating
-       Filling and Adjustment".
-
-       Update discussion of "copy mode".  Rename from "copy-in mode",
-       which I don't think eludicdated anything; is there a "copy-out
-       mode"?  Rename nodes accordingly.  Attempt to explain more
-       clearly.  Recast to shift emphasis to what _isn't_ merely copied
-       in copy mode, since that is what seems to cause confusion among
-       the inexperienced.
-
-       Update "Conditionals and Loops".  Add introductory paragraph.
-       Add nodes/subsections "if-then" and "Conditional Blocks".  Add
-       subsection "Conditional Blocks" to explain the behavior of the
-       \{ and \} escapes much more precisely.  I don't think this
-       syntactical area is well understood.  Supply examples.
-
-2020-11-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add style checks to man(7) macro package.
-
-       Not otherwise documented yet; experimental--subject to change.
-
-       * tmac/an-old.tmac: Initialize CHECKSTYLE to false if not
-       already set.
-       (an-style-warn): New macro emits diagnostic of type "style" when
-       called if CHECKSTYLE register is true.
-       (TH): Call an-style-warn if fewer than two or more than five
-       arguments are seen.
-       (RI, IR, IB, BI, RB, BR): Call an-style-warn if fewer than two
-       arguments are seen.
-
-2020-11-11  Bertrand Garrigues <bertrand.garrigues@laposte.net>
-
-       Update copyright.
-
-       * update-copyright.sh: use gnulib's 'update-copyright' script.
-       Pass this script in directories 'arch', 'contrib', 'font',
-       'man', 'tmac', 'src' and on a list of extra files.
-
-       * FOR-RELEASE: mention this point.
-
-2020-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/preconv.1.man (Description): Fix error:
-       groff's -K option, not -k, specifies a character econding (and
-       overrides GROFF_ENCODING in the environment).  Also explain how
-       valid encoding strings are determined.
-
-       Thanks to Bjarni Ingi Gislason for the report.
-
-       Fixes <https://savannah.gnu.org/bugs/?59445>.
-
-2020-11-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::compute_separation_factor):
-       Add word "table" to diagnostic message to better cue the user
-       that it is produced by roff that has been injected into the
-       document by the tbl(1) preprocessor.  The other 3 such possible
-       diagnostic messages already do this.  Thanks to Bjarni Ingi
-       Gislason for bringing the inconsistency to light.
-
-       Fixes <https://savannah.gnu.org/bugs/?59443>.
-
-2020-11-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_mdoc.7.man (Predefined strings): Ensure the table
-       fits even on ASCII and Latin-1 terminals.  Thanks to Bjarni Ingi
-       Gislason for the report.
-
-       Fixes <https://savannah.gnu.org/bugs/?59424>.
-
-2020-11-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_mdoc.7.man (General text domain/Enclosure and
-       Quoting Macros): Fix errors in macro descriptions.
-       <.Dq>: Encloses its arguments in directional double quotes where
-       available.
-       <.Eq>: Misrendered example; say "XstringY" rather than
-       "XXstring".
-       <.Sq>: Encloses its arguments in directional single quotes where
-       available.
-
-2020-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add support for CS and CT registers to mdoc(7), just like in
-       man(7), from a year ago.
-
-       * tmac/doc.tmac-u (doc-print-recursive): Call .stringup on each
-       argument if register doc-do-capitalize is true.
-       * tmac/mdoc/doc-common-u (Dt): Call .stringup on
-       doc-document-title if \n[CT] is true.
-       (Sh): Set doc-do-capitalize to value of \n[CS].  Set
-       doc-do-capitalize false before returning.
-       * tmac/mdoc/doc-ditroff-u:
-       * tmac/mdoc/doc-nroff-u: Set CS and CT registers to 0 (false)
-       if the user has not defined them.
-
-       * tmac/groff_mdoc.7.man \
-       (Formatting with groff, troff, and nroff): Document it.
-
-       * tmac/tests/doc-CS_works.sh:
-       * tmac/tests/doc-CT_works.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2020-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_overstrike, do_bracket)
-       (do_name_test, do_expr_test, do_zero_width, do_width)
-       (do_special, do_if_request, read_color_draw_node): Improve
-       diagnostic messages for missing closing delimiters by describing
-       the incomplete structure and the problem token.
-       (read_rgb, read_cmy, read_cmyk, read_gray): Improve English
-       syntax of diagnostic message when color definition missing.
-
-2020-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-ditroff-u:
-       * tmac/mdoc/doc-nroff-u: Recognize but ignore the groff_man(7)
-       string HF and registers FT, IN, P, SN, and X (by initializing
-       them empty or zero if they are not set).  This reserves them so
-       that they don't become used for divergent purposes.  man(1)
-       programs set these and other parameters already handled (like
-       LL) to configure page rendering, and it would break the
-       macro-package agnosticism afforded by andoc.tmac to expose
-       different externally-programmable registers and strings.
-       * tmac/groff_mdoc.7.man \
-       (Formatting with groff, troff, and nroff): Document this.
-
-2020-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Implement \*< and \*> strings for subscripting.
-       groff ms has had (extension) strings for superscripting since
-       1991 at the latest, and the asymmetry possessed me of a madness.
-       Both pairs of string names follow similar usage in Eric Allman's
-       "me" macros.
-
-       * NEWS:
-       * doc/groff.texi:
-       * tmac/groff_ms.7.man: Document it.
-
-2020-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_mdoc.7.man (Predefined strings): Fix error: the
-       \*[Lq] and \*[Rq] strings degrade to neutral double quotes (")
-       on "nroff" devices (-Tascii and -Tlatin1), not "``" and "''".
-
-2020-10-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (ds*end!0): Improve diagnostic to mention .RD.
-
-2020-10-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac: Revise diagnostic messages.  Define a common
-       prefix string, starting all such messages with "s.tmac".
-       Continues the long process of fixing Savannah #52463.  Drop the
-       word "macro" from diagnostic since this will now be clear from
-       the prefix.  Prefix every macro name in a diagnostic message
-       with a leading dot; this was already done in four cases.
-       (cov*first-page-init): Use temporary string to avoid multi-line
-       diagnostic message.
-       (@NH): Use temporary string to prevent overlength line.
-
-       A further benefit of this revision is that index information
-       produced by ms's .IX macro (which writes to the standard error
-       stream) will now be trivially easy to extract even for documents
-       that cause diagnostic messages.  One can simply filter them with
-               grep -v '^s\.tmac:'
-       or similar.
-
-2020-10-28  Ingo Schwarze <schwarze@openbsd.org>
-
-       * man/roff.7.man, tmac/groff_man.7.man.in: Correct man(7)
-       history.
-
-2020-10-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Fix ms .R macro to work as documented, by handling its arguments
-       instead of ignoring them.
-
-       * tmac/s.tmac (R): Delete.  During set up, call
-       par*define-font-macro for R font just as we do for B, I, and BI.
-
-       Problem dates back at least to groff 1.02, June 1991.
-
-       * tmac/tests/s_R-handles-its-arguments.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?59348>.
-
-2020-10-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Fix ms .TC macro by allowing it to actually use lowercase Roman
-       numerals for the page(s) of the table of contents when a custom
-       title (header or footer) is defined containing '%'.
-
-       As a side effect, eliminate the PN register, which was
-       apparently misused because it was undocumented and had a name
-       just long enough to be both suggestive and ambiguous.  Another
-       pin goes into my Ken Thompson voodoo doll.
-
-       * tmac/s.tmac (IX): Write out page number of index term(s) using
-       the % register (instead of PN), obtaining whatever format is
-       assigned to the register at that time.
-       (CH): Similarly, output %, not PN, in the center of the default
-       heading.
-       (PT): Save the format of %, set it to decimal, copy its value to
-       a new register, pg*page-number-in-decimal, then restore %'s
-       previous format.  Compare the new register, not %, to 1 to
-       determine whether special page one behavior should be used.
-       (pg*end-page): Assign pg*next-format to %, not PN.
-       (XA): Define toc*num with the interpolation of %, not PN.
-
-       * tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Problem appears to be very old; as I read it, Larry Kollar was
-       complaining of it in his ms.ms document over 20 years ago.
-
-       Fixes <https://savannah.gnu.org/bugs/?59345>.
-
-2020-10-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7 (Requests/Request short reference) <.af>: Fix
-       error; "l" is not a valid register format.  Explain what the
-       request does, and the default format, as tersely as possible.
-
-2020-10-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Use only `malloc()` and `free()` to manage memory of paths
-       opened by the parser instead of mixing in C++ new/delete
-       management under some runtime-dependent circumstances.
-
-       * src/libs/libgroff/relocate.cpp (relocatep): Use `malloc()`,
-       not new.
-       * src/roff/troff/input.cpp (process_macro_file)
-       (process_startup_file, macro_source): Use `free()`, not
-       `{a_,}delete()`.
-
-       Thanks to an anonymous contributor for the report and patch.
-
-       Fixes <https://savannah.gnu.org/bugs/?56694>.
-
-2020-10-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff_char.7.man (Description/Special character escape
-       forms): Clarify discussion of Unicode Normalization Form D and
-       its applicability to code points acceptable in Unicode numeric
-       special character escapes.  Also document that these escapes
-       must use uppercase hexadecimal digits.
-
-       Attempts once again to slay the unkillable beast that is
-       <https://savannah.gnu.org/bugs/?57618>.
-
-2020-10-21  Ingo Schwarze <schwarze@openbsd.org>
-
-       On systems without NAME_MAX, use FILENAME_MAX as a last resort.
-
-       Problem reported by Eli Zaretskii <eliz at gnu dot org>
-       on MS Windows in https://savannah.gnu.org/bugs/?55449
-
-2020-10-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (environment::possibly_break_line):
-       Emit break warning and return if the output width is not
-       positive.  The code assumes that it will be and loops infinitely
-       if it isn't.  I _think_ this is because we're not able to get
-       width data for (some?) CJK glyphs.  Based on a patch by Osamu
-       Sayama.
-
-       * src/roff/groff/tests/\
-       do_not_loop_infinitely_when_breaking_cjk.sh: Test it.
-       * src/roff/groff/groff.am: Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?44018>.
-
-2020-10-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::init_output): Save the value
-       of \n[.tabs] when starting a table.  In the reset macro, restore
-       the saved value.
-
-       Based on a patch by Bjarni Ingi Gislason (tweaked to use a more
-       normative preprocessor symbol; "REG"s aren't "NAME"s).
-
-       * src/preproc/tbl/tests/save-and-restore-tab-stops.sh: Test it.
-       * src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?42978>.
-
-2020-10-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/nroff/nroff.sh: Recognize -E option and pass it
-       through to troff.  Document it in usage message.
-       * src/roff/nroff/nroff.1.man: Document new -E option.
-
-       Based on a patch by Ingo Schwarze.
-
-       Fixes <https://savannah.gnu.org/bugs/?44289>.
-
-2020-10-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Stop remapping ` and '.  Our own pages now
-       appear to be clear of wrong-quote problems, so let's make them
-       visible if they recur.  Those who don't want to fix bad man
-       pages (distributors, site admins) can restore the mappings in
-       their man.local files.
-
-2020-10-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-warn): New; emits warning diagnostic.
-       (R): Use new macro instead of .tm* requests directly.
-
-2020-10-18  Ingo Schwarze <schwarze@openbsd.org>
-
-       #include "config.h" before <stdio.h>
-
-       Required with e.g. gcc 4.2.1 because gnulib/lib/stdio.in.h
-       uses the "restrict" keyword since this gnulib commit:
-       commit 182afcba2635cbff91240656c7fb3742dd23ab6f
-       Author: Bruno Haible <bruno@clisp.org>
-       Date: Sat Feb 22 20:57:30 2020 +0100
-
-       Otherwise, the build may die from the declaration of
-       various printf-like functions with messages like:
-       ./lib/stdio.h:851: error: expected ',' or '...' before 'fp'
-
-       * src/libs/libgroff/assert.cpp, src/libs/libgroff/errarg.cpp,
-       src/libs/libgroff/error.cpp, src/preproc/eqn/eqn.ypp:
-       #include "config.h".
-
-2020-10-18  Bertrand Garrigues <bertrand.garrigues@laposte.net>
-
-       hpftodit: incorrect 'delete' after new[]
-
-       * src/utils/hpftodit/hpftodit.cpp (output_font_name): use
-       'delete[]'.
-
-       Fixes bug #55331. Found by David Binderman, fixed by Ingo
-       Schwarze.
-
-2020-10-18  Bertrand Garrigues <bertrand.garrigues@laposte.net>
-
-       preconv: don't use libuchardet if input is stdin
-
-       * src/preproc/preconv/preconv.cpp (do_file): don't call
-       detect_file_encoding if input file is "-"
-
-       This fixes the failure on MS-Windows described #55334, however
-       this does not fix the encoding detection with uchardet if the
-       input is stdin (the user would have to pass with -D the correct
-       encoding as explained in the man page).
-
-2020-10-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/lex.cpp (troff_defs): Set the "..." token on
-       the baseline, not vertically centered, aligning the actual
-       behavior with what our eqn(1) man page has claimed since 2007.
-
-       Fixes <https://savannah.gnu.org/bugs/?59285>.
-
-2020-10-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grops/grops.1.man
-       (Usage/TrueType and other font formats): Remove dead URL to
-       ttftot42 utility.  Update URL to fontforge tool.  Replace much
-       of the discussion with an example, motivated by Jordan Torbiak's
-       "groff-install-font" script on GitHub Gist, of how to add the
-       Roboto Slab Regular font to a user-local groff font directory
-       {and how to test it, too}.
-
-       Fixes <https://savannah.gnu.org/bugs/?58077>.
-
-2020-10-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Report program name in warning
-       diagnostics.
-
-       Continues the long process of fixing Savannah #52463.
-
-2020-10-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Add fallback for lq, rq strings.
-
-       Define \*(lq and \*(rq as '"' if the output device has no \(lq
-       or \(rq special character escapes defined (respectively).
-
-       This is a bit belt-and-suspenders for groff since our output
-       devices all guarantee availability of these glyphs, but if this
-       macro file gets used with other implementations (and if they
-       support the 'c' conditional), it should prevent the strings from
-       producing empty output.
-
-       Man page writers should simply use \(lq and \(rq unless they are
-       aiming for pathological levels of portability (e.g., composing
-       man pages today for consumption on simulators of 1980s Unix
-       systems).
-
-2020-10-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Define an-end with .de1.  We need to define
-       an-end with de1 (execute macro with compatibility mode off)
-       because, as of 37b4180a27a6eeaea429e40ec278abefcda7f3a7 (11
-       October), it can now be called from a trap executing in a
-       context whence compatibility mode might be on (namely,
-       "reload-doc" in andoc.tmac).
-
-2020-10-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/main.cpp (main):
-       * src/preproc/pic/main.cpp (main):
-       * src/preproc/tbl/main.cpp (main):
-       * tmac/eqnrc:
-       * tmac/troffrc: Perform checks of register and macro definitions
-       with a .do request, since we might be in compatibility mode.
-
-2020-10-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_if_request): Emit warning of type
-       "syntax" if a groff conditional expression extension is used
-       when compatibility mode is active.
-
-       * doc/groff.texi:
-       * src/roff/troff/troff.1.man: Update description of "syntax"
-       warning type to be more general.  It was inaccurate, referring
-       only to "dubious syntax in numeric expressions", which was not
-       the case.  Instead it was being used only for poor construction
-       of character classes with the .class request.
-
-2020-10-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (main): Stop ignoring -T.  GNU tbl
-       was undocumentedly ignoring the -T option; apparently IRIX tbl
-       implemented it, something on the system called tbl with that
-       option (I'm guessing IRIX's man(1)) and its users spammed James
-       Clark with bug reports.  We can probably weather the volume of
-       such spurious reports from IRIX users today.
-
-2020-10-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (main): Clarify fatal diagnostic in
-       generated document by informing the user that the program is
-       aborting, and also that it is groff extensions that are required
-       rather than GNU troff per se (since Heirloom Doctools troff
-       claims groff extension support via the .g register).
-
-2020-10-14  Ingo Schwarze <schwarze@openbsd.org>
-
-       In groff(1), fix the combination of -v with -k, -j, and -J.
-
-       * src/roff/groff/groff.cpp: Pass the -v option through to the
-       preconv, chem, and ideal preprocessors, just like for all
-       other preprocessors, to print the version of the preprocessor
-       and to avoid garbage output.
-
-       Bugfix patch from Eli Zaretskii <eliz at gnu dot org>
-       submitted in: https://savannah.gnu.org/bugs/?55297
-
-2020-10-12  Bertrand Garrigues <bertrand.garrigues@laposte.net>
-
-       Update 'gnulib' submodule.
-
-       * gnulib: now points on d60a35e94c4f5b8f09f15828242418f5073d46e7
-       from 'gnulib' repository.
-
-       * configure.ac: minimum autoconf version is now 2.64 due to
-       gnulib upgrade.
-
-       * FOR-RELEASE: add the gnulib update to the checklist.
-
-2020-10-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/andoc.tmac: When switching between macro packages in
-       andoc and using continuous-rendering mode, flush any partially
-       collected output line and write page footer.
-       (reload-doc): Call an-end if it is defined.
-       (reload-man): Call doc-end-macro if it is defined.
-       * tmac/tests/andoc-flush-between-packages.sh: Add regression
-       test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?59106>.
-
-2020-10-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/andoc.tmac: Remove traps set by mdoc package by the names
-       they actually use.
-       * tmac/tests/andoc-clear-doc-traps.sh: Add regression test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?59246>.
-
-2020-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::init_output): In the release
-       macro written to the output, reword the warning diagnostic that
-       is emitted when a table row is to be output without enough room
-       before the next page location trap.  The former wording said
-       that a "text block" would not fit on the page, and that is
-       normally how table rows grow longer than one line in the first
-       place.  However, there are other ways the conditional can be
-       satisfied, as witnessed in Savannah #57665, so simply say what
-       is known; that the table _row_ overruns the space to the next
-       trap (we say the row won't "fit on [the] page").
-
-       Fixes <https://savannah.gnu.org/bugs/?59233>.
-
-2020-10-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp
-       (double_line_entry::double_line_entry):
-       (double_line_entry::simple_print): Remove garbage lines
-       inadvertently added in previous commit.
-
-2020-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Stop tbl from injecting spurious blank lines (and emitting
-       spurious warnings about tables and "text blocks" not "fitting on
-       a page") into long tables in man pages when continuous rendering
-       is used (the default for nroff output devices).
-
-       * src/preproc/tbl/table.cpp (USE_KEEPS_REG): New preprocessor
-       symbol stores name of groff register for dynamic determination
-       of keep usage.
-       (table::init_output): If the NOKEEP flag is not set, then in
-       generated groff output, see if the usekeeps register is defined;
-       if not, define it and enable usage of keeps.
-       (table::do_row): In groff output, check usekeeps register before
-       calling keep and release macros.
-       (table::do_bottom): In groff output, check usekeeps register
-       before calling release macro.
-
-       * tmac/an-old.tmac (TS): Set the usekeeps register used by tbl
-       to the logical complement of the man(7) cR (continuous
-       rendering) register.
-
-       * tmac/tests/an-old_TS_do_not_keep_tables_when_cR_set.sh: Add
-       regression test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Problem appears to date back to the introduction of continuous
-       rendering in groff 1.17 (3 May 2001).
-
-       Fixes <https://savannah.gnu.org/bugs/?57665>.
-
-2020-10-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (simple_entry::position_vertically):
-       (block_entry::position_vertically):
-       (table::determine_row_type):
-       (printfs): Update assertions to indicate what actually went
-       wrong.
-
-2020-10-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.cpp: Make diagnostics slightly more
-       informative in unusual error cases.
-       (real_output_file::~real_output_file): If ferror() reports error
-       status on a stream say that, instead of "error writing".  If it
-       does not, but fflush() fails on the stream, describe the flush
-       as failing, and use strerror() since fflush() sets errno.  If
-       pclose() fails, say that we were unable to close a pipe instead
-       of repeating the name of the C library function to the user, who
-       might not be a C programmer.  Report strerror() in this case and
-       for a failing fclose().
-       (real_output_file::flush): Repeat updated fflush() logic from
-       previous function.
-
-2020-09-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (register setup): Make interaction of \n[C]
-       register and HTML output more clear in code and comments.
-
-2020-09-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/regression_savannah_59202.sh: Reduce test
-       case.
-
-2020-09-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Fix SEGV arising from recursing destructor.
-
-       * src/roff/troff/node.h (output_file): Add class member
-       `is_dying` to track whether destructor has already been entered;
-       initialize false.
-       * src/roff/troff/node.cpp (real_output_file::~real_output_file):
-       Set `is_dying` true when destructor entered.
-       * src/roff/troff/div.cpp (cleanup_and_exit): Only delete
-       `the_output` object if it is not already being destroyed.
-       * src/roff/groff/tests/regression_savannah_59202.sh: Add test.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       Thanks to "hackerb9" for reporting the problem.  Problem appears
-       to date back to groff 1.02 (June 1991) or earlier.
-
-       Fixes <https://savannah.gnu.org/bugs/?59202>.
-
-2020-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (register setup): Condition decisions on
-       \n[an-html] rather than a string comparison using \*[.T]; that
-       is what the register is there for.
-
-2020-09-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/andoc.tmac: Save alias to .ne request.
-       (reload-doc): Restore .ne request, which an-old.tmac meddles
-       with if continuous rendering is used.  (The meddling ultimately
-       dates back to 777e2d262862621966c18d685a000cc88f432bc6, 26
-       January 2002, which simply redefined .ne as empty on nroff
-       devices.)
-
-2020-09-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Ship tests in distribution archive.
-
-       * src/preproc/preconv/preconv.am (EXTRA_DIST):
-       * src/roff/groff/groff.am (EXTRA_DIST):
-       * src/roff/nroff/nroff.am (EXTRA_DIST):
-       * tmac/tmac.am (EXTRA_DIST): Add
-       $({preconv,groff,nroff,tmac}_TESTS), as appropriate.
-
-       * src/roff/nroff/nroff.am (MOSTLYCLEANFILES): Stop adding
-       $(nroff_TESTS), which can only have unhappy consequences.
-
-2020-09-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am: Fix problem with recently-relocated mdoc macro
-       files not ending up in the right place in the distribution
-       archive.
-       (dist_tmac_DATA): Also include $(TMACUNSTRIPFILES).
-       (TMACMDOCSTRIPFILES): Rename from $(TMACMDOCFILES).  Update
-       interpolation sites.
-       (TMACMDOCUNSTRIPFILES): New variable holds mdoc macro files in
-       the tmac/mdoc subdirectory.  Stop adding these files to
-       $(TMACUNSTRIPFILES) since those reside in tmac/ directly.
-       (EXTRA_DIST): Add $(TMACMDOCUNSTRIPFILES).
-       ($(TMACSTRIPFILES)): Depend only on $(TMACUNSTRIPFILES).
-       ($(TMACMDOCSTRIPFILES)): Add new rule, much like the foregoing.
-       Depend on $(TMACMDOCUNSTRIPFILES) and copy files into tmac/mdoc.
-       (dist-hook, tmac-dist-hook): Remove; they no longer do any
-       distinct work.
-
-       Fixes <https://savannah.gnu.org/bugs/?59186>.
-
-2020-09-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/table.cpp (table::init_output):
-       (table::compute_expand_width):
-       (table::compute_separation_factor): Use consistent format for
-       diagnostic messages.
-         - Do not spread a single diagnostic across multiple lines.
-         - Report messages in GNU Coding Standards format, that is:
-         - Report the name of the file the problem is in...
-         - ...then the line number...
-         - ...then the diagnostic severity level...
-         - ...then the specific problem.
-
-2020-09-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Emit warnings when configuration registers
-       are ignored when producing output for HTML.
-
-2020-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (an-p-footer): Define \*[an-page-string] if
-       (1) the output device is not HTML; (2) \n[X] has been defined;
-       and (3) the page number has not yet reached the threshold
-       defined by \n[X].
-
-       Fixes <https://savannah.gnu.org/bugs/?59179>.
-
-2020-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for Savannah #59179.
-
-       * tmac/tests/an-old_X_register_works.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run it.
-
-2020-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac:
-       * tmac/doc.tmac-u: Emit more informative fatal diagnostic when
-       installed version of groff is too old.  Report the version found
-       and explicitly note consequent abort.
-
-2020-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am: Regenerate stripped macro files upon changes to
-       any of their unstripped counterparts.  This is crude, but they
-       weren't being regenerated at _all_.  Defeating a central
-       function of Make is bad.
-       (TMACUNSTRIPFILES): New variable.  Populate with -u files.
-       ($(TMACMDOCFILES) $(TMACSTRIPFILES)): Depend on
-       $(TMACUNSTRIPFILES).
-
-2020-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac:
-       * tmac/andoc.tmac:
-       * tmac/doc.tmac-u:
-       * tmac/s.tmac: Clarify fatal diagnostics by informing the user
-       that the program is aborting.
-
-2020-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/www.tmac.in: Revise diagnostic message handling.
-       (www:fatal): New macro handles fatal macro usage errors.
-       (www:lenstr): Use www:fatal instead of writing to standard error
-       with .tm (rather than www:error) and then calling .ab without
-       arguments, which produces an unsightly "User Abort." message.
-       (www:lenstr):
-       (www:splitstr):
-       (www:url_breaks):
-       (www:url_breaks_split):
-       (LINKSTYLE): Report expected number of arguments in diagnostics.
-       (www:fontstyle): Shorten diagnostic message.
-
-2020-09-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/div.cpp
-       (top_level_diversion::clear_diversion_trap): Fix copy and paste
-       error in diagnostic, which wrongly reported that a top-level
-       diversion trap couldn't be "set" when "clear"ed was meant.
-
-2020-09-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/grn/main.cpp (conv):
-       * src/roff/troff/node.cpp (suppress_node::tprint): Remove
-       embedded newlines from diagnostic messages.
-
-2020-09-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Move setup of remaining rendering option
-       parameters (registers C, D, P, and X) to end of file.
-
-2020-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Move setup of rendering parameter
-       registers IN and SN from here to the end of the file.  Update
-       comments.
-
-2020-09-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Drop \*[an-empty] string.  This string is
-       documented as preventing "looping" (presumably infinitely) if
-       someone calls a two-font macro with an inconvenient parameter;
-       the example shown is ".RB ( \\ )".  This string was being
-       interpolated at the end of each argument pair to the two-font
-       macros BI, BR, IB, RB, and RI.  This code dates back to groff
-       1.10 (dc5351364982f78f8c630f1e856d692d4a82666f, 26 November
-       1995).  Did you notice a two-font macro missing?  It was: IR.
-       Using it with the proscribed input fails to cause a problem; the
-       others similarly operate just fine when the empty string
-       interpolation is removed.  Presumably at some point in the past
-       25 years, this workaround became unnecessary.
-       (BI, BR, IB, RB, RI): Remove interpolations of string.
-
-       * tmac/tests/an-old_avoid_two-font_denial_of_service.sh: Add
-       regression test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2020-09-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Refactor continuous rendering handling.
-       Relocate set up of \n[cR] to end of file in parallel with other
-       rendering parameter management.  Instead of conditionally
-       defining the an-ne and an-bp macros, define them
-       unconditionally.  Also define them with .de instead of .de1,
-       since they will only be called within the contexts of macros
-       that are already running with compatibility mode off (i.e., the
-       public interface macros).  Relocate definition of an-end to sit
-       alongside these other continuous-rendering-mode specific macros
-       and avoid a forward reference and scattering of \n[cR]
-       conditionals around the file.
-       (an-set-up-continuous-rendering): Define new macro to move
-       macros (and end macro) into place.  Call it at the end of the
-       file only if cR eventually winds up being true.
-
-2020-09-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Improve name space management.  Rename .ne
-       request to .an-ne instead of outright clobbering it (and in
-       parallel with .an-bp).  Rename 'an-ne' register to 'an-need' to
-       prevent confusion with renamed request.
-
-2020-09-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Drop .ll hack for LL register.
-
-       Drop the .ll hack for setting the line length on nroff devices.
-
-       Once upon a time, the only way to get man pages to render on a
-       terminal at any width other than the nroff default of 65n was to
-       put an .ll request into the page--a mortal sin against
-       portability--or your man(1) program could sneak such a request
-       into nroff's input stream.
-
-       Also, long ago, John Eaton of UT Austin wrote a man(1) program.
-       In a few years this implementation branched into two lines of
-       development, which I'll call man-db man (Wilford/Polacco/Watson)
-       and another, Brouwer/Lucifredi man, which as of this writing saw
-       its last release in 2011 (1.6g).
-
-       The man and mdoc macros of groff 1.18 (July 2002) introduced an
-       LL register to configure the line length, respecting an -rLL
-       command-line option.  The source change was made by Werner
-       Lemberg on 3 May 2002 and Colin Watson updated man-db man(1)--on
-       the same day!--to synthesize the option when calling groff.
-
-       Later, in August 2005, Keith Marshall, a user of version 1.5m of
-       Brouwer/Lucifredi man(1), which did not set the LL register,
-       suggested that the existing .ll setting (technically, the value
-       of \n[.l], the only way the result of an .ll request could be
-       introspected) be honored in the absence of the LL register.
-       However, it is impossible to distinguish a user-supplied ".ll
-       65n" request from nroff's default setting, which was in that
-       case overridden to the modern default of 78n.
-
-       And so, in what is now git commit
-       f9d5df4aebd3d834b4084ffefa52a115e00dce38 (1 September 2005), it
-       was done.
-
-       This led to (1) surprising behavior for users accustomed to old
-       methods and desirous of the nroff default and (2) lengthy
-       apologia in groff source code comments and the groff_man(7) man
-       page.
-
-       Ironically, Brouwer/Lucifredi man(1) had already added support
-       for the LL register by the time of its 1.6 release two months
-       earlier (20 June 2005).  (Curiously, it did so similarly to the
-       old .ll hack, by injecting an '.nr LL' request into groff's
-       input stream, rather than using the -r command-line option.)
-       Moreover, Marshall and the groff list were already aware of
-       this, but the change was accepted anyway because version 1.6
-       was "too new"!  (Distributions are slow sometimes, true...)
-
-       Let us survey the field in 2020.  man-db man(1) has supported
-       the LL register for eighteen years, and Brouwer/Lucifredi man(1)
-       for fifteen.  Heirloom Doctools's man macros set the line length
-       to 78n on nroff devices unconditionally.  mandoc(1) similarly
-       also always formats for 78 columns on terminals.  groff's
-       mdoc(7) macros grew support for LL in parallel with man(7) in
-       2002 and never added the \n[.l] introspection at all.
-
-       There no longer seems to be any reason to preserve this hack.
-
-       * tmac/an-old.tmac (initialization): Drop complex setup of LL
-       register.
-       (TH): Relocate line length reset; no behavior change.
-       (after .mso man.local): Initialize LL only if the user hasn't;
-       use device default in troff mode, and 78n in nroff mode.
-
-       * tmac/groff_man.7.man.in (Options) <-rLL>: Stop documenting .ll
-       hack.
-
-       Fixes <https://savannah.gnu.org/bugs/?58992>.
-
-2020-09-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_LL_init_sanely.sh: Add test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2020-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/xditview/GXditview.ad: Widen the default geometry
-       to accommodate the width of a page rendered using the X100-12
-       device.  Display devices these days have much greater horizontal
-       resolution than they did 20 years ago.
-
-2020-09-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Use correct point size default for
-       X{75,100}-12 devices.
-
-2020-09-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common-u (doc-prepare-section-heading): New
-       macro defines new string doc-sec-head to enable recognition of
-       mixed-case section headings in mdoc man pages.  For example,
-       "Name" and "Description" are now recognized in addition to
-       "NAME" and "DESCRIPTION".
-       (doc-section-{name,synopsis,library,description,see-also,files,
-       authors}): Redefine strings to be mixed-case.  Add trailing
-       comment guard per recommended best practice.
-       (Sh): Call doc-prepare-section-heading instead of
-       doc-first-parameter, and compare predefined section strings to
-       doc-sec-head instead of doc-str-dfp.
-
-       * tmac/tests/doc-accept-mixed-case-section-headings.sh: Test it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-       * tmac/tests/doc-smoke-test.sh: Use mixed-case section headings.
-
-2020-09-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * makevarescape.sed: Use \[] form of special character escapes.
-
-       The only man page we have that doesn't turn compatibility mode
-       off (neqn) also doesn't use any sed-substituted patterns where
-       characters replaced by a \[] special character escape form are
-       likely to be used.
-
-       The @g@ command prefix is the main avenue for intrusion of such
-       escapes, but I think it improbable that many people are going to
-       include apostrophes, double quotes, carets, grave accents, or
-       tildes in the command prefix; some or all of these will pick
-       fights with the shell and require quoting that we don't
-       represent in man page text anyway.
-
-       On top of that, neqn is largely a stub page.
-
-       If it's a problem, a better fix than reverting this is to make
-       neqn switch out of compatibility mode like our other man pages.
-
-2020-09-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * FOR-RELEASE: Start a release checklist.  We probably should
-       have done the afmtodit.tables update for 1.22.4.  There were no
-       AGL changes and the Unicode decomposition changes were limited
-       to additions for Balinese (11), CJK compatibility ideographs
-       (5), and 13 code points outside the Basic Multilingual Plane.
-
-2020-09-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.tables: Regenerate using Unicode
-       13.0.0.
-
-2020-09-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       make-afmtodit-tables: Automate AGL reassignments.
-
-       Automate the procedure done manually in
-       b72b91e85e80a69304e6569db535bcca0e0ecab5 (9 April 2007), so that
-       it doesn't regress when we regenerate afmtodit.tables.
-
-       * src/utils/afmtodit/make-afmtodit-tables: Do it.
-       * src/utils/afmtodit/afmtodit.tables: Regenerate it.
-
-2020-09-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/groff.1.man (Options) <-E>:
-       * src/roff/troff/troff.1.man (Options) <-E>: Document that -E
-       implies -Ww.
-
-       Fixes <https://savannah.gnu.org/bugs/?59030>.
-
-2020-09-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff_char.7.man: Revise glyph descriptions.
-
-       Fixes <https://savannah.gnu.org/bugs/?59031>.
-
-2020-09-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tty.tmac: Define fallback glyphs for Bell System logo
-       {non-breaking adjustable space} and radical extension and square
-       root extension (both dummy characters '\&') to suppress warnings
-       from groff_char(7).  As none of these are encoded in Unicode it
-       seems unlikely they will become supported soon.
-
-2020-08-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/troff.1.man (Options) <-I>: The current working
-       directory is searched _last_, not first, unless the order is
-       altered with "-I .".
-
-       * src/roff/groff/groff.1.man (Options) <-I>: Rearrange
-       description.
-
-2020-08-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Update mdoc package to honor HY register as man does now, per
-       suggestion from Colin Watson.  Recognize but ignore AD string
-       for man package compatibility (essentially "reserving" it),
-       though mdoc intentionally does not permit configuration of
-       adjustment.
-
-       * tmac/mdoc/doc-ditroff-u:
-       * tmac/mdoc/doc-nroff-u: Do it.
-
-       * tmac/mdoc/doc-common-u: Initialize \n[doc-hyphen-flags] from
-       \n[HY].
-
-       * tmac/groff_mdoc.7.man \
-       (FORMATTING WITH GROFF, TROFF, AND NROFF): Document it.
-
-2020-08-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Reset inter-word and inter-sentence
-       spacing to default with each new page rendered.
-
-       {To observe the problem prior to this change,
-         $ groff -mandoc groff_mmse.7 $any_other_man_page
-       groff_mmse(7) loads sv.tmac, which changes the sentence
-       spacing.}
-
-2020-08-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * PROBLEMS: Undocument the problem with test-groff and mdoc.
-       It's resolved.
-
-       Fixes <https://savannah.gnu.org/bugs/?51073>.
-
-2020-08-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am (NORMALFILES, MDOCFILES): Drop unused variables.
-       ($(TMACMDOCFILES) $(TMACSTRIPFILES)): Scrub trailing whitespace.
-       Wrap long line.
-
-2020-08-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       mdoc: Relocate within build tree.
-
-       The (modern) mdoc macro package has not been usable within the
-       build tree, unlike the others.  This makes it more troublesome
-       to test changes, and frustrates deploying our test
-       infrastructure against it.  Re-arrange the build tree to
-       resemble an installation tree closely enough for the macro
-       package to load.
-
-       * tmac/doc-common-u:
-       * tmac/doc-ditroff-u:
-       * tmac/doc-nroff-u:
-       * tmac/doc-syms-u: Rename to...
-       * tmac/mdoc/doc-common-u:
-       * tmac/mdoc/doc-ditroff-u:
-       * tmac/mdoc/doc-nroff-u:
-       * tmac/mdoc/doc-syms-u: ...these.
-
-       * tmac/tmac.am (TMACMDOCFILES): Look for files in tmac/mdoc.
-       ($(TMACMDOCFILES)): Create tmac/mdoc in build tree.
-
-       Fixes <https://savannah.gnu.org/bugs/?51003>.
-
-2020-08-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test for usable in-tree mdoc.
-
-       * tmac/tests/doc-smoke-test.sh: Add test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2020-08-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_TH_repairs_ad_damage.sh:
-       * tmac/tests/an-old_TH_repairs_hy_damage.sh: Add tests.
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2020-08-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Set hyphenation mode to user preference
-       with each new page rendered, in case a hostile page meddled with
-       '.hy' or '.nh'.
-       (after .mso man.local): Relocate setting of default hyphenation
-       mode here (instead of just before .mso man.local).  Eliminate
-       conditional on \n[an-html]; this doesn't matter because
-       grohtml(1) doesn't support hyphenation anyway.  If it does learn
-       to hyphenate, we should treat it the same as other output
-       devices in any case.  Add comment explaining why we fall back to
-       different defaults depending on \n[cR].
-
-2020-08-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (TH): Set adjustment to user preference with
-       each new page rendered, in case a hostile page meddled with
-       '.ad' or '.na'.
-       (after .mso man.local): Set the default adjustment mode only if
-       a -d option or man.local did not.  Also do the same for the HF
-       string; relocate its definition here and make it similarly
-       conditional.  Also update comment on setting of CS and CT
-       registers and style their conditionals consistently with the
-       rest of the package.
-
-       * tmac/groff_man.7.man.in (Strings) <\*(AD>: Document it.
-       (Strings) <\*(HF>: Parallelize language with new \*(AD.
-       (Options) Expand introductory sentence to discuss -d and -r
-       options.
-       (Options) <-dAD>: Document default and likely values.  Nobody
-       right-justifies or centers man page text; send the curious to
-       groff(7) for '.ad' request documentation.
-       (Options) <-dHF>: Document default and steer people to groff(7)
-       for '.ft' request documentation.
-
-2020-08-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac (set-an-margin): Rename...
-       (an-set-margin): ...to this.  It was the only package-internal
-       register, macro, string, or diversion that wasn't named using
-       the "an-*" schema.
-       (TH, SH, SS): Update call sites.
-
-2020-08-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (.ME, .UE): Restore hyphenation after
-       "punctuation" arguments have been output.  The next token will
-       always be a space node, the end of the document, or similar.
-
-       * tmac/tmac.am (tmac_XFAIL_TESTS): Mark the punctuation
-       hyphenation tests as expected to fail, because they now do.
-
-2020-08-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/ps.tmac: Define ordinary hyphen-minus as fallback
-       character for U+2011 (non-breaking hyphen).  Prompted by
-       discussion with Dave Kemper in Savannah #58390.
-
-2020-08-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Fix hyphenation bug.  The UR/UE and MT/ME macros were much too
-       aggressive about turning hyphenation off.  Disable it only when
-       writing the actual URL or email address.
-
-       * tmac/an-ext.tmac (.MT, .UR): Stop disabling hyphenation here.
-       (.ME, .UE): Disable hyphenation right before output of
-       URL/address; restore it right before output of supplementary
-       arguments ("punctuation").
-
-       * tmac/tests/an-ext_ME_punct_hyphenates.sh:
-       * tmac/tests/an-ext_MT_body_hyphenates.sh:
-       * tmac/tests/an-ext_UE_punct_hyphenates.sh:
-       * tmac/tests/an-ext_UR_body_hyphenates.sh: Test behavior.
-
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2020-08-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Adapt to the fact that \: reënables hyphenation.  Rename
-       "hyphenless [discretionary] break" to "non-printing break point"
-       in documentation.
-
-       * doc/groff.texi (Manipulating Hyphenation): Rename "hyphenless
-       break" to "non-printing break point".  Clarify that it is the
-       soft hyphen glyph, not necessarily a hyphen, that is ordinarily
-       written to the output on hyphenation breaks.  Note that the
-       remainder of a word after \: is subject to hyphenation as
-       normal.  Note (new) '\:\%' idiom for getting what people will
-       want at least some of the time.  Update example to use it.
-       * makevarescape.sed: Insert \% after we insert \: to rewrite
-       slashes in filenames, to protect later portions of the filename
-       from hyphenation.
-       * man/groff.7.man (Escape Sequences/Escape short reference):
-       Rename "hyphenless break" to "non-printing break point".
-       * man/groff_diff.7.man (Language/Escape sequences): Resync with
-       our Texinfo manual.
-       * tmac/groff_man.7.man.in (Description/Hyperlink and email
-       macros): Rename "hyphenless break" to "non-printing break
-       point".
-
-2020-08-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       documentation: Re-christen 'ESCAPE_AMPERSAND'.
-
-       s/zero[- ]width space character/non-printing input break/
-
-       * doc/groff.texi (Requests): Rename.  Update conceptual index
-       entries; retain old name (with an appended "[sic]") to aid
-       readers accustomed to it.
-       (Ligatures and kerning): Update conceptual index entries.
-       Supply context ("effect on kerning").
-       (Drawing requests): Update conceptual index entries.  Supply
-       context ("effect on '\l'").
-       * man/groff.7.man (Description): Rename in macro-advice-writing
-       shorthand.
-       (Escape Sequences/Escape short reference): Rename.
-       * tmac/groff_man.7.man.in (Description/Command synopsis macros
-       [style]: Rename.
-       (Description/Portability) [style]: Rename.
-       * tmac/groff_mdoc.7.man (TROFF IDIOSYNCRASIES/Macro Usage):
-       Rename.
-       (TROFF IDIOSYNCRASIES/Other Possible Pitfalls): Rename.
-
-2020-08-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_man.7.man.in (Description/{Document structure
-       macros <.TH>, Horizontal and vertical spacing}): Fix erroneous
-       use of "flush left".  The current uses were introduced by me,
-       but the page has borne incorrect uses of it as far back as 1999
-       {in the description of .TP}.  Simply say "with no indentation"
-       instead.
-
-2020-08-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_man.7.man.in (Description/Number registers): Inform
-       reader that registers can be set in man.local file and
-       cross-reference it.
-       (Files/*/man.local): [style] Supply example of man.local
-       customizations, prompted by recent discussions on groff,
-       linux-man, and man-db mailing lists.
-
-2020-08-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am: Use a stamp file for m4 keyword check.
-       (M4CHECK): Add stamp file variable.
-       ($(M4CHECK)): Create stamp file if check succeeds.
-
-2020-08-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Split groff_man(7) into two pages; one a (relatively) terse
-       reference and the other a tutorial and style guide.  Both are
-       generated from the same source, which is processed by m4 into
-       two man page sources.
-
-       * tmac/groff_man.7.man: Rename...
-       * tmac/groff_man.7.man.in: ...to this.
-
-       * tmac/groff_man.7.man.in: Add m4 directives and define macros.
-       Protect m4 keywords in English from unintended expansion (this
-       affected the word "include").  Add new .TH and apropos lines for
-       style guide.  Convert marker comments into m4 macros for content
-       control.  Uncomment material intended only for basic reference
-       page.
-
-       * tmac/tmac.am (man7_MANS): Add groff_man_style.7.
-       (EXTRADIST) Add groff_man.7.man.in.
-       (MOSTLYCLEANFILES): Add m4-generated man page sources
-       tmac/groff_man{,_style}.7.man.
-       Add targets to generate those same two pages from the renamed
-       file.  Add target to grep the page for unprotected English m4
-       keywords and halt the build if they are found.  Make generation
-       of those pages depend on this new target.
-
-2020-08-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_man.7.man: Add material on hooks and encoding.
-       (Description, ./Deprecated features): Stop identifying .PT and
-       .BT as "deprecated"; they shouldn't ever be called in man pages,
-       but that has never been their intention.
-       (Description): Identify character encoding and line-ending
-       requirements (tutorial/style-guide material).
-       (Description/Hooks): Add new subsection to house descriptions of
-       .PT and .BT.  Add mnemonic expansions for both.
-
-2020-07-31  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Control Characters): Incorrect claims were
-       made.  Double quotes can indeed be used to enclose arguments to
-       string interpolations.  The statement about a leading " in a
-       string definition (or appendment with .as) was stated too
-       generally.  The leading quote is not necessary to include
-       leading tab characters, which can be input as-is, even in
-       compatibility mode.
-
-2020-07-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Requests/Request short reference/.ft): Fix
-       some outright damage in the description of the request; the
-       escape sequences that are synonymous with a nullary .ft had been
-       wrongly removed.
-
-2020-07-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/meintro.me:
-       * doc/meref.me:
-       * tmac/e.tmac-u: Remove postal address for Eric Allman.  It's
-       probably decades out of date.  Adjust footnote symbols.  Thanks
-       to Dave Kemper for the bug report and the patch.  Fixes
-       <https://savannah.gnu.org/bugs/?58726>.
-
-2020-07-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Migrate macro packages from font CW to CR.  The font name "CW"
-       {"constant-width"} is a legacy item we can dispose of (except
-       for the DVI device, which also has CWI for "constant-width
-       italic"), and much of the groff codebase already did starting
-       with commit 0de1d6d79cdb959ffa7dac3af77c2a36ef31873f {October
-       2017}.  Courier is available in the usual four styles {roman,
-       bold, italic, bold+italic}.
-
-       * tmac/an-ext.tmac (.EX): Set font to R, not CW.  The existing
-       .ft request was somewhat redundant with the '.do fam C'
-       immediately before, which set the font family to Courier.
-       * tmac/s.tmac (.UC): Use font CR, not CW.
-
-2020-07-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tty.tmac: Stop suppressing nonexistent font warning.
-       Prompted by a 2017 suggestion and patch from Bjarni Ingi
-       Gislason.  Documents and macro packages that want to change the
-       font family should do so in awareness that this is meaningless
-       on terminal (nroff) devices (and -Thtml as well).
-
-       Fixes <https://savannah.gnu.org/bugs/?51364>.
-
-2020-07-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_man.7.man (.PP, .LP, .P): Fix error: these macros
-       do not reset the left margin.
-
-2020-07-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Strings): Document behavior of .ds request
-       when only one argument is supplied.  (The string is defined as
-       empty.)  Thanks to Dave Kemper for the report and the patch.
-
-       Fixes <https://savannah.gnu.org/bugs/?58746>.
-
-2020-07-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Using Symbols): Fix error in .rfschar
-       description, which should refer to "font f" rather than "glyph
-       f".  Thanks to Dave Kemper for the report and the patch.
-
-       Fixes <https://savannah.gnu.org/bugs/?58767>.
-
-2020-07-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_man.7.man (.EE, .YS): Fix error: refer to "initial
-       hyphenation setting" instead of "previous hyphenation mode".
-       Incidentally, this fact points out why putting ".hy 0" or ".nh"
-       in your man page is futile.
-
-2020-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Requests/Request short reference): Fix error
-       in description of .hc; it changes the hyphenation character
-       rather than supplying an additional one.
-
-2020-06-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Groff Options): Remove editorial comment about
-       '-a' option being "useless".  It isn't.  Update example for
-       contemporary systems (like Debian) and to reflect the fact that
-       the GNU troff(1) man page needs to be preprocessed with tbl(1).
-       (Invoking grotty): Recast discussion of -c option, importing
-       much language from grotty(1) page rewrite from a year ago.  Add
-       program index entries for col, more, and ul.  Fix transposition
-       error in ISO document number.
-
-       * src/devices/grotty/grotty.1.man (Description/Legacy output
-       format): Make slight wording changes prompted by content of
-       parallel section in our Texinfo manual.
-
-       * src/roff/groff/groff.1.man (Options/-a): Parallelize with
-       first sentence of corresponding material in our Texinfo
-       manual.
-
-       * src/roff/troff/troff.1.man (Options/-a): Parallelize with
-       our Texinfo manual.
-
-       Fixes the rest of
-       <https://savannah.gnu.org/bugs/?55278>.
-
-2020-06-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff_diff.7.man (Language/Long names): Fix error: groff
-       adds three new requests with short names, not two.  List them in
-       an adjacent comment.
-
-2020-06-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-ext.tmac (.ME, .UE): Fix portability issue.  While
-       widely supported, the \$* escape is not documented in CSTR #54.
-       If groff is not the typesetter, append macro arguments using
-       \$1, \$2, ..., \$9 instead.
-
-2020-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * man/groff.7.man (Numerical Expressions): Fix error: negative
-       expressions evaluate false, not true as was implied.
-       Parallelize descriptions with our Texinfo manual and
-       groff_diff(7) (in abbreviated form).
-
-2020-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Manipulating Filling and Adjusting): Fix error
-       in code sample: missing 'n' in number register interpolation.
-
-2020-05-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/preconv/tests/smoke-test.sh: Make BOM detection
-       override less hinky (i.e., use more normative input).  Add tests
-       for all five detected BOMs.
-
-2020-05-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (space_size): Prevent assertion
-       failure.  If an argument to the .ss request is negative, throw a
-       range warning and ignore it.
-       * src/roff/groff/tests/regression_savannah_58337.sh: Add test.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       Fixes https://savannah.gnu.org/bugs/?58337.
-
-2020-05-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Update documentation of .ss request.
-
-       * doc/groff.texi (Manipulating Filling and Adjusting): Rewrite
-       documentation of .ss request and \n[.ss] and \n[.sss] escapes.
-       Note that negative values are not permitted in either argument
-       to .ss.  Use new terminology, "minimal inter-word spacing" and
-       "additional inter-sentence spacing" for clarity.  Clarify that
-       additional inter-sentence spacing is only used when the output
-       line is not full when the end of a sentence occurs.  Add index
-       nodes to help readers find discussion of details of spacing
-       between words and sentences.  Move discussion of differences
-       from AT&T troff to section "Implementation Differences".  Update
-       example to more closely resemble a real-world case, use second
-       argument to .ss request, and eliminate hackish use of .nop
-       request.
-
-       * man/groff_diff.7.man (New number registers): Recast in
-       parallel with the foregoing.
-
-       * man/groff.7.man (Read-only registers): Use new terminology and
-       describe \n[.ss] and \n[.sss] in meaningful terms, not by
-       reference to arguments to the .ss request (which wasn't even
-       accurate, because these registers have default values).
-
-       Fixes https://savannah.gnu.org/bugs/?54101.
-
-2020-05-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Undocument plans to support end-of-file GNU Emacs coding tags.
-
-       * src/preproc/preconv/preconv.cpp (check_coding_tag):  Update
-       comments.
-       (detect_file_encoding): Alter debugging output so it's easier to
-       grep and verify Emacs coding tag detection.
-
-       * src/preproc/preconv/preconv.1.man (Bugs): Delete; its sole
-       concern was the absence of this feature.
-       (Usage): Document detection algorithm in more detail.  Note
-       which detection methods don't work on unseekable input (pipes).
-       Offer recommendations for those struggling with encoding
-       detection.
-       (Usage/Coding Tags): Stop manipulating line adjustment.  Use
-       hyphen-minus (\- escape) characters in coding tag names, since
-       they are literals that one might copy and paste.  Stop
-       referencing XEmacs, whose development appears moribund.
-       (See Also): Add cross-references to iconv(3) and locale(7) man
-       pages.
-
-       * src/preproc/preconv/tests/smoke-test.sh: Test each of the
-       steps in the detection algorithm.
-       * src/preproc/preconv/preconv.am: Run test.
-       (preconv_TESTS): Add new variable.
-       (TESTS): Append $(preconv_TESTS).
-
-2020-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/afmtodit/afmtodit.pl: Format usage message with
-       full capitals for parameters, and break out -v option in a
-       separate "synopsis".
-
-2020-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * font/devpdf/util/BuildFoundries.pl: Stop throwing away
-       diagnostics from afmtodit.  This results in only one extra line
-       of build output:
-
-               both Upsilon1 and Upsilon map to *U at .../afmtodit line
-               6413.
-
-2020-05-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Correct documentation of .pm request.
-
-       * man/groff.7.man (Requests/Request short reference): The .pm
-       request's classical behavior was described instead of groff's,
-       and omitted mention of strings and diversions; correct it.
-
-       * man/groff_diff.7.man (Implementation Differences): Document
-       this difference between AT&T troff and groff.
-
-       * doc/groff.texi (Debugging): Relocate description of .pm
-       behavioral difference...
-       (Implementation Differences): ...hither.
-
-2020-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/addftinfo/addftinfo.cpp (usage):
-       * src/utils/tfmtodit/tfmtodit.cpp (usage): Add "usage:" prefix
-       to messages documenting auxiliary modes of invoking the program.
-       The output doesn't look right without one, and it feels
-       dishonest to not document the relevant options (-v, --version)
-       disjunctively.  I'm trying to strike a balance between the
-       ultra-terse BSD approach and the ultra-garrulous GNU one (see,
-       e.g., ls(1)).  Likely both camps will be unhappy.  :-/
-
-2020-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/tfmtodit/tfmtodit.cpp (read_map): Report invalid
-       character code from map file in diagnostic.
-       (main): Report invalid skew character position in diagnostic.
-       Explicitly report insufficient arguments in addition to usage
-       message.  Lift invariant computed expressions out of loops (more
-       to shorten long lines than because I think the compiler won't
-       figure it out).  Give content to "impossible assertion".
-       (tfm::load): Capitalize TFM initialism in diagnostics.
-       (usage): Use full capitals for parameters as is conventional.
-       Document disjunction of -v/--version flag from other
-       invocations.
-
-2020-04-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/utils/addftinfo/addftinfo.cpp (usage): Add overloaded
-       version that accepts a constant string argument, which emits the
-       argument as a diagnostic and then calls usage().
-       (main): Add diagnostics to usage message where the problem is
-       clear.  Add comment explaining why it sometimes isn't.
-       (usage): Refactor main usage message (which prints the summary)
-       to report the actual names of the accepted option arguments
-       instead of just "-param", which is not literally accepted.
-
-       Sort param_table alphabetically for use by the usage message.
-
-2020-04-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Delete groffer.
-
-       Per discussion on the groff development mailing list, there is
-       no desire to retain the maintenance of this portion of the groff
-       distribution.
-
-       See
-       <https://lists.gnu.org/archive/html/groff/2020-04/msg00051.html>
-       et seq.
-
-       * contrib/groffer: Recursively delete.
-
-       * Makefile.am:
-       * arch/mingw/mingw.am: Stop building groffer.
-
-       * m4/groff.m4 (GROFF_GROFFERDIR_DEFAULT):
-       (GROFF_GROFFERDIR_OPTION): Delete; remove "--with-grofferdir"
-       configuration option.
-       * configure.ac: Stop calling these macros.
-
-       * MANIFEST:
-       * NEWS:
-       * PROJECTS:
-       * TODO:
-       * contrib/chem/chem.1.man:
-       * contrib/chem/examples/122/README.txt:
-       * contrib/chem/examples/README.txt:
-       * contrib/glilypond/glilypond.1.man:
-       * contrib/gperl/gperl.1.man:
-       * contrib/gpinyin/gpinyin.1.man:
-       * contrib/groff_filenames/groff_filenames.5.man:
-       * man/groff_font.5.man:
-       * man/roff.7.man:
-       * src/roff/groff/groff.1.man:
-       * src/roff/grog/grog.1.man:
-       * src/utils/addftinfo/addftinfo.1.man:
-       * tmac/groff_trace.7.man: Delete references to groffer.
-
-2020-04-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/include/curtime.h: #include <time.h> if we're returning
-       a time_t from current_time().
-
-       * src/libs/libgroff/curtime.cpp (current_time): Quote
-       $SOURCE_DATE_EPOCH variable content in diagnostics produced due
-       to bad input since it's under user control and could have all
-       kinds of bogosity in it (like whitespace).
-
-2020-04-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * **/*.{man,tmac}: Save compatibility mode robustly.
-
-       Use new \n[.cp] register to save compatibility mode.
-
-       Use register names based on the filename (at the source
-       maintenance level) to avoid clobbering other files' saved
-       compatibility modes.
-
-       * tmac/html.tmac: Eliminate test of saved-compatibility
-       register by moving its body inside the block where compatibility
-       mode is off.  This is the only part of this changeset that was
-       not automated.
-
-       Fixes <https://savannah.gnu.org/bugs/?58162>.
-
-2020-04-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Implement new read-only .cp register.
-
-       Within a .do request, \n[.cp] holds the saved value of
-       compatibility mode.
-
-       The register \n[.cp] is specialized and may require a statement
-       of rationale.  When writing macro packages or documents that use
-       groff features and which may be mixed with other packages or
-       documents that do not—common scenarios include serial processing
-       of man pages or use of the .so or .mso requests—you may desire
-       correct operation regardless of compatibility mode in the
-       surrounding context.  It may occur to you to save the existing
-       value of \n(.C into a register, say, _C, at the beginning of
-       your file, turn compatibility mode off with “.cp 0”, then
-       restore it from that register at the end with “.cp \n(_C”.  At
-       the same time, a modular design of a document or macro package
-       may lead you to multiple layers of inclusion.  You cannot use
-       the same register name everywhere or you risk “clobbering” the
-       value from a preceding or enclosing context.  The two‐character
-       register namespace of AT&T troff is confining and mnemonically
-       challenging; you may wish to use groff's more capacious
-       namespace.  However, attempting “.nr _my_saved_C \n(.C” will not
-       work in compatibility mode; the register name is too long.
-       “This is exactly what .do is for,” you think, “.do nr
-       _my_saved_C \n(.C”.  The foregoing will always save zero to your
-       register, because .do turns compatibility mode off while it
-       interprets its argument list.  What you need is:
-               .do nr _my_saved_C \n[.cp]
-               .cp 0
-       at the beginning of your file, followed by
-               .cp \n[_my_saved_C]
-       at the end.  As in the C language, we all have to share one big
-       namespace, so choose a register name that is unlikely to collide
-       with other uses.
-
-       * src/roff/troff/input.cpp (do_request, init_input_requests):
-       Implement it.
-
-       * doc/groff.texi:
-       * man/groff.7.man:
-       * man/groff_diff.7.man: Document it.
-
-       * src/roff/groff/tests/dot-cp_register_works.sh: Test it.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       Enables a fix for
-       <https://savannah.gnu.org/bugs/?58162>.
-
-       Thanks to John Gardner and Ingo Schwarze for the discussion.
-
-2020-04-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Implementation Differences):
-       * man/groff_diff.7.man (New requests): Rewrite description of
-       .do request, and replace example with a more illustrative one.
-
-       * man/groff.7.man (Request short reference): Rewrite description
-       of .do request briefly.
-
-2020-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Implementation Differences): Remove incorrect
-       claim.  The .C register cannot be manipulated manually.
-
-2020-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/smoke-test_html_device.sh: Simplify
-       charmap test.
-
-2020-04-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       It's too easy for the nroff version to get desynced from the
-       groff version when we're running test cases, leading to spurious
-       results.  Make it easier to see a discrepancy.
-
-       * src/roff/nroff/nroff.sh: Call groff with -v or --version when
-       we are called that way.  Let test cases tell us to use
-       test-groff as groff with an environment variable.
-
-       * src/roff/nroff/tests/verbose_option_works.sh.in: Rename to...
-       * src/roff/nroff/tests/verbose_option_works.sh: ...this.  Check
-       the nroff version being tested against the groff version being
-       wrapped.  This exposes a bug; the system groff rather than the
-       build tree groff was being invoked.  Refactor.  Stop messing
-       with @GROFF_BIN_PATH_SETUP@ (enabling the rename); instead, let
-       test-groff handle that for us.  Locate it and export the
-       variable GROFF_TEST_GROFF so nroff can find it.  Because we
-       manipulate $PATH to run the tests, the $PATH of an installed
-       groff system will _always_ differ from that used by a build
-       tree; ignore it in the test cases.  Dispose of bashisms and set
-       shebang to /bin/sh.
-
-       * src/roff/nroff/nroff.am: Stop generating the above test
-       script.  It can now be run as it ships.
-
-2020-04-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Make our assert() C99-conformant.
-
-       groff has its own implementation of the standard C library's
-       assert() macro.  It hasn't been updated since C89.  C99 requires
-       that the diagnostic emitted by assert() contain the failing
-       expression and name of the function in scope.
-
-       * src/include/assert.h: Add additional pointer to const char
-       arguments to do_assert() and assertion_failed() for function
-       name and stringified expression.
-       (assertion_failed): Update prototype.
-       (do_assert): Accept 'func' and 'msg' parameters and pass them to
-       assertion_failed().
-       (assert): Update macro to collect '__func__' and stringify the
-       expr parameter (as 'msg') and pass them do do_assert().
-       * src/libs/libgroff/assert.cpp (assertion_failed): Rewrite
-       diagnostic to more closely match GNU Coding Style format and
-       also report function and failing expression.
-
-       Example output:
-               troff: ../src/roff/troff/input.cpp:2644: do_request():
-               assertion failed: '0 == "But first, here's a rotten old
-               BBC programme."'
-
-       We have no excuse to assert(0) ever again.  Express the
-       invariant that has been violated.
-
-2020-04-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/smoke-test_html_device.sh: Set
-       LC_CTYPE=C.UTF-8 so that byte sequences in the pipelines are
-       handled correctly.  Skip the test if the environment doesn't
-       support UTF-8.  Thanks to Bjarni Ingi Gislason for the trouble
-       report.
-
-       Fixes <https://savannah.gnu.org/bugs/?58164>.
-
-2020-04-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/html.tmac: Use .do so we correctly load unicode.tmac in
-       compatibility mode.
-
-       Fixes the following problem (wrapped, filenames abbreviated):
-
-       $ echo | ./build/test-groff -C -Thtml >/dev/null
-       troff: backtrace: file '.../groff/build/../tmac/html.tmac':546
-       troff: backtrace: file '.../groff/build/../tmac/troffrc':30
-       troff: .../groff/build/../tmac/html.tmac:546: warning: macro
-               'ms' not defined
-
-2020-04-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/smoke-test_html_device.sh: Add test.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2020-04-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/regression_savannah_58153.sh:
-       * src/roff/groff/tests/\
-       use_point_size_escape_with_single_digit_arg.sh: Use "set -e" to
-       ensure that multi-test script files don't hide problems.  There
-       are arguments against "set -e" (and you can ask Greg Wooledge
-       for all of them), but I'm so used to it from years of writing
-       Debian package maintainer scripts that I feel comfortable with
-       it.  It is less verbose than several alternatives (especially
-       having one test script per case).
-
-       * src/roff/groff/tests/string_case_xform_unicode_escape.sh:
-       Update with respect to new failure output (in a comment only,
-       since this is an XFAIL test).
-
-       * tmac/tests/an-old_AT_and_UC_footer_saved_and_restored.sh:
-       Drop unnecessary "|| exit 1" from end of script.  Incidentally,
-       this script illustrates an alternative to "set -e".
-
-2020-04-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Rework documentation of .spreadwarn.
-
-       * doc/groff.texi (Debugging):
-       * man/groff.7.man (Request short reference):
-       * man/groff_diff.7.man (New requests): Recast description of
-       .spreadwarn request, some based on suggestions from Dave Kemper.
-       Make more prominent the fact that spreading only applies to
-       adjustment mode 'b'.  Document warning type used.
-
-       Fixes half of Savannah #58035.
-
-2020-04-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Require Texinfo 5.0 (February 2013) at a minimum.
-
-       * m4/groff.m4 (GROFF_MAKEINFO): Check for version 5.0 (increased
-       from 4.8).  Update diagnostics and comments.
-
-       * INSTALL.extra:
-       * README:
-       * doc/groff.texi:
-       * doc/webpage.ms: Document updated requirement.
-
-       * doc/fixinfo.sh: Delete; it is no longer necessary to work
-       around Texinfo 4.x bugs.
-
-       * doc/doc.am (EXTRA_DIST): Stop shipping fixinfo.sh.
-       (.texi.html): Remove makeinfo < 5.0 version check and consequent
-       execution of fixinfo.sh.  Update comment.
-
-2020-04-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Enable backtracing across process/file boundaries when errors or
-       non-ignored warnings are encountered.
-
-       Experimentation reveals that .so, .mso, and .pso requests acted
-       as barriers to backtracing except when explicitly requested with
-       the .backtrace request.  Judging by the git history, this
-       behavior dates back to June 1991 or earlier.  The intention,
-       according to a source comment, was only to suppress the
-       backtrace output for the line corresponding to the outermost
-       level of the input stack (commonly, a file argument to groff).
-       Unfortunately, that wasn't its only effect.
-
-       This change does result in one additional line of output for
-       each error or (non-ignored) warning when -b is given.  However,
-       I regard this as unobjectionable because {1} a backtrace was in
-       fact explicitly requested; and {2} it seems a poor tradeoff to
-       suppress most of the backtrace in some complicated and
-       frustrating cases for the sake of one fewer line of backtrace
-       output in a trivial one.
-
-       Now, backtracing behaves the same no matter what triggers it.
-
-       Fixes Savannah #58153.
-
-       * src/roff/troff/input.cpp (file_iterator::backtrace): Call
-       get_location() for its side effect of rewriting a filename of
-       "-" to "<standard input>", for consistency with other diagnostic
-       messages.  (In this class, this member function always returns
-       1, so ignore the return value.  This fact is an essential part
-       of what led to the bug; the conditional
-               p && !p->get_location(0, &f, &n)
-       which appeared in the for loop of input_stack::backtrace() prior
-       to this change would always evaluate to false when a node of the
-       file_iterator class was encountered.)
-       (input_stack::backtrace): Replace member function body with that
-       of input_stack::backtrace_all().
-       (input_stack::backtrace_all): Delete.
-       (backtrace_request): Update the only call site of the above.
-
-       * src/roff/groff/tests/regression_savannah_58153.sh: Add test.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-       * src/roff/groff/tests/string_case_xform_errors.sh: Update
-       regression test to not be confounded by additional line of
-       backtrace output.  Remove bashism along the way.
-
-       * doc/groff.texi:
-       * man/groff.7.man:
-       * man/groff_diff.7.man: Update documentation.
-
-2020-04-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Reorganize backtrace output.
-
-       * src/roff/troff/input.cpp (string_iterator::backtrace):
-       Prefix the output with the program name if it is known.  In a
-       deviation from the GNU Coding Standards, put the string
-       "backtrace:" immediately next instead of the file and line
-       number; this is because, particularly in cases where the
-       backtrace is most interesting or needed, it will produce
-       multiple lines of output and the common prefix aids visual
-       understanding.
-       (file_iterator::backtrace): As above; also, change prefix for
-       popened nodes in the iterator from "process" to "pipe".  This
-       seemed preferable to omitting the information entirely or using
-       an inscrutable sigil like 'f' or 'p'.  The advantage is that the
-       output is better aligned--better ergonomics for those who have
-       to cope with a lot of it.  Furthermore, output the filename only
-       once.
-
-       Example of old and new output:
-
-       /tmp/inner:2: backtrace: file '/tmp/inner'
-       echo .so /tmp/inner:1: backtrace: process 'echo .so /tmp/inner'
-       /tmp/outer:1: backtrace: file '/tmp/outer'
-
-       troff: backtrace: file '/tmp/inner':2
-       troff: backtrace: pipe 'echo .so /tmp/inner':1
-       troff: backtrace: file '/tmp/outer':1
-
-2020-04-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_size): Add units to diagnostic.
-       This function works only with device-specific basic units
-       internally; users likely think in terms of point size, so add
-       the basic unit suffix "u" to offer a hint about what's going on.
-
-       Example:
-       $ groff -ww >/dev/null
-       \s[10]A\s[-12]B
-       troff: <standard input>:1: warning: point-size escape results in
-       non-positive size -2000u; set to 1u
-
-       On a PostScript device with 1000 basic units to the point, the
-       difference is important and would be confusing without the unit
-       indication.
-
-2020-04-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Correct and clarify point size documentation.
-
-       Our Texinfo manual has long documented the request '.ps 0' as
-       restoring the previous point size (just as '\s0' or '.ps' with
-       no argument does), but this is incorrect; since groff 1.02 or
-       earlier (June 1991), the request has not actually worked this
-       way.  Instead, '.ps 0' sets the point size to 1 basic unit
-       {though output drivers may clamp this to a higher value}.  This
-       behavior is consistent with AT&T troff, Hierloom Doctools troff
-       and, per Ingo Schwarze, Plan 9 troff.  (It is, however, not
-       consistent with neatroff.)
-
-       * doc/groff.texi (Changing Type Sizes): Stop claiming that '.ps
-       0' works like '\s0'.  Note that the resulting (computed) point
-       size, not the argument, is clamped.  Note that it is
-       non-positive, not negative, point sizes that are clamped to 1u.
-       Add (forward) cross-reference to section where \n[.ps] is
-       defined since it is mentioned here.  Move explanation of special
-       handling of zero argument to \s escape description.
-
-       * man/groff.7.man (Request short reference): Explain .ps N
-       independently of \s.  Note clamping behavior.
-
-2020-04-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_size): Correctly brace 'else'
-       block.
-
-       * src/roff/groff/tests/\
-       use_point_size_escape_with_single_digit_arg.sh:
-       Check that we get a diagnostic when relying on ambiguous form.
-
-2020-04-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (read_size): Move special-case
-       interpretation of the '\sN' form of point-size escapes when 'N'
-       is 1, 2, or 3 to compatibility mode (groff -C) only, and throw
-       error diagnostic with suggestion for remedy if encountered.
-
-       Traditionally, '\s36A' is interpreted as "set point size to 36,
-       then emit 'A'".  However, only values in the range 10-39 are
-       handled specially; '\s40A' is interpreted as a four-point "0A".
-       This is unlike anything else in *roff grammar; see \*, \$, \f,
-       \F, \g, \k, \m, \M, \n, \V, \Y, and \z.
-
-       To anticipate objections: Why not throw only a warning?  Because
-       there isn't a warning category for supported but ambiguous
-       syntax (this behavior of AT&T troff dates back to the mid-1970s
-       but was not documented in the Troff User's Manual until 1992).
-       Why not throw the error outside of compatibility mode too?
-       Because outside of compatibility mode we (now) have an
-       unambiguous parse.
-
-       Background: The Graphic Systems C/A/T phototypesetter (the
-       original device target for AT&T troff) only supported a few
-       discrete point sizes in the range 6..36, so Ossanna
-       special-cased the parser to do what the user must have meant.
-       Kernighan warned of this in the 1992 revision of CSTR #54
-       {§2.3}, and more recently, McIlroy referred to it as a "living
-       fossil".
-
-       See:
-         https://lists.gnu.org/archive/html/groff/2020-03/msg00054.html
-         https://lists.gnu.org/archive/html/groff/2020-04/msg00002.html
-         https://lists.gnu.org/archive/html/groff/2020-04/msg00015.html
-       and follow-ups for discussion.
-
-       * NEWS: Advise users of behavior change and offer guidance.
-
-       * doc/groff.texi:
-       * man/groff.7.man: Document the restriction of special handling
-       of point-size arguments to '\s' to compatibility mode.
-
-       * src/roff/groff/tests/\
-       use_point_size_escape_with_single_digit_arg.sh: Add regression
-       test.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2020-04-04  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Improve point-size escape diagnostics.
-
-       * src/roff/troff/input.cpp (read_size): Disclose context
-       {point-size escape interpretation} in diagnostic messages.  When
-       a "bad digit" is encountered, describe it if possible.  When a
-       relative adjustment results in a negative point size, report the
-       computed value.  Also rename a variable for slightly more
-       clarity ("bad" does not refer to all bad parses, just some cases
-       of bad digits), and update an insufficiently generalized comment
-       {"\s(00" is also an acceptable expression for point-size zero}.
-
-       Based on suggestions by Ingo Schwarze and Bjarni Ingi Gislason.
-
-2020-04-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Align diagnostic message format.
-
-       * src/libs/libgroff/error.cpp (do_error_with_file_and_line):
-       * src/roff/troff/input.cpp (do_error):
-       Display the diagnostic level when it is "error", instead of
-       leaving it implicit.
-
-       * src/roff/troff/input.cpp (error_with_file_and_line): Include
-       the program name in the diagnostic message if it is known.
-
-       * src/roff/groff/tests/string_case_xform_errors.sh: Update
-       diagnostic message expectation.
-
-2020-02-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi (Page Motions):
-       * man/groff.7.man (Single-character escapes): Document
-       non-breaking spaces as such.
-
-       Report and patch by Dave Kemper <saint.snit@gmail.com>.
-       Fixes <https://savannah.gnu.org/bugs/?55954>.
-
-2020-02-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       nroff: Implement -P and -V options.
-
-       * src/roff/nroff/nroff.sh: Recognize -P option (with argument)
-       and pass it through to groff.  Recognize -V option; if given,
-       display constructed groff command instead of executing it.
-       Update usage message to document new options.  Tidy up shell
-       style and indentation.  Add comments.
-       * src/roff/nroff/nroff.1.man: Document new -P and -V options.
-       * src/roff/nroff/tests/verbose_option_works.sh.in: Test -V
-       option.
-       * src/roff/nroff/nroff.am: Generate test and run it.
-
-2020-02-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Stop ms macro package from manipulating warnings.
-
-       * tmac/s.tmac: Remove code block that attempted to enable all
-       warnings "only if none are given on the command line".  It did
-       this by simply comparing the value of the warn register
-       {\n[.warn]} against the default value; but of course, a user
-       could specify -w options that exactly matched the default and
-       the test would not be able to tell, causing puzzling and
-       undesired behavior.  Furthermore, the hard-coded default was out
-       of date and did not correspond to recent releases of groff.  If
-       you want all warnings on, use the ".warn" request with no
-       arguments in your ms document or pass "-w w" to groff (see
-       troff(1) or our Texinfo manual for more on warnings).
-
-       Thanks to Bjarni Ingi Gislason for bringing this issue to our
-       attention.
-
-       Resolves <https://savannah.gnu.org/bugs/?57583>.
-
-2020-01-21  George HELFFRICH  <ghfbsd@gmail.com>
-
-       [me]: Fix regression of '.nm' (#57638).
-
-       * tmac/e.tmac-u (nm): Use saved point size and font position
-       for line numbering only if those registers exist.
-
-       Fixes <https://savannah.gnu.org/bugs/?57638>.
-
-2020-01-18  Ingo Schwarze  <schwarze@openbsd.org>
-
-       Accept any number of arguments for .Dd in the groff_mdoc(7)
-       macros.
-
-       * tmac/doc-common-u: The .Dd macro behaved in a weird way:
-       Without arguments, it printed the string "Epoch".
-       With one, two, four, or more arguments, it ignored all arguments
-       and used the current date instead.
-       Only for exactly three arguments, it printed the arguments.
-       None of this made sense.  Giving the date as "Epoch" is
-       absurd, and printing the current date is just misleading:
-       why should a document be considered up-to-date when the author
-       did not even bother to state the date of the last change?
-       Admittedly, the behaviour for 0 and 4 or more arguments
-       already appeared 4.3BSD-Reno, and the behaviour for 2 or 3
-       arguments in 4.4BSD.  But it was already wrong even in those
-       days: several manual pages in 4.4BSD gave .Dd a single, quoted
-       argument, e.g. .Dd "June 9, 1993": cap_mkdb(1), id(1), sed(1),
-       err(3), getcap(3), sysctl(3), amd(8), disklabel(8), and others.
-       Consequently, simply print all the arguments, no matter how
-       many there are.
-
-       This bug was found by Jonathan Gray <jsg@openbsd.org>
-       while he looked at 4.xBSD manual pages.
-
-2020-01-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/groff.texi: Document initial empty set membership of
-       characters with cflags values of 128, 256, or 512 in parallel
-       with preceding paragraphs regarding smaller powers of two.
-
-       Report and patch by Dave Kemper <saint.snit@gmail.com>.
-       Fixes <https://savannah.gnu.org/bugs/?57549>.
-
-2020-01-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/*.sh: Rename some tests so their
-       filenames are more self-descriptive.
-       * src/roff/groff/groff.am (groff_TESTS): Update.
-
-2020-01-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/groff/tests/transparent_end-of-sentence_chars.sh: Add
-       test for end-of-sentence recognition.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2020-01-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp: Mark \[dd] character (double dagger)
-       as transparent for purposes of end-of-sentence recognition.
-
-       * doc/groff.texi (Sentences):
-       * man/groff_diff.7.man (New requests/.cflags): Document this.
-
-       Report and patch by Dave Kemper <saint.snit@gmail.com>.
-       Fixes <https://savannah.gnu.org/bugs/?57546>.
-
-2020-01-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.1.man (See Also):
-       * src/utils/indxbib/indxbib.1.man (See Also):
-       * src/utils/lkbib/lkbib.1.man (See Also):
-       * src/utils/lookbib/lookbib.1.man (See Also): Add bibliographic
-       reference to the original Bell Labs "refer" paper by Mike Lesk.
-
-2020-01-17  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_AT_and_UC_footer_saved_and_restored.sh: Add
-       regression test for Ingo's change below.
-
-2020-01-16  Ingo Schwarze  <schwarze@openbsd.org>
-
-       Repair .AT and .UC in the groff_man(7) macros.
-
-       * tmac/an-old.tmac: Setting user-defined strings in a macro that
-       will later be called indirectly from page location traps is
-       excessively complicated.  Besides, the implementation doesn't
-       work: when the trap is finally sprung, the defaults from the
-       an-init macro clobber what the author specified with .AT or .UC.
-       Instead, all that is needed is setting the strings for the
-       header before triggering the page break, such that they appear
-       right away, while setting the strings for the footer after the
-       page break, such that they don't appear on the previous page.
-
-       This bug was found by Jonathan Gray <jsg@openbsd.org> while he
-       looked at 4.xBSD manual pages.
-
-2020-01-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/groff_man.7.man (Document structure macros/.SH): Fix
-       errors in footer description.
-
-2020-01-12  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-old_CS_register_on.sh: Tweak flags; all the
-       other tests in this group pass "-Tascii -P-cbou" instead of
-       "-Tutf8".  (This is so that output is easy to grep from a shell
-       script.)  Bring this test into line.  Does not regress anything.
-
-2019-12-30  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Certain pdfmark destination names caused gropdf to fail.
-
-       * src/devices/gropdf/gropdf.pl: Look for pdfmark types, (i.e.
-       DEST, OUT, ANN), only preceding 'pdfmark' at end of line, not
-       anywhere else.
-
-2019-12-30  Ingo Schwarze  <schwarze@openbsd.org>
-
-       Correct output of sprintf("%%") in pic(1).
-
-       * src/preproc/pic/pic.ypp: Print "%" rather than "%%".
-
-       Bug reported by Doug McIlroy <doug at cs dot dartmouth dot edu>.
-       Patch using feedback from Larry McVoy <lm at mcvoy dot com>.
-
-2019-12-29  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Update man page of gropdf to document \X calls.
-
-       * src/devices/gropdf/gropdf.1.man: The calls 'pagename' and
-         'switchtopage' (used by mom to relocate TOC) are documented,
-         together with their convenience commands '.pdfpagename' and
-         '.pdfswitchtopage'.
-
-2019-12-29  Ingo Schwarze  <schwarze@openbsd.org>
-
-       Improve documentation of pic(1) regarding printf.
-
-       * src/preproc/pic/pic.1.man:
-         Document which conversion specifications are supported.
-       * doc/pic.ms:
-         Correct the list of supported conversion specifications.
-
-2019-12-21  Ingo Schwarze  <schwarze@openbsd.org>
-
-       Update NetBSD, OpenBSD, FreeBSD, Darwin, and DragonFly version
-       strings.
-
-       * tmac/doc-common-u: Update.
-       * tmac/groff_mdoc.7.man: Synchronize.
-
-       Based on a patch from Guillem Jover <guillem@debian.org>
-       via Colin Watson <cjwatson@debian.org>, tweaked by me.
-       Fixes: https://bugs.debian.org/867123
-
-2019-09-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Use a vertical spacing of 1v between paragraphs in man page
-       examples.  This looks better (on typesetter devices like
-       PostScript and PDF) with the Courier font family also used in
-       examples.  Typewriter devices (like the terminal) already used
-       an inter-paragraph spacing of 1v.
-
-       * tmac/an-ext.tmac (EX): Save the value of the PD number
-       register (inter-paragraph distance), and set it to 1v.
-       (EE): Restore previous value of the PD register.
-
-2019-09-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Changes to allow configure to check for URW fonts
-
-       * font/devpdf/util/BuildFoundries.pl: Call the program with
-       --dirURW with path provided to ./configure, and --check to do
-       a dry-run just checking if the fonts are available. (bug #56748)
-
-2019-09-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Add new ghostscript font names (bug #56748)
-
-       * font/devpdf/Foundry.in: Add changed font names
-
-2019-09-21  Deri James  <deri@chuzzlewit.myzen.co.uk>
-
-       Prevent gropdf executing arbitrary commands
-
-       * src/devices/gropdf/gropdf.pl: See bug #55557
-
-2019-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/an-old.tmac: Move test for definitions of CS and CT
-       registers to after man.local is sourced; this way we can both
-       respect any setting of those registers in that file (which is
-       intended for customization by the site administrator) and ensure
-       that the registers are defined when dereferenced later.
-
-2019-09-15  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * **/*.man: Put section headings in title case.
-
-2019-09-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp: Lift invariant out of loop.
-
-2019-09-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/refer/refer.1.man: Add mention of man and mm
-       packages as supporting the "refer" preprocessor (GNU mm grew
-       this support back in groff 1.22.1).
-
-2019-09-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Mark expected-to-fail test as XFAIL.
-
-       Automake supports XFAIL and XPASS, so actually use the
-       infrastructure as intended.
-
-       * Makefile.am: Declare XFAIL_TESTS variable.
-       * src/roff/groff/groff.am (groff_XFAIL_TESTS): Add
-       string_case_xform_unicode_escape.sh.
-       * src/roff/groff/tests/string_case_xform_unicode_escape.sh: Set
-       the expected output to what it would be if string case
-       transforms worked on groff Unicode escapes.
-
-2019-09-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Retire '@G@' build system macro.
-
-       It existed only for forcibly-capitalized man page titles; it was
-       the uppercase-transformed counterpart of @g@.
-
-       * Makefile.am: Delete sed transformation of @G@.
-       * src/preproc/tbl/tbl.1.man: Replace '@G@EQN' in section heading
-       with '@g@eqn'.
-
-2019-09-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * **/*.man: Downcase man page titles, except for glilypond and
-       roff2*, which did not require it.
-
-       Here's a sed script for the aid of those who have a corpus of
-       man pages to migrate.
-
-               # Downcase man page titles.
-               #
-               # Use the first line to skip any .TH lines that require
-               # special handling, perhaps because the name of the
-               # command gets externally macro-expanded.  In groff, the
-               # "roff2.1.man" page is an example.
-               #
-               # This script operates _only_ on .TH lines.
-               #
-               # usage: sed -i -f this_script.sed your_man_page.1 ...
-               /@ROFF2MODE@/b
-               /^\.\s*TH/{
-               h
-               s/^\.\s*TH \+\([^ ]\+\) .*/\1/
-               y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
-               G
-               s/\([^ ]\+\)\n\(^\.\s*TH \+\)[^ ]\+\( .*\)/\2\1\3/
-               }
-
-2019-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       The an (man) macro package supports new CS and CT number
-       registers to control rendering of man page section headings and
-       titles, respectively, in full capitals.  These default off (with
-       no visible effect on pages which already fully capitalize these
-       strings in man page sources).  The rationale is to encourage man
-       page authors to preserve case distinction information in (or
-       restore it to) their titles and section headings, while giving
-       users (including system administrators, distributors,
-       integrators, and maintainers of man(1) implementations) a way to
-       view the rendered page elements in full capitals if desired.
-
-       * tmac/an-old.tmac (TH/an-init): If number register CT is
-       defined and nonzero, call .stringup on \*[an-title].
-       (SH): Store macro argument list to \*[an-section-heading].  If
-       number register CS is defined and nonzero, call .stringup on it.
-       * tmac/groff_man.7.man (OPTIONS): Document the CS and CT number
-       registers.
-       * tmac/tests/an-old_CS_register_off.sh:
-       * tmac/tests/an-old_CS_register_on.sh:
-       * tmac/tests/an-old_CS_register_unspecified.sh:
-       * tmac/tests/an-old_CT_register_off.sh:
-       * tmac/tests/an-old_CT_register_on.sh:
-       * tmac/tests/an-old_CT_register_unspecified.sh: Add tests.
-       * tmac/tmac.am (tmac_TESTS): Run tests.
-
-2019-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add regression test to check behavior of case transformation
-       request on a string containing a Unicode character escape.
-       Right now, this is not supported, so it is an XFAIL test in the
-       parlance of DejaGNU/POSIX 1003.3.
-
-       * src/roff/groff/tests/string_case_xform_unicode_escape.sh: New
-       test.
-       * src/roff/groff/groff.am (groff_TESTS): Run test.
-
-2019-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Implement .stringdown and .stringup requests.
-
-       * src/roff/troff/input.cpp: Add .stringdown and .stringup
-       requests.
-       * doc/groff.texi: Document them, including example.
-       * man/groff_diff.7.man: Same.
-       * man/groff.7.man: Document them briefly.
-
-2019-09-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Regression-test string case transform feature.
-
-       * src/roff/groff/tests/string_case_xform_errors.sh: New test.
-       * src/roff/groff/tests/string_case_xform_requests.sh: New test.
-       * src/roff/groff/groff.am (groff_TESTS): Run tests.
-
-2019-06-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/devices/grotty/grotty.1.man (Options/-i): Note support of
-       recent versions of xterm for italic (oblique) styles.
-
-       Fixes part of <https://savannah.gnu.org/bugs/?55278>.
-
-2019-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       devlatin1: Map \(oq to ' on output.
-
-       * font/devlatin1/R.proto: Render the output glyph \[oq]
-       {opening quote} as 0x27 (apostrophe) instead of 0x60 (grave
-       accent).  A grave accent is just flat wrong for the Latin-1
-       character set, a.k.a. ISO 8859-1.  The defining document ECMA-94
-       {June 1986} is freely available for perusal.  The ECMA-94 Latin
-       character sets do not define any glyphs for directional
-       {"typographer's"} quotation marks, but the apostrophe is
-       depicted as a neutral (vertical) glyph, whereas the grave accent
-       0x60 and acute accent 0xB4 are mirror-symmetric diacritical
-       marks.
-
-       Note that this change has no effect on _input_ conventions for
-       roff source documents.  You can still get directional single
-       quotes on UTF-8, PostScript, PDF, and other output devices
-       supporting them by typing sequences like `this' in the input
-       {character remapping with ".char" requests and similar
-       notwithstanding}.
-
-       Patch and idea from Ingo Schwarze, who originally proposed it
-       for ASCII as well, and included Latin-1 for parallelism.
-       The groff developers could reach no consensus about the wisdom
-       of such a change for ASCII (which was designed to support
-       ambiguity for some code points, requiring the development of
-       supplementary interpretation conventions between parties).
-       ECMA-94/ISO-8859 is more strongly prescriptive.
-
-       See https://savannah.gnu.org/bugs/?55616 and the groff mailing
-       list archives for 31 January to 23 February 2019 at
-       https://lists.gnu.org/archive/html/groff for lengthy discussion.
-
-       * src/roff/groff/tests/on-latin1-device-oq-is-0x27.sh: Check for
-       correct output glyph.
-
-       * src/roff/groff/groff.am: Add test.
-
-2019-06-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/unicode.tmac: Save and restore compatibility mode since
-       the script uses a GNU extension (.char).
-
-2019-06-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       libdriver: Fix SEGV (Savannah #56555).
-
-       * src/libs/libdriver/printer.cpp: Check result of
-       set_char_and_width() for error condition before relying on it.
-
-       * src/roff/groff/tests/regression-56555.sh: Provoke segfault
-       with five bytes of input using transparent line indicator.
-
-       * src/roff/groff/groff.am: Add test.
-
-       Fixes <https://savannah.gnu.org/bugs/?55278>.
-
-2019-01-12  Ingo Schwarze  <schwarze@openbsd.org>
-
-       Correctly handle groff_mdoc(7) .Lk arguments starting with a
-       dot.
-
-       * tmac/doc.tmac-u: Each argument to the .Lk macro is printed
-       on its own roff input line.  If it happens to start with a dot
-       or apostroph, it was misinterpreted as a request or macro.
-       Force it to be treated as text by adding "\&" in front of it.
-
-2018-12-31  Ingo Schwarze  <schwarze@openbsd.org>
-
-       * man/groff_diff.7.man: remove two stray .RE macros
 
 
 ________________________________________________________________________
 
 ##### License
 
-Copyright 2018-2021 Free Software Foundation, Inc.
+Copyright 2023 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff --git a/ChangeLog b/ChangeLog.123
similarity index 94%
copy from ChangeLog
copy to ChangeLog.123
index f866d99a4..2b937f79e 100644
--- a/ChangeLog
+++ b/ChangeLog.123
@@ -1,1184 +1,5 @@
-2023-06-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Clarify diagnostic message.
-
-       * src/preproc/eqn/lex.cpp (do_delim): Do it.
-
-       Thanks to Doug McIlroy for the report <https://lists.gnu.org/\
-       archive/html/groff/2023-06/msg00158.html>.
-
-2023-06-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Add unit tests for drawing commands.
-
-       * src/roff/groff/tests/draw-arc.sh:
-       * src/roff/groff/tests/draw-circle.sh:
-       * src/roff/groff/tests/draw-ellipse.sh:
-       * src/roff/groff/tests/draw-filled-circle.sh:
-       * src/roff/groff/tests/draw-filled-ellipse.sh:
-       * src/roff/groff/tests/draw-filled-polygon.sh:
-       * src/roff/groff/tests/draw-line.sh:
-       * src/roff/groff/tests/draw-polygon.sh:
-       * src/roff/groff/tests/draw-spline.sh:
-       * src/roff/groff/tests/set-stroke-thickness.sh: Do it.
-
-       * src/roff/groff/groff.am (groff_TESTS): Run tests.
-
-2023-06-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man, mdoc]: Parameterize page offset.
-
-       * tmac/mdoc/doc-ditroff (doc-setup-page-layout):
-       * tmac/mdoc/doc-nroff (doc-setup-page-layout):  Stop forcing the
-       page offset to the device defaults, redundantly.
-
-       * tmac/an.tmac:
-       * tmac/mdoc/doc-ditroff (doc-setup-page-layout):
-       * tmac/mdoc/doc-nroff (doc-setup-page-layout):  Honor `PO`
-       register if set at startup.
-
-       * tmac/groff_man.7.man.in (Options):
-       * tmac/groff_mdoc.7.man (Options): Document it.
-
-       * NEWS: Add item.
-
-2023-06-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Slightly refactor.
-
-       [grodvi, grops, xditview, libbib, libgroff, eqn, pre-grohtml,
-       preconv, refer, troff, tfmtodit]: Store return value of
-       `strlen()` in a `size_t` (or `ptrdiff_t` if we're performing
-       subtraction on it) instead of an `int`.  Change temporaries
-       {loop indices and similar} to use the same types.
-
-       * src/devices/grodvi/dvi.cpp (dvi_printer::do_special):
-       * src/devices/grops/ps.cpp (ps_output::comment_arg):
-       (ps_output::put_string, ps_output::put_number):
-       (ps_output::put_float, ps_output::put_color):
-       * src/devices/grops/ps.cpp (class ps_output) <put_string, col>:
-       <max_line_length>:
-       * src/devices/xditview/Dvi.c (ClassInitialize):
-       * src/include/symbol.h (class symbol) <block_size>:
-       * src/libs/libbib/index.cpp (index_search_item::munge_filename):
-       (index_search_item::search_item):
-       * src/libs/libgroff/fontfile.cpp (font::open_file):
-       * src/libs/libgroff/string.cpp (string::operator=):
-       (string::operator+):
-       * src/libs/libgroff/symbol.cpp (symbol::symbol):
-       (symbol::block_size):
-       * src/preproc/eqn/delim.cpp (define_extensible_string):
-       * src/preproc/html/pre-html.cpp (char_buffer::can_see):
-       * src/preproc/html/pushback.cpp (pushBackBuffer::isString):
-       * src/preproc/preconv/preconv.cpp (emacs2mine):
-       * src/preproc/refer/label.ypp (format_expr::evaluate):
-       * src/roff/troff/input.cpp (make_temp_iterator, pipe_source):
-       * src/utils/tfmtodit/tfmtodit.cpp (main): Do it.
-
-       * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Drop
-       `while` loop that is now tautologically true due to comparison
-       of unsigned types.
-
-2023-05-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.cpp (font_change): Trivially refactor.
-       Simplify conditionals.
-
-2023-05-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Trivially refactor.  Rename `check_tabs` member functions
-       to `diagnose_tab_stop_usage`, to be more expressive and to
-       prepare for the diagnosis of leaders in the input as well.
-
-       * src/preproc/eqn/box.cpp (box::check_tabs):
-       (box_list::list_check_tabs):
-       (pointer_box::check_tabs):
-       (tab_box::check_tabs):
-       * src/preproc/eqn/box.h (box::check_tabs):
-       (box_list::list_check_tabs):
-       (list_box::check_tabs):
-       (pile_box::check_tabs):
-       (matrix_box::check_tabs):
-       (pointer_box::check_tabs):
-       (tab_box::check_tabs):
-       * src/preproc/eqn/delim.cpp (delim_box::check_tabs):
-       * src/preproc/eqn/limit.cpp (limit_box::check_tabs):
-       * src/preproc/eqn/list.cpp (list_box::check_tabs):
-       * src/preproc/eqn/other.cpp (accent_box::check_tabs):
-       (uaccent_box::check_tabs):
-       * src/preproc/eqn/over.cpp (over_box::check_tabs):
-       * src/preproc/eqn/pile.cpp (pile_box::check_tabs):
-       (matrix_box::check_tabs):
-       * src/preproc/eqn/script.cpp (script_box::check_tabs):
-       * src/preproc/eqn/sqrt.cpp (sqrt_box::check_tabs):
-       Rename these...
-       * src/preproc/eqn/box.cpp (box::check_tabs):
-       (box::diagnose_tab_stop_usage):
-       (box_list::list_diagnose_tab_stop_usage):
-       (pointer_box::list_diagnose_tab_stop_usage):
-       (tab_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/box.h (box::diagnose_tab_stop_usage):
-       (box_list::list_diagnose_tab_stop_usage):
-       (list_box::diagnose_tab_stop_usage):
-       (pile_box::diagnose_tab_stop_usage):
-       (matrix_box::diagnose_tab_stop_usage):
-       (pointer_box::diagnose_tab_stop_usage):
-       (tab_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/delim.cpp
-       (delim_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/limit.cpp
-       (limit_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/list.cpp (list_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/other.cpp
-       (accent_box::diagnose_tab_stop_usage):
-       (uaccent_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/over.cpp (over_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/pile.cpp (pile_box::diagnose_tab_stop_usage):
-       (matrix_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/script.cpp
-       (script_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/sqrt.cpp (sqrt_box::diagnose_tab_stop_usage):
-       ...to these.
-
-       * src/preproc/eqn/box.cpp (box::top_level)
-       (box_list::list_diagnose_tab_stop_usage):
-       (pointer_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/delim.cpp
-       (delim_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/limit.cpp
-       (limit_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/list.cpp (list_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/other.cpp
-       (accent_box::diagnose_tab_stop_usage):
-       (uaccent_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/over.cpp (over_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/pile.cpp (pile_box::diagnose_tab_stop_usage):
-       (matrix_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/script.cpp
-       (script_box::diagnose_tab_stop_usage):
-       * src/preproc/eqn/sqrt.cpp (sqrt_box::diagnose_tab_stop_usage):
-       Update call sites.
-
-2023-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Trivially refactor.  Boolify `tab_box` member variable
-       `disabled`.
-
-       * src/preproc/eqn/box.cpp (tab_box::tab_box)
-       (tab_box::check_tabs):
-       * src/preproc/eqn/box.h (class tab_box): Do it.
-
-       * src/preproc/eqn/box.cpp (tab_box::check_tabs): Also recast
-       diagnostic message to clarify what "level" we're talking about:
-       it's lexical.  Which, sadly, probably won't help any but
-       CS/SWeng people...
-
-2023-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Validate a font family before trying to use it.
-
-       * src/roff/troff/env.cpp (is_family_valid): New function checks
-       for all text styles (R, I, B, BI) and returns true only if the
-       given family supports them all.
-       (family_change): Call `is_family_valid()` on given argument.
-       If invalid, throw diagnostic and ignore `fam` request.
-       * src/roff/troff/env.h (is_family_valid): Declare; make visible.
-       * src/roff/troff/input.cpp (main): Call `is_family_valid()` on
-       `-f` option argument.  Its invalidity is a fatal error.
-
-       Fixes <https://savannah.gnu.org/bugs/?64155>.  Thanks to Dave
-       Kemper for the report.
-
-2023-05-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/env.h (read_hyphen_file): Drop relic prototype
-       for undeclared function.  Should have been disposed of on
-       1992-09-21, per ChangeLog.115.
-
-2023-05-23  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (do_error): Describe vertical page
-       locations in output warning diagnostics in terms of lines on
-       nroff devices.
-       * doc/groff.texi (Debugging) <warnscale>:
-       * man/groff.7.man (Request short reference) <warnscale>:
-       Document this change.
-       * NEWS: Add item.
-
-2023-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Refactor handling of type size and vertical spacing.
-
-       * src/preproc/tbl/table.h (struct inc_number): Rename this...
-       (struct size_expression): ...to this, and change its member
-       types.  The `inc` `short` becomes a `relativity` enum
-       because it only ever takes 3 values.  The `val` short becomes an
-       `int`, undoing what I suspect to be premature optimization.
-       * src/preproc/tbl/main.cpp (entry_modifier::entry_modifier)
-       (entry_format::debug_print, process_format):
-       * src/preproc/tbl/table.cpp (set_modifier, set_inline_modifier)
-       (restore_inline_modifier): Update to reflect new types and
-       enum literals.
-
-2023-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (process_format): Check for EOF after
-       eating spaces and tabs when processing [pPvVwW] column
-       modifiers, and emit an appropriate error diagnostic.  This was
-       already being done for [fFmM].
-
-2023-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/tbl/main.cpp (process_format): Accept (and
-       discard) space and tab characters after [pPvV] in a column
-       descriptor, as is already done for [fFmMwW].  Modify [wW] to use
-       the same loop style as the others, for consistency.
-
-2023-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/box.cpp (half_space_box::output)
-       (full_space_box::output, thick_space_box::output)
-       (half_space_box::output): Add assertions to catch unexpected
-       flow of control.
-
-2023-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Implement tunable "half_space" and "full_space"
-       parameters.  They default to the same widths as "thin_space" and
-       "thick_space", respectively, but control the widths of the '^'
-       and '~' input tokens.
-
-       * src/preproc/eqn/box.cpp: Add globals `half_space`,
-       `full_space`.
-       (struct S): Recognize "half_space" and "full_space" as
-       parameters to the "set" primitive, and map them to the globals.
-       (half_space_box::output): Format the half space width.
-       (full_space_box::output): Format the full space width.
-       (full_space_box::output, thick_space_box::output): Drop
-       workaround for Firefox 1.5 MathML bug (November 2005).  Emit
-       "&ThickSpace;" entity instead of "&ensp;".
-
-       * src/preproc/eqn/eqn.1.man (Customization): Document feature.
-
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?64216>.  Thanks to Doug
-       McIlroy for the report and Damian McGuckin for the discussion.
-
-2023-05-19  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Add `thick_space` and `thin_space` classes.
-
-       * src/preproc/eqn/box.cpp:
-       * src/preproc/eqn/box.h: Do it.
-
-2023-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Trivially refactor.  Rename "space_box" class to
-       "full_space_box" for clarity and to prepare for adding distinct
-       thin and thick space box classes.
-
-       * src/preproc/eqn/box.cpp (space_box::space_box)
-       (space_box::output, space_box::debug_print):
-       * src/preproc/eqn/box.h (class space_box): Rename these...
-       * src/preproc/eqn/box.cpp (full_space_box::full_space_box)
-       (full_space_box::output, full_space_box::debug_print):
-       * src/preproc/eqn/box.h (class full_space_box): ...to these.
-       * src/preproc/eqn/eqn.ypp (simple): Construct item using new
-       type name.
-
-2023-05-18  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/hvunits.h: Boolify.
-       (class vunits, class hunits, vunits::is_zero, hunits::is_zero):
-       Do it.
-
-2023-05-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.cpp: Rename request-handling functions to
-       better describe their operation.
-       (font_translate, font_position, style, underline_font)
-       (define_font_special_character, remove_font_special_character)
-       (font_special_request, special_request, font_zoom_request)
-       (bold_font, track_kern, constant_space, ligature, kern_request)
-       (set_soft_hyphen_char): Rename these...
-       (translate_font, mount_font_at_position)
-       (associate_style_with_font_position, select_underline_font)
-       (define_font_specific_character, remove_font_specific_character)
-       (set_font_specific_special_fonts, set_special_fonts, zoom_font)
-       (embolden_font, configure_track_kerning, constantly_space_font)
-       (set_ligature_mode, set_kerning_mode)
-       (set_soft_hyphen_character): ...to these.
-
-2023-05-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/node.cpp (font_translate, font_position, style)
-       (underline_font, define_font_special_character)
-       (remove_font_special_character, font_special_request)
-       (special_request, font_zoom_request, bold_font, track_kern)
-       (constant_space, ligature, kern_request, set_soft_hyphen_char):
-       Declare functions as `static`.
-
-2023-05-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Fix Savannah #64166.
-
-       * src/roff/troff/node.cpp (bold_font): Add `WARN_MISSING`
-       diagnostic if request given no arguments; it does nothing, and
-       the behavior of this request is sufficiently complex that it's
-       worth saying so.  Stop throwing font lookup error if second
-       argument cannot be resolved as a font name; it might be an
-       emboldening amount instead.
-
-2023-05-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (PE): Turn on no-space mode after a pic(1)
-       display, when not flying back with `PF`.  Continues fix for
-       Savannah #62688.
-
-2023-05-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.
-
-       * src/roff/troff/input.cpp (token::~token, token::operator=):
-       Drop workaround for bug in compiler (SGI C++) that dates back to
-       groff 1.07 (March 1993).  But don't go back to using the ternary
-       operator.
-
-2023-05-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Fix Savannah #64104.
-
-       * src/roff/troff/input.cpp (set_escape_char): Rename this...
-       (assign_escape_character): ...to this.  Don't permit the escape
-       character to be set to the same thing as the control or no-break
-       control characters.
-       * doc/groff.texi (Using Escape Sequences): Document
-       restrictions.
-
-       * src/roff/troff/env.h (class environment): Slightly refactor.
-       Rename fields `control_char` and `no_break_control_char` to
-       `control_character` and `no_break_control_character`,
-       respectively, and make them private.  Add public getters and
-       setters for them.
-       (get_control_character): New public member function returns
-       `unsigned char`.
-       (set_control_character): New public member function takes an
-       `unsigned char` and returns a `bool`.
-       (get_no_break_control_character):
-       (set_no_break_control_character): Similar.
-       * src/roff/troff/env.cpp (environment::environment): Update
-       constructors to use new field names and initialize them in their
-       new order of declaration.
-       (environment::copy): Similar.  (Not to be confused with a copy
-       constructor, this member function implements the operation of a
-       valid `evc` GNU troff request.)
-       (environment::get_control_character):
-       (environment::set_control_character):
-       (environment::get_no_break_control_character):
-       (environment::set_no_break_control_character): Implement.
-
-       * src/roff/troff/env.cpp: Drop handling of `cc` and `c2`
-       requests.
-       (control_char, no_break_control_char): Drop implementations.
-       (init_env_requests): Drop `init_request` calls for them.
-
-       * src/roff/troff/input.cpp: Resurrect handling of `cc` and `c2`
-       requests here, with more error handling.
-       (assign_escape_character, process_input_stack): Use the new
-       getters defined above in environment object since the relevant
-       fields are now private.
-       (assign_control_character): New function assumes the former
-       responsibilities of env.cpp:control_char and rejects the request
-       if the desired character is already the escape or no-break
-       control character.
-       (assign_no_break_control_character): New function assumes the
-       former responsibilities of env.cpp:no_break_control_char and
-       rejects the request if the desired character is already the
-       escape or control character.
-       (process_input_stack): Reorder comparisons to avoid inadvertent
-       lvalue assignment.  Add parentheses to assignment with complex
-       RHS.
-       (init_input_requests): Attach `cc` and `c2` requests to new
-       functions above.
-       * doc/groff.texi (Control Characters): Document restrictions.
-
-2023-05-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Don't quote a character with itself in diagnostics.
-
-       * src/roff/troff/input.cpp (token::description)
-       (input_char_description): When quoting the ' character in
-       diagnostics, use double-quotes, not apostrophes.
-
-2023-05-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.
-
-       * src/roff/troff/input.cpp (top level, warnscale_request, main,
-       do_error): Rename global `warn_scaling_indicator` to
-       `warn_scaling_unit`, to align with our documentation.
-
-2023-05-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Revise output warning diagnostic format.
-
-       * src/roff/troff/input.cpp (do_error): For the `OUTPUT_WARNING`
-       value of the `error_type` enum, spell out the words "page" and
-       "diversion" instead of abbreviating them, and place the
-       diversion information (if present) in parentheses.
-
-2023-05-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Trivially refactor.
-
-       * src/roff/troff/reg.cpp (set_number_reg): Rename to...
-       (set_register): ...this.
-       * src/roff/troff/reg.h: Update extern reference.
-       * src/roff/troff/div.cpp (mark):
-       * src/roff/troff/input.cpp (length_request, do_register)
-       (token::add_to_zero_width_node_list, do_register_assignment)
-       (init_registers): Update call sites.
-
-       * src/roff/troff/div.cpp (interpolate_number_reg): Rename to...
-       (interpolate_register): ...this.
-       (get_copy, token::next, length_request, read_title_parts):
-       Update call sites.
-       * src/roff/troff/token.h: Update extern reference.  Explicitly
-       declare as `extern`.
-
-       * src/roff/troff/reg.cpp (define_number_reg): Rename to...
-       (define_register): ...this.
-       (init_reg_requests): Update call site.
-       (set_number_reg): Rename to...
-       (set_register): ...this.
-       (print_number_regs): Rename to...
-       (print_registers): ...this.
-
-       * src/roff/troff/reg.cpp (lookup_number_reg): Rename to...
-       (look_up_register): ...this.
-       * src/roff/troff/input.cpp (interpolate_register): Update call
-       site.
-       * src/roff/troff/reg.h: Update extern reference.  Explicitly
-       declare as `extern`.
-
-2023-04-30  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Improve tests of line number accuracy.
-
-       * src/preproc/eqn/tests/\
-       diagnostics-report-correct-line-numbers.sh: Add cases to check
-       behavior of valid input, not just error cases.  Also add some
-       unexecuted test cases for future use.
-
-2023-04-29  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/include/lf.h (interpret_lf_args):
-       * src/libs/libgroff/lf.cpp (interpret_lf_args): Boolify.
-
-2023-04-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #64122.
-
-       * src/preproc/tbl/table.cpp (table::init_output): Specify
-       scaling unit when using `hym` and `hys` requests.  Continues
-       commit cee547e883, 30 January 2021.
-
-       Thanks to Frederic Chartier and Peter Schaffter for the report.
-
-2023-04-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Regression-test Savannah #64122.
-
-       * src/preproc/tbl/tests/\
-       save-and-restore-hyphenation-parameters.sh: Update input and add
-       check.
-
-2023-04-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Drop `POPEN_MISSING` preprocessor macro.
-
-       3 source files test this macro but nothing appears to define it.
-       It dates back to (at least) 1994.  I suspect this of being
-       bitrot.  Reasons include: (1) We test for a declaration of
-       `popen` in our "configure.ac" file; (2) our gxditview command
-       uses `popen` _without_ #ifdef-guarding it (perhaps the
-       assumption was that any system that supported X11 also had a
-       working `popen`); (3) our "nonposix.h" header file defines a
-       macro aliasing `popen` to `_popen`, which is its typical name on
-       Windows systems, and is the most likely build host candidate for
-       which support might have been missing as late as 1994.
-       Microsoft end-of-lifed MS-DOS in 2000.  If someone wants to
-       start up a FreeDOS port, talk to us.  Maybe even that has a
-       functional `popen()`.  Here's hopin'.
-
-       * src/roff/troff/input.cpp ([global], file_iterator::close)
-       (pipe_source, pipe_output, init_input_requests):
-       * src/roff/troff/node.cpp (class real_output_file)
-       (output_file::real_output_file, output_file::~real_output_file):
-       * src/roff/troff/node.h: Do it.
-
-2023-04-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Implement new "gifont" primitive.
-
-       * src/preproc/eqn/eqn.ypp: Add token "GFONT" (to supplement
-       "GIFONT", already renamed from "GFONT".
-       * src/preproc/eqn/lex.cpp (struct token_table): Map "gifont" and
-       "gfont" inputs to "GIFONT" and "GFONT" tokens.
-       (do_gfont, do_gifont): Employ parallel implementations,
-       differing only in diagnostic message text.
-       (yylex): Handle token "GFONT" by calling `do_gfont()`.
-
-       * src/preproc/eqn/eqn.1.man (New primitives, Fonts, Options)
-       (Bugs): Document it.
-       * NEWS: Add item.
-
-       Fixes <https://savannah.gnu.org/bugs/?63967>.  Thanks to Damian
-       McGuckin, Doug McIlroy, and Ralph Corderoy for support and
-       suggestions.
-
-2023-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/lex.cpp (do_include, do_undef, do_gsize)
-       (do_gifont, do_grfont, do_gbfont, do_space, do_chartype)
-       (do_set): Recast diagnostic messages to use terminology
-       established in man page, and use more idiomatic English in
-       phrasing.  Distinguish which argument has the problem when
-       lexical analysis of "chartype" and "set" commands fails.
-
-2023-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/lex.cpp (do_include, ignore_definition)
-       (do_definition, do_undef, do_gsize, do_gifont, do_grfont)
-       (do_gbfont, do_sprintf, do_ifdef, do_chartype, do_set): Recast
-       diagnostic messages to characterize input as "invalid" rather
-       than "bad".
-
-2023-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [eqn]: Trivially refactor, renaming various globals from
-       containing "gfont" to "gifont", to make it clearer that they
-       deal with the italic font used by equations.
-
-       * src/preproc/eqn/box.cpp (gfont): Rename global char pointer
-       from this...
-       (gifont): ...to this.
-       * src/preproc/eqn/box.cpp (get_gfont, set_gfont):
-       * src/preproc/eqn/box.h (get_gfont, set_gfont):
-       * src/preproc/eqn/lex.cpp (do_gfont): Rename functions from
-       these...
-       * src/preproc/eqn/box.cpp (get_gifont, set_gifont):
-       * src/preproc/eqn/box.h (gifont, get_gifont, set_gifont):
-       * src/preproc/eqn/lex.cpp (do_gifont): ...to these.
-       * src/preproc/eqn/box.cpp (get_gifont, set_gifont): Update
-       global `gfont` access sites.
-       * src/preproc/eqn/box.cpp (box::top_level):
-       * src/preproc/eqn/eqn.ypp (simple):
-       * src/preproc/eqn/lex.cpp (do_gifont, yylex):
-       * src/preproc/eqn/main.cpp (main): Update call sites.
-       * src/preproc/eqn/eqn.ypp:
-       * src/preproc/eqn/lex.cpp (token_table, yylex): Rename "GFONT"
-       token type to "GIFONT".
-
-2023-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/preproc/eqn/main.cpp (main): Prefix generated *roff
-       diagnostics with name of input file (the document).  Use
-       `tmc`/`tm1` to coalesce multi-line diagnostic onto one line of
-       output to stderr.  Tighten wording.  Continues the long process
-       of fixing Savannah #52463.
-
-2023-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (temp_iterator::temp_iterator):
-       Skip allocation of zero-length arrays.  Resolves "-Walloc-zero"
-       warning from GCC.
-
-       Fixes <https://savannah.gnu.org/bugs/?62398>.  Thanks to Bjarni
-       Ingi Gislason for the report.
-
-2023-04-02  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (token::description): Revise
-       construction of description of printable ordinary input
-       characters (U+0021 through U+007E).  This is to faciliate better
-       diagnostics from the `rchar` request in the future.  See
-       Savannah #63985.
-
-2023-04-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/roff/troff/input.cpp (chop_macro)
-       (do_string_case_transform, substring_request, asciify_macro):
-       (unformat_macro, write_macro_request): When diagnosing
-       impossible operations on request names, report the name of the
-       request they were attempted upon.
-       * src/roff/groff/tests/string_case_xform_errors.sh: Update test
-       expectations.
-
-2023-04-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [troff]: Make futile aliasing an error.
-
-       * src/roff/troff/input.cpp (alias_macro): Promote diagnostic
-       when attempting to alias a nonexistent macro/string/diversion
-       from warning to error; this aligns with the handling of the
-       requests `chop`, `stringup`, `stringdown`, `substring`,
-       `asciify`, `unformat`, and `writem` when they are regarded as
-       impossible.  Further, attempting to alias a nonexistent object
-       does not create an empty one, unlike interpolating it; try ".als
-       baz qux", then ".pm".
-       * src/roff/troff/reg.cpp (alias_reg): Promote diagnostic when
-       attempting to alias a nonexistent register from warning to
-       error.  Attempting to alias a nonexistent register does not
-       create an empty one, unlike interpolating it; try ".aln q r",
-       then ".pnr".
-
-2023-03-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Trivially refactor.  Rename variables and functions to
-       use the term "rule" rather than "line".  The value of the term
-       "rule" is that it is not confusable with "lines" of (text) input
-       or output.
-
-       * src/preproc/tbl/main.cpp (struct format) <vline>:
-       (format::format) <vline>:
-       (format::add_rows) <old_vline, vline>:
-       (format::~format) <vline>:
-       (struct input_entry_format) <vline, vline_count>:
-       (input_entry_format::input_entry_format) <vline, vline_count>:
-       (input_entry_format::debug_print) <vline, vline_count>:
-       (process_format) <vline_count>:
-       (process_data) ([anonymous] enum) <SINGLE_HLINE, DOUBLE_HLINE>:
-       * src/preproc/tbl/table.cpp:
-       * src/preproc/tbl/table.h (enum format_type) <FORMAT_HLINE,
-       FORMAT_DOUBLE_HLINE>
-       (class table) <vline, vline_spanned, ([anonymous] enum)
-       <HAS_TOP_VLINE, HAS_TOP_HLINE>, add_single_hline,
-       add_double_hline, add_vlines, print_single_hline,
-       print_double_hline: Rename these...
-
-       * src/preproc/tbl/main.cpp (struct format) <vrule>:
-       (format::format) <vrule>:
-       (format::add_rows) <old_vrule, vrule>:
-       (format::~format) <vrule>:
-       (struct input_entry_format) <vrule, vrule_count>:
-       (input_entry_format::input_entry_format) <vrule, vrule_count>:
-       (input_entry_format::debug_print) <vrule, vrule_count>:
-       (process_format) <vrule_count>:
-       (process_data) ([anonymous] enum) <SINGLE_HRULE, DOUBLE_HRULE>:
-       * src/preproc/tbl/table.cpp:
-       * src/preproc/tbl/table.h (enum format_type) <FORMAT_HRULE,
-       FORMAT_DOUBLE_HRULE>
-       (class table) <vrule, vrule_spanned, ([anonymous] enum)
-       <HAS_TOP_VRULE, HAS_TOP_HRULE>, add_single_hrule,
-       add_double_hrule, add_vrules, print_single_hrule,
-       print_double_hrule: ...to these.
-
-2023-02-25  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tbl]: Fix Savannah #63838.
-
-       * src/preproc/tbl/table.cpp (table::add_entry): Throw error
-       diagnostic if table entry ends in the zero-motion escape
-       sequence `\z`.  This is nonsense and provokes baffling
-       diagnostics from the formatter.  Stick user's nose directly into
-       the problem.
-
-       Fixes <https://savannah.gnu.org/bugs/?63838>.  Thanks to the
-       mandoc(1) project for documenting the issue in a regression
-       test.
-
-2023-04-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Improve portability to non-GNU, non-LLVM compilers.
-
-       * bootstrap.conf (gnulib_modules): Add "attribute".
-       * src/libs/libgroff/getopt.c:
-       * src/libs/libgroff/new.cpp: Include gnulib's "attribute.h"
-       header file.
-       * src/libs/libgroff/getopt.c (_getopt_initialize):
-       * src/libs/libgroff/new.cpp (operator delete): Replace GNU C
-       unused attribute syntax with gnulib's "MAYBE_UNUSED".
-
-       Thanks to Bruno Haible for the report and suggested remedy.
-
-2023-03-16  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * src/libs/libxutil/XFontName.c (utoa): Rename function from
-       this...
-       (xu_utoa): ...to this, to avoid name collision when using
-       "newlib" portability library.
-       (XFormatFontName): Update call site.
-       * PROBLEMS: Drop item.
-
-       Fixes <https://savannah.gnu.org/bugs/?63831>.  Thanks to Brian
-       Inglis for the report.
-
-2023-05-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Preserve user-selected font family.
-
-       * tmac/an.tmac: When initializing, save the currently selected
-       font family as `an*body-family` instead of forcing 'T' (Times,
-       which is the formatter's default, even on nroff-mode devices
-       that can't switch families).  This change makes the formatter's
-       `-f` option work on man(7) documents again (important for
-       Japanese man pages, but there is now once again nothing stopping
-       you from viewing man pages in Palatino or Helvetica on the 'ps'
-       and 'pdf' devices where these families are available).  It also
-       reopens an avenue for rogue pages to affect the rendering of
-       unrelated documents later in batch rendering, but there are many
-       other, and worse, ways for rogue pages to do damage.  Problem
-       introduced by me in commit e0e16d8e65, 15 March 2022.
-
-       Fixes <https://savannah.gnu.org/bugs/?64130>.  Thanks to Deri
-       James for the report.
-
-2023-05-01  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [man]: Stop `HP` producing excess vertical space.
-
-       * tmac/an.tmac (HP): Fix thinko/typo when expanding macro as
-       string to call `an-deprecation-warn`.
-       * tmac/an-ext.tmac (SY): Put 1v of vertical space on the output
-       if we are starting a (non-nested) synopsis.
-
-       Thanks to Alex Colomar for the report.  Problem introduced by me
-       in commit aea1dfb11b, 6 March 2022.
-
-2023-04-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Default vertical spacing to 120% of type size, not 2
-       points larger.
-
-       * tmac/s.tmac (par@load-init, par@init): Do it.
-       * NEWS: Add item.
-
-2023-04-26  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pdfpic]: Refactor.
-
-       * tmac/pdfpic.tmac: Migrate gathering of image dimensions from
-       `sy` and a temporary file to `pso`.
-       (pdfpic@cleanup): Drop `pdfpic*temporary-file` string.
-       (pdfpic@get-image-dimensions): Remove redirection.  Invoke
-       `pso`, not `sy`.
-       (PDFPIC): Stop constructing `pdfpic*temporary-file` string.
-       Stop testing `systat` register.  Stop sourcing and deleting
-       temporary file.
-
-2023-04-21  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/pdfpic.tmac: Refactor to make comprehensible some
-       woefully undocumented cleverness and improve efficiency.
-       (PDFPIC): Break out flaming-hoop-leaping "clever" bit of `sy`
-       usage into its own macro, calling from here and relocating its
-       requests from here...
-       (pdfpic@get-image-dimensions): ...to here.  When using `sy`
-       request to collect and munge output of pdfinfo(1), (a) disable
-       the escape character while defining the macro; (b) construct the
-       command in a roff string, appending to it in discrete, hopefully
-       comprehensible chunks; (c) disable the escape character during
-       macro interpretation wherever possible (most of it); (d) retain
-       doubled backslashes so that they survive subsequent string
-       interpolation; (e) stop using grep(1) in the pipeline when
-       sed(1) is perfectly capable of performing its own input
-       filtering; (f) invoke sed with '-n' option and emit output only
-       upon a successful substitution; (g) replace unportable(!) POSIX
-       BRE character class '[:digit:]' in substitution match text with
-       '[0-9]'; and most importantly (h) replace multi-line sed 's'
-       replacement text (see below for the reason we can't use it) with
-       single roff control line employing the groff extension escape
-       sequence `\R` to assign multiple registers.  Annotate
-       portability and escaping challenges.  Tested on GNU/Linux, macOS
-       12, and (with simulated pdfinfo(1) output) Solaris 11.
-
-       There is a problem with trying to embed true newlines into the
-       arguments of a `sy` request.  The C++ function that GNU troff
-       uses to assemble the command string (character by character)
-       _does not recognize C/C++ string literal escape sequences_.
-       This means that you _cannot_ embed "\n" in `sy`'s arguments and
-       have it survive, as a newline character, into the command string
-       passed to the standard C library's system(3) function.  ("A\nB"
-       gets encoded as 'A', '\\', 'n', 'B', not 'A', '\n', 'B'.)
-       Unfortunately, this appears to be AT&T troff-compatible
-       behavior.  But it means that you _cannot_ portably construct
-       multi-line replacement text for sed's 's' command.  (Other sed
-       commands like 'a', 'c', and 'i' will be similarly affected.)
-       See Savannah #64071.
-
-       * PROBLEMS: Drop item.
-
-       Fixes <https://savannah.gnu.org/bugs/?64061>.  Thanks to Bruno
-       Haible for the report, and to him and Ralph Corderoy for the
-       discussion of portable and efficient sed constructs.
-
-2023-04-27  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [pdfpic]: Clean up better.
-
-       * tmac/pdfpic.tmac (PDFPIC): Call `pdfpic@cleanup` before
-       returning when falling back to `PSPIC` for non-PDF documents.
-
-2023-04-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tty.tmac: Add angle bracket fallbacks.
-
-       Thanks to Mike Fulton for the report, and to Ralph Corderoy and
-       Dave Kemper for the discussion.
-
-2023-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Add Spanish language support (5/5).
-
-       * src/roff/groff/tests/localization_works.sh:
-       * tmac/tests/e_ld-works.sh: Test it.
-
-       Fixes <https://savannah.gnu.org/bugs/?63921>.  Thanks to Eloi
-       Montañés.
-
-2023-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Add Spanish language support (4/5).
-
-       * doc/groff.texi (Manipulating Hyphenation):
-       * doc/ms.ms (Language and localization):
-       * man/groff_tmac.5.man (Localization files): Document it.
-
-       * NEWS: Add item.
-
-2023-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Add Spanish language support (3/5).
-
-       * tmac/hyphen.es:
-       * tmac/es.tmac: Update editor aids.
-
-2023-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Add Spanish language support (2/5).
-
-       * tmac/es.tmac: Spell weekday and month names in lowercase;
-       every style authority I could find online mandates this, and it
-       meshes with my half-remembered formal instruction in the
-       language.  Fix groff composite special character escape
-       sequences to place the base character first.  Replace one
-       Unicode special character escape sequence with a composite
-       special character escape sequence, for consistency.
-
-2023-03-13  Eloi Montañés <em@ilsrv.com>
-
-       [tmac]: Add Spanish language support (1/5).
-
-       * tmac/hyphen.es: Add hyphenation patterns (encoded in Latin-9).
-       * tmac/es.tmac: Add groff locale for Spanish.
-       * tmac/tmac.am (TMACNORMALFILES): Ship new files.
-       * doc/groff.texi (Manipulating Hyphenation): Add file/package
-         index entry for "es.tmac".
-       * LICENSES: Update for CTAN Spanish hyphenation patterns.
-
-2023-03-09  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tests]: Add Russian language support (7/7).
-
-       * src/roff/groff/tests/localization_works.sh:
-       * tmac/tests/e_ld-works.sh: Test it.
-
-       Fixes <https://savannah.gnu.org/bugs/?63076>.  Thanks to Nikita
-       Ivanov.
-
-2023-03-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [docs]: Add Russian language support (6/7).
-
-       * doc/groff.texi (Input Encodings, Manipulating Hyphenation):
-       * doc/ms.ms (Language and localization):
-       * man/groff_tmac.5.man (Localization packages, Input encodings):
-       Document support for KOI8-R encoding and Russian language.
-
-2023-03-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Add Russian language support (5/7).
-
-       * tmac/tmac.am (TMACNORMALFILES): Ship new Russian language
-       support files.
-
-2023-03-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Add Russian language support (4/7).
-
-       * tmac/koi8-ru.tmac: Rename this file...
-       * tmac/koi8-r.tmac: ...to this.  There _is_ a "KOI8-RU"
-       encoding, which appears to subsume KOI8-B and KOI8-U (by
-       replacing more box drawing characters), but this file does not
-       remap their values to applicable Unicode code points.
-       * tmac/ru.tmac: Load the encoding file under its new name.
-
-2023-03-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [tmac]: Add Russian language support (3/7).
-
-       * tmac/hyphen.ru:
-       * tmac/ru.tmac: Update editor aids so these files can be edited
-       more intelligibly using GNU Emacs.  Annotate apparent problem
-       with Vim's KOI8-R support.
-
-2023-03-08  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       Add Russian language support (2/7).
-
-       LICENSES: Update for CTAN Russian hyphenation patterns.
-
-2023-03-08  Nikita Ivanov <nikita.vyach.ivanov@gmail.com>
-
-       [tmac]: Add Russian language support (1/7).
-
-       * tmac/hyphen.ru: Add hyphenation patterns (encoded in KOI8-R).
-       * tmac/koi8-ru.tmac: Add character encoding support.
-       * tmac/ru.tmac: Add groff locale for Russian.
-
-2023-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/s.tmac (@EQ): Trivially refactor.  Shift valid
-       pseudo-enumeration type values from 0..2 to 1..3 so that they
-       more idiomatically test for truth values in roff (where zero and
-       negative values are false).  Simplify a conditional accordingly.
-
-2023-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Fix Savannah #64013.
-
-       * tmac/s.tmac (@EQ): Revise argument handling.  If there is only
-       one argument and it is not a recognized alignment, warn and
-       treat it as an equation label.  If there are two arguments but
-       the first is not a recognized alignment, throw a warning
-       diagnostic (but still use default alignment with the second
-       argument as label).  An explicitly empty first argument is
-       synonymous with "C".
-
-       Fixes <https://savannah.gnu.org/bugs/?64013>.
-
-2023-04-07  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Regression-test Savannah #64013.
-
-       * tmac/tests/s_EQ-handles-empty-first-arg.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-04-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Fix Savannah #64005.
-
-       * tmac/s.tmac (@break-page, bp): Define alias for `bp` request
-       and wrapper for `bp` to (if needed) temporarily disable no-space
-       mode, so that a document's `bp` requests are honored even if
-       no-space mode is on, as can happen after displays.  Fixes a
-       regression from groff 1.22.4 and historical ms implementations
-       introduced by me on 6 July when resolving Savannah #62688.
-
-       Fixes <https://savannah.gnu.org/bugs/?64005>.  Thanks to Michał
-       Kruszewski for reporting the problem and Dave Kemper for
-       identifying the cause.
-
-2023-04-05  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [ms]: Regression-test Savannah #64005.
-
-       * tmac/tests/s_honor-page-break-after-display.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-03-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/mdoc/doc-common (Sh): Restore hyphenation configured with
-       `HY` register upon entry to any new section.  Disable adjustment
-       and hyphenation when in the "Synopsis" section.
-
-       Fixes <https://savannah.gnu.org/bugs/?63957>.  Thanks to Alex
-       Colomar for reporting an issue that brought this one to light.
-
-2023-03-24  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Regression-test Savannah #63957.
-
-       * tmac/tests/doc_synopsis_is_not_adjusted.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-03-14  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tmac.am (tmac/stamp-wrap): Stop prepending groff's man(7)
-       package wrapper ("-man") on hosts with a system man package with
-       a request to source itself; this was search-and-replace damage
-       from resolving Savannah #60789.  The wrapper still worked, but
-       reported any errors inside the wrapped macro package many times
-       until the process ran out of file descriptors.  Problem
-       introduced by me in commit fdac25937f, 2021-07-05.
-
-       Fixes <https://savannah.gnu.org/bugs/?63924>.
-
-2023-05-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * tmac/tests/an-ext_SY-and-YS-work.sh: Add test.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-2023-04-28  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Skip an Autoconf check if not necessary.
-
-       * m4/groff.m4 (GROFF_PNMTOPS_NOSETPAGE): Skip check if no
-       "pnmtops" command was found.
-
-2023-04-06  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [doc]: Abstract document dependencies on the mom package.
-
-       * doc/doc.am (doc/automake.pdf): Replace dependency with new
-       macro `TMAC_PACKAGE_MOM`.
-
-       Aligns with <https://savannah.gnu.org/bugs/?62541> (4/4).
-
-2023-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [doc]: Add document dependencies on the ms package.
-
-       * tmac/tmac.am (TMAC_PACKAGE_MS): Define new macro comprising
-       the files of the ms package.
-       * doc/doc.am (doc/ms.ps, doc/webpage.ps, doc/pic.html)
-       (doc/pic.ps): Add dependency on new macro.
-
-       Fixes <https://savannah.gnu.org/bugs/?62541> (2/4).
-
-2023-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [doc]: Add document dependencies on the "me" package.
-
-       * tmac/tmac.am (TMAC_PACKAGE_ME): Define new macro comprising
-       the files of the "me" package.
-       * doc/doc.am (doc/grnexmpl.ps, doc/meintro.ps)
-       (doc/meintro_fr.ps, doc/meref.ps): Add dependency on new macro.
-
-       Fixes <https://savannah.gnu.org/bugs/?62541> (1/4).
-
-2023-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Install PDF documents better.  Ship only one copy of
-       "automake.pdf", and install it and the new "groff-man-pages.pdf"
-       in the "pdf/" subdirectory of the destination "doc" directory.
-
-       * doc/doc.am (PROCESSEDDOCFILES): Drop
-       "$(PROCESSEDDOCFILES_PDF)" from macro definition.
-       (nodist_docpdfdoc_DATA) [USE_GROPDF]: Use it here instead,
-       replacing a literal "doc/automake.pdf".
-       (mostlyclean-doc) [USE_GROPDF]: Clean these same files.
-
-2023-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Ship groff.dvi (our Texinfo manual in DVI format).
-
-       * doc/doc.am (install-dvi-local, uninstall-dvi): Add targets.
-       (uninstall-local): Depend on "uninstall-dvi".
-
-2023-04-03  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Resume shipping pic.html.
-
-       * m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS)
-       (GROFF_GROHTML_PROGRAM_NOTICE, GROFF_PNMTOOLS_CAN_BE_QUIET):
-       Rename "make_htmldoc" to "use_grohtml" as expected by
-       "configure.ac".  Also stop `AC_SUBST`ing it; we don't need
-       "@use_grohtml@" in our Makefiles since an `AM_CONDITIONAL` in
-       configure.ac already does an equivalent thing.  Continues commit
-       aa5787c1eb by me from 20 May.
-       (PROCESSEDDOCFILES): Drop "$(PROCESSEDDOCFILES_HTML)" from macro
-       definition; annotate why.
-
-2023-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       m4/groff.m4 (GROFF_TMAC): Eliminate garbage leading space from
-       contents of `tmac_wrap` shell variable.
-
-2023-03-13  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [build]: Clarify output of `GROFF_TMAC` Autoconf test.
-
-       * configure.ac: Correct characterization of the list of macro
-       packages reported.  It is not the list of macro packages
-       receiving a "g" prefix, but the list of macro packages reciving
-       a wrapper macro file in groff's macro directory, each of which
-       sources the corresponding system (likely AT&T-descended troff)
-       macro package.  Fixes wording I introduced in commit 4d30dd7424,
-       31 May.
-       * m4/groff.m4 (GROFF_TMAC): Clarify first "checking" message:
-       we are looking for a file name prefix on existing system macro
-       packages (like "tmac.").  This has nothing to do with the prefix
-       applied to groff commands, or the "g" prefixed to groff
-       implementations of the man, mm, and ms packages.  Tighten
-       wording of second "checking" message.  Consistently say "(none)"
-       instead of "none" or "none found".
-
-       Fixes <https://savannah.gnu.org/bugs/?63900>.
-
-2023-03-11  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (install-txt): Look for "groff.txt" in the source
-       and build directories in sequence; it could be in either place
-       depending on whether the build is from the Git repository or
-       from a distribution archive.  Annotate this.  Fixes
-       "install-doc" target when building from Git repository.  Problem
-       introduced by me in commit 691fc70108, 22 February.  Thanks to
-       Nikita Ivanov for the report.
-       (install-pdf-local, install-html-local): Similar.
-
-       Also fixes <https://savannah.gnu.org/bugs/?64059>, later
-       reported anonymously.
-
-2023-03-10  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * doc/doc.am (maintainer-clean-local): Remove temporary "*.t2d"
-       and "*.t2p" directories created by texi2dvi.
-
-2023-04-20  Bruno Haible <bruno@clisp.org>
-
-       [build]: Fix gxditview linking on AIX.
-
-       * m4/groff.m4 (GROFF_X11): Add macro dependency on
-       `AC_CANONICAL_HOST`.  Introduce new variable `X_AW_DEPS`, empty
-       on most hosts.  If we otherwise have Athena widget library
-       support, and the host is AIX, force linkage against Xpm and Xext
-       libraries to reflect modern Athena dependencies, which AIX's
-       linker doesn't figure out on its own.  `AC_SUBST` this variable,
-       exposing it to Automake files.
-       * src/devices/xditview/xditview.am (gxditview_LDADD): Use it.
-
-       {A similar change might also be useful for HP-UX, another Unix
-       System V descendant; see
-       <http://hpux.connect.org.uk/hppd/cgi-bin/wwwtar?/hpux/Gnu/\
-       groff-1.23.0/groff-1.23.0-src-11.31.tar.gz+groff-1.23.0/\
-       HPUX.Install+text>.  --GBR, 2023-07-10}
-
-2023-04-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * bootstrap.conf (gnulib_modules): Add "sys_wait" module.  MinGW
-       does not provide "sys/wait.h", which we require in
-       src/preproc/html/pre-html.cpp since commit 11137209ed, 27 June.
-
-2023-04-20  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       * Makefile.am: Initialize (as empty) Automake variables that we
-       don't use but which gnulib modules expect to be defined.
-       (AUTOMAKE_OPTIONS, SUBDIRS, noinst_HEADERS, noinst_LTLIBRARIES)
-       (pkgdata_DATA, MOSTLYCLEANDIRS, AM_CFLAGS): Do it.
-
-       Thanks to Bruno Haible for the advice.
-
-2023-04-22  G. Branden Robinson <g.branden.robinson@gmail.com>
-
-       [mdoc]: Regression-test Savannah #57665, but for mdoc.
-
-       * tmac/tests/doc_TS-do-not-keep-tables-when-cR-set.sh: Do it.
-       * tmac/tmac.am (tmac_TESTS): Run test.
-
-       Fixes <https://savannah.gnu.org/bugs/?64037>.
+Version 1.23.0 released 2023-07-05
+==================================
 
 2023-06-21  G. Branden Robinson <g.branden.robinson@gmail.com>
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]