Release ...
* [nt]roff: Fix the execution order of output line traps to be left-to-right,
and execute them before page traps, as documented (bug report by
Pierre-Jean Fichet).
* troff/dpost: Support for URI links in PDF documents has been added
(contributed by Michael Piotrowski).
* [nt]roff: Hyphenation patterns for Dutch have been added (contributed
by Erwin Koning).
* troff/dpost: "kern" tables in TrueType fonts were indexed wrongly, which
mostly led to missing kerning pairs but might have led to completely wrong
kerning pairs under rare circumstances (patch by Matthew Fischer).
* troff: The ".connectchar" request has been added to customize the set
of characters that are drawn as overlapping with the "\l" function.
* troff: Allow "\~" to shrink, not just to stretch (bugreport by Roy Fisher).
* troff/dpost: Embed TrueType fonts without a PostScript field correctly
(bug reported by FENG Yu Ning).
* troff/dpost: Include the last character in a TrueType "post" 2.0 table
which was previously omitted; same for the last entry of the last subtable
in the "cmap" table (patch by Matthew Fischer).
* troff/dpost: Accept "cmap" entries with Platform ID 3, Encoding ID 0
(Symbol) as Unicode tables (patch by Matthew Fischer).
* troff/dpost: Handle TrueType fonts with format 12 cmap tables (UCS-4)
(patch by Matthew Fischer).
* troff/dpost: Handle TrueType fonts in which glyphs appear multiple times
in Unicode tables gracefully (bugreport by Matthew Fischer).
* troff/dpost: Handle TrueType files with a unitsPerEm value less than
1000 ((bugreport by Matthew Fischer).
* troff: Do not apply font-specific character translation inside \D,
which led to wrong output e.g. with \D'l' with an OpenType font with
the small caps feature activated (bug reported by Russ Cox).
* dpost: Fixed the width of the "\(ul" character such that the lines of
wide boxed tables do not stick out at the right end anymore (bugreport
by Roy Fisher).
* troff: The "\X" and "\Y" escape sequences are no longer interpreted
in copy mode, as there is no case when this would be useful, and the
behavior now matches groff and Plan 9 troff (thanks to Russ Cox).
* dpost: Fixed a case in which invalid backslash sequences were generated
when insane sizes appeared in intermediate troff input (bug reported by
Russ Cox).
* refer: The "-p" option now works with files that are not in the
current directory (bug reported by Michael Piotrowski).
* lookbib: This version does not support the "-n" option, which was
described in the BSD-derived manual page (thanks to Michael Piotrowski).
* [nt]roff: Do not go into an infinite loop if a tab character appears in
the arguments to ".warn" (bug reported by Russ Cox).
* [nt]roff: Fixed a possible crash on 64-bit machines due to the choice
of an int for ptrdiff_t in paragraph-at-once justification (Steve Kargl),
and another one in the hyphenation code (Sean Jensen).
Release 080407
* [nt]roff: A type definition problem that caused an endless loop on
64-bit systems has been fixed.
* [nt]roff: The ".warn" request now accepts full numeric expressions
instead of plain numbers only.
* -mg macros: When reading the output of "ls" to emulate ".mso", use
nofill mode to avoid artifacts from paragraph adjustment that cause
the request to fail.
* eqn: Before an equation or binary operator, print a "\|" instead of
a "\^" if the preceding character is italic. The previous behavior
resulted from a too far-reaching change in release 051107. (Bug
reported by Joerg van den Hoff.)
* eqn: Do not displace "hat" and "tilde" horizontally (bug reported by
Joerg van den Hoff).
* eqn: Fixed the types of yylex() and yypv.
Release 070908
* troff: The ".hw" request now works correctly for words that contain
ligatures (bug reported by Dirk-Wilhelm Peters).
* troff: Hyphenate correctly when a hyphenation point occurs inside a
ligature that follows a non-ASCII character. Previously, the word was
actually hyphenated too early in this situation (bug reported by
Dirk-Wilhelm Peters).
* troff: Clear the font width cache before mounting a Type 1, TrueType,
or OpenType font. The previous failure to do so could lead to improper
alignment of lines when a font was mounted on the same font position
that was previously used (bug reported by Dirk-Wilhelm Peters).
* [nt]roff: When converting floating point values in exponential notation
(1.234e5 etc.) to integers, apply the exponent before computing the final
position of the decimal point for better rounding behavior (bug reported
by Dirk-Wilhelm Peters).
Release 070524
* [nt]roff: Fixed an endless loop that occurred when ".ns" was active at
the end of a document and ".bp" was called from the page trap macro.
* dpost: When including a picture, the PostScript "save" and "restore"
operators are now executed in correct order. Previously, the state
before page initialization was restored before including a picture.
Thus, graphics attributes such as colors were reset to the state
before page initialization, and drawing (as with pic) did not work
afterwards but resulted in a PostScript error.
* [nt]roff: With paragraph-at-once adjustment, if a ".in" was encountered
before any input, its argument was ignored. This lead to zero indent in
combination with the 6h Edition manual page macros, and has been fixed.
* troff: Do not break a line at a zero-width character, as e.g. inside a
"\X'...'" or "\z'...'".
* troff: The ".flig" request can now use the \[] names for ff, ffi, and
ffl ligatures properly, i.e. ".flig R ff \[ff]" works (bug reported by
Sebastian Leusch).
* troff: Pseudo-ligatures for ff, ffi, and ffl are no longer added to fonts
that do not contain the respective base characters. This makes it possible
to use a fallback sequence like ".fallback R XX FF", where XX does not
contain ff ligatures, but FF does, and to get the ligatures from font FF
as expected (bug reported by Sebastian Leusch).
* [nt]roff: Using ".hy" or ".nh" is now effective for the last word of a
"\@{...\@}" inline environment.
* The file "grap.defines" is now installed again; it was omitted in the
previous release.
* When generating a RPM package, install all manual pages into
"/usr/share/man/5man" to avoid conflicts with manual pages of
packages supplied by the distribution default packages.
Release 070318
* [nt]roff: The concept of an "inline environment" has been introduced.
An inline environment contains the values of the current point size, the
current font, the current escape character, and other similar parameters.
It can be saved with "\@{" and then restored with "\@}". Unlike the "\s0"
and "\fP" escape sequences, inline environments form a stack. Thus after
executing "\fB...\@{\fR...\@{\fI...\@}...\@}", the current font is "B"
again, while it would be "I" with "\fB...\fR...\fI...\fP...\fP". Inline
environments can be used to represent constructs like "..." in
HTML, which would be translated as "\@{\fI...\@}".
* [nt]roff: A modulo zero operation (N%0) is now ignored and causes a
warning of the "range" type to be issued. It could previously lead to
a core dump because of an arithmetic exception.
* [nt]roff: In paragraph-at-once adjustment mode, ".in" and ".ll", when
invoked from traps, now have a permanent effect; such settings were
previously discarded at the end of the paragraph. What still does not
work is "'in" outside a trap with a value relative to the indent set
inside a trap.
* [nt]roff: An internal problem with paragraph-at-once line breaking mode
has been fixed; it caused a ".in" or ".ll" command to be ignored under
rare circumstances.
* [nt]roff: At the end of input in paragraph-at-once line breaking mode,
make sure that any partial paragraph is flushed before executing other
termination procedures. The previous failure to do so lead to missing
output at the end of the document if it did not fit on the current page.
* troff, dpost: OpenType and TrueType fonts with Unicode platformID cmap
tables are now supported for reading Unicode character mapping tables.
Previously, only Microsoft platformID cmap tables were supported, and
others were ignored.
* troff, dpost: Fixed a null pointer dereference that occurred when an
illegal glyph ID was encountered in the "liga" table of an OpenType
font.
* troff, dpost: Apple TrueType fonts with a "true" header magic are now
actually supported; they could previously only be read by otfdump.
* [nt]roff: ".ev \}" has now been actually fixed (Bugreport by Dirk-Wilhelm
Peters.)
* -man macros: ".P" is now recognized; it is the same as ".PP".
* -man macros: ".I \fR other-args" is not ignored anymore; same for
".B", ".SM", and ".SB".
* Unix 6th Edition manual macro packages have been added.
* -mandoc macros: Recognize Unix 6th Edition pages.
* showfont.sh: Font file arguments with absolute path names are now
supported.
Release 070202
* [nt]roff: The "\J" escape sequence has been introduced to specify a
default line breaking penalty; useful to discourage line breaks within
a person's name or a formula. Relative values in the "\j" sequence now
refer to the default penalty value.
* dpost: A manual page has been added since it has now been released by
Sun under the CDDL license.
* -man macros: The ".TP" macro has been fixed not to spread the initial
string. This is particularly for use in combination with "-mpadj" since
paragraph-at-once line breaking can lead to more spreading in the first
line.
* [nt]roff: Special characters like "\}" do now terminate environment
names in arguments to the ".ev" and ".evc" requests as with other names.
Thus ".ev \}" is no longer misinterpreted as an attempt to change to an
environment named "\}". (Bugreport by Dirk-Wilhelm Peters.)
* dpost: Cast size_t arguments to long for printf (Stefan Tramm).
* The reference manual now uses the free TeX Gyre Termes fonts available
from . For this and the other
documentation texts, README files have been added to explain which
fonts are needed in order to build them. (Thanks to Werner Lemberg for
notification.)
* Several manual pages have been moved from "BSD Compatibility" to the
standard sections if they had not actually been part of the SVR4 BSD
compatibility package.
Release 061212
* [nt]roff: Relative numbers can be used with the ".pshape" request now;
they refer to the preceding indent and line length pair, or, for the
initial pair, to the standard indent and line lenght settings.
* [nt]roff: A warning of the "range" category is now printed when the
indent is set to a value exceeding the line length.
* troff: In ".ad p" mode, when a line break was inserted after an
existing hyphen or em dash, another hyphen was added when the previous
characters formed a kerning pair. This has been fixed.
* troff: In ".ad p" mode, when the character before the first interword
space formed a kerning pair with the space character, the line length
was incorrectly computed, and the line was prolongated by this amount.
This has been fixed.
* troff: The "\{", "\}", and "\x" escape sequences inhibited kerning in
the adjustment computation but not in the output routine, which could
lead to prolongated output lines. They now inhibit kerning completely.
* eqn: Generated equations no longer start with "\x'0'". This allows
kerning with the preceding character in an inline equation.
* nroff: The content of a "\X" function is now ignored (instead of being
printed with zero width).
* nroff: Combining UTF-8 characters are now assumed to have width zero.
* nroff: The ".rd" request has been fixed; it had not been working since
the last release.
* troff: The ".rd" request now accepts locale-dependent input characters.
* [nt]roff: Fixed an error in ".ad p" mode which could lead to core dumps
with ".ev" requests that were not properly paired.
* nroff: Hyphenation of words containing non-ASCII characters now really
works; such characters were erroneously dropped with the last release,
leading to incorrect hyphenations in some cases.
* troff: Use of the "\s+[n]", "\s-[n]", "\s+'n'", or "\s-'n'" escape
sequence forms now leaves the arithmetic unit handling in a clean
state. The previous failure to do so lead to wrong numeric results
under certain circumstances; in particular, it caused the "over" eqn
keyword to produce incorrect output.
Release 061114
* [nt]roff: The units "t" (printer's point), "T" (printer's pica), "D"
(Didot point) and "C" (cicero) have been introduced.
* [nt]roff: ".ad p" mode no longer employs a temporary diversion; the
lines are now written directly to the current output level, possibly
interrupted by trap processing. This makes it possible to use "'in"
and ".ll" inside a paragraph, although the line breaking decisions
may be suboptimal in this case.
* [nt]roff: The ".hypp" request now accepts a third argument specifying
a penalty for hyphenating the last word of a paragraph.
* nroff: Characters are now internally stored as 64-bit integers as
in troff. As a consequence, hyphenation of words in international
languages now works if non-ASCII characters are involved.
* [nt]roff: A memory allocation error that could occur with extensive
use of output-line traps has been fixed.
* [nt]roff: A control character written in a diversion is now correctly
interpreted when the diversion is re-read (unless in groff compatibility
mode). This fixes the ".AU" macro of "-mm".
* [nt]roff: The "\R" escape sequence works correctly again; in the last
release, it had inserted the letter "R" into the text.
* [nt]roff: Long names including a string in their name are now handled
correctly, e.g. ".nr x\*yz 1" no longer tries to set the register "x\*y"
to the value "z".
* [nt]roff: Fixed some more memory access problems that had been introduced
with support for local variables.
* [nt]roff: Fixed a non-local goto error that could lead to segmentation
faults with ".ad p" at the end of the input.
* [nt]roff: Fixed a problem in ".bp" that could lead to the page number
being reset to zero in ".ad p" mode.
* [nt]roff: A null pointer dereference in ".ad p" mode that occured when
nofill mode was activated while a partial paragraph was present has been
fixed.
* -ms: The ".IX" index macro now works in ".padj" mode.
* -me: The ".(x" and ".)x" index macros now work in ".padj" mode.
* A "-mpadj" macro set has been added. It simply executes ".do padj"
and is useful to enable paragraph-at-once adjustment from the command
line.
Release 061106
* [nt]roff: Support for paragraph-based justification has been added,
enabled with ".ad p". The "Justification in Heirloom Troff" document
has been expanded to cover the new features.
* [nt]roff: The ".hylen" request has been introduced to control the
minimum number of characters a word must contain in order to be subject
to hyphenation. The default is 5 independent of whether the ".hylang"
request is active (in that case, it previously had been 4).
* [nt]roff: The ".pshape" request has been introduced to control the shape
of a paragraph in ".ad p" mode.
* [nt]roff: The ".hypp" request has been introduced to control penalties
of hyphenation points in ".ad p" mode.
* [nt]roff: The ".padj" request has been added; it enables ".ad p" mode
globally in all environments. It is most useful to enable paragraph-at-
once adjustment in existing documents.
* [nt]roff: The "\j" escape sequence has been introduced to specify custom
penalties for line breaks in ".ad p" mode.
* troff: The ".char" request is now able to construct replacements for
otherwise unknown locale-specific characters.
* troff: Fixed a typo in the hyphenation code that could result in the
insertion of a large negative vertical motion in a word containing a
character above Unicode point U+0800.
* troff: Fixed "\H" and "\S" to become effective if positioned directly
after a font change (Bugreport by Dirk-Wilhelm Peters).
* [nt]roff: The ".pull" request (introduced in the previous release) has
been removed again. It is recommended that the traditional approach to
re-divert text is used instead.
* [nt]roff: Fixed an invalid memory access that had been introduced with
local strings in the last release.
* troff: Fixed a segmentation violation if a ligature in a hyphenated
word was not in the current font (Bugreport by Dirk-Wilhelm Peters).
* troff, dpost: Fixed a rounding error when reading TrueType metrics.
* dpost: Fixed a bug introduced with the previous release that caused
PostScript errors on a page following colored text unless the "-e"
option was explicitly specified.
* dpost: Now handles DSC font comments in included PostScript files and
supplies glyph data for them if specified with a troff ".fp" request.
* dpost: Fixed to compile on NetBSD again (Bugreport by Dirk-Wilhelm Peters).
* eqn: Handles fractional point sizes with "size" and "gsize" now.
* tbl: Fixed a segmentation fault with empty tables that occurred due
to the changed memory layout introduced in the last release.
* A "Quickstart Guide" document has been added. It is aimed at people
who know other variants of troff to some extent and want to explore
Heirloom troff.
Release 061010
* A simplistic XSLT stylesheet to convert OpenDocument text to troff input
has been added. See the comments in the file "stuff/odt2tr.xsl" for usage
instructions.
* [nt]roff: Local strings and number registers are now supported. They can
be defined using ".lds", ".lnr", and ".lnrf". A local string or register
is visible only in the instance of the macro in which is has been defined
and can then be accessed like a standard global string or register.
* [nt]roff: The ".pull" request has been introduced to print text of a given
height from a diversion and remove it afterwards.
* [nt]roff: The ".writem" request has been added to write the contents of
a string, macro, or diversion to a file stream.
* [nt]roff: The ".dwh" and ".dch" requests have been introduced to allow
multiple diversion traps in the same diversion.
* [nt]roff: The ".trin" (translate but retranslate with ".asciify") and
".trnt" (translate but not in transparent mode) requests have been added.
* [nt]roff: The "\n[.dilev]" register contains the current diversion level.
* [nt]roff: The "\B" escape sequence (check for valid numerical expression)
is now available in regular mode too, not only in groff compatibility mode.
* troff: The second argument to the ".fkern" request now specifies a minimum
absolute amount for kerning pairs read from font metrics files. Kerning
pairs with smaller adjustments are ignored.
* tbl: Can now optionally use graphic drawing commands (troff "\D") instead
of repeated-character line drawing (troff "\l" and "\L"). The "graphics"
option enables it per table, and the "-g" command line option enables it
globally.
* tbl: The static limits on the number of table lines, columns, and heading
lines have been removed. In effect, all lines of a table are considered
when the column widths are computed, and ".T&" can occur at any line.
* tbl: The "nokeep" option causes tbl not to write a ".ne" command for a
boxed table.
* troff: The CW, CI, CB, and CX fonts no longer substitute the "fi" and "fl"
ligatures with the "devps" device. This is consistent with "devpost".
* [nt]roff: If a word starts with a motion followed by a hyphenation
indicator, such as "\h'1m'\%text" or "\|\%text", hyphenation for the
word is now suppressed, and no hyphen is generated.
* [nt]roff: When text from a diversion is output or rediverted, it is no
longer subject to character translations specified with ".tr" and ".ftr".
* [nt]roff: In groff compatibility mode, unless a string is interpolated
with explicit arguments, the arguments to the surrounding macro instance
remain visible and can be referenced by "\$" from within the string.
* [nt]roff: The ".length" and ".index" request now strip an initial """ in
their last argument to allow initial white space.
* [nt]roff: The blank line macro is not called when a diversion is reread
in nofill mode anymore.
* troff: The escape sequence "\s[0]" now resets the point size to the
previous value as "\s0" does.
* [nt]roff: Arbitrary delimiters are now allowed with "\s''" escape
sequences.
* [nt]roff: Fixed a bug that caused ".shift" without arguments to be ignored
if the last previous numerical expression was invalid.
* troff: The indent of the current line is no longer part of a PDF link
that continues from the previous line.
* [nt]roff: ".rm" and ".rr" no longer issue a warning if one of their
arguments is not a defined macro or register, respectively.
* troff: Fixed an error that sometimes caused the "x X Track" command to miss
in intermediate output.
* troff, dpost: The short font name is now part of the "x font" commands
in intermediate output for Type 1, TrueType, and OpenType fonts.
* troff: Before generating an "x X" command because of a "\X" or "\Y" escape
sequence, the current horizonal position is now emitted to intermediate
output. This makes input like "\h'1i'\X'anything'" work as expected.
* troff: Changes between environments with different ".ss" settings are now
handled correctly.
* dpost: The default encoding for the "ps" device is now "3".
* dpost: The PostScript "awidthshow" operator is now used with the "-e2" and
"-e3" encoding options, resulting in reasonable output in combination with
the ".track" request.
* dpost: With the "-e2" and "-e3" encoding options, use only word spaces as
indicated by troff for the "widthshow" PostScript operator. This usually
results in slightly larger PostScript output but is better encodable when
distilled to PDF so that PDF files become smaller.
* troff: An internal character width caching error has been fixed; it could
lead to misaligned characters when setting text in fonts containing more
than 400 characters.
* troff, dpost: Can now handle fonts with up to 65534 characters.
* eqn: Avoid to recognize delimiters inside troff escape sequences with "("
or "[" as well as directly behind a sequence of backslash characters.
* -mm macros: Fixed a bug which caused .ML output to disappear unless in
troff -x0 mode.
Release 060905
* [nt]roff: The new ".brnl" request causes a break each time a newline is
encountered at the end of a text input line. Unlike nofill mode, text is
still wrapped to the line length.
* [nt]roff: The new ".brpnl" request causes a break and a spread each time
a newline is encountered at the end of a text input line (as if it were
attached a "\p"). The "\p" escape sequence changes its semantics in this
mode and causes a break without a spread.
* [nt]roff: The new ".lpfx" request allows to print a string whenever
a new output line is started. This is mainly useful to implement a
historic form of block quotation.
* [nt]roff: The predefined number registers "\n[.in]", "\n[.hy]",
"\n[.int]", "\n[.lt]", "\n[.pn]", "\n[.psr]", and "\n[.sr]" have been
added.
* [nt]roff: The semantics of the number registers "\n(.x" (remaining space
on current output line) and "\n(.y" (current actual indent) are now
documented.
* [nt]roff: The "\n[.kc]" register has been introduced; it holds the width
of a word interrupted with "\c" on output.
* [nt]roff: Control and escape characters written in a diversion are now
regular characters in groff compatibility mode.
* [nt]roff: It is not a fatal error if the file specified with ".so" is not
accessible in groff compatibility mode.
* [nt]roff: The value of the "\n(.k" register is computed differently in
groff compability mode now.
* [nt]roff: The -mg macros now provide the fonts "C" and "CR".
* [nt]roff: The -mg macros now provide an emulation of the ".mso" request.
* [nt]roff: The command line options "-ds=x" and "-ra=N" are now accepted,
thus the string or register name before "=" can consist of more than one
character.
* [nt]roff: The ".rd" request now works again; it caused a segmentation
fault since several releases.
* [nt]roff: Formatting of a ".char" object immediately before a trap is
executed no longer causes pending input text to disappear (bug reported
by Sebastian Leusch).
* troff: The escape sequence form "\s[+-]'n'" now works with fractional
point sizes.
* troff: With xflag 0, fractional parts and units are now ignored with
the ".ps" command.
* [nt]roff: With xflag 0, ".if !..." works correctly again.
* [nt]roff: When copying text to a macro, if a line appeared that was a
prefix of the terminating macro, its last character was copied twice
(e.g. "..." with the standard ".." was copied as "...."). This has been
fixed.
* -me macros: The macros now work with xflag > 0.
* [nt]roff: The distance to the next trap, and, accordingly, the "\n(.t"
register, can now be larger than the maximum allowed motion with "\h"
and "\v". This allows very long pages without a "trap botch" error,
although vertical motions on such pages may require multiple "\v"
commands.
* [nt]roff: Fixed a reallocation problem that caused segmentation faults
with some compilers.
* [nt]roff: Fixed the "-u" option not to cause a segmentation fault.
* [nt]roff: The "\n(.S" predefined number register has been removed again
since it conflicts with use of this name by "dot -Tpic". (The "\n[.tabs]"
register continues to be available with the same semantics.)
* troff: There is now a "lc_ctype" keyword in the DESC file for the sake
of legacy post-processors that do not understand "x X LC_CTYPE".
* dpost: Use the device given by "x T" in intermediate language for reading
font files only if its name starts with "ps" or if it has the "afmfonts"
keyword in its DESC file; otherwise use "devpost".
* tbl: The forms "f (X)", "w (x)", and "fX." are now accepted in column
specifications.
Release 060813
* [nt]roff: A new type of traps is available: output-line traps. They are
set with the new "\P" escape sequence and are invoked when the line that
contains the corresponding sequence has been output.
* [nt]roff: The ".index" request has been added to determine the position
of a string within a string or macro.
* [nt]roff: Floating-point registers have been introduced; they can be
created and modified with the ".nrf" request and are otherwise like
standard integer number registers, with which they share a common name
space.
* [nt]roff: The ".if f expr" condition has been introduced to evaluate
an expression with floating-point computation.
* [nt]roff: Exponential notation, as in "1e+10", is now supported in
numerical expressions.
* [nt]roff: Debugging requests for watching macros, strings, and number
registers have been added.
* [nt]roff: The ".errprint" request has been added to write custom strings
in the same format as internal error messages.
* [nt]roff: The ".cp" request has been added to control compatibility with
groff.
* [nt]roff: The "-mg" macro package has been added for improved support of
groff documents, preprocessors, and macro sets.
* [nt]roff: The ".while", ".break", and ".continue" requests have been
added as another method to process input repeatedly.
* [nt]roff: Space characters inside parentheses in numerical expressions
are now permissible, i.e. they are discarded and do not terminate the
expression.
* [nt]roff: The ".char", ".fchar", and ".rchar" requests have been added
to transform a single input character to multiple output characters.
* [nt]roff: The ".ecs" and ".ecr" requests have been added to save and
restore the escape character.
* [nt]roff: The ".shc" request has been added to set the soft hyphen
character.
* [nt]roff: The ".hcode" request has been added to specify character
mappings for hyphenation purposes.
* [nt]roff: The sets of sentence-ending and transparent characters are
now configurable with the ".sentchar" and ".transchar" requests.
* [nt]roff: The set of optional line break characters (normally hyphen
and em dash) is now configurable with the ".breakchar" request.
* [nt]roff: The ".nhychar" request defines a set of hyphenation-
inhibiting characters (as hyphen and em dash with traditional troff
hyphenation).
* troff: The second argument to the ".ss" request now actually sets the
size of the sentence-end space instead of just switching it on or off.
* [nt]roff: The ".unformat" and ".asciify" requests have been added to
remove the effects of adjustment, and font and point size information,
respectively, from a diversion.
* [nt]roff: The "\Z'string'" escape sequence (print string and restore
the position afterwards) has been introduced.
* [nt]roff: The ".als" request has been added to create an alias name
for a request, macro, or string.
* [nt]roff: The ".aln" request has been added to create an alias name
for a number register.
* [nt]roff: The ".rnn" request has been added to rename a number register.
* [nt]roff: The ".box" request has been added; it is like ".di" but saves
and restores a previous partially filled line.
* [nt]roff: The ".spacewidth" request has been introduced to default to
the width of the space character as obtained from the font metrics file.
* [nt]roff: The ".rj" request (right-align next input lines) has been
added. The ".rj" number register that holds the number of remaining
lines to be right-adjusted has been added.
* [nt]roff: The ".ce" number register that holds the number of remaining
lines to be centered with the ".ce" request has been added.
* troff: The "\Yx", "\Y(xx", or "\Y[xxx]" escape sequence has been added
to output the contents of the string or macro x, xx, or xxx, respectively,
as a device control function.
* [nt]roff: The "\$0" escape sequence has been added to refer to the name
of the current macro or string.
* [nt]roff: The "(c;e)" numerical expression function has been added to
evaluate "e" using "c" as default scale indicator.
* [nt]roff: The "M" (Em/100), "s" (= "u"), and "z" (= "p") scale indicators
have been added.
* [nt]roff: The ".ta T Nt Mu" syntax to set tab stops repeatedly is now
supported.
* [nt]roff: The "\n(.S" and "\n[.tabs]" registers have been added to save
and restore tab stops.
* [nt]roff: The "\n[.ev]" number register has been added as a method to
determine the name of the current environment.
* troff: The "\n[rst]" and "\n[rsb]" registers are set by the width function
to the highest and lowest extent of the bounding box of any character.
This currently only works for Type 1 and TrueType fonts.
* troff: The "\n[.cht]" and "\n[.cdp]" registers are set to the highest
and lowest extent of the bounding box of the previous character. This
currently only works for Type 1 and TrueType fonts.
* [nt]roff: In extension level 1, long string "\*[xxx]", register "\n[xxx]",
and font "\f[xxx]" names are no longer recognized unless they are on a
line beginning with the ".do" request.
* [nt]roff: The "\n[.ps]" number register, which holds the current font
size in device units, has been added.
* [nt]roff: The "\E" escape sequence has been fixed; it does not resolve
to a printable but to an effective escape character now.
* [nt]roff: The "\)" escape sequence (like "\&" but transparent for
sentence ending) has been added.
* [nt]roff: Static limits on word and line size have been eliminated.
* [nt]roff: The "\{", "\}", "\&", "\%", "\c", and "\(space)" escape
sequences terminate two-character request names now.
* [nt]roff: The ".tm" and ".write" commands now discard formatted motion
sequences.
* troff: The ".psbb" request now reads a "%%HiResBoundingBox" DSC comment
in preference to "%%BoundingBox"; the registers it assigns to are now
floating-point registers.
* troff: The ".psbb" request now properly supports the "(atend)" syntax in
PostScript DSC input files.
* nroff: The ".psbb" request has been made a no-op since nroff cannot
otherwise handle EPS documents anyway.
* [nt]roff: The "right-brace" warning category has been added.
* [nt]roff: Calls of ".vs" that result in negative numbers are now
ignored.
* [nt]roff: The width function "\w" now takes pairwise kerning into
account.
* [nt]roff: The ".return" request has been fixed not to ignore the next
line of input when followed by text on the same line.
* [nt]roff: The second argument of the ".ss" request now also applies
to sequences of space characters that follow a sentence end character.
* [nt]roff: The "\k[name]" escape sequence has been fixed to work if
"name" has not been previously been used.
* [nt]roff: The "\(dq" character has been introduced as an alternate name
for the ASCII double quote character.
* dpost: Character height and slant changes now only apply to the current
font as documented.
* tbl: When ending macros in generated code, ".00" is now used instead
of "..". This allows the use of ".ig" and similar requests within "T{"
etc. without interference.
* pic: Accept "{lower|upper} {left|right} of" as aliases for ".nw", ".sw",
".ne", and ".se".
* pic: Continued newlines in expressions like "center \of" are
now accepted.
Release 060716
* troff: The ".letadj" request has been added to enable dynamic letter
spacing and letter reshaping when justifying lines.
* troff: Font and size attributes of space (and newline) characters in
input are now honored for computing widths and kerning pairs. Previously,
font and size of space characters were always that of the next printable
character; this is retained with the -x0 option. This means that e.g. in
"\f(CWabc \fRdef", the size of the space is now computed from the
constant width font instead of the roman font.
* [nt]roff, dpost, daps: The character name "\(rs" for backslash has been
introduced.
* nroff: "\[xx]" and "\C'xx'" result in the same character as "\(xx" now.
* [nt]roff: The ".nx" request now works again, it previously caused
a segmentation fault because of a null pointer dereference (bug
reported by Michael Hobgood).
* [nt]roff: With the ".hylang" request, words that consist of four
characters are now subject to hyphenation (with the traditional
hyphenation, five characters are the minimum length).
* [nt]roff: The ".hy" request accepts the additional flags 16 and 32 that
allow the last or first character of a word, respectively, to be split
off.
* troff: Giving no arguments to ".minss" now deactivates this mechanism.
* troff: ".minss" now has no effect unless in ".ad b" mode as documented.
* [nt]roff: The ".ss", ".sss", ".minss", ".lspmin", ".letss", ".lspmax",
".lshmin", ".lshmax", ".lc_ctype", ".hylang", and ".fzoom" number
registers have been added to retrieve the current values set with the
respective requests.
* [nt]roff: The forms "\s+-'dd'", "\s+-[dd]", and "\s[+-dd]" of the size
change escape sequence are now understood.
* [nt]roff: The ".nop text" request (use text as input) has been added.
* [nt]roff: The escape sequence "\R'R +-N'" to set the value of a number
register has been added.
* [nt]roff: String references now accept arguments with the \*[xx arg ...]
escape sequence.
* [nt]roff: The ".blm xx" request has been added, it causes ".xx" to be
called whenever a blank line is encountered.
* [nt]roff: The ".itc" request (input trap not counting "\c") has been
added.
* [nt]roff: The ".hlm" request and the ".hln" and ".hlc" number registers
have been added to control the maximum number of consecutive hyphenated
lines.
* [nt]roff: The "\#" escape sequence (comment including newline) has been
added.
* [nt]roff: With xflag 3 and warning "mac" deactivated, if ".xx" was a
defined request and ".xxx" was not, ".xx" was executed for ".xxx".
* [nt]roff: Several segmentation violations that occurred with arbitrary
binary data as input have been fixed.
* troff, dpost, otfdump: The operator 12 in CFF Top DICT entries was not
handled correctly, resulting in misleading error messages with some
OpenType fonts. This has been fixed (bug reported by D. Jeff Dionne).
Release 060619
* troff: The ".minss" request has been added. It allows troff to decrease
the size of the word space below the value set by ".ss" when adjusting
lines at both margins.
* troff: The ".kernpair", ".kernafter", ".kernbefore", ".lhang", and
".rhang" requests now also accept groups of characters to which the
same kerning/hanging value is applied.
* [nt]roff: It is now possible to use strings inside macros names (e.g.
".xx\*(yy" as documented.
* [nt]roff: The ".if d", ".if n", and ".rr" requests erroneously applied
to a shorter two-character name if an undefined longer name was given
as an argument; this has been fixed.
* troff: The ".fkern" request now properly refers to a single mounted
instance of a font; it previously affected all mounted instances of
one font metrics file.
* troff: Character replacements with ".tr" where the target character
does not originate from the current font but is found in the fallback
sequence are now performed correctly. Previously, an invalid heap
access could occur, resulting in the choice of random characters.
* troff: Margin characters set with ".mc" are now correctly placed in
combination with hanging characters set with ".rhang".
* [nt]roff: It is legal to call ".it" or ".dt" without arguments, thus
a warning is no longer issued in this case.
* troff: Selecting one of the base fonts with ".ft" without a previous
".fp" works again; it was broken in the last release.
Release 060430
* troff/dpost: Links and anchors in PDF documents can now be defined;
"\A" and "\T" escape sequences have been introduced for this.
* [nt]roff: Tail-recursion elimination for macro calls has been added.
This allows recursive macro calls of arbitrary depths when the call
to itself occurs in the last line of the macro.
* troff: The ".fkern" request has been introduced to disable the use of
the kerning tables of specific fonts.
* [nt]roff: The "\V" escape sequence has been introduced; it prints the
value of an environment variable.
* troff: An explicit "N" font register argument to the ".fp" request may
now be an arbitrary number between 1 and 255.
* troff: The "\n[.fp]" number register has been introduced to make it
possible to determine the next unused font register.
* [nt]roff: The "-daS" command line option has been added to define the
string "a" to "S".
* [nt]roff: The ".output" request has been added to write a command to
intermediate output regardless of whether there is a current diversion
or not (unlike "\!").
* [nt]roff: A warning is now issued when a non-ASCII byte is found in
a name (of a request, number register, etc.) with the "input" warning
category.
* [nt]roff: Long request names as second arguments to macro definitions
(as in ".de xx longname") are now handled correctly.
* [nt]roff: The ".close" request has been fixed; repeated calls to it
could previously result in lost file stream descriptors.
* troff, otfdump, dpost: The end of floating point values in CFF data is
now properly recognized; the previous failure to do so could result in
errors like "invalid operand b0 range 255" with valid OpenType fonts.
* troff: In TrueType fonts with version 3.0 "post" tables, characters that
lack a Unicode mapping can now be accessed as "\[index0xN]".
* [nt]roff: The need for the sbrk() system call has been eliminated; the
regular system malloc() is now used.
Release 060409
* dpost: An error that could lead to invalid PostScript output when the
last character of a long output string sequence was a backslash has
been fixed.
* troff: The ".flig" request has been enhanced to enable the definition
of arbitrary font-specific ligatures, e.g. ".flig R Th \[T_h]" could
be used for a "Th" ligature. The previous syntax is still accepted.
* troff: If a hyphentation point occurs within an automatically created
ligature, the ligature is now split into its parts.
* troff: The "\;" escape sequence has been introduced as a ligature
suppressor without other side-effects.
* troff: The ".fdeferlig" request has been introduced. It defers building
of a ligature by one character, e.g. if both "ff" and "fi" are defined
as ligatures and "ffi" appears in input, a single "f" followed by the
"fi" ligature can be constructed instead of a "ff" ligature followed by
a single "i".
* [nt]roff: The hyphenation language as set by the ".hylang" request is
now specific to the current environment.
* [nt]roff: The ".substring" and ".length" requests have been added to
replace a string by a substring of it and to determine the length of
a string, respectively.
* troff: No longer prints a warning when a font selected with ".ft" is
not currently mounted but can be mounted in position 0.
* nroff: No longer prints a warning when a font is selected with ".ft".
* nroff: Multibyte characters are now emboldened correctly. Previously,
the number of backspace characters output corresponded to the length
of the multibyte sequence instead of the column width of the character
(bug reported by Alexander E. Patrakov).
* dpost: The line width for drawing has been fixed; previously, lines
were 100 times too slim with the "ps" device.
* troff: The "\C'xxx'" escape sequence is now available; it selects a
named character with the same effect as "\[xxx]".
Release 060321
* An revised version of the "Nroff/Troff User's Manual" is now available
in the directory "doc/troff". It replaces the "NEWS" and "PDFS" text
files; these have been removed.
* A typeset version of "Font Handling in Troff With PostScript Devices"
is now available in the directory "doc/fonts". It replaces the "FONTS"
text file that has been removed.
* [nt]roff: Hyphenation is now enabled by default. This is compatible
with most other versions of troff, but differs from Solaris troff.
* troff/dpost: The characters \(or \- \` \' " # < > @ \ ^ ~ are now
taken from the current font instead of the special font by default
if possible with the "ps" and "psmed" devices. The new DESC keyword
"allpunct" controls this.
* troff: Kerning pairs from font metrics files that include "\[name]"
characters now work correctly; they could previously apply to wrong
characters with font files containing more than 260 characters, and
were ineffective with smaller ones.
* troff: OpenType and TrueType kerning pairs with a position difference
of zero are now completely ignored. They could previously overwrite a
previous positioning difference for the same pair. Also if a kerning
pair occurs more than once in the metrics file, the first definition
read is now used instead of the last one.
* troff: In an OpenType font, if a kerning pair occurs in both a "Pair
Positioning Adjustment" format 1 (kerning by specific glyphs) and a
format 2 (kerning by glyph classes) table, the format 1 definition
is now always used.
* tbl: Storage space expansions because of long lines inside a table are
now done properly.
* troff: The "\n[.ascender]" and "\n[.descender]" registers contain the
typical extents of the current font above and below the base line,
scaled to the current point size.
* troff: Zero-width space characters are no longer considered word space
when a line is justified. This fixes "\X" device control functions in
diversions.
* dpost: The metrics of the underscore character in the PostScript Symbol
font (which is mapped to "\(ul" and is used to draw horizontal lines)
are now dynamically adjusted in the generated PostScript code. This
works around varying metrics of this character in different versions
of the Symbol font. Note that this does not work in PDF unless the
font is embedded at the time the document is distilled.
* dpost: The "\(sq" glyph is now filled in any font with a "Weight" entry
of "Bold", "Ultra", or "Heavy".
* dpost: The "post" device works again; dpost previously crashed with a
null pointer dereference when it was used.
* troff/dpost: EPS files that contain carriage-return characters as
newline indicators are now correctly handled with the ".psbb" request
and the picture inclusion mechanism.
* [nt]roff: The "\(.z" number register handles diversion names longer
than two characters properly now.
* [nt]roff: Requests like ".bd" or ".kernpair" now warn when an invalid
font name is given.
* [nt]roff: No "illegal number" warning is printed anymore when a "\}" is
found as part of a possibly numeric argument, as in e.g. ".bp \}".
* [nt]roff: The ".mc" request does not require an argument so no warning
is printed if it is given none.
* dpost: When a PDFMark Bookmark command is issued at the beginning of
a page of intermediate output before any text has been printed, the
value "4" is now substracted automatically to make the PDF viewer
show the whole page top including margin.
* -mm macros: An error that was introduced when the macros were converted
to use spaces between a request name and its arguments has been fixed.
It sometimes caused the page offset to be wrong.
Release 060221
* [nt]roff: With the ".hylang" request, the individual parts of words
composed by "-" or "\(em" characters are now subject to hyphenation.
* troff: The ".fspacewidth" request has been introduced to set the width
of the space character of a font.
* troff: For monospaced fonts, the space width is now set to the size of
the "space" character in the AFM/TrueType/OpenType font metrics. This
matches the traditional behavior of the "post" device with the "Courier"
font, but was previously not done for "ps", which led to incorrect
formatting.
* troff: Non-ASCII small characters were erroneously mapped to uppercase
input characters. They are now mapped to lowercase input characters as
it is done for ASCII characters.
* troff: When a regular font was chosen as fallback for an expert font,
non-ASCII characters were selected from the regular font even if a
matching character in the expert font existed.
* [nt]roff: Additional conditions are available with ".if": "c" to test
for a glyph in the current font, "d" to test for the existence of a
macro, and "r" to test for the existence of a number register.
* [nt]roff: Three additional operators for numeric expressions are
available: "<>" (not equal), "" (minimum), and ">?" (maximum).
* [nt]roff: The input line number is now adjusted at a different place,
fixing many glitches which previously caused it to be wrong.
* tbl: The ".lf" troff request is now used internally to adjust troff's
idea of the current input file and line number, making troff warnings
more helpful.
* tbl: The ".warn" troff request is now used internally to save, disable,
and restore warning messages around those portions of tbl output which
use potentially undefined requests or registers.
* pic: The comments before ".PS" containing bounding box information are
now prefixed by '.\"' instead of '...' for compatibility with ".warn".
* [nt]roff: The "\n[.warn]" number register is now properly changed after
a call to ".warn" with no arguments.
* pic/dpost: The PostScript implementation of the "Dl" (draw line)
operation now rounds the current point to the troff device resolution
when testing for equality. This is another fix for "box fill 0" in pic.
* troff/dpost: A "x X LC_CTYPE localename" device command has been added.
This ensures that troff and dpost use the same locale for generating
PDF bookmark entries.
* dpost: CFF font data is now ASCII hex encoded in PostScript output.
Release 060208
* troff: Eastern European characters for Unicode/PostScript conversion
have been added (patch by Vladimir B. Machulsky).
* troff, dpost: Font file names can now contain spaces or bytes outside
the ASCII range. A "%xx" escape sequence, where "xx" are hexadecimal
digits, has been introduced in order to achieve this. The description
of ".fp" in the "NEWS" file contains details on this.
* [nt]roff: The ".vpt" request has been added to make it possible to
disable vertical position traps.
* dpost: With the ".track" command, the tracking amount was not properly
initialized at every page of PostScript output. This could result in
incorrect arrangements of characters.
* [nt]roff: Diagnostic messages now include the number of the current
output page.
* [nt]roff: Page breaks inside a diversion are now properly ignored.
* dpost: When a font was mounted replacing another font on the same
physical position, non-ASCII characters were not printed correctly
afterwards (bug reported by Vladimir B. Machulsky).
* dpost: The BookMark device command now causes "/XYZ" destination keys
to be written to PDF documents. This has the effect that the current
zoom factor is retained when a bookmark is selected.
* pic, grap: Fixed 8-bit input in label texts (bug reported by Vladimir
B. Machulsky).
* troff: The ".trimat", ".bleedat", and ".cropat" requests caused some
following requests (e.g. ".fp") to fail because of an improper reset
of number scaling (bug reported by Sebastian Leusch).
* troff: If the "\~" character appeared as part of the first word of
a line not immediately following a break, the current line and the
line before it were not justified correctly (bug reported by
Christian Schaper).
* [nt]roff: The ".spreadwarn" request was wrongly called ".spreadlimit"
in the NEWS file.
Release 060114
* troff: The internal codes for PostScript characters are now unique across
all fonts. In effect, requests like ".tr" or ".lc" now handle arbitrary
characters correctly, including locale-dependent ones.
* [nt]roff: The ".mk" request now accepts long register names.
* [nt]roff: Using ".wh" with an undefined long macro name now works as with
undefined short names; the macro is executed once it has been created.
* troff/dpost: PostScript characters are now passed as "CPSname" in the
intermediate output (instead of "Nnnn").
* troff/dpost/otfdump: Apple TrueType fonts with a "true" header magic can
now be read (thanks to Stefan Tramm).
* troff/dpost/otfdump: TrueType handling has been made more robust against
an error in Microsoft/Unicode "cmap" subtables.
* dpost: Error messages now include the number of the current output page.
* dpost: Color bars can now be generated with "-M colorbars", star targets
with "-M startargets", and all marks are enabled with "-M all".
* dpost: The ".mediasize" request now also causes a "%%DocumentMedia:" DSC
comment to be written. This enables some PostScript previewer programs
to determine the document size.
* troff: On a font mounted with ".fps punct", the "\(en" character is now
available as expected.
* pic/dpost: The PostScript implementation of the "Dl" (draw line)
operation has been fixed to move to the beginning of the line properly
even when "inpath" is set. This fixes "box fill 0" for pic.
* dpost: The geometry setup for drawing commands is now executed in the
setup section for each page. This makes pic work with filters that
re-arrange pages in PostScript.
Release 051227
* [nt]roff: A new extension level "3" is available. In this level, undefined
long requests whose first two characters form an existing short request
are ignored instead of being interpreted as short requests. Also string
and number register references are interpreted at any position of a
long request name in this level.
* troff: Unicode mapping tables from OpenType and TrueType fonts are now
used for converting input characters.
* troff: Locale-dependent input characters for which no matching glyph can
be found are now replaced by spaces.
* troff: The ".fps" request has been introduced to map troff special
characters like "\(*a" or "\(+-" to a custom font.
* [nt]roff: The warning category "missing" is now available; it includes
warnings about missing required arguments to requests.
* [nt]roff: The warning category "delim" is now available; it includes
warnings about missing delimiters to escape sequences.
* troff: The ".trimat", ".bleedat, and ".cropat" " requests have been added
to include advice about the "TrimBox", "BleedBox", and "CropBox" page
parameters to a PDF distiller command, particularly for PDF/X generation.
* dpost: The "-M" option has been added. It can be used to print cut marks
("-M cut"), registration marks ("-M registration"), or both cut marks and
registration marks ("-M cut:registration") in combination with the
".trimat" troff request.
* [nt]roff: The ".af" request now handles long register names correctly.
* troff: Kerning now works correctly in combination with leaders and
fields.
* troff: The ".tm" and ".write" requests now correctly handle locale-
dependent input characters as well as one-character escape sequences
that are interpreted in copy mode such as "\&".
* [nt]roff: The "-msafe" macro now correctly removes the ".do pso",
".do open", and ".do opena" requests in -x1 (default) mode. They
were previously removed in -x2 mode only.
Release 051212
* [nt]roff: The ".pso" request has been added; it reads the output of
a command as input to troff.
* [nt]roff: The ".tmc" request has been added; it works like ".tm" but
does not terminate the message with a newline.
* [nt]roff: The ".open", ".opena", ".write", ".writec", and ".close"
requests have been added. They work like ".tm" but write to a named
file.
* [nt]roff: The ".warn" request has been added; it enables additional
warning messages. The "\n[.warn]" register prints bits representing
the warning categories that are currently enabled.
* [nt]roff: The ".spreadlimit" request has been added; it can be used
to print a warning when the adjustment computed for an output line
exceeds a certain value.
* [nt]roff: The ".mediasize" request has been added; it causes dpost to
specify the page size using the PostScript "setpagedevice" operator.
This is mainly useful for creating PDF documents.
* [nt]roff: The "\n[hours]", "\n[minutes]", "\n[seconds]", and "\n[year]"
registers have been added to print more parts of the current time.
* [nr]roff: Availability of extensions is now controlled using an "-xN"
option, where "N" is the extension level. The previous "-x" and "-X"
options are still accepted.
* [nt]roff: A "-msafe" macro package has been added; it disables those
requests that allow to execute commands or to write to files. It is
mainly useful for viewing manual pages.
* pic: An "-S" option has been added to disable the "sh" element.
* grap: An "-S" option has been added to disable the "sh" command.
* nroff: Recognize the "\s'n'" escape sequence and discard it for
compatibility with troff.
* dpost: When writing Type 42 fonts, write the sfnts array in a different
order to avoid an error with Acrobat Distiller.
Release 051202
* [nt]roff: When text is written to a diversion in nofill mode, spacing
characters are preserved. This allows the text in the diversion to be
adjusted later when it is actually printed. The "-X" option disables
the new behavior.
* [nt]roff: The static limit on the number of if-else constructs has
been removed.
* [nt]roff: The static limit on the number of nested diversions has been
removed.
* [nt]roff: A maximum of 2000 characters (bytes) is now allowed as the
total of all arguments to a macro.
* dpost: The inclusion of PostScript pictures has been fixed; it could
generate invalid PostScript programs since release 051025 under certain
circumstances.
* dpost: A "x X PSSetup" device request to support a "\X'PSSetup: ...'"
escape sequence has been added. It can be used to include arbitrary
PostScript code in the setup section of the output file.
* dpost/troff -mcolor: CMYK colors and arbitrary PostScript color spaces
can now be used. The "setcolor" procedure in "color.ps" has been renamed
to "_setcolor" in order to make this possible.
* [nt]roff: A ".psbb" command is now available to retrieve the bounding box
of a PostScript document (particularly of an EPS image).
* dpost: DSC comments of included EPS images are now preserved.
* dpost: PostScript pictures that contain binary data can be included now.
* pic: Troff commands that begin with a "'" are now passed through.
* grap: Negative zeros in coordinate tick labels are now avoided.
* -man macros: Fixed the output of a very long line following ".TP".
* -mdoc macros: Changed the names of Courier fonts to \f(CW \f(CI to
match those of troff.
* RPM package builds now require the new "Heirloom Development Tools"
package from to be
installed.
Release 051107
* The "checknr" utility has been added from OpenSolaris source code.
* The "ptx" utility has been added from Unix 7th Edition source code.
* When a locale-dependent or font-specific character was used directly
after a macro that ended with a font switch, it was chosen from the
old font. This has been fixed.
* The ".hidechar" request now works correctly if the selected font is
not the current font.
* eqn: More narrow spaces are inserted at some roman/italic font changes
now to better match the appearance of the current fonts.
* grap: The file "grap.defines" has been moved to $(LIBDIR).
Release 051031
* The "-mpm" macros and the "pm" program have been added from Plan 9 source
code. They form a "-ms"-like package for vertical justification; the file
"mpm/README" explains some details.
* eqn: The generated troff program is now resolution-independent; the "-r"
option is no longer needed and is ignored.
* dpost: The elements of overbars, brackets, and braces align better now, in
particular in respect to documents distilled by Ghostscript.
* In the "man" macro package, ".B" and similar font change macros now accept
more than six arguments.
* tbl: The maximum length for "w(...)" width specifications has been raised
from 10 to 100.
* The "make install" procedures of refer and vgrind have been fixed to work
with RPM and similar package builds.
Release 051025
* The "pic" and "grap" utilities have been added from Plan 9 sources.
* The "vgrind" utility has been added from OpenSolaris sources.
* "refer" and related utilites have been added from OpenSolaris sources.
* [nt]roff: The new ".recursionlimit" request allows to change the maximum
permitted recursion depth for macro invocations from the default 512.
Release 051015
* troff, dpost, otfdump: Handle TrueType files with version 3.0 "post" table
and no Microsoft/Unicode "cmap" subtable.
* otfdump: Kerning information was omitted for all but the first font when
multiple font file arguments were given. This has been fixed.
* troff: Fonts that contain possible ligatures (fi, fl, etc.) in their file
names are now mounted correctly.
* dpost: Allow only the glyph at position 0 to be named ".notdef" when
generating Type 42 font data.
* dpost: No longer leaves a stale temporary file in /var/tmp.
* tbl: Inspects the first 4000 rows of a table now (instead of the first 200)
in order to determine column widths and "T{" blocks.
* tbl: Can handle more than 62 "T{" blocks per table now.
Release 051011
* troff/dpost: Support for OpenType fonts has been added. This includes
support for CFF-based (PostScript) OpenType fonts as well as support for
most TrueType fonts.
* otfdump: New utility that prints the contents of an OpenType font file in
an ASCII format just as troff interprets it.
* troff: A ".ftr" request has been introduced as a font-specific variant of
the ".tr" request.
* troff: A ".feature" request has been introduced to access special features
of OpenType fonts.
* troff: Kerning is now applied to pairs of characters that originate from
the same font mounted at two different positions.
* dpost: Can now access all characters in a large PostScript font, not only
the first 255.
* dpost: If the data in a PFB file to be included does not end with a
newline character, add one to the generated PostScript to achieve a
consistent DSC structure (Bugreport by Sebastian Leusch).
* dpost: The limit of characters with "x X" commands has been raised from
50 to 4096. This in particular allows to supply fonts with long path
names.
* The "-mcolor" macros have been added from Plan 9 sources.
Release 050920
* troff: The handling of locale-dependent characters in copy mode has been
fixed. Previously when such a character was given e.g. in an argument to
a macro, it was chosen from the font in effect at the time when the macro
call was read, instead of the one in effect at the time when the macro
was executed.
* troff: The lookup of kerning pairs from the predefined tables has been
fixed. It previously located inappropriate pairs in some cases.
* troff: Is now more resistent against invalid AFM files whose character
count following the "StartCharMetrics" keyword is too large. Previously,
no characters outside the default troff character set were accessible
with such files.
* dpost: When an AFM-based font was mounted more than once in troff,
localized input characters are now printed properly in all positions.
Previously, localized characters were only printed properly on the
position that was used first in the document.
* troff: Several requests for handling fonts did not recognize font names
with more than two characters correctly with the "-x" option; they have
been fixed.
* troff: The characters "\(aa", "\(ga", """, "\-", "<", ">", "@", "\", "^",
and "~" are now always chosen from the Times Roman special font with
AFM-based devices too, as it has been the case with other devices. To get
the character from another PostScript font, use the PostScript character
name, e.g. "\[less]". In contrast, "\(12", "\(14", and "\(34" are now
chosen from the current font, as it has been the case with historic C/A/T
output, but not with -Tpost.
* [nt]roff: The "-mm" macros no longer print "Sun Microsystems" in calls to
".AU" macros and the like.
* troff: The "\S" escape sequence has been fixed; its use could lead to core
dumps with the previous release.
* troff: The procedure to determine whether to set the "2" value of the
"\n(ct" register with AFM fonts should now work properly. This fixes the
position of accents above lower-case characters with eqn.
* dpost: The maximum number of fonts that can appear in a single PostScript
output file has been raised to 1536.
* eqn: All Greek upper-case letters, i.e. "ALPHA", "BETA", etc. are now
recognized.
* [nt]roff: The escape sequence \U'n' sets the character at Unicode position
"U+n", where "n" is a hexadecimal number.
Release 050915
* troff: Can now directly handle .afm/.pfb/.pfa files (i.e. PostScript
Type 1 fonts) to select fonts. The ".fp" request has been extended
for this, and the "TROFFONTS" environment variable specifies path
names to search for font files. See the file "FONTS" for details.
* troff: Can now handle Type 42 fonts (i.e. TrueType fonts that have been
converted for use by PostScript interpreters).
* troff: Handles input characters according to LC_CTYPE now in combination
with the new font setup. In a UTF-8 locale, most characters that are
present in standard, Expert, and Symbol PostScript fonts are supported;
otherwise, a locale-specific subset of them is available.
* troff: A PostScript device with a resolution of 72000 dpi, named "ps",
is available, and is used by default.
* troff: Support for pairwise kerning has been added. The default tables
are read from the AFM files. In addition, a ".kernpair" request has been
introduced to add or replace kerning pairs; it can construct kerning
pairs for characters from different fonts. The ".kernafter" and
".kernbefore" requests add a constant amount of space to specific
characters.
* dpost: The PostScript output is now expected to conform to Adobe's
Document Structuring Conventions, version 3.0.
* dpost: PDF Bookmarks, titles and authorship information can be included
into the generated PostScript for further processing by the distiller
utility. See the file "PDFS" for details.
* [nt]roff: Hyphenation for languages other than English has been added
using the "libhnj" variant from the OpenOffice project. The ".hylang"
request has been introduced to select between languages. Hyphenation
files have been derived from TeX sources.
* troff: The paper size can be selected with the ".papersize" request.
This is important for correct placement of pages on PostScript printers.
* troff: Any point size can now be used with PostScript devices, including
fractional sizes.
* troff: The ".fzoom" request allows to zoom the characters of a font.
* troff: Hanging characters are supported.
* [nt]roff: The ".lc_ctype" request can be used to set the LC_CTYPE
localization setting from within a document.
* troff: It is now possible to use "\[name]", where name is a character
defined in the .afm file for the current font.
* troff: The ".track" request for tracking letter space has been added.
* troff: The ".fallback" request for selecting the order in which fonts
are searched for missing characters in the current font has been added.
* troff: The ".hidechar" request hides characters from a font which are
then searched using the fallback sequence.
* troff: Ligatures from expert fonts can be used transparently with the
".flig" request.
* [nt]roff: Environments selected with the ".ev" command can be given
names, and their number is no longer statically limited.
* [nt]roff: The ".evc" request copies another environment to the current
one.
* [nt]roff: The ".chop" request deletes the last character from a macro,
string, or diversion.
* [nt]roff: The ".return" request returns immediately from a macro.
* [nt]roff: The "\:" escape inserts an optional line break but generates
no hyphen if the line is split.
* [nt]roff: The "\~" escape is similar to "\ " but inserts a space that
stretches like a regular " " when the line is adjusted.
* [nt]roff: The "\E" escape is similar to "\e" but is not interpreted in
copy mode.
* [nt]roff: The ".shift" request shifts the arguments to a macro.
* [nt]roff: The "\$(.." and "\$[...]" escapes can be used to refer to
macro arguments.
* troff/dpost: The "\X'Sync'" escape forces dpost to write position and
font information to the generated PostScript. This is sometimes useful
to ensure that following "\X'PS: ...'" escapes work as expected.
* troff: The "-a" option now generates locale-dependent output, with best
results in UTF-8 locales.
* The "-mpictures" macros have been added from Plan 9 sources.
* The "picpack" preprocessor has been added.
* eqn: The default resolution has been changed to 72000 dpi to match that
of troff. The "-r" option was introduced to change it.
* eqn: Handles "\[]" and "\*[]" now.
* troff, dpost: Device and font descriptions are now read directly from
text files; the "makedev" utility is no longer needed.
* [nt]roff: The ".xflag" request controls the availability of extensions
like the "-x" and "-X" command line options.
* The file "NEWS" describes new troff language features.
* tbl: The specification "decimalpoint(x)" can now be used to make the
character "x" the decimal point for numeric columns.
* tbl: There can now be up to 100 columns in a table.
* [nt]roff: There is no static limit on the number of "-m" options anymore.
* [nt]roff: There is no static limit on the ".hw" table anymore.
* [nt]roff: There is no static limit on the pushback buffer anymore; this
makes it possible to use longer arguments to macros.
* [nt]roff: The output of long names with ".pm" and stack dumps has been
fixed.
* [nt]roff: Nested long-name string references \*[\*...] now work.
* [nt]roff: Tabulators as in ".XY\t" are now correctly handled with -x.
* The "-man" macro no longer produces cut marks when used with troff.
* tbl: Two bugs that had been introduced with support for lines of unlimited
length have been fixed. They resulted in printing a stray character when
more than one input file was used, and in improper handling of input lines
continued with a backslash.
* A new malloc() replacement has been added for performance reasons.
* A bug in the previously supplied realloc() replacement could result in
heap corruption.
Release 050816
* nroff: A special terminal name, -Tlocale, has been introduced. With this
option, UTF-8 output is generated if permitted by the current LC_CTYPE
locale, and regular -Tlp output otherwise.
* [nt]roff: A new option, "-x", enables the recognition of extended
features that may affect compatibility with previous versions. The "-X"
option disables these features; this is currently the default. Note
that the features enabled with -x are under development and subject
to change.
* [nt]roff: With the -x option, it is now possible to use ".de", ".ds",
".nr", and similar requests with more than two-character name arguments,
as in ".de longname", and to access such macros later with ".longname",
strings with "\*[longname]", and number registers with "\n[longname]".
* [nt]roff: The "\$@" and "\$*" escape sequences to print all arguments
to a macro are now understood with the -x option.
* troff: The ".ss" command now accepts a second numeric argument with the
-x option. If it is zero, no second space character is printed between
sentences. Otherwise, a second space character with the same width as
the first one is printed.
* [nt]roff: The static block list limit NBLIST has been removed, memory
is now dynamically allocated as needed.
* [nt]roff: There is no static limit on the number of macros/strings and
the number of number registers anymore.
* -man: A defect in the supplied -man macro package caused headers and
footers to be garbled when they were printed between parts of a tbl table
that was split across pages.
Release 050813
* Initial release.