point neatroff at our system macros and fonts, they work
cp: call num_str() only once when reading a number register
eval: prevent integer overflow for fixed point numbers
font: check for glyph group membership using ggrp_rev
font: fix maximum field width in scanf %s specifier
map: map empty strings to index 0
font: leave room of the terminating new line in fscanf()
dev: fail if fonts listed in DESC are missing
roff: print usage to stderr and return 1 on bad options
roff: use labs() for long integers in FMT_COST
roff: fix use of fprintf
roff.h: increase the maximum number of tab stops to 32
font: read font section in gsub command
char: support \sNN only when in compatibility mode
hyph: when hpf's last argument is -, use the default mapping
tr: preserve autoincrement, if the third argument of .nr is missing
in: use PATHLEN for inbuf.path
in: increase the length of input file paths
font: buffers of size GNLEN for glyph names
font: rules outside any section can be applied multiple times
font: never apply two GPOS rules from one OFF lookup
roff.h: \n(.% number register for real page number
char: make utf8len more compact
fmt: prevent divide by zero when \n(.v is zero
fmt: format a single line if line settings change
roff.h: increase the number of hyphenation points per word
fmt: ignore hyphenation marks at the end of the words
font: glyph indices should be large enough for more than 65k glyphs
wb: glyphs with no bounding box information
tr: ".if ! " should succeed
tr: allow parsing macro arguments as a request
tr: unify the signature of functions for parsing requests and macros
tr: change the behaviour of of .co request
dict: update dict_prefix()'s comment
reg: \n[.yr] holds current year
font: store every glyph described in the font descriptor
tr: resetting font script and language
font: specifying OpenType font language with .ffsc
wb: insert keshideh after the last possible character
tr: leading space macro (.lsm request)
cp: the zero-th argument
dict: reduce table size
dict: consider more characters in the hash function
cp: interpret \? in copy-mode
tr: .co request to copy the contents of a register from or into a file
font: glyph cursive attachments for r2l scripts
fmt: keshideh justification
dir: support text direction with .>>, .<<, \> and \<
cp: invoking built-in requests like \*[nr reg 10]
dev: finding font position automatically for .fp request
ren: output formatted lines immediately after blank lines
roff.h: increase the default argument count
tr: missing casts for isdigit()
tr: without an argument .tm outputs a blank line
font: unmap glyphs with .fmap
tr: read the last argument of .char just like the last argument of .ds
tr: removing character definitions with .char and .ochar
reg: set tab types when resetting environments
reg: .ta clears all previous tab stops
tr: free cdef_dst[] entries before neatroff exits
font: character aliases are mapped as .fmap
dict: overriding values
fmt: assume a stretchable space in lines containing a single word
wb: use \s[] for sizes larger than 99
char: do not limit the length of quoted arguments
font: fix reading gsub scripts
font: specify font script with .ffsc request
tr: handle invalid .bd arguments
font: read the script assigned to each rule
font: accumulate GPOS adjustments
tr: remapping overridden characters in .ochar
reg: hex number format (.af R x)
ren: flush the partial line before computing .sp absolute positions
hyph: match hyphenation exceptions when prefixed with punctuations
fmt: support stretchable no-break space (\~)
font: track kerning with .tkf request
fmt: shrink spaces in the last line of a paragraph
draw: extend polygons to include arcs or splines
char: read invalid characters byte by byte
char: fix reading utf-8 characters with more than three bytes
tr: handle long register names more gracefully
cp: do not skip tabs after .if condition
char: replace comparison with bit checks in utf8len()
cp: quoted brackets as in \*[xyz "]"]
char: assign to escread()'s second argument a static buffer
fmt: allocate words and lines dynamically
cp: long arguments when interpolating strings as \*[xyz args...]
map: print an error message when NREGS is reached
fmt: line break cost after a word with \j
clr: map colour #fff to #ffffff