---
name: "cfdg"
section: "1"
platform: "linux"
package: "contextfree"
version: "3.4.2+dfsg-1+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cfdg"
---

# cfdg(1)

image generator based on context-free grammars

## NAME

cfdg - image generator based on context-free grammars

## SYNOPSIS

**cfdg** \[*options*\] *input.cfdg* \[*output.png/svg/mov*\]

## DESCRIPTION

Context Free is a system that produces images based on context-free grammars. **cfdg** is the command-line program to generate the actual images (in PNG or SVG format) from the *input.cfdg* file containing these grammars.  Cfdg files can also be animated. The output can either be PNG files of individual frames or as a QuickTime .mov file. If *-* is specified instead of an input file, the grammar is read from standard input. The output filename can be left out if the **-o/--outputtemplate** option or **-C/--check** option is used.  If the  **--display** option is specified and there is no output file then the output is saved in a temporary file. Note that the output mode (PNG, SVG, or MOV) is not detected depending on the specified extension, but must be explicitly set using the **-V/--svg** or  **-Q/--quicktime** option.

## OPTIONS

All command-line options consist of a single letter, and an optional argument. Longer "GNU-style" options exist as well. A summary of options supported by **cfdg** is included below.

- **-w** *WIDTH***, --width=***WIDTH*

  Set width of the output image in pixels (for PNG) or millimeters (for SVG) (default: 500).

- **-h** *HEIGHT***, --height=***HEIGHT*

  Set height of the output image in pixels (for PNG) or millimeters (for SVG) (default: 500).

- **-s** *SIZE***, --size=***SIZE*

  Set both width and height of the output image in pixels (for PNG) or millimeters (for SVG) to the same value.

- **-s** *WIDTH***x***HEIGHT***, --size=***WIDTH***x***HEIGHT*

  Set both width and height of the output image in pixels (for PNG) or millimeters (for SVG).

- **-T** *SIZE***, --tile=***SIZE*

  Multiply both width and height of the tiled output image by the same amount.

- **-T** *WIDTH***x***HEIGHT***, --tile=***WIDTH***x***HEIGHT*

  Multiply both width and height of the tiled output image by the given amounts.

- **-m** *MAXSHAPES***, --maxshapes=***MAXSHAPES*

  Set the maximum number of shapes rendered (default: no maximum).

- **-x** *MINIMUMSIZE***, --minimumsize=***MINIMUMSIZE*

  Set the minimum size for a shape to be rendered in pixels/mm (default: 0.3).

- **-b** *BORDERSIZE***, --bordersize=***BORDERSIZE*

  Set the border size: -1 for a -8 pixel border, 0 for no border, 1 for an 8 pixel border, or 2 for a variable-sized border.

- **-v** *VARIATION***, --variation=***VARIATION*

  Set the variation code (default: random).  This code determines what the final image will look like when the input contains non-deterministic rules.

- **-D***NAME***=***VALUE*

  Declare a variable, configuration, or function. Any declaration that can be made at global scope can be entered at the command line with this option. Command line  declarations override any global-scope declarations in the cfdg file with the same name.  Note that function declarations require a space-delimited type identifier in front, so  quotes would be required to force the shell to group the function declaration parts as  one entity.

- **-o** *NAMETEMPLATE***, --outputtemplate=***NAMETEMPLATE*

  Set the output filename.  In this filename, *%f* is replaced by the animation frame number (if any), *%v* and *%V* are replaced by the variation code (in lower or upper case, respectively), and *%%* is replaced by a literal %.

- **-a** *NUM***, --animate=***NUM*

  Generate *NUM* animation frames at 15 fps.

- **-a** *TIME***x***FPS***, --animate=***TIME***x***FPS*

  Generate *TIME* x *FPS* animation frames at the specified fps.

- **-f** *FRAME***, --frame=***FRAME*

  Generate animation  *FRAME* only.

- **-z, --zoom**

  Zoom out during animation, when producing an animation using **-a**.

- **-V, --svg**

  Generate SVG (vector) output.

- **-Q, --quicktime**

  Generate Quicktime movie output.

- **--prores**

  Generate Quicktime movie output using the ProRes codec instead of the H.264 codec.

- **--display=***DISPLAY EXECUTABLE*

  Display output with specified program.

- **-c, --crop**

  Crop image output.

- **-q, --quiet**

  Quiet mode; suppress non-error output.

- **-C, --check**

  Check the syntax of the cfdg file, then exit.

- **-t, --time**

  Time output; output the time taken to render the cfdg file.

- **-d, --cleanup**

  Delete old temporary files.

- **-P, --paramdebug**

  Enable debug mode to test if all parameter blocks are deallocated.

- **-?, --help**

  Show summary of options.

## SEE ALSO

More information can be found on the Context Free website, at https://www.contextfreeart.org/index.html

## AUTHOR

Context Free was written by Chris Coyne, John Horigan and Mark Lentczner.

This manual page was written by Bram Senders \<bram@luon.net\>, for the Debian project (but may be used by others).
