Version 1.24.1 released 2026-03-14
==================================

2026-03-11  G. Branden Robinson <g.branden.robinson@gmail.com>

	* tmac/troffrc (ptr): Disclose correct groff version number when
	reporting rename of `ptr` request.

2026-03-11  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/troff/number.cpp (is_valid_term): Improve error
	diagnostic when encountering an invalid character in a numeric
	expression; say "containing", not "starting with".

2026-03-13  Deri James  <deri@chuzzlewit.myzen.co.uk>

	* src/devices/gropdf/gropdf.pl: Use sequential tag names to
	avoid possible random duplicates.

	Fixes <https://savannah.gnu.org/bugs/?68136>.  Reverts commit
	cdb97b9590, 9 March.  Thanks to Dave Kemper for the code
	suggestion.

2026-03-09  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/troff/input.cpp (do_translate): Stop throwing
	assertions if one of the participants (source or destination) in
	a character translation is a non-character.  Historical
	documents like Ritchie's "C Reference Manual" from Sixth Edition
	Unix (1975) did things like `.tr ~\|`.  This is no longer a
	worthwhile idiom--if indeed it ever was, since strings were
	available even then, but especially not since 1990 or so with
	GNU troff's `char` and related requests--but we should not abort
	the formatter on encountering them.  Actually _supporting_ such
	translations, in compatibility mode only, is under consideration
	for groff 1.25.  Throw error when encountering `tr` requests
	that attempt to operate on non-characters outside of
	compatibility mode.

	Fixes <https://savannah.gnu.org/bugs/?68132>.  Thanks to Clem
	Cole for the report.  Problem introduced by me in commit
	52025b06f5, 21 November, in the course of adding many assertions
	to GNU troff to try to smoke out transitions into invalid
	formatter state and code that should be unreachable but isn't.
	This instance fooled me because we did nothing useful (nor
	consistent with AT&T troff behavior) with the non-character
	translation participant; see above regarding future plans.

2026-03-09  G. Branden Robinson <g.branden.robinson@gmail.com>

	[troff]: Regression-test Savannah #68132.

	* src/roff/groff/tests/\
	do-not-abort-applying-tr-request-to-non-char.sh: Do it.
	* src/roff/groff/groff.am (groff_TESTS): Run test.

2026-03-08  Deri James  <deri@chuzzlewit.myzen.co.uk>

	* src/devices/gropdf/gropdf.pl: Seed random number generator if
	`SOURCE_DATE_EPOCH` environment variable is set.  Supports
	reproducible builds.

	Thanks to Peng Zhang for report and suggested fix.

	Fixes <https://savannah.gnu.org/bugs/?68136>.

2026-03-03  Rocket Ma <marocketbd@gmail.com>

	* src/preproc/eqn/eqn.am (neqn): `-f $(SH_DEPS_SED_SCRIPT)`
	should be placed before further `-e` substitutions so that it
	does not impact the later expressions.  This fixes the sed
	command to replace "@g@" in neqn.sh correctly.  The `/^$/N` in
	"shdeps.sed" (generated by Keith Marshall's "arch/misc/
	shdeps.sh") might be implicated.

	Fixes <https://savannah.gnu.org/bugs/?68115>.  [Problem
	introduced by me in commit 2b86c9332c, 4 February.  --GBR]

2026-03-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	[eqn]: Regression-test Savannah #68115.

	* src/preproc/eqn/tests/neqn-smoke-test.sh: Do it.
	* src/preproc/eqn/eqn.am (eqn_TESTS): Run test.

Version 1.24.0 released 2026-02-28
==================================

2026-02-27  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/webpage.ms: Add disclaimer noting that file is an example,
	so it may contain outdated facts, stale URLs, and similar.

	Fixes <https://savannah.gnu.org/bugs/?68092>.  Thanks to Bjarni
	Ingi Gislason for the report.

2026-02-27  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/preproc/preconv/tests/smoke-test.sh: Refactor and
	extensively annotate assumptions about the character encoding
	used by the "C" locale on the host system, which influences but
	does not _determine_ that which preconv uses.  preconv doesn't
	fall all the way back to "ANSI_X3.4-1968", a.k.a. US-ASCII,
	because GNU troff is designed to assume that its input uses an
	encoding where every 8-bit value has a code point assignment,
	which is not true of the 7-bit US-ASCII.  The upshot is that
	preconv assumes an encoding of ISO 8859-1 in such cases.
	Practically speaking, this test now assumes that preconv falls
	back to ISO 8859-1 on macOS/Darwin systems just as it does on
	GNU libc-based systems.

	It's a pity that the equivalent of the shell command "locale
	charmap" (supported by glibc) is not standardized by POSIX.

	Thanks to Alexis Hildebrandt for the report in
	<https://lists.gnu.org/archive/html/groff/2026-02/msg00089.html>
	and for field-testing revisions to the script, and to him and
	John Gardner for discussion.

2026-02-22  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/groff/tests/\
	current-language-and-environment-in-sync.sh: Fix comment so it's
	truthful whether or not a code change reverted in February 2025
	is reimplemented.

	Fixes <https://savannah.gnu.org/bugs/?68081>.  Thanks to Bjarni
	Ingi Gislason for the report.

