1GROFF(1) General Commands Manual GROFF(1)
2
3
4
6 groff - front-end for the groff document formatting system
7
9 groff [-abcegijklpstzCEGNRSUVXZ] [-d cs] [-D arg] [-f fam] [-F dir]
10 [-I dir] [-K arg] [-L arg] [-m name] [-M dir] [-n num] [-o list]
11 [-P arg] [-r cn] [-T dev] [-w name] [-W name] [file ...]
12
13 groff -h
14 groff --help
15
16 groff -v [option ...]
17 groff --version [option ...]
18
20 This document describes the groff program, the main front-end for the
21 groff document formatting system. The groff program and macro suite is
22 the implementation of a roff(7) system within the free software collec‐
23 tion GNU ⟨http://www.gnu.org⟩. The groff system has all features of
24 the classical roff, but adds many extensions.
25
26 The groff program allows control of the whole groff system by command-
27 line options. This is a great simplification in comparison to the
28 classical case (which uses pipes only).
29
31 The command line is parsed according to the usual GNU convention.
32 Whitespace is permitted between a command-line option and its argument.
33 Options can be grouped behind a single ‘-’ (minus character). A file‐
34 name of - (minus character) denotes the standard input.
35
36 As groff is a wrapper program for troff both programs share a set of
37 options. But the groff program has some additional, native options and
38 gives a new meaning to some troff options. On the other hand, not all
39 troff options can be fed into groff.
40
41 Native groff Options
42 The following options either do not exist for troff or are differently
43 interpreted by groff.
44
45 -D arg Set default input encoding used by preconv to arg. Implies -k.
46
47 -e Preprocess with eqn.
48
49 -g Preprocess with grn.
50
51 -G Preprocess with grap. Implies -p.
52
53 -h
54 --help Print a help message.
55
56 -I dir This option may be used to specify a directory to search for
57 files (both those on the command line and those named in .psbb
58 and .so requests, and \X'ps: import' , \X'ps: file' and \X'pdf:
59 pdfpic' escapes). The current directory is always searched
60 first. This option may be specified more than once; the direc‐
61 tories are searched in the order specified. No directory search
62 is performed for files specified using an absolute path. This
63 option implies the -s option.
64
65 -j Preprocess with chem. Implies -p.
66
67 -k Preprocess with preconv. This is run before any other pre‐
68 processor. Please refer to preconv's manual page for its behav‐
69 iour if no -K (or -D) option is specified.
70
71 -K arg Set input encoding used by preconv to arg. Implies -k.
72
73 -l Send the output to a spooler program for printing. The command
74 that should be used for this is specified by the print command
75 in the device description file, see groff_font(5). If this com‐
76 mand is not present, the output is piped into the lpr(1) program
77 by default. See options -L and -X.
78
79 -L arg Pass arg to the spooler program. Several arguments should be
80 passed with a separate -L option each. Note that groff does not
81 prepend ‘-’ (a minus sign) to arg before passing it to the
82 spooler program.
83
84 -N Don't allow newlines within eqn delimiters. This is the same as
85 the -N option in eqn.
86
87 -p Preprocess with pic.
88
89 -P -option
90 -P -option -P arg
91 Pass -option or -option arg to the postprocessor. The option
92 must be specified with the necessary preceding minus sign(s) ‘-’
93 or ‘--’ because groff does not prepend any dashes before passing
94 it to the postprocessor. For example, to pass a title to the
95 gxditview postprocessor, the shell command
96
97 groff -X -P -title -P 'groff it' foo
98
99 is equivalent to
100
101 groff -X -Z foo | gxditview -title 'groff it' -
102
103 -R Preprocess with refer. No mechanism is provided for passing
104 arguments to refer because most refer options have equivalent
105 language elements that can be specified within the document.
106 See refer(1) for more details.
107
108 -s Preprocess with soelim.
109
110 -S Safer mode. Pass the -S option to pic and disable the following
111 troff requests: .open, .opena, .pso, .sy, and .pi. For security
112 reasons, safer mode is enabled by default.
113
114 -t Preprocess with tbl.
115
116 -T dev Set output device to dev. For this device, troff generates the
117 intermediate output; see groff_out(5). Then groff calls a post‐
118 processor to convert troff's intermediate output to its final
119 format. Real devices in groff are
120
121 dvi TeX DVI format (postprocessor is grodvi).
122
123 html
124 xhtml HTML and XHTML output (preprocessors are soelim
125 and pre-grohtml, postprocessor is post-grohtml).
126
127 lbp Canon CAPSL printers (LBP-4 and LBP-8 series laser
128 printers; postprocessor is grolbp).
129
130 lj4 HP LaserJet4 compatible (or other PCL5 compatible)
131 printers (postprocessor is grolj4).
132
133 ps PostScript output (postprocessor is grops).
134
135 pdf Portable Document Format (PDF) output (postproces‐
136 sor is gropdf).
137
138 For the following TTY output devices (postprocessor is always
139 grotty), -T selects the output encoding:
140
141 ascii 7bit ASCII.
142
143 cp1047 Latin-1 character set for EBCDIC hosts.
144
145 latin1 ISO 8859-1.
146
147 utf8 Unicode character set in UTF-8 encoding. This
148 mode has the most useful fonts for TTY mode, so it
149 is the best mode for TTY output.
150
151 The following arguments select gxditview as the ‘postprocessor’
152 (it is rather a viewing program):
153
154 X75 75dpi resolution, 10pt document base font.
155
156 X75-12 75dpi resolution, 12pt document base font.
157
158 X100 100dpi resolution, 10pt document base font.
159
160 X100-12
161 100dpi resolution, 12pt document base font.
162
163 The default device is ps.
164
165 -U Unsafe mode. Reverts to the (old) unsafe behaviour; see option
166 -S.
167
168 -v
169 --version
170 Output version information of groff and of all programs that are
171 run by it; that is, the given command line is parsed in the
172 usual way, passing -v to all subprograms.
173
174 -V Output the pipeline that would be run by groff (as a wrapper
175 program) on the standard output, but do not execute it. If
176 given more than once, the commands are both printed on the stan‐
177 dard error and run.
178
179 -X Use gxditview instead of using the usual postprocessor to
180 (pre)view a document. The printing spooler behavior as outlined
181 with options -l and -L is carried over to gxditview(1) by deter‐
182 mining an argument for the -printCommand option of gxditview(1).
183 This sets the default Print action and the corresponding menu
184 entry to that value. -X only produces good results with -Tps,
185 -TX75, -TX75-12, -TX100, and -TX100-12. The default resolution
186 for previewing -Tps output is 75dpi; this can be changed by
187 passing the -resolution option to gxditview, for example
188
189 groff -X -P-resolution -P100 -man foo.1
190
191 -z Suppress output generated by troff. Only error messages are
192 printed.
193
194 -Z Do not automatically postprocess groff intermediate output in
195 the usual manner. This will cause the troff output to appear on
196 standard output, replacing the usual postprocessor output; see
197 groff_out(5).
198
199 Transparent Options
200 The following options are transparently handed over to the formatter
201 program troff that is called by groff subsequently. These options are
202 described in more detail in troff(1).
203
204 -a ASCII approximation of output.
205
206 -b Backtrace on error or warning.
207
208 -c Disable color output. Please consult the grotty(1) man page for
209 more details.
210
211 -C Enable compatibility mode.
212
213 -d cs
214 -d name=s
215 Define string.
216
217 -E Disable troff error messages.
218
219 -f fam Set default font family.
220
221 -F dir Set path for device DESC files.
222
223 -i Process standard input after the specified input files.
224
225 -m name
226 Include macro file name.tmac (or tmac.name); see also
227 groff_tmac(5).
228
229 -M dir Path for macro files.
230
231 -n num Number the first page num.
232
233 -o list
234 Output only pages in list.
235
236 -r cn
237 -r name=n
238 Set number register.
239
240 -w name
241 Enable warning name. See troff(1) for names.
242
243 -W name
244 disable warning name. See troff(1) for names.
245
247 The groff system implements the infrastructure of classical roff; see
248 roff(7) for a survey on how a roff system works in general. Due to the
249 front-end programs available within the groff system, using groff is
250 much easier than classical roff. This section gives an overview of the
251 parts that constitute the groff system. It complements roff(7) with
252 groff-specific features. This section can be regarded as a guide to
253 the documentation around the groff system.
254
255 Paper Size
256 The virtual paper size used by troff to format the input is controlled
257 globally with the requests .po, .pl, and .ll. See groff_tmac(5) for
258 the ‘papersize’ macro package which provides a convenient interface.
259
260 The physical paper size, giving the actual dimensions of the paper
261 sheets, is controlled by output devices like grops with the command-
262 line options -p and -l. See groff_font(5) and the man pages of the
263 output devices for more details. groff uses the command-line option -P
264 to pass options to output devices; for example, the following selects
265 A4 paper in landscape orientation for the PS device:
266
267 groff -Tps -P-pa4 -P-l ...
268
269 Front-ends
270 The groff program is a wrapper around the troff(1) program. It allows
271 one to specify the preprocessors by command-line options and automati‐
272 cally runs the postprocessor that is appropriate for the selected
273 device. Doing so, the sometimes tedious piping mechanism of classical
274 roff(7) can be avoided.
275
276 The grog(1) program can be used for guessing the correct groff command
277 line to format a file.
278
279 The groffer(1) program is an all-around viewer for groff files and man
280 pages.
281
282 Preprocessors
283 The groff preprocessors are reimplementations of the classical pre‐
284 processors with moderate extensions. The standard preprocessors dis‐
285 tributed with the groff package are
286
287 eqn(1) for mathematical formulae,
288
289 grn(1) for including gremlin(1) pictures,
290
291 pic(1) for drawing diagrams,
292
293 chem(1)
294 for chemical structure diagrams,
295
296 refer(1)
297 for bibliographic references,
298
299 soelim(1)
300 for including macro files from standard locations,
301
302 and
303
304 tbl(1) for tables.
305
306 A new preprocessor not available in classical troff is preconv(1) which
307 converts various input encodings to something groff can understand. It
308 is always run first before any other preprocessor.
309
310 Besides these, there are some internal preprocessors that are automati‐
311 cally run with some devices. These aren't visible to the user.
312
313 Macro Packages
314 Macro packages can be included by option -m. The groff system imple‐
315 ments and extends all classical macro packages in a compatible way and
316 adds some packages of its own. Actually, the following macro packages
317 come with groff:
318
319 man The traditional man page format; see groff_man(7). It can be
320 specified on the command line as -man or -m man.
321
322 mandoc The general package for man pages; it automatically recognizes
323 whether the documents uses the man or the mdoc format and
324 branches to the corresponding macro package. It can be speci‐
325 fied on the command line as -mandoc or -m mandoc.
326
327 mdoc The BSD-style man page format; see groff_mdoc(7). It can be
328 specified on the command line as -mdoc or -m mdoc.
329
330 me The classical me document format; see groff_me(7). It can be
331 specified on the command line as -me or -m me.
332
333 mm The classical mm document format; see groff_mm(7). It can be
334 specified on the command line as -mm or -m mm.
335
336 ms The classical ms document format; see groff_ms(7). It can be
337 specified on the command line as -ms or -m ms.
338
339 www HTML-like macros for inclusion in arbitrary groff documents; see
340 groff_www(7).
341
342 Details on the naming of macro files and their placement can be found
343 in groff_tmac(5); this man page also documents some other, minor auxil‐
344 iary macro packages not mentioned here.
345
346 Programming Language
347 General concepts common to all roff programming languages are described
348 in roff(7).
349
350 The groff extensions to the classical troff language are documented in
351 groff_diff(7).
352
353 An overview of language features, including all supported escapes and
354 requests, can be found in groff(7).
355
356 Formatters
357 The central roff formatter within the groff system is troff(1). It
358 provides the features of both the classical troff and nroff, as well as
359 the groff extensions. The command-line option -C switches troff into
360 compatibility mode which tries to emulate classical roff as much as
361 possible.
362
363 There is a shell script nroff(1) that emulates the behavior of classi‐
364 cal nroff. It tries to automatically select the proper output encod‐
365 ing, according to the current locale.
366
367 The formatter program generates intermediate output; see groff_out(7).
368
369 Devices
370 In roff, the output targets are called devices. A device can be a
371 piece of hardware, e.g., a printer, or a software file format. A
372 device is specified by the option -T. The groff devices are as fol‐
373 lows.
374
375 ascii Text output using the ascii(7) character set.
376
377 cp1047 Text output using the EBCDIC code page IBM cp1047 (e.g., OS/390
378 Unix).
379
380 dvi TeX DVI format.
381
382 html HTML output.
383
384 latin1 Text output using the ISO Latin-1 (ISO 8859-1) character set;
385 see iso_8859_1(7).
386
387 lbp Output for Canon CAPSL printers (LBP-4 and LBP-8 series laser
388 printers).
389
390 lj4 HP LaserJet4-compatible (or other PCL5-compatible) printers.
391
392 ps PostScript output; suitable for printers and previewers like
393 gv(1).
394
395 pdf PDF files; suitable for viewing with tools such as evince(1) and
396 okular(1).
397
398 utf8 Text output using the Unicode (ISO 10646) character set with
399 UTF-8 encoding; see unicode(7).
400
401 xhtml XHTML output.
402
403 X75 75dpi X Window System output suitable for the previewers
404 xditview(1x) and gxditview(1). A variant for a 12pt document
405 base font is X75-12.
406
407 X100 100dpi X Window System output suitable for the previewers
408 xditview(1x) and gxditview(1). A variant for a 12pt document
409 base font is X100-12.
410
411 The postprocessor to be used for a device is specified by the postpro
412 command in the device description file; see groff_font(5). This can be
413 overridden with the -X option.
414
415 The default device is ps.
416
417 Postprocessors
418 groff provides 3 hardware postprocessors:
419
420 grolbp(1)
421 for some Canon printers,
422
423 grolj4(1)
424 for printers compatible to the HP LaserJet 4 and PCL5,
425
426 grotty(1)
427 for text output using various encodings, e.g., on text-oriented
428 terminals or line printers.
429
430 Today, most printing or drawing hardware is handled by the operating
431 system, by device drivers, or by software interfaces, usually accepting
432 PostScript. Consequently, there isn't an urgent need for more hardware
433 device postprocessors.
434
435 The groff software devices for conversion into other document file for‐
436 mats are
437
438 grodvi(1)
439 for the DVI format,
440
441 grohtml(1)
442 for HTML and XHTML formats,
443
444 grops(1)
445 for PostScript.
446
447 gropdf(1)
448 for PDF.
449
450 Combined with the many existing free conversion tools this should be
451 sufficient to convert a troff document into virtually any existing data
452 format.
453
454 Utilities
455 The following utility programs around groff are available.
456
457 addftinfo(1)
458 Add information to troff font description files for use with
459 groff.
460
461 afmtodit(1)
462 Create font description files for PostScript device.
463
464 eqn2graph(1)
465 Convert an eqn image into a cropped image.
466
467 gdiffmk(1)
468 Mark differences between groff, nroff, or troff files.
469
470 grap2graph(1)
471 Convert a grap diagram into a cropped bitmap image.
472
473 groffer(1)
474 General viewer program for groff files and man pages.
475
476 gxditview(1)
477 The groff X viewer, the GNU version of xditview.
478
479 hpftodit(1)
480 Create font description files for lj4 device.
481
482 indxbib(1)
483 Make inverted index for bibliographic databases.
484
485 lkbib(1)
486 Search bibliographic databases.
487
488 lookbib(1)
489 Interactively search bibliographic databases.
490
491 pdfroff(1)
492 Create PDF documents using groff.
493
494 pfbtops(1)
495 Translate a PostScript font in .pfb format to ASCII.
496
497 pic2graph(1)
498 Convert a pic diagram into a cropped image.
499
500 tfmtodit(1)
501 Create font description files for TeX DVI device.
502
503 xditview(1x)
504 roff viewer historically distributed with the X Window System.
505
506 xtotroff(1)
507 Convert X font metrics into GNU troff font metrics.
508
510 Normally, the path separator in the following environment variables is
511 the colon; this may vary depending on the operating system. For exam‐
512 ple, DOS and Windows use a semicolon instead.
513
514 GROFF_BIN_PATH
515 This search path, followed by PATH, is used for commands that
516 are executed by groff. If it is not set then the directory
517 where the groff binaries were installed is prepended to PATH.
518
519 GROFF_COMMAND_PREFIX
520 When there is a need to run different roff implementations at
521 the same time groff provides the facility to prepend a prefix to
522 most of its programs that could provoke name clashings at run
523 time (default is to have none). Historically, this prefix was
524 the character g, but it can be anything. For example, gtroff
525 stood for groff's troff, gtbl for the groff version of tbl. By
526 setting GROFF_COMMAND_PREFIX to different values, the different
527 roff installations can be addressed. More exactly, if it is set
528 to prefix xxx then groff as a wrapper program internally calls
529 xxxtroff instead of troff. This also applies to the preproces‐
530 sors eqn, grn, pic, refer, tbl, soelim, and to the utilities
531 indxbib and lookbib. This feature does not apply to any pro‐
532 grams different from the ones above (most notably groff itself)
533 since they are unique to the groff package.
534
535 GROFF_ENCODING
536 The value of this environment value is passed to the preconv
537 preprocessor to select the encoding of input files. Setting
538 this option implies groff's command-line option -k (this is,
539 groff actually always calls preconv). If set without a value,
540 groff calls preconv without arguments. An explicit -K command-
541 line option overrides the value of GROFF_ENCODING. See pre‐
542 conv(1) for details.
543
544 GROFF_FONT_PATH
545 A list of directories in which to search for the devname direc‐
546 tory in addition to the default ones. See troff(1) and
547 groff_font(5) for more details.
548
549 GROFF_TMAC_PATH
550 A list of directories in which to search for macro files in
551 addition to the default directories. See troff(1) and
552 groff_tmac(5) for more details.
553
554 GROFF_TMPDIR
555 The directory in which temporary files are created. If this is
556 not set but the environment variable TMPDIR instead, temporary
557 files are created in the directory TMPDIR. On MS-DOS and Win‐
558 dows platforms, the environment variables TMP and TEMP (in that
559 order) are searched also, after GROFF_TMPDIR and TMPDIR. Other‐
560 wise, temporary files are created in /tmp. The refer(1),
561 groffer(1), grohtml(1), and grops(1) commands use temporary
562 files.
563
564 GROFF_TYPESETTER
565 Preset the default device. If this is not set the ps device is
566 used as default. This device name is overwritten by the option
567 -T.
568
570 The following example illustrates the power of the groff program as a
571 wrapper around troff.
572
573 To process a roff file using the preprocessors tbl and pic and the me
574 macro set, classical troff had to be called by
575
576 pic foo.me | tbl | troff -me -Tlatin1 | grotty
577
578 Using groff, this pipe can be shortened to the equivalent command
579
580 groff -p -t -me -T latin1 foo.me
581
582 An even easier way to call this is to use grog(1) to guess the pre‐
583 processor and macro options and execute the generated command (by using
584 backquotes to specify shell command substitution)
585
586 `grog -Tlatin1 foo.me`
587
588 The simplest way is to view the contents in an automated way by calling
589
590 groffer foo.me
591
593 On EBCDIC hosts (e.g., OS/390 Unix), output devices ascii and latin1
594 aren't available. Similarly, output for EBCDIC code page cp1047 is not
595 available on ASCII based operating systems.
596
598 groff installs files in varying locations depending on its compile-time
599 configuration. On this installation, the following locations are used.
600
601 /usr/share/X11/app-defaults
602 Application defaults directory for gxditview(1).
603
604 /usr/bin
605 Directory containing groff's executable commands.
606
607 /usr/share/groff/1.22.4/eign
608 List of common words for indxbib(1).
609
610 /usr/share/groff/1.22.4
611 Directory for data files.
612
613 /usr/dict/papers/Ind
614 Default index for lkbib(1) and refer(1).
615
616 /usr/share/doc/groff
617 Documentation directory.
618
619 /usr/share/doc/groff/examples
620 Example directory.
621
622 /usr/share/groff/1.22.4/font
623 Font directory.
624
625 /usr/share/doc/groff/html
626 HTML documentation directory.
627
628 /usr/lib/font
629 Legacy font directory.
630
631 /etc/groff/site-font
632 Local font directory.
633
634 /etc/groff/site-tmac
635 Local macro package (tmac file) directory.
636
637 /usr/share/groff/1.22.4/tmac
638 Macro package (tmac file) directory.
639
640 /usr/share/groff/1.22.4/oldfont
641 Font directory for compatibility with old versions of groff; see
642 grops(1).
643
644 /usr/share/doc/groff/pdf
645 PDF documentation directory.
646
647 /etc/groff/site-tmac
648 System macro package (tmac file) directory.
649
650 groff Macro Directory
651 This contains all information related to macro packages. Note that
652 more than a single directory is searched for those files as documented
653 in groff_tmac(5). For the groff installation corresponding to this
654 document, it is located at /usr/share/groff/1.22.4/tmac. The following
655 files contained in the groff macro directory have a special meaning:
656
657 troffrc
658 Initialization file for troff. This is interpreted by troff
659 before reading the macro sets and any input.
660
661 troffrc-end
662 Final startup file for troff. It is parsed after all macro sets
663 have been read.
664
665 name.tmac
666 tmac.name
667 Macro file for macro package name.
668
669 groff Font Directory
670 This contains all information related to output devices. Note that
671 more than a single directory is searched for those files; see troff(1).
672 For the groff installation corresponding to this document, it is
673 located at /usr/share/groff/1.22.4/font. The following files contained
674 in the groff font directory have a special meaning:
675
676 devname/DESC
677 Device description file for device name, see groff_font(5).
678
679 devname/F
680 Font file for font F of device name.
681
683 Information on how to get groff and related information is available at
684 the groff page of the GNU website ⟨http://www.gnu.org/software/groff⟩.
685
686 Three groff mailing lists are available:
687
688 bug tracker activity (read-only) ⟨bug-groff@gnu.org⟩;
689
690 general discussion ⟨groff@gnu.org⟩; and
691
692 commit activity (read-only) ⟨groff-commit@gnu.org⟩, which
693 reports changes to groff's source code repository by its devel‐
694 opers.
695
696 Details on repository access and much more can be found in the file
697 README at the top directory of the groff source package.
698
699 A free implementation of the grap preprocessor, written by Ted Faber
700 ⟨faber@lunabase.org⟩, can be found at the grap website ⟨http://
701 www.lunabase.org/~faber/Vault/software/grap/⟩. This is the only grap
702 supported by groff.
703
705 groff was written by James Clark ⟨jjc@jclark.com⟩. This document was
706 rewritten, enhanced, and put under the FDL license in 2002 by Bernd
707 Warken ⟨groff-bernd.warken-72@web.de⟩.
708
710 Groff: The GNU Implementation of troff, by Trent A. Fisher and Werner
711 Lemberg, is the primary groff manual. You can browse it interactively
712 with “info groff”.
713
714 Due to its complex structure, the groff system has many man pages.
715 They can be read with man(1) or groffer(1).
716
717 But there are special sections of man pages. groff has man pages in
718 sections 1, 5,and 7. When there are several man pages with the same
719 name in the same man section, the one with the lowest section is should
720 as first. The other man pages can be shown anyway by adding the sec‐
721 tion number as argument before the man page name. Reading the man page
722 about the groff language is done by one of
723 man 7 groff
724 groffer 7 groff
725
726 Introduction, history and further readings:
727 roff(7).
728
729 Viewer for groff files:
730 groffer(1), gxditview(1), xditview(1x).
731
732 Wrapper programs for formatters:
733 groff(1), grog(1).
734
735 Roff preprocessors:
736 eqn(1), grn(1), pic(1), chem(1), preconv(1), refer(1),
737 soelim(1), tbl(1), grap(1).
738
739 Roff language with the groff extensions:
740 groff(7), groff_char(7), groff_diff(7), groff_font(5).
741
742 Roff formatter programs:
743 nroff(1), troff(1), ditroff(7).
744
745 The intermediate output language:
746 groff_out(7).
747
748 Postprocessors for the output devices:
749 grodvi(1), grohtml(1), grolbp(1), grolj4(1), lj4_font(5),
750 grops(1), gropdf(1), grotty(1).
751
752 Groff macro packages and macro-specific utilities:
753 groff_tmac(5), groff_man(7), groff_mdoc(7), groff_me(7),
754 groff_mm(7), groff_mmse(7), groff_mom(7), groff_ms(7),
755 groff_www(7), groff_trace(7), mmroff(7).
756
757 The following utilities are available:
758 addftinfo(1), afmtodit(1), eqn2graph(1), gdiffmk(1),
759 grap2graph(1), groffer(1), gxditview(1), hpftodit(1),
760 indxbib(1), lkbib(1), lookbib(1), pdfroff(1), pfbtops(1),
761 pic2graph(1), tfmtodit(1), xtotroff(1).
762
763
764
765groff 1.22.4 3 November 2020 GROFF(1)