groff_out - groff intermediate output format
This manual page describes the format output by GNU troff.
The output format used by GNU troff is very similar to
that used by Unix device-independent troff. Only the dif-
ferences are documented here.
The argument to the s command is in scaled points (units
of points/n, where n is the argument to the sizescale com-
mand in the DESC file.) The argument to the x Height
command is also in scaled points.
The first three output commands are guaranteed to be:
x T device
x res n h v
If the tcommand line is present in the DESC file, troff
will use the following two commands
txxx xxx is any sequence of characters terminated by a
space or a newline; the first character should be
printed at the current position, the current hori-
zontal position should be increased by the width of
the first character, and so on for each character.
The width of the character is that given in the
font file, appropriately scaled for the current
point size, and rounded so that it is a multiple of
the horizontal resolution. Special characters can-
not be printed using this command.
un xxx This is same as the t command except that after
printing each character, the current horizontal
position is increased by the sum of the width of
that character and n.
Note that single characters can have the eighth bit set,
as can the names of fonts and special characters.
The names of characters and fonts can be of arbitrary
length; drivers should not assume that they will be only
two characters long.
When a character is to be printed, that character will
always be in the current font. Unlike device-independent
troff, it is not necessary for drivers to search special
fonts to find a character.
The D drawing command has been extended. These extensions
will not be used by GNU pic if the -n option is given.
Groff Version 1.15 9 April 2000 1
Df n\n Set the shade of gray to be used for filling solid
objects to n; n must be an integer between 0 and
1000, where 0 corresponds solid white and 1000 to
solid black, and values in between correspond to
intermediate shades of gray. This applies only to
solid circles, solid ellipses and solid polygons.
By default, a level of 1000 will be used. Whatever
color a solid object has, it should completely
obscure everything beneath it. A value greater
than 1000 or less than 0 can also be used: this
means fill with the shade of gray that is currently
being used for lines and text. Normally this will
be black, but some drivers may provide a way of
DC d\n Draw a solid circle with a diameter of d with the
leftmost point at the current position.
DE dx dy\n
Draw a solid ellipse with a horizontal diameter of
dx and a vertical diameter of dy with the leftmost
point at the current position. delim $$
Dp $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ $dx
sub n$ $dy sub n$\n
Draw a polygon with, for $i = 1 ,..., n+1$, the i-
th vertex at the current position $+ sum from j=1
to i-1 ( dx sub j , dy sub j )$. At the moment,
GNU pic only uses this command to generate trian-
gles and rectangles.
DP $dx sub 1$ $dy sub 1$ $dx sub 2$ $dy sub 2$ $...$ $dx
sub n$ $dy sub n$\n
Like Dp but draw a solid rather than outlined poly-
Dt n\n Set the current line thickness to n machine units.
Traditionally Unix troff drivers use a line thick-
ness proportional to the current point size;
drivers should continue to do this if no Dt command
has been given, or if a Dt command has been given
with a negative value of n. A zero value of n
selects the smallest available line thickness.
A difficulty arises in how the current position should be
changed after the execution of these commands. This is
not of great importance since the code generated by GNU
pic does not depend on this. Given a drawing command of
\D'c $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$
$x sub n$ $y sub n$'
where c is not one of c, e, l, a or ~, Unix troff will
Groff Version 1.15 9 April 2000 2
treat each of the $x sub i$ as a horizontal quantity, and
each of the $y sub i$ as a vertical quantity and will
assume that the width of the drawn object is $sum from i=1
to n x sub i$, and that the height is $sum from i=1 to n y
sub i$. (The assumption about the height can be seen by
examining the st and sb registers after using such a D
command in a \w escape sequence.) This rule also holds
for all the original drawing commands with the exception
of De. For the sake of compatibility GNU troff also fol-
lows this rule, even though it produces an ugly result in
the case of the Df, Dt, and, to a lesser extent, DE com-
mands. Thus after executing a D command of the form
Dc $x sub 1$ $y sub 1$ $x sub 2$ $y sub 2$ $...$ $x
sub n$ $y sub n$\n
the current position should be increased by $( sum from
i=1 to n x sub i , sum from i=1 to n y sub i )$.
There is a continuation convention which permits the argu-
ment to the x X command to contain newlines: when out-
putting the argument to the x X command, GNU troff will
follow each newline in the argument with a + character (as
usual, it will terminate the entire argument with a new-
line); thus if the line after the line containing the x X
command starts with +, then the newline ending the line
containing the x X command should be treated as part of
the argument to the x X command, the + should be ignored,
and the part of the line following the + should be treated
like the part of the line following the x X command.
Groff Version 1.15 9 April 2000 3