2026-02-27  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am (doc/pic.html):
	(doc/webpage.html): Restore technique of changing directories
	into the build tree before running "groff -T html"; pre-grohtml
	assumes that the argument to post-grohtml's `-D` option is a
	file specification resolvable relative to HTML "<img src=...>"
	elements, which is inflexible, and prevents us from writing to
	"$@.tmp".

	Thanks to Bjarni Ingi Gislason for the report in <https://\
	lists.gnu.org/archive/html/groff/2026-02/msg00125.html>.
	Problem introduced by me in commit e9da162af8, 2026-02-07.

2026-02-21  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am (doc/webpage.html): Also pass `$(doc_builddir)` as
	an `-I` option argument to groff, just as we do in the
	"doc/webpage.ps" target.

	Thanks to Bjarni Ingi Gislason for the report in <https://\
	lists.gnu.org/archive/html/groff/2026-02/msg00081.html> and Deri
	James for the analysis in <https://lists.gnu.org/archive/html/\
	groff/2026-02/msg00087.html>.  My commit c81db845da, 2022-04-06
	introduced a latent bug that my commit e9da162af8, 2026-02-07
	exposed.

2026-02-20  G. Branden Robinson <g.branden.robinson@gmail.com>

	[gropdf]: Regression-test Savannah #68077.

	* src/devices/gropdf/tests/interpret-grout-correctly.sh: Do it.
	* src/devices/gropdf/gropdf.am (gropdf_TESTS): Run test.

2026-02-20  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/preproc/tbl/tests/boxed-TH-tables-work-on-utf8-device.sh:
	Resolve spurious test failures on FreeBSD 14.0 and 15.0, NetBSD
	10.0, and OpenBSD 7.8: tolerate output from od(1) that is padded
	out with spaces to the 73rd column.  Thanks to Bruno Haible for
	the report.

2026-02-20  Deri James  <deri@chuzzlewit.myzen.co.uk>

	* src/devices/gropdf/gropdf.pl: Test for null string rather
	than 'false' (which includes "0").

	Fixes <https://savannah.gnu.org/bugs/?68077>. Thanks to
	G. Branden Robinson for report.

2026-02-20  Deri James  <deri@chuzzlewit.myzen.co.uk>

	Support a build scenario where Ghostscript is not available but
	the URW fonts are.  In that case, gropdf can operate at its full
	feature service level; configure it to do so.

	* configure.ac: Define new Automake conditional variable,
	`HAVE_URW_FONTS_OR_HAVE_GHOSTSCRIPT`, that records the fact
	written on the tin.
	* font/devpdf/devpdf.am: Revise Automake control flow to use
	this new variable instead of simply `HAVE_GHOSTSCRIPT`.

	Continues fixing <https://savannah.gnu.org/bugs/?68060>.

2026-02-20  G. Branden Robinson <g.branden.robinson@gmail.com>

	* gnulib: Refresh stable/2026-01 branch to obtain commits
	b527e616ee, 87979f8c12, d731598147, f1f8e13ce8, and 61561de9e2,
	which should fix a build error in C++ code on FreeBSD 14.
	Thanks to Bruno Haible.

2026-02-17  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Clarify
	warning diagnostic message when a font description file is
	unavailable; "foundry ''" can look like a logic error.  Refer to
	"default foundry" instead in that scenario.

