Graphics Commands (The GNU Troff Manual)

#### 6.1.2.3 Graphics Commands

Each graphics or drawing command in the intermediate output starts with the letter ‘`D`’, followed by one or two characters that specify a subcommand; this is followed by a fixed or variable number of integer arguments that are separated by a single space character. A ‘`D`’ command may not be followed by another command on the same line (apart from a comment), so each ‘`D`’ command is terminated by a syntactical line break.

`gtroff` output follows the classical spacing rules (no space between command and subcommand, all arguments are preceded by a single space character), but the parser allows optional space between the command letters and makes the space before the first argument optional. As usual, each space can be any sequence of tab and space characters.

Some graphics commands can take a variable number of arguments. In this case, they are integers representing a size measured in basic units ‘`u`’. The arguments called h1, h2, …, hn stand for horizontal distances where positive means right, negative left. The arguments called v1, v2, …, vn stand for vertical distances where positive means down, negative up. All these distances are offsets relative to the current location.

Each graphics command directly corresponds to a similar `gtroff` `\D` escape sequence. See Drawing Geometric Objects.

Unknown ‘`D`’ commands are assumed to be device-specific. Its arguments are parsed as strings; the whole information is then sent to the postprocessor.

In the following command reference, the syntax element ‹line break› means a syntactical line break as defined above.

`D~ h1 v1 h2 v2 … hn vn‹line break›`

  Draw B-spline from current position to offset (h1,v1), then to offset (h2,v2), if given, etc., up to (hn,vn). This command takes a variable number of argument pairs; the current position is moved to the terminal point of the drawn curve.

`Da h1 v1 h2 v2‹line break›`

  Draw arc from current position to (h1,v1)+(h2,v2) with center at (h1,v1); then move the current position to the final point of the arc.

`DC d‹line break›`
`DC d dummy-arg‹line break›`

  Draw a solid circle using the current fill color with diameter d (integer in basic units ‘`u`’) with leftmost point at the current position; then move the current position to the rightmost point of the circle. An optional second integer argument is ignored (this allows the formatter to generate an even number of arguments). This command is a `gtroff` extension.

`Dc d‹line break›`

  Draw circle line with diameter d (integer in basic units ‘`u`’) with leftmost point at the current position; then move the current position to the rightmost point of the circle.

`DE h v‹line break›`

  Draw a solid ellipse in the current fill color with a horizontal diameter of h and a vertical diameter of v (both integers in basic units ‘`u`’) with the leftmost point at the current position; then move to the rightmost point of the ellipse. This command is a `gtroff` extension.

`De h v‹line break›`

  Draw an outlined ellipse with a horizontal diameter of h and a vertical diameter of v (both integers in basic units ‘`u`’) with the leftmost point at current position; then move to the rightmost point of the ellipse.

`DF color-scheme [component …]‹line break›`

  Set fill color for solid drawing objects using different color schemes; the analogous command for setting the color of text, line graphics, and the outline of graphic objects is ‘`m`’. The color components are specified as integer arguments between 0 and 65535. The number of color components and their meaning vary for the different color schemes. These commands are generated by `gtroff`’s escape sequences ‘`\D'F …'`’ and `\M` (with no other corresponding graphics commands). No position changing. This command is a `gtroff` extension.

  `DFc cyan magenta yellow‹line break›`

    Set fill color for solid drawing objects using the CMY color scheme, having the 3 color components cyan, magenta, and yellow.

  `DFd‹line break›`

    Set fill color for solid drawing objects to the default fill color value (black in most cases). No component arguments.

  `DFg gray‹line break›`

    Set fill color for solid drawing objects to the shade of gray given by the argument, an integer between 0 (black) and 65535 (white).

  `DFk cyan magenta yellow black‹line break›`

    Set fill color for solid drawing objects using the CMYK color scheme, having the 4 color components cyan, magenta, yellow, and black.

  `DFr red green blue‹line break›`

    Set fill color for solid drawing objects using the RGB color scheme, having the 3 color components red, green, and blue.

`Df n‹line break›`

  The argument n must be an integer in the range -32767 to 32767.

  0 ≤ n ≤ 1000

    Set the color for filling solid drawing objects to a shade of gray, where 0 corresponds to solid white, 1000 (the default) to solid black, and values in between to intermediate shades of gray; this is obsoleted by command ‘`DFg`’.

  n < 0 or n > 1000

    Set the filling color to the color that is currently being used for the text and the outline, see command ‘`m`’. For example, the command sequence

        mg 0 0 65535
        Df -1

    sets all colors to blue.

  No position changing. This command is a `gtroff` extension.

`Dl h v‹line break›`

  Draw line from current position to offset (h,v) (integers in basic units ‘`u`’); then set current position to the end of the drawn line.

`Dp h1 v1 h2 v2 … hn vn‹line break›`

  Draw a polygon line from current position to offset (h1,v1), from there to offset (h2,v2), etc., up to offset (hn,vn), and from there back to the starting position. For historical reasons, the position is changed by adding the sum of all arguments with odd index to the actual horizontal position and the even ones to the vertical position. Although this doesn’t make sense it is kept for compatibility. This command is a `gtroff` extension.

`DP h1 v1 h2 v2 … hn vn‹line break›`

  Draw a solid polygon in the current fill color rather than an outlined polygon, using the same arguments and positioning as the corresponding ‘`Dp`’ command. This command is a `gtroff` extension.

`Dt n‹line break›`

  Set the current line thickness to n (an integer in basic units ‘`u`’) if n>0; if n=0 select the smallest available line thickness; if n<0 set the line thickness proportional to the type size (this is the default before the first ‘`Dt`’ command was specified). For historical reasons, the horizontal position is changed by adding the argument to the actual horizontal position, while the vertical position is not changed. Although this doesn’t make sense it is kept for compatibility. This command is a `gtroff` extension.