FIGLET(6) FIGLET(6) NAME figlet - print in large characters made up of ordinary screen characters SYNOPSIS figlet [ -clnptvDEF ] [ -m smushmode ] [ -w outputwidth ] [ -d fontdirectory ] [ -f fontfile ] DESCRIPTION figlet prints its input using large characters made up of ordinary screen characters. figlet output is generally reminiscent of the sort of ``signatures'' many people like to put at the end of e-mail and UseNet messages, and is oriented normally, not sideways as in many banner pro- grams. figlet can print in a variety of fonts, with adjacent characters ``smushed'' together in various ways. figlet fonts are stored in separate files, which can be identi- fied by the suffix ``.flf''. figlet Most figlet font files will be stored in figlet's default font directory. USAGE Just start up figlet (type ``figlet'') and then type what- ever you want. Alternatively, pipe a file or the output of another command through figlet. See EXAMPLES for other things to do. OPTIONS figlet reads command line options from left to right, and only the last option that affects a parameter has any effect. Every option (except -v and -F) has an inverse, so that, for example, if figlet is customized with a C- shell alias, all the options are still available. -c -l -c centers the output horizontally. -l puts it back to left-justified (default). -d fontdirectory Change the default font directory. figlet looks for fonts first in the default directory and then in the current directory. If the -d option is not specified, figlet uses the directory that was spec- ified when it was compiled. To find out which directory this is, use the -F option. -f fontfile Select the font. The .flf suffix may be left off of fontfile, in which case figlet automatically appends it. figlet looks for the file first in the v2.0 9 August 1993 1 FIGLET(6) FIGLET(6) default font directory and then in the current directory, or, if fontfile was given as a full pathname, in the given directory. -w outputwidth Sets the outputwidth to the given integer. figlet uses the outputwidth to determine when to break lines and how to center the output. Normally, figlet assumes 80 columns so that people with wide terminals won't annoy the people they e-mail figlet output to. -w and -t override each other. -m smushmode Specifies how figlet should ``smush'' consecutive characters together. This option is rarely needed, as a figlet font file specifies the best smushmode to use with the font. smushmode can be one of: -2 Get mode from font file (default). Every figlet font file specifies the best smushmode to use with the font. This will be one of the following smushmodes (-1 through 63). -1 No smushing. Characters are simply concatenated together. In any non-negative smushmode figlet pushes adjacent font characters together until their non-blank portions touch. At that point, it may or may not push the two font characters 1 screen character closer, depending on the smushmode. Pushing font characters one step closer requires ``smush- ing'' two non-blank screen characters into a single screen character. figlet has 6 ways of doing this, represented by 1, 2, 4, 8, 16 and 32. The various non-negative smushmodes (0-63) are obtained by adding up the numbers corresponding to the sort of smushing figlet should do. 1 Smush equal characters. Two screen characters are smushed into a single character if they are the same. The resulting character is the same as both of the original characters. This mode does not smush the character known as a hardblank, which is a character that prints as a blank, but is not smushed (except in mode 32). See FONT FILE FORMAT for more information on hardblanks. v2.0 9 August 1993 2 FIGLET(6) FIGLET(6) 2 Smush underscores. An underscore will be smushed into (and replaced by) any of ``|/\[]{}()<>''. 4 Hierarchy smushing. Smushes certain characters together accord- ing to a hierarchy containing 6 classes: ``|'', ``/\'', ``[]'', ``{}'', ``()'', ``<>''. A member of any class can be smushed into and replaced by a member of any later class. 8 Opposite pair smushing, type I. Smushes opposing brackets (``[]''), braces (``{}'') and parentheses (``()'') together, replacing them with a vertical bar (`|'). 16 Opposite pair smushing, type II. Smushes opposing slashes (``/\'') and less- than/greater-than (``<>'') together, replac- ing them with an upper-case `X'. 32 Hardblank smushing. Smushes two hardblanks together, replacing them with a single hardblank. See FONT FILE FORMAT for more information on hardblanks. -p -n -p puts figlet into paragraph mode, which elimi- nates some spurious line breaks when piping a multi-line file through figlet. In paragraph mode, figlet treats line breaks within a paragraph as if they were merely blanks between words. (Specifi- cally, -p causes figlet to convert any newline which is not preceded by a newline and not followed by a space character into a blank.) -n puts figlet back to normal (default), in which every newline figlet reads causes it to produce a line break. -t Sets the outputwidth to the terminal width. If the terminal width is not known, the previous out- putwidth is retained. figlet uses the outputwidth to determine when to break lines and how to center the output. Normally, figlet assumes 80 columns so that people with wide terminals won't annoy the people they e-mail figlet output to. -w and -t override each other. -v Prints out the version and copyright information, then exits. -D -E -D switches to the German (Deutsch) character set. Turns `[', `\' and `]' into umlauted A, O and U, v2.0 9 August 1993 3 FIGLET(6) FIGLET(6) respectively. `{', `|' and `}' turn into the respective lower case versions of these. `~' turns into s-z. -E switches back to English (default). No other character sets are currently supported. -F Displays the name of the default font and the default font directory, along with the names of the figlet fonts in the default directory, then exits. (This will reflect any change of the default direc- tory with the -d option, as long as -d is given before the -F). EXAMPLES To use figlet with its default settings, simply type example% figlet and then type whatever you like. Use the -c option if you would prefer centered output: example% figlet -c To change the font, use the -f option, for example, example% figlet -f script To see what fonts are available in the default font direc- tory, use -F: example% figlet -F We have found the most common usage of figlet to be making up large text to be placed in e-mail messages. For this reason, figlet defaults to 80 column output. If you are using a wider terminal, and would like figlet to use the full width of your terminal, use the -t option: example% figlet -t If figlet gets its input from a file, it is often a good idea to use -p: example% figlet -p < myfile Of course, most of the above can be combined: example% figlet -ptf shadow < anotherfile v2.0 9 August 1993 4 FIGLET(6) FIGLET(6) example% figlet -cf slant Other Things to Try On many systems nice effects can be obtained from the lean font by piping it through tr. Some you might want to try are the following: example% figlet -f lean | tr ' _/' ' ()' example% figlet -f lean | tr ' _/' './\\' example% figlet -f lean | tr ' _/' ' //' example% figlet -f lean | tr ' _/' '/ ' Similar things can be done with the block font. FONT FILE FORMAT If you would like to design a figlet font, it is usually best to begin with an already-existing font. Except for the first line of a font file, most of the file format should be obvious. If you design a font, please let us know about it! (See AUTHORS for e-mail addresses.) A figlet font filename must have the suffix ``.flf''. A figlet font file begins with a header. The header con- sists of one line giving information about the font, fol- lowed by zero or more comment lines, which figlet ignores. Following the header is the font data. The Header The first line of a figlet font file is of the following form: flf2ahardblank height up_ht maxlen smushmode cmt_count for example: flf2a$ 6 5 20 15 1 The first five characters of a font file should be ``flf2a''. ``flf2'' is the magic number of a figlet 2 font file. The next character (`a') is currently ignored. It may mean something in future versions of figlet. If/when it does, you can be sure your fonts will still work if this character is `a'. Immediately following this is the hardblank (character). Note that there are no blanks between ``flf2a'' and the hardblank. figlet can smush together consecutive charac- ters in various ways. Normally, any character can be smushed into a blank. A hardblank prints as a blank, but v2.0 9 August 1993 5 FIGLET(6) FIGLET(6) cannot be smushed into any character except a blank, and, if smushmode 32 is enabled, another hardblank. (For exam- ple, the `r' in script.flf contains a hardblank, `$' in that font. To see why this is necessary, create a copy of script.flf with this hardblank replaced by a blank. In this new font, the ``tr'' combination looks awful.) By convention, the hardblank is a `$', but it can be any character besides blank, newline and null. If you want the entire printing ASCII set available to use, make the hardblank a character. Then comes the height (integer). This is the number of screen lines high that each character in the font is. up_ht (integer) is the number of lines from the baseline of a character to the top of the character, i.e., it is the height of a character, ignoring any descenders. This number is currently ignored by figlet, but future versions may use it. maxlen (integer) is the maximum length of a line in the font file (excluding the first line and the comments lines, which can be as long as you want). You are free to make this a little (or alot) too large as a safety mea- sure. As an added safety measure, figlet adds a fudge factor to maxlen. smushmode (integer) determines how much figlet smushes the font. Possible smushmodes are -1 through 63. Typically, you'll want to use -1 (no smushing), 0 (push font charac- ters together until they touch) or 15 (smush various pairs of characters together into single characters). To try out different smushmodes with your font, use the -m com- mand-line option. See OPTIONS for a more detailed expla- nation of these smushmodes. (Note that a smushmode of -2 can be given on the command line, but not in a font file.) Between the first line and the actual characters of the font are the comment lines. Cmt_count specifies how many lines there are. These lines are optional, may be as long as you want, and are ignored by figlet. Thus, a complete figlet font file header will look some- thing like the following: flf2a$ 6 5 20 15 1 Example by Glenn Chappell 7/93 The Font Data The font data begins on the next line after the comments and continues to the end of the file. The characters from ` ' to `~' are given in standard ASCII order, followed by v2.0 9 August 1993 6 FIGLET(6) FIGLET(6) the extra German characters: umlauted `A', `O', `U', `a', `o' and `u' and s-z. Each character uses height lines, where height was given on the first line of the font file. The characters in the file are given exactly as they should be printed out, with two exceptions: (1) hardblanks should be the hardblank character, not a blank, and (2) every line has an endmark character. In most figlet fonts, the endmark is either `@' or '#'. figlet eliminates the last block of consecutive equal characters from each line (other than the header lines) when the file is read in. By convention, the last line of a font character has 2 endmarks, while all the rest have one. This makes it easy to see where characters begin and end. No line should have more than 2 endmarks. It is very important that every character in a font has the same height, and, once the endmarks are removed, that all the lines constituting a single font character have the same length. Be careful also that no lines in the font file have trailing blanks, as figlet will take these to be the endmarks. If you don't want to define all the characters, make the undefined characters empty, i.e., each line of the charac- ter should consist only of an endmark. The blank character should usually be made entirely of hardblanks. (Some slanted fonts are an exception.) Again, if you design a font, please let us know! FILES file.flf figlet font file DIAGNOSTICS figlet's diagnostics are intended to be self-explanatory. Possible messages are Usage: ... Out of memory Unable to open font file Not a Figlet 2 font file Unable to open directory "-t" is disabled, since ioctl is not fully implemented. This last message is printed when the -t option is given, but the operating system in use does not include the sys- tem call figlet uses to determine the terminal width. v2.0 9 August 1993 7 FIGLET(6) FIGLET(6) ORIGIN ``figlet'' stands for ``Frank, Ian and Glenn's LETters''. Inspired by Frank's Most of the figlet fonts were inspired by signatures on various UseNet articles. Since typically hundreds of peo- ple use the same style of letters in their signatures, it was not deemed necessary to give credit to any one font designer. BUGS Very little error checking is done on font files. While figlet tries to be forgiving of errors, and should (hope- fully) never actually crash, using an improperly-formatted font file with figlet will produce unpredictable output. figlet does not handle formatting characters in a very intelligent way. A tab character is converted to a blank, and vertical-tab, form-feed and carriage-return are each converted to a newline. On many systems, tabs can be han- dled better by piping files through expand before piping through figlet. figlet output is quite ugly if it is displayed in a pro- portionally-spaced font. I suppose this is to be expected. AUTHORS Glenn Chappell did most of the work. You can e-mail him but he is not an e-mail fanatic... people who email Glenn will probably get answers, but if you email his best friend: Ian Chai (or figlet@uiuc.edu), who is an e-mail fanatic, you'll get answers, endless conversa- tion about the mysteries of life, invitations to join some 473 mailing lists and a free toaster. (Well, ok, maybe not the free toaster.) Frank inspired this whole project with his .sig, but don't email him... he's decidedly an un-email-fanatic. v2.0 9 August 1993 8