2026-02-17  G. Branden Robinson <g.branden.robinson@gmail.com>

	Eliminate new but superfluous Automake variable.

	* configure.ac: Drop `AM_CONDITIONAL()` defining `GROPDF_INTER`,
	which is confusingly named (it meant "not the basic service
	level", not the "inter[mediate]" one specifically), not directly
	coupled to the availability of a feature of the build host (but
	instead based on the value of a shell variable that _was_ being
	used just for reporting, and with this commit is again limited
	to that purpose), and duplicates the semantics of an existing
	Automake variable, `HAVE_GHOSTSCRIPT`.  See the definition of
	`GROFF_GROPDF_DEPENDENCIES_CHECK` in "m4/groff.m4".
	* font/devpdf/devpdf.am: Append to macro
	`devpdffont_descriptions_from_devps` contingently on Automake
	variable `HAVE_GHOSTSCRIPT` rather than the disappearing
	`GROPDF_INTER`.

	Fixes <https://savannah.gnu.org/bugs/?68060>.

2026-01-20  Deri James  <deri@chuzzlewit.myzen.co.uk>

	Install groff fonts according to gropdf mode.

	Full         : All 35 Postscript 2 fonts + 35 URW fonts
	Intermediate : All 35 Postscript 2 fonts
	Basic        : Just 14 PDF standard fonts

	{Reinstates groff 1.23.0 behaviour.}

	* configure.ac: Add Automake variable `GROPDF_INTER`. Set if not
	in basic mode.

	* font/devpdf/devpdf.am: Split groff fonts list into 3 so that
	the 3 modes above can be accommodated, based on the two Automake
	variables `GROPDF_INTER` and `HAVE_URW_FONTS`.

	* m4/groff.m4 (GROFF_GROPDF_DEPENDENCIES_CHECK): Fix logic error
	setting `gropdf_service_level` shell variable.

	Begins fixing <https://savannah.gnu.org/bugs/?68060>.

2026-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>

	Add another URW font directory search path.

	* font/devpdf/Foundry.in:
	* m4/groff.m4 (GROFF_URW_FONTS_CHECK): Add
	"/usr/share/fonts/type1" directory to search path for URW font
	files.  That is apparently (yet another?) location Arch Linux
	keeps them in.

	Continues fixing <https://savannah.gnu.org/bugs/?65974>.  Thanks
	to Morten Bo Johansen for the report in <https://lists.gnu.org/\
	archive/html/groff/2026-02/msg00052.html>.

2026-02-12  G. Branden Robinson <g.branden.robinson@gmail.com>

	Re-order URW font directory search path.

	* font/devpdf/Foundry.in:
	* m4/groff.m4 (GROFF_URW_FONTS_CHECK): Alter ordering of
	directories to attempt to find separately packaged URW fonts,
	which might in principle get updated more frequently than those
	shipped with Ghostscript, before those supplied by Ghostscript
	itself.  This procedure cannot be perfectly reliable using _any_
	ordering because host systems can update their Ghostscript and
	URW font packages (if any) on separate and arbitrary schedules,
	and these matters are outside of groff's control.  If groff finds
	the "wrong" URW fonts (or can't find them at all), use the
	"--with-urw-fonts-dir=" option to groff's "configure" script to
	point it at the correct ones.

2026-01-20  Deri James  <deri@chuzzlewit.myzen.co.uk>

	* src/devices/gropdf/gropdf.pl: Allow whitespace after grout
	'w' command.

	Fixes <https://savannah.gnu.org/bugs/?64360>.

	Thanks to G. Branden Robinson for report and patch and Dave
	(for guidance).

2026-02-08  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/devices/gropdf/gropdf.pl: Rename new `--opt` command-line
	option to `--format-options`, with short `-f` synonym.
	* src/devices/gropdf/gropdf.1.man (Options): Update.

	Fixes <https://savannah.gnu.org/bugs/?68022>.

2026-02-08  G. Branden Robinson <g.branden.robinson@gmail.com>

	Simplify handling of ".version" file.

	* Makefile.am (.version): Spell target name without a leading
	`$(top_srcdir)/` interpolation, which caused a build failure
	using Debian's package of BSD make when performing a "make dist"
	in an in-tree build.
	* src/devices/xditview/xditview.am
	($(GXDITVIEW_GROFF_VERSION_H):
	* src/libs/libgroff/libgroff.am (src/libs/libgroff/version.cpp):
	* src/roff/troff/troff.am (src/roff/troff/majorminor.cpp):
	Update dependencies on ".version" accordingly.
	* Makefile.am: Stop appending ".version" to the `EXTRA_DIST` and
	`BUILT_SOURCES` macros--it's unnecessary.  The file is now an
	ordinary build artifact.

	Tested with "make check" and "make distcheck" in four
	configurations: the Cartesian product of {BSD, GNU} make with
	{in-, out-of-}tree builds.

2026-02-08  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am: Simplify generation of HTML documents with groff.
	(doc/pic.html, doc/webpage.html): Stop changing directories as
	part of the target recipe; instead, alter the argument to
	grohtml's `-j` option to include the name of the desired
	subdirectory.  Drop test for existence of separate image files
	afterward.  Since the fix for Savannah #67133 last May, we
	should be able to rely on groff to exit with a nonzero status if
	grohtml fails.  Tested with "make check" and "make distcheck" in
	four configurations: the Cartesian product of {BSD, GNU} make
	with {in-, out-of-}tree builds.

2026-02-07  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/preproc/tbl/table.cpp (table::compute_overall_width):
	Distinguish formatting-time diagnostics emitted when a table
	oversets; when the table is centered, note the fact because it
	might not overrun the line length but instead has reduced the
	indentation, which can be ugly in a different way.

	* src/preproc/tbl/tbl.1.man (Region options) <center>: Advise of
	circumstance in which formatting-time diagnostic is issued.

2026-02-06  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/troff/env.cpp: Revert refactoring from commit
	8b165f90ef, 29 December, which caused spurious "spurious end
	trap token detected!" error diagnostics when breaking pages with
	Matt Bishop's "mn" macro package (used by the NetHack
	Guidebook).  Because a variable was renamed later the same day,
	this reversion was done by hand.  Still to be understood: why
	the `br` request handler needs to use `token::next()` instead of
	`skip_line()` as most request handlers do.

	Fixes <https://savannah.gnu.org/bugs/?68026>.

2026-02-06  G. Branden Robinson <g.branden.robinson@gmail.com>

	* update-copyright.sh: Drop (unshipped) script.  I implement a
	different approach to the problem it solves; see the "HACKING"
	file.

2026-02-05  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am (maintainer-clean-local): Clean "gnu.eps" file in
	"maintainer mode".

2026-02-05  G. Branden Robinson <g.branden.robinson@gmail.com>

	* Makefile.am: Add ".version" file to `MOSTLYCLEANFILES` macro.

2026-02-05  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/troff/number.cpp (is_valid_term): Reintroduce warning
	in category "tab" when a tab character starts a numeric
	expression.  Lacking it caused the formatter to throw a huge
	number of error diagnostics (with no harmful effect on
	formatting, thus unproductively alarming the user) when
	springing traps in Matt Bishop's vintage "mn" macro package.

	Fixes <https://savannah.gnu.org/bugs/?68017>.  Partially reverts
	commit 64711b3a875, 14 November.

2026-01-20  Deri James  <deri@chuzzlewit.myzen.co.uk>

	Change location of the Inline::C build directory.

	* src/devices/gropdf/gropdf.pl: Update copyright.  Include
	module File::Path (part of perl since before version 5.8).
	Adjust location of Inline::C's cache directory according to XDG
	standards, rather than $HOME/_Inline.

	Fixes <https://savannah.gnu.org/bugs/?67997>.  Thanks to Bruno
	Haible for the information in <https://lists.gnu.org/archive/\
	html/groff/2026-01/msg00140.html>.

2026-02-04  G. Branden Robinson <g.branden.robinson@gmail.com>

	Stop using `${1+"$@"}` to kludge around old broken shells.

	The (forthcoming) Autoconf 2.73 manual explains.

	---snip---
	You may see usages like ‘${1+"$@"}’ in older shell scripts
	designed to work around a portability problem in ancient shells.
	Unfortunately this runs afoul of bugs in more-recent shells, and
	nowadays it is better to use plain ‘"$@"’ instead.

	The portability problem with ancient shells was significant.
	When there are no positional arguments ‘"$@"’ should be
	discarded, but the original Unix version 7 Bourne shell
	mistakenly treated it as equivalent to ‘""’ instead, and many
	ancient shells followed its lead.

	For many years shell scripts worked around this portability
	problem by using ‘${1+"$@"}’ instead of ‘"$@"’, and you may see
	this usage in older scripts.  Unfortunately, ‘${1+"$@"}’ does
	not work with ‘ksh93’ M 93t+ (2009) as shipped in AIX 7.2
	{2015}, as this shell drops a trailing empty argument:

	  $ set a b c ""
	  $ set ${1+"$@"}
	  $ echo $#
	  3

	Also, ‘${1+"$@"}’ does not work with Zsh 4.2.6 (2005) and
	earlier, as shipped in Mac OS X releases before 10.5, as this
	old Zsh incorrectly word splits the result:

	  zsh $ emulate sh
	  zsh $ for i in "$@"; do echo $i; done
	  Hello World
	  !
	  zsh $ for i in ${1+"$@"}; do echo $i; done
	  Hello
	  World
	  !
	---end snip---

	In light of all this winning by elite shell developers,
	use plain, idiomatic `"$@"` instead, relying on downstream
	distributors to patch the handful of occurrences in groff should
	their deployments be boxed in by a buggy /bin/sh.

	* src/preproc/eqn/neqn.sh:
	* src/roff/nroff/nroff.sh:
	* test-groff.in: Do it.

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	* m4/groff.m4 (GROFF_URW_FONTS_CHECK): Stop blanking
	`urwfontsdir` shell variable unconditionally.

	Fixes problem with groff 1.24.0.rc2 reported by Alexis
	Hildebrandt in <https://lists.gnu.org/archive/html/groff/\
	2026-02/msg00000.html>.

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Clarify
	diagnostic messages.  A digital font, like
	"URWGothic-DemiOblique.t1", is not the same thing as a font
	description file for groff, like "ABI".  We do our users no
	favors by conflating these two concepts.

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Tweak
	warning diagnostic to describe the decision being taken and the
	reason for it.  Set `notFoundFont` scalar to 1 only if this
	diagnostic was unexpected because the `urwfontsupport` scalar
	didn't match "no".  This way we don't spray the (usually
	enormous) "path(s) used for searching" diagnostic for no
	apparent reason.

2026-02-03  Dariusz Chilimoniuk <darek@stack.pl>

	* tmac/hyphen.pl: New file adds Polish hyphenation patterns and
	exceptions.
	* tmac/pl.tmac: New file adds groff locale for Polish.
	* tmac/tmac.am: Add the foregoing files to the `TMACNORMALFILES`
	macro.
	* LICENSES: Add copyright and license notices from CTAN Polish
	hyphenation patterns.

	* src/roff/groff/test/initialization-is-quiet.sh: Verify lack of
	warnings when Polish l10n macro file is loaded (`-m pl`).
	* tmac/tests/e_ld-works.sh: Test Polish translation.
	* tmac/tests/localization-works.sh: Test Polish localization.

	* doc/groff.texi.in (ms language and localization)
	(Input Encodings, Manipulating Hyphenation):
	* doc/ms.ms.in (Language and localization):
	* man/groff_tmac.5.man (Localization packages):
	* tmac/groff_ms.7.man (Language and localization): Note
	availability of Polish localization.

	Fixes <https://savannah.gnu.org/bugs/?68004>.

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	[build]: Kill off `GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE`.

	* m4/groff.m4 (GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE): Delete.
	* configure.ac: Stop interpolating same.

	Completes (the revised) "action item D" from <https://\
	lists.gnu.org/archive/html/groff/2026-02/msg00004.html>.  I've
	abandoned "action item B".

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	[build]: Report gropdf service level in configuration summary.

	* m4/groff.m4 (GROFF_GROPDF_DEPENDENCIES_CHECK): Drop unused
	shell variables `use_gropdf` and `gropdf_missing_deps`.  Add new
	shell variable `gropdf_service_level`, to be used (only) for
	reporting an intelligible meaning to a human in the
	configuration summary.  Default value to "full".  If URW fonts
	are unavailable, demote value to "intermediate".  If Ghostscript
	is unavailable, demote value to "basic".
	* configure.ac: Rearrange summary and disclose gropdf service
	level in it.  Report URW font directory (if applicable) after
	Ghostscript command name and before the gropdf service level,
	since the first two determine the last.

	Completes "action item C" from <https://lists.gnu.org/archive/\
	html/groff/2026-02/msg00004.html>.

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	[build]: Kill off `GROFF_GROPDF_PROGRAM_NOTICE`.

	* m4/groff.m4 (GROFF_GROHTML_PROGRAM_NOTICE): Delete.
	* configure.ac: Stop interpolating same.

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	* configure.ac: Delete `AM_CONDITIONAL` for no-longer-used
	`USE_GROPDF` configuration parameter.

2026-02-01  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am: De-parameterize production and installation of PDF
	documents created by groff.  We now build all such files
	regardless of gropdf(1)'s service level (see its man page).
	Update population of `pdfmomoption`, `groffmanpagesoption`,
	`PROCESSEDDOCFILES_PDF`, `docpdfdocdir`, and
	`nodist_docpdfdoc_DATA` accordingly.
	($(PROCESSEDDOCFILES_PDF)): Target now exists unconditionally.
	(mostlyclean_doc): Unconditionally delete these built files.

	Completes "action item E" from <https://lists.gnu.org/archive/\
	html/groff/2026-02/msg00004.html>.

2026-02-03  G. Branden Robinson <g.branden.robinson@gmail.com>

	* configure.ac: Disclose identity of Ghostscript command
	discovered by Autoconf in configuration summary.  Completes
	"action item A" from <https://lists.gnu.org/archive/html/groff/\
	2026-02/msg00004.html>.

2026-01-31  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/troff/input.cpp (token::description): Fix assertion
	failures (potential and actual) by supplying descriptions even
	of internally generated token types.  While a user _should_
	never be exposed to these in a diagnostic message, the event is
	not impossible (and said descriptions could be helpful to groff
	developers in tracking down the "impossible" situation).

	Fixes <https://savannah.gnu.org/bugs/?67990>.  Thanks to Deri
	James for the report.

2026-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/devices/grodvi/grodvi.1.man (FT):
	* src/devices/grolj4/grolj4.1.man (FT):
	* src/devices/gropdf/gropdf.1.man (FT):
	* src/devices/grops/grops.1.man (FT): Suppress screeching ("-w
	font") from formatter if a font used for illustrating the
	typeface repertoire is unavailable.  Using a text typeface to
	depict its own name is typographical gravy.

2026-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Tweak
	wording of warning diagnostic; favor "cannot" over "unable to"
	or "can't".
	(RunAfmtodit): Clarify warning diagnostic: this script _could_
	pass unrecognized options to afmtodit(1); it _chooses_ not to.
	Also use the word "option" instead of "flag"--not all of
	afmtodit's command-line options are Boolean-valued.

	Continues the long process of fixing Savannah #66519.

2026-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>

	Propagate "configure" shell variable `urwfontsupport` into
	"BuildFoundries" script, quieting build-time warnings when URW
	font support is explicitly deconfigured.

	* m4/groff.m4 (GROFF_URW_FONTS_SUPPORT): `AC_SUBST`
	`urwfontsupport` so that it is defined in Makefiles.
	* font/devpdf/devpdf.am (BuildFoundries): Add `urwfontsupport`
	to set of sed(1) substitutions performed when generating target.
	* font/devpdf/util/BuildFoundries.pl: Add `urwfontsupport`
	scalar, taking value of corresponding sed substitution.
	(LoadFoundry): Suppress warning about unavailable font if
	`urwfontsupport` matches "no".

2026-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>

	* m4/groff.m4 (GROFF_URW_FONTS_CHECK): Stop emptying shell
	variable `urwfontsdir` if the URW fonts aren't found.  This
	variable _had_ been used both to store the directory where they
	were found _and_ as an indicator of whether URW font support was
	expected by the configuring user.  We now have `urwfontsupport`
	for the latter purpose, and blanking out `urwfontsdir` had the
	undesirable side effect of suppressing the message that the
	`GROFF_URW_FONTS_NOTICE` macro emits, preventing notification of
	the user that their intention to configure URW font support was
	foiled.

2026-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>

	* configure.ac: Identify the report at the end of the
	configuration process as the "configuration summary"; I've been
	using this term for years when collecting information from users
	reporting bugs.

2026-01-29  G. Branden Robinson <g.branden.robinson@gmail.com>

	* gnulib: Refresh stable/2026-01 branch to obtain commit
	dc9ad4ec31, which should fix a build error in C++ code on
	FreeBSD 15.  Thanks to Bruno Haible.

2026-01-28  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/groff.texi.in: Adapt manual content to the configured
	groff command prefix.  If the build is configured without a
	leading "g"--omitting it has been groff's default for many
	years, possibly forever--then our Texinfo manual now omits that
	prefix when mentioning the affected commands (all replacements
	for AT&T troff commands).  This way, if you select a command
	prefix, say "limbo", and rebuild the Texinfo manual, the
	manual reflects the prefix used by your build configuration, and
	talks about "limboeqn", "limbotroff", "limborefer", and so on.

	Fixes <https://savannah.gnu.org/bugs/?66031>.

2026-01-27  G. Branden Robinson <g.branden.robinson@gmail.com>

	* tmac/tests/an_MR-internal-hyperlinks-work-with-pdfmom.sh:
	* tmac/tests/andoc_internal-hyperlinks-work-with-pdfmom.sh: Fix
	regex to correctly quote a closing parenthesis _not_ used as an
	ERE grouping operator.  Fixes spurious test failures on NetBSD.
	Sadly, neither GNU grep 3.6 nor 3.12.14 warned me of my mistake.
	Thanks to Bruno Haible for the report.

2026-01-27  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/preproc/tbl/tests/boxed-TH-tables-work-on-utf8-device.sh:
	Fix excessively strict regex, which caused test failure with
	OpenBSD od(1) (and NetBSD's), because that implementation spaces
	the columns of its output more widely than GNU coreutils's
	od(1).  Thanks to Bruno Haible for the report.

2026-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>

	* arch/mingw/grap2graph.cmd: Revise version info.
	- Drop "GNU" from reported version string; this is a contributed
	  program--its shell script equivalent is in contrib/
	  grap2graph--not a GNU program.
	- Bump reported version to 1.24.0.

2026-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/devpdf.am ($(devpdffont_descriptions_from_devps)
	($(devpdffontencdata), font/devpdf/SS)
	($(devpdf_builddir)/symbolsl.afm)
	($(devpdf_builddir)/symbolsl.pfb, $(devpdffontmapdata)): Copy
	files with `cp -fp`, not just `cp -f`, preventing spurious
	rebuilds of these targets.

2026-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/devpdf.am (all): Drop unnecessary phony target.

2026-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/devpdf.am [HAVE_URW_FONTS]: Shift conditional so
	that we define a target rule for
	`$(devpdffont_descriptions_for_urw)` only if the
	`HAVE_URW_FONTS` Automake variable is defined.

2026-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/devpdf.am ($(devpdffont_descriptions_for_urw)):
	Drop interpolations of no-longer-used `DEFAULT_BASE35_FONTS` and
	`URW_BASE35_FONTS` macros.

2026-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am: Abstract "-P-e" option to gropdf into new macro,
	`groffmanpagesoption`.  We can't use it if the build is
	configured without URW fonts to embed, so define the macro only
	if `HAVE_URW_FONTS` _and_ `USE_GROPDF`.
	(doc/groff-man-pages.pdf): Interpolate macro instead of
	hard-coding "-P-e".

2026-01-26  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/tests/check-default-foundry.sh.in: Die with "hard
	error" if test script cannot locate the "Foundry" file.  Skip
	remainder of test (for fonts not in the PostScript Level 1/PDF
	"base 14") if the "URW" section of the "Foundry" file is absent.

2026-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>

	* m4/groff.m4 (GROFF_PERL): Update error messages.  Refer to
	Perl "executable", not "binary"; whether an executable is an
	object file is not our concern.  When failing because the
	available version of Perl is too old, report the minimum version
	we require.

2026-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am: Abstract `-P-W` option to "gropdf" into a new
	macro, `pdfmomoption`, populating it only if, at configuration
	time, both `HAVE_URW_FONTS` and `USE_GROPDF` were enabled.

2026-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devpdf/util/BuildFoundries.pl (Warn): Don't set the exit
	status to a nonzero value on warnings.  This script issues quite
	a few warnings at gropdf's "Basic service" level.

2026-01-25  G. Branden Robinson <g.branden.robinson@gmail.com>

	* m4/groff.m4 (GROFF_URW_FONTS_SUPPORT): New Autoconf macro
	creates a "with" configuration option, permitting the host
	environment to easily switch off the search for URW fonts and
	defeat all of the consequent features without the "configure"
	script issuing a lengthy warning about failure to find the
	aforementioned fonts.  New shell variable `urwfontsupport`
	indicates the configuration's desired status (which still
	defaults on).
	(GROFF_URW_FONTS_CHECK): Add dependency on the foregoing macro.
	Initialize `urwfontsdir` shell variable to empty
	unconditionally, permitting it to be updated later if the URW
	font feature isn't disabled.  Nest most of the work of this
	macro inside a conditional on `urwfontsupport`.  Continue to
	unconditionally populate and `AC_SUBST`-itute
	`groff_have_urw_fonts` and `urwfontsdir`, because
	"configure.ac", "test-mom.sh.in", "mom.am",
	"font/devpdf/Foundry.in", "devpdf.am", and
	"check-urw-foundry.sh.in" variously rely on them to behave
	appropriately for the configuration.

2026-01-24  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/doc.am: Update `DOC_SED` macro to also perform substituion
	of "@PAGE@" with the contents of the `PAGE` (Auto)make macro.
	We can thus refer directly to this configuration parameter in
	our Texinfo manual without directing the reader to a man page.

2026-01-22  G. Branden Robinson <g.branden.robinson@gmail.com>

	* tmac/groff_man.7.man.in (Document structure macros):
	* tmac/groff_mdoc.7.man (Title macros): Explicitly recommend ISO
	8601 date format.

	Fixes <https://savannah.gnu.org/bugs/?66903>.  Thanks to Alex
	Colomar for the suggestion.

2026-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>

	* Makefile.am: Add "filename-length-max=99" to
	`AUTOMAKE_OPTIONS` macro so that a "dist" build fails if the
	file names get too long for a V7 tar archive.  Consequently, the
	build should now fail earlier if "distcheck" would fail because
	test scripts are missing because their file names were too long
	to be archived.  See the GNU Automake 1.16.3 manual, §17.2 "List
	of Automake options".

2026-01-20  Bruno Haible <bruno@clisp.org>

	* src/libs/libgroff/libgroff.am: Drop `libgroff_a_LIBADD` macro
	definition.  It was used incorrectly to add "lib/libgnu.a" to
	"libgroff.a", but that's invalid.  Archives used for static
	linking cannot nest.

2026-01-20  Bruno Haible <bruno@clisp.org>

	* doc/doc.am:
	* font/devpdf/devpdf.am:
	* tmac/tmac.am: Fix portability problem involving BSD Make.
	Define `*_builddir` macros without interpolating `top_builddir`.
	groff does not use recursive make; all file specifications are
	resolved relative to the top of the build tree, so the
	interpolation is unnecessary, and with BSD Make it causes
	spurious failures because that implementation uses strings, not
	file identities, as the nodes of its dependency graph.  So if
	you ask for "foo" to be built but have only a rule for a target
	named "./foo", BSD Make fails, whereas GNU Make does not.

2026-01-21  G. Branden Robinson <g.branden.robinson@gmail.com>

	* font/devps/devps.am: Drop unused macro `devps_builddir`.
	Automake itself doesn't require it, and we never interpolate it.

2026-01-20  G. Branden Robinson <g.branden.robinson@gmail.com>

	* bootstrap: Resync with upstream.

2026-01-20  G. Branden Robinson <g.branden.robinson@gmail.com>

	* gnulib: Update to stable/2026-01.

2021-08-11  Douglas McIlroy <douglas.mcilroy@dartmouth.edu>

	* src/prepic/pic/pic.1.man (Caveats): Explain dotted/dashed line
	space scaling, since this document is not yet a full _pic_
	reference.

	Fixes <https://savannah.gnu.org/bugs/?44530>.

2026-01-20  Deri James  <deri@chuzzlewit.myzen.co.uk>

	* src/devices/gropdf/gropdf.1.man: Update copyright.
	Remove references to .pdfmarkstart/end (they don't exist).
	If no link-text in internal link (pdfhref L) use text
	associated with the tag-name when it was created.
	When manually closing hotlink text (after using -S)
	previous text colour (\*[pdf:curcol]) should be restored.
	Add section describing parameters used in pdf.tmac.
	Remove stale information about importing graphics.

2026-01-18  G. Branden Robinson <g.branden.robinson@gmail.com>

	[gropdf]: Regression-test Savannah #67927.

	* tmac/tests/pdf_pdfhref-W-without-link-text-works.sh: New file.
	* src/devices/gropdf/gropdf.am (gropdf_TESTS): Run test.

2026-01-18  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/groff/tests/lj4-device-smoke-test.sh: Pass `-P
	-pletter` arguments to groff, to compel output driver to use
	U.S. letter paper format.  Fixes test failure in environments
	where this paper format is not the default.

	Fixes <https://savannah.gnu.org/bugs/?67927>.  Thanks to Bjarni
	Ingi Gislason for the report and Deri James for the analysis and
	solution.

2026-01-16  G. Branden Robinson <g.branden.robinson@gmail.com>

	* doc/groff.texi.in:
	- Stop attempting to manually recapitulate the topology of the
	  Info node tree with arguments after the first to `@node`
	  commands; doing so is no longer required by recent versions of
	  Texinfo--thanks to Alexis Hildebrandt for bringing this to my
	  attention and providing a proof-of-concept patch--but the
	  normative topology of the directed tree is radically
	  unintuitive to me, leading me to make many errors.  It _seems_
	  like Info's idea of the node traversal strategy preferred by
	  humans is breadth-first in one direction ("Next") and
	  _depth_-first in the other ("Prev").
	- Fix erroneous menu entries.  This finishes cleaning up
	  warnings about the document's node topology from recent
	  Texinfo.

	Fixes Savannah #67838.

2026-01-16  G. Branden Robinson <g.branden.robinson@gmail.com>

	Crib gnulib's coverage generation from its "maint.mk" file.
	This way developers can run "make coverage" to produce a code
	coverage report.  Requires "lcov" package.

	* Makefile.am: Define macros `COVERAGE_CCOPTS` and
	`COVERAGE_OUT`.
	(init-coverage, build-coverage, gen-coverage, coverage): Define
	new (phony) target rules.

2026-01-18  Deri James  <deri@chuzzlewit.myzen.co.uk>

	* src/devices/gropdf/gropdf.pl (.pdf*href): For external
	hotspot links (.pdfhref W  [-D URI] [-P prefix-text] \
	[-A affixed-text] [--] [hotlink text]), if no 'hotlink text'
	is specified but an URI is given, use it as the text
	rather than 'Unknown'.

	Fixes <https://savannah.gnu.org/bugs/?67916>. Thanks to
	Branden Robinson for the suggested improvement.

2026-01-15  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/devices/gropdf/gropdf.1.man (Macros) <pdfbookmark>
	<pdfnote, pdhref>: Document macros.

	Fixes <https://savannah.gnu.org/bugs/?66453>.  Thanks to Deri
	James for supplying an overview of features in Savannah #67665.

2026-01-14  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/devices/gropdf/gropdf.1.man (Usage): Drop references to
	Keith Marshall's "pdfmark" macro package; it is now maintained
	separately from groff, and some of the claims had become stale.

	Fixes <https://savannah.gnu.org/bugs/?67911>.  Thanks to Bjarni
	Ingi Gislason for the report.

2026-01-10  G. Branden Robinson <g.branden.robinson@gmail.com>

	[pic]: Improve fix for Savannah #67899.

	* src/preproc/pic/lex.cpp (interpolate_macro_with_args): Shift
	more logic inside the `!ignore` conditional; this way we
	correctly handle the case of a non-empty 33rd macro argument.
	We were no longer smashing the stack with a list of pointers of
	user-controlled length, but we were permitting the stack memory
	at a location one past the end of the `argv` array to be
	written to.

	Continues fixing <https://savannah.gnu.org/bugs/?67899>.

2026-01-09  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/groff/groff.cpp (main): Bump ending year of copyright
	notice to 2026 to reflect (presumably) copyrightable changes in
	the source tree as a whole since December 31.  See "Updating
	Copyright Notices" in our "HACKING" file.

2026-01-01  G. Branden Robinson <g.branden.robinson@gmail.com>

	[troff]: Rename `ptr` request to `pwh`.

	* src/roff/troff/div.cpp (init_div_requests): Do it.
	* tmac/troffrc (ptr): Define macro advising user to migrate.
	Invoke `pwh`.

	* doc/groff.texi.in (Page Location Traps, The Implicit Page
	Trap, Debugging):
	* man/groff.7.man (Request short reference, Page location traps,
	Debugging):
	* man/groff_diff.7.man (New requests, Debugging): Update
	documentation.

	Fixes <https://savannah.gnu.org/bugs/?67880>.

2026-01-09  G. Branden Robinson <g.branden.robinson@gmail.com>

	[pic]: Fix Savannah #67899.

	* src/preproc/pic/lex.cpp (interpolate_macro_with_args): Shift
	test of argument count so that it is performed for empty
	arguments as well as populated ones.  The misplacement of the
	test made it possible to defeat that test by supplying an empty
	32nd argument to a macro, consequently overrunning stack storage
	allocated for this function's local `argv` array.

	Fixes <https://savannah.gnu.org/bugs/?67899>.  Thanks to John de
	Armas for the report and a reproducer, based on the
	"jumperblock" example from our "doc/pic.ms" file.  Problem
	appears to date back to groff's birth.

2026-01-09  G. Branden Robinson <g.branden.robinson@gmail.com>

	[pic]: Regression-test Savannah #67899.

	* src/preproc/pic/tests/\
	do-not-crash-when-reading-macro-arguments.sh: New file.
	* src/preproc/pic/pic.am (pic_TESTS): Run test.

2025-12-21  Alexis Hildebrandt <afh@surryhill.net>

	* tmac/trans.tmac [PH]: Expose mm package's `Captc` string to
	translation.
	* tmac/cs.tmac:
	* tmac/de.tmac:
	* tmac/es.tmac:
	* tmac/fr.tmac:
	* tmac/it.tmac:
	* tmac/ru.tmac:
	* tmac/sv.tmac: Update string name and lexicographic sort.

	Begins fixing Savannah #67830.

2026-01-05  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/groff/groff.am (EXTRA_DIST): Ship
	"small-gnu-head.png" test artifact in distribution archive.

2026-01-05  G. Branden Robinson <g.branden.robinson@gmail.com>

	* src/roff/groff/tests/using-diversion-as-character-works.sh:
	Fail hard (with status 99) if our test artifact isn't present.
