diff options
Diffstat (limited to 'contrib/groff/doc/groff-5')
-rw-r--r-- | contrib/groff/doc/groff-5 | 1327 |
1 files changed, 0 insertions, 1327 deletions
diff --git a/contrib/groff/doc/groff-5 b/contrib/groff/doc/groff-5 deleted file mode 100644 index 2130766..0000000 --- a/contrib/groff/doc/groff-5 +++ /dev/null @@ -1,1327 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Line Control, Next: Page Layout, Prev: Line Layout, Up: gtroff Reference - -Line Control -============ - - It is important to understand how `gtroff' handles input and output -lines. - - Many escapes use positioning relative to the input line. For -example, this - - - This is a \h'|1.2i'test. - - This is a - \h'|1.2i'test. - -produces - - - This is a test. - - This is a test. - - The main usage of this feature is to define macros which act exactly -at the place where called. - - - .\" A simple macro to underline a word - .de underline - . nop \\$1\l'|0\[ul]' - .. - -In the above example, `|0' specifies a negative distance from the -current position (at the end of the just emitted argument `\$1') back -to the beginning of the input line. Thus, the `\l' escape draws a line -from right to left. - - `gtroff' makes a difference between input and output line -continuation; the latter is also called "interrupting" a line. - - - Escape: \<RET> - - Escape: \c - - Register: \n[.int] - Continue a line. `\<RET>' (this is a backslash at the end of a - line immediately followed by a newline) works on the input level, - suppressing the effects of the following newline in the input. - - - This is a \ - .test - => This is a .test - - The `|' operator is also affected. - - `\c' works on the output level. Anything after this escape on the - same line is ignored, except `\R' which works as usual. Anything - before `\c' on the same line will be appended to the current - partial output line. The next non-command line after an - interrupted line counts as a new input line. - - The visual results depend on whether no-fill mode is active. - - * If no-fill mode is active (using the `nf' request), the next - input text line after `\c' will be handled as a continuation - of the same input text line. - - - .nf - This is a \c - test. - => This is a test. - - * If fill mode is active (using the `fi' request), a word - interrupted with `\c' will be continued with the text on the - next input text line, without an intervening space. - - - This is a te\c - st. - => This is a test. - - - Note that an intervening control line which causes a break is - stronger than `\c', flushing out the current partial line in the - usual way. - - The `.int' register contains a positive value if the last output - line was interrupted with `\c'; this is associated with the - current environment (*note Environments::). - - - -File: groff, Node: Page Layout, Next: Page Control, Prev: Line Control, Up: gtroff Reference - -Page Layout -=========== - - `gtroff' provides some very primitive operations for controlling -page layout. - - - Request: .pl [length] - - Request: .pl +length - - Request: .pl -length - - Register: \n[.p] - Set the "page length" to LENGTH (or increment or decrement the - current value by LENGTH). This is the length of the physical - output page. The default scaling indicator is `v'. - - The current setting can be found in the read-only number register - `.p'. - - Note that this only specifies the size of the page, not the top and - bottom margins. Those are not set by `gtroff' directly. *Note - Traps::, for further information on how to do this. - - Negative `pl' values are possible also, but not very useful: No - trap is sprung, and each line is output on a single page (thus - suppressing all vertical spacing). - - If no argument or an invalid argument is given, `pl' sets the page - length to 11i. - - `gtroff' provides several operations which help in setting up top -and bottom titles (or headers and footers). - - - Request: .tl 'left'center'right' - Print a "title line". It consists of three parts: a left - justified portion, a centered portion, and a right justified - portion. The argument separator `'' can be replaced with any - character not occurring in the title line. The `%' character is - replaced with the current page number. This character can be - changed with the `pc' request (see below). - - Without argument, `tl' is ignored. - - Some notes: - - * A title line is not restricted to the top or bottom of a page. - - * `tl' prints the title line immediately, ignoring a partially - filled line (which stays untouched). - - * It is not an error to omit closing delimiters. For example, - `.tl /foo' is equivalent to `.tl /foo///': It prints a title - line with the left justified word `foo'; the centered and - right justfied parts are empty. - - * `tl' accepts the same parameter delimiting characters as the - `\A' escape; see *Note Escapes::. - - - Request: .lt [length] - - Request: .lt +length - - Request: .lt -length - - Register: \n[.lt] - The title line is printed using its own line length, which is - specified (or incremented or decremented) with the `lt' request. - Initially, the title line length is set to 6.5i. If a negative - line length is specified (which is not allowed), `gtroff' emits a - warning of type `range' and sets the title line length to zero. - The default scaling indicator is `m'. If `lt' is called without - an argument, the title length is reset to the previous value - before the last call to `lt'. - - The current setting of this is available in the `.lt' read-only - number register; it is associated with the current environment - (*note Environments::). - - - - Request: .pn page - - Request: .pn +page - - Request: .pn -page - - Register: \n[.pn] - Change (increase or decrease) the page number of the _next_ page. - The only argument is the page number; the request is ignored - without a parameter. - - The read-only number register `.pn' contains the number of the next - page: either the value set by a `pn' request, or the number of the - current page plus 1. - - - Register: \n[%] - A read-write register holding the current page number. - - - Request: .pc [char] - Change the page number character (used by the `tl' request) to a - different character. With no argument, this mechanism is disabled. - Note that this doesn't affect the number register `%'. - - *Note Traps::. - - -File: groff, Node: Page Control, Next: Fonts and Symbols, Prev: Page Layout, Up: gtroff Reference - -Page Control -============ - - - Request: .bp [page] - - Request: .bp +page - - Request: .bp -page - Stop processing the current page and move to the next page. This - request causes a break. It can also take an argument to set - (increase, decrease) the page number of the next page. The only - difference between `bp' and `pn' is that `pn' does not cause a - break or actually eject a page. - - - .de newpage \" define macro - 'bp \" begin page - 'sp .5i \" vertical space - .tl 'left top'center top'right top' \" title - 'sp .3i \" vertical space - .. \" end macro - - `bp' has no effect if not called within the top-level diversion - (*note Diversions::). - - The number register `.pe' is set to 1 while `bp' is active. *Note - Page Location Traps::. - - - Request: .ne [space] - It is often necessary to force a certain amount of space before a - new page occurs. This is most useful to make sure that there is - not a single "orphan" line left at the bottom of a page. The `ne' - request ensures that there is a certain distance, specified by the - first argument, before the next page is triggered (see *Note - Traps::, for further information). The default scaling indicator - for `ne' is `v'; the default value of SPACE is 1v if no argument - is given. - - For example, to make sure that no fewer than 2 lines get orphaned, - do the following before each paragraph: - - - .ne 2 - text text text - - `ne' will then automatically cause a page break if there is space - for one line only. - - - Request: .sv [space] - - Request: .os - `sv' is similar to the `ne' request; it reserves the specified - amount of vertical space. If the desired amount of space exists - before the next trap (or the bottom page boundary if no trap is - set), the space is output immediately (ignoring a partially filled - line which stays untouched). If there is not enough space, it is - stored for later output via the `os' request. The default value - is 1v if no argument is given; the default scaling indicator is - `v'. - - Both `sv' and `os' ignore no-space mode. While the `sv' request - allows negative values for SPACE, `os' will ignore them. - - - Register: \n[nl] - This register contains the current vertical position. If the - vertical position is zero and the top of page transition hasn't - happened yet, `nl' is set to negative value. `gtroff' itself does - this at the very beginning of a document before anything has been - printed, but the main usage is to plant a header trap on a page if - this page has already started. - - Consider the following: - - - .de xxx - . sp - . tl ''Header'' - . sp - .. - . - First page. - .bp - .wh 0 xxx - .nr nl (-1) - Second page. - - Result: - - - First page. - - ... - - Header - - Second page. - - ... - - Without resetting `nl' to a negative value, the just planted trap - would be active beginning with the _next_ page, not the current - one. - - *Note Diversions::, for a comparison with the `.h' and `.d' - registers. - - -File: groff, Node: Fonts and Symbols, Next: Sizes, Prev: Page Control, Up: gtroff Reference - -Fonts and Symbols -================= - - `gtroff' can switch fonts at any point in the text. - - The basic set of fonts is `R', `I', `B', and `BI'. These are Times -Roman, Italic, Bold, and Bold Italic. For non-TTY devices, there is -also at least one symbol font which contains various special symbols -(Greek, mathematics). - -* Menu: - -* Changing Fonts:: -* Font Families:: -* Font Positions:: -* Using Symbols:: -* Special Fonts:: -* Artificial Fonts:: -* Ligatures and Kerning:: - - -File: groff, Node: Changing Fonts, Next: Font Families, Prev: Fonts and Symbols, Up: Fonts and Symbols - -Changing Fonts --------------- - - - Request: .ft [font] - - Escape: \ff - - Escape: \f(fn - - Escape: \f[font] - The `ft' request and the `\f' escape change the current font to - FONT (one-character name F, two-character name FN). - - If FONT is a style name (as set with the `sty' request or with the - `styles' command in the `DESC' file), use it within the current - font family (as set with the `fam' request, `\F' escape, or with - the `family' command in the `DESC' file). - - With no argument or using `P' as an argument, `.ft' switches to - the previous font. Use `\f[]' to do this with the escape. The - old syntax forms `\fP' or `\f[P]' are also supported. - - Fonts are generally specified as upper-case strings, which are - usually 1 to 4 characters representing an abbreviation or acronym - of the font name. This is no limitation, just a convention. - - The example below produces two identical lines. - - - eggs, bacon, - .ft B - spam - .ft - and sausage. - - eggs, bacon, \fBspam\fP and sausage. - - Note that `\f' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font on the fly: - - - .mc \f[I]x\f[] - - *Note Font Positions::, for an alternative syntax. - - - Request: .ftr f [g] - Translate font F to font G. Whenever a font named F is referred - to in a `\f' escape sequence, or in the `ft', `ul', `bd', `cs', - `tkf', `special', `fspecial', `fp', or `sty' requests, font G is - used. If G is missing or equal to F the translation is undone. - - -File: groff, Node: Font Families, Next: Font Positions, Prev: Changing Fonts, Up: Fonts and Symbols - -Font Families -------------- - - Due to the variety of fonts available, `gtroff' has added the -concept of "font families" and "font styles". The fonts are specified -as the concatenation of the font family and style. Specifying a font -without the family part causes `gtroff' to use that style of the -current family. - - Currently, fonts for the devices `-Tps', `-Tdvi', and `-Tlbp' are -set up to this mechanism. By default, `gtroff' uses the Times family -with the four styles `R', `I', `B', and `BI'. - - This way, it is possible to use the basic four fonts and to select a -different font family on the command line (*note Groff Options::). - - - Request: .fam [family] - - Register: \n[.fam] - - Escape: \Ff - - Escape: \F(fm - - Escape: \F[family] - - Register: \n[.fn] - Switch font family to FAMILY (one-character name F, two-character - name FM). If no argument is given, switch back to the previous - font family. Use `\F[]' to do this with the escape. Note that - `\FP' doesn't work; it selects font family `P' instead. - - The value at start-up is `T'. The current font family is - available in the read-only number register `.fam' (this is a - string-valued register); it is associated with the current - environment. - - - spam, - .fam H \" helvetica family - spam, \" used font is family H + style R = HR - .ft B \" family H + style B = font HB - spam, - .fam T \" times family - spam, \" used font is family T + style B = TB - .ft AR \" font AR (not a style) - baked beans, - .ft R \" family T + style R = font TR - and spam. - - Note that `\F' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font family on the - fly: - - - .mc \F[P]x\F[] - - The `.fn' register contains the current "real font name" of the - current font. This is a string-valued register. If the current - font is a style, the value of `\n[.fn]' is the proper - concatenation of family and style name. - - - Request: .sty n style - Associate STYLE with font position N. A font position can be - associated either with a font or with a style. The current font - is the index of a font position and so is also either a font or a - style. If it is a style, the font that is actually used is the - font which name is the concatenation of the name of the current - family and the name of the current style. For example, if the - current font is 1 and font position 1 is associated with style `R' - and the current font family is `T', then font `TR' will be used. - If the current font is not a style, then the current family is - ignored. If the requests `cs', `bd', `tkf', `uf', or `fspecial' - are applied to a style, they will instead be applied to the member - of the current family corresponding to that style. - - N must be a non-negative integer value. - - The default family can be set with the `-f' option (*note Groff - Options::). The `styles' command in the `DESC' file controls - which font positions (if any) are initially associated with styles - rather than fonts. For example, the default setting for - POSTSCRIPT fonts - - - styles R I B BI - - is equivalent to - - - .sty 1 R - .sty 2 I - .sty 3 B - .sty 4 BI - - `fam' and `\F' always check whether the current font position is - valid; this can give surprising results if the current font - position is associated with a style. - - In the following example, we want to access the POSTSCRIPT font - `FooBar' from the font family `Foo': - - - .sty \n[.fp] Bar - .fam Foo - => warning: can't find font `FooR' - - The default font position at start-up is 1; for the POSTSCRIPT - device, this is associated with style `R', so `gtroff' tries to - open `FooR'. - - A solution to this problem is to use a dummy font like the - following: - - - .fp 0 dummy TR \" set up dummy font at position 0 - .sty \n[.fp] Bar \" register style `Bar' - .ft 0 \" switch to font at position 0 - .fam Foo \" activate family `Foo' - .ft Bar \" switch to font `FooBar' - - *Note Font Positions::. - - -File: groff, Node: Font Positions, Next: Using Symbols, Prev: Font Families, Up: Fonts and Symbols - -Font Positions --------------- - - For the sake of old phototypesetters and compatibility with old -versions of `troff', `gtroff' has the concept of font "positions", on -which various fonts are mounted. - - - Request: .fp pos font [external-name] - - Register: \n[.f] - - Register: \n[.fp] - Mount font FONT at position POS (which must be a non-negative - integer). This numeric position can then be referred to with font - changing commands. When `gtroff' starts it is using font - position 1 (which must exist; position 0 is unused usually at - start-up). - - The current font in use, as a font position, is available in the - read-only number register `.f'. This can be useful to remember the - current font for later recall. It is associated with the current - environment (*note Environments::). - - - .nr save-font \n[.f] - .ft B - ... text text text ... - .ft \n[save-font] - - The number of the next free font position is available in the - read-only number register `.fp'. This is useful when mounting a - new font, like so: - - - .fp \n[.fp] NEATOFONT - - Fonts not listed in the `DESC' file are automatically mounted on - the next available font position when they are referenced. If a - font is to be mounted explicitly with the `fp' request on an unused - font position, it should be mounted on the first unused font - position, which can be found in the `.fp' register. Although - `gtroff' does not enforce this strictly, it is not allowed to - mount a font at a position whose number is much greater (approx. - 1000 positions) than that of any currently used position. - - The `fp' request has an optional third argument. This argument - gives the external name of the font, which is used for finding the - font description file. The second argument gives the internal - name of the font which is used to refer to the font in `gtroff' - after it has been mounted. If there is no third argument then the - internal name is used as the external name. This feature makes it - possible to use fonts with long names in compatibility mode. - - Both the `ft' request and the `\f' escape have alternative syntax -forms to access font positions. - - - Request: .ft nnn - - Escape: \fn - - Escape: \f(nn - - Escape: \f[nnn] - Change the current font position to NNN (one-digit position N, - two-digit position NN), which must be a non-negative integer. - - If NNN is associated with a style (as set with the `sty' request - or with the `styles' command in the `DESC' file), use it within - the current font family (as set with the `fam' request, the `\F' - escape, or with the `family' command in the `DESC' file). - - - this is font 1 - .ft 2 - this is font 2 - .ft \" switch back to font 1 - .ft 3 - this is font 3 - .ft - this is font 1 again - - *Note Changing Fonts::, for the standard syntax form. - - -File: groff, Node: Using Symbols, Next: Special Fonts, Prev: Font Positions, Up: Fonts and Symbols - -Using Symbols -------------- - - A "glyph" is a graphical representation of a "character". While a -character is an abstract entity containing semantic information, a -glyph is something which can be actually seen on screen or paper. It -is possible that a character has multiple glyph representation forms -(for example, the character `A' can be either written in a roman or an -italic font, yielding two different glyphs); sometimes more than one -character maps to a single glyph (this is a "ligature" - the most -common is `fi'). - - A "symbol" is simply a named glyph. Within `gtroff', all glyph -names of a particular font are defined in its font file. If the user -requests a glyph not available in this font, `gtroff' looks up an -ordered list of "special fonts". By default, the POSTSCRIPT output -device supports the two special fonts `SS' (slanted symbols) and `S' -(symbols) (the former is looked up before the latter). Other output -devices use different names for special fonts. Fonts mounted with the -`fonts' keyword in the `DESC' file are globally available. To install -additional special fonts locally (i.e. for a particular font), use the -`fspecial' request. - - Here the exact rules how `gtroff' searches a given symbol: - - * If the symbol has been defined with the `char' request, use it. - This hides a symbol with the same name in the current font. - - * Check the current font. - - * If the symbol has been defined with the `fchar' request, use it. - - * Check whether the current font has a font-specific list of special - fonts; test all fonts in the order of appearance in the last - `fspecial' call if appropriate. - - * If the symbol has been defined with the `fschar' request for the - current font, use it. - - * Check all fonts in the order of appearance in the last `special' - call. - - * If the symbol has been defined with the `schar' request, use it. - - * As a last resort, consult all fonts loaded up to now for special - fonts and check them, starting with the lowest font number. Note - that this can sometimes lead to surprising results since the - `fonts' line in the `DESC' file often contains empty positions - which are filled later on. For example, consider the following: - - - fonts 3 0 0 FOO - - This mounts font `foo' at font position 3. We assume that `FOO' - is a special font, containing glyph `foo', and that no font has - been loaded yet. The line - - - .fspecial BAR BAZ - - makes font `BAZ' special only if font `BAR' is active. We further - assume that `BAZ' is really a special font, i.e., the font - description file contains the `special' keyword, and that it also - contains glyph `foo' with a special shape fitting to font `BAR'. - After executing `fspecial', font `BAR' is loaded at font - position 1, and `BAZ' at position 2. - - We now switch to a new font `XXX', trying to access glyph `foo' - which is assumed to be missing. There are neither font-specific - special fonts for `XXX' nor any other fonts made special with the - `special' request, so `gtroff' starts the search for special fonts - in the list of already mounted fonts, with increasing font - positions. Consequently, it finds `BAZ' before `FOO' even for - `XXX' which is not the intended behaviour. - - *Note Font Files::, and *Note Special Fonts::, for more details. - - The list of available symbols is device dependent; see the -`groff_char(7)' man page for a complete list of all glyphs. For -example, say - - - man -Tdvi groff_char > groff_char.dvi - -for a list using the default DVI fonts (not all versions of the `man' -program support the `-T' option). If you want to use an additional -macro package to change the used fonts, `groff' must be called directly: - - - groff -Tdvi -mec -man groff_char.7 > groff_char.dvi - - Glyph names not listed in groff_char(7) are derived algorithmically, -using a simplified version of the Adobe Glyph List (AGL) algorithm -described in -`http://partners.adobe.com/asn/developer/typeforum/unicodegn.html'. -The (frozen) set of glyph names which can't be derived algorithmically -is called "groff glyph list (GGL)". - - * A glyph for Unicode character U+XXXX[X[X]] which is not a - composite character will be named `uXXXX[X[X]]'. X must be an - uppercase hexadecimal digit. Examples: `u1234', `u008E', - `u12DB8'. The largest Unicode value is 0x10FFFF. There must be at - least four `X' digits; if necessary, add leading zeroes (after the - `u'). No zero padding is allowed for character codes greater than - 0xFFFF. Surrogates (i.e., Unicode values greater than 0xFFFF - represented with character codes from the surrogate area - U+D800-U+DFFF) are not allowed too. - - * A glyph representing more than a single input character will be - named - - `u' COMPONENT1 `_' COMPONENT2 `_' COMPONENT3 ... - - Example: `u0045_0302_0301'. - - For simplicity, all Unicode characters which are composites must be - decomposed maximally (this is normalization form D in the Unicode - standard); for example, `u00CA_0301' is not a valid glyph name - since U+00CA (LATIN CAPITAL LETTER E WITH CIRCUMFLEX) can be - further decomposed into U+0045 (LATIN CAPITAL LETTER E) and U+0302 - (COMBINING CIRCUMFLEX ACCENT). `u0045_0302_0301' is thus the - glyph name for U+1EBE, LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND - ACUTE. - - * groff maintains a table to decompose all algorithmically derived - glyph names which are composites itself. For example, `u0100' - (LATIN LETTER A WITH MACRON) will be automatically decomposed into - `u0041_0304'. Additionally, a glyph name of the GGL is preferred - to an algorithmically derived glyph name; groff also automatically - does the mapping. Example: The glyph `u0045_0302' will be mapped - to `^E'. - - * glyph names of the GGL can't be used in composite glyph names; for - example, `^E_u0301' is invalid. - - - Escape: \(nm - - Escape: \[name] - - Escape: \[component1 component2 ...] - Insert a symbol NAME (two-character name NM) or a composite glyph - with component glyphs COMPONENT1, COMPONENT2, .... There is no - special syntax for one-character names - the natural form `\N' - would collide with escapes.(1) (*note Using Symbols-Footnote-1::) - - If NAME is undefined, a warning of type `char' is generated, and - the escape is ignored. *Note Debugging::, for information about - warnings. - - groff resolves `\[...]' with more than a single component as - follows: - - * Any component which is found in the GGL will be converted to - the `uXXXX' form. - - * Any component `uXXXX' which is found in the list of - decomposable glyphs will be decomposed. - - * The resulting elements are then concatenated with `_' - inbetween, dropping the leading `u' in all elements but the - first. - - No check for the existence of any component (similar to `tr' - request) will be done. - - Examples: - - `\[A ho]' - `A' maps to `u0041', `ho' maps to `u02DB', thus the final - glyph name would be `u0041_02DB'. Note this is not the - expected result: The ogonek glyph `ho' is a spacing ogonek, - but for a proper composite a non-spacing ogonek (U+0328) is - necessary. Looking into the file `composite.tmac' one can - find `.composite ho u0328' which changes the mapping of `ho' - while a composite glyph name is constructed, causing the - final glyph name to be `u0041_0328'. - - `\[^E u0301]' - `\[^E aa]' - `\[E a^ aa]' - `\[E ^ ']' - `^E' maps to `u0045_0302', thus the final glyph name is - `u0045_0302_0301' in all forms (assuming proper calls of the - `composite' request). - - It is not possible to define glyphs with names like `A ho' within - a groff font file. This is not really a limitation; instead, you - have to define `u0041_0328'. - - - Escape: \C'xxx' - Typeset the glyph named XXX.(2) (*note Using Symbols-Footnote-2::) - Normally it is more convenient to use `\[XXX]', but `\C' has the - advantage that it is compatible with newer versions of AT&T - `troff' and is available in compatibility mode. - - - Request: .composite from to - Map glyph name FROM to glyph name TO if it is used in `\[...]' - with more than one component. See above for examples. - - This mapping is based on glyph names only; no check for the - existence of either glyph is done. - - A set of default mappings for many accents can be found in the file - `composite.tmac' which is loaded at start-up. - - - Escape: \N'n' - Typeset the glyph with code N in the current font (`n' is *not* - the input character code). The number N can be any non-negative - decimal integer. Most devices only have glyphs with codes between - 0 and 255; the Unicode output device uses codes in the range - 0-65535. If the current font does not contain a glyph with that - code, special fonts are _not_ searched. The `\N' escape sequence - can be conveniently used in conjunction with the `char' request: - - - .char \[phone] \f[ZD]\N'37' - - The code of each glyph is given in the fourth column in the font - description file after the `charset' command. It is possible to - include unnamed glyphs in the font description file by using a - name of `---'; the `\N' escape sequence is the only way to use - these. - - No kerning is applied to glyphs accessed with `\N'. - - Some escape sequences directly map onto special glyphs. - - - Escape: \' - This is a backslash followed by the apostrophe character, ASCII - character `0x27' (EBCDIC character `0x7D'). The same as `\[aa]', - the acute accent. - - - Escape: \` - This is a backslash followed by ASCII character `0x60' (EBCDIC - character `0x79' usually). The same as `\[ga]', the grave accent. - - - Escape: \- - This is the same as `\[-]', the minus sign in the current font. - - - Request: .cflags n c1 c2 ... - Input characters and symbols have certain properties associated - with it.(3) (*note Using Symbols-Footnote-3::) These properties - can be modified with the `cflags' request. The first argument is - the sum of the desired flags and the remaining arguments are the - characters or symbols to have those properties. It is possible to - omit the spaces between the characters or symbols. - - `1' - The character ends sentences (initially characters `.?!' have - this property). - - `2' - Lines can be broken before the character (initially no - characters have this property). - - `4' - Lines can be broken after the character (initially the - character `-' and the symbols `\[hy]' and `\[em]' have this - property). - - `8' - The character overlaps horizontally (initially the symbols - `\[ul]', `\[rn]', `\[ru]', `\[radicalex', and `\[sqrtex]' - have this property). - - `16' - The character overlaps vertically (initially symbol `\[br]' - has this property). - - `32' - An end-of-sentence character followed by any number of - characters with this property is treated as the end of a - sentence if followed by a newline or two spaces; in other - words the character is "transparent" for the purposes of - end-of-sentence recognition - this is the same as having a - zero space factor in TeX (initially characters `"')]*' and - the symbols `\[dg]' and `\[rq]' have this property). - - - Request: .char g [string] - - Request: .fchar g [string] - - Request: .fschar f g [string] - - Request: .schar g [string] - Define a new glyph G to be STRING (which can be empty).(4) (*note - Using Symbols-Footnote-4::) Every time glyph G needs to be - printed, STRING is processed in a temporary environment and the - result is wrapped up into a single object. Compatibility mode is - turned off and the escape character is set to `\' while STRING is - being processed. Any emboldening, constant spacing or track - kerning is applied to this object rather than to individual - characters in STRING. - - A glyph defined by these requests can be used just like a normal - glyph provided by the output device. In particular, other - characters can be translated to it with the `tr' or `trin' - requests; it can be made the leader character by the `lc' request; - repeated patterns can be drawn with the glyph using the `\l' and - `\L' escape sequences; words containing the glyph can be - hyphenated correctly if the `hcode' request is used to give the - glyph's symbol a hyphenation code. - - There is a special anti-recursion feature: Use of `g' within the - glyph's definition is handled like normal characters and symbols - not defined with `char'. - - Note that the `tr' and `trin' requests take precedence if `char' - accesses the same symbol. - - - .tr XY - X - => Y - .char X Z - X - => Y - .tr XX - X - => Z - - The `fchar' request defines a fallback glyph: `gtroff' only checks - for glyphs defined with `fchar' if it cannot find the glyph in the - current font. `gtroff' carries out this test before checking - special fonts. - - `fschar' defines a fallback glyph for font F: `gtroff' checks for - glyphs defined with `fschar' after the list of fonts declared as - font-specific special fonts with the `fspecial' request, but - before the list of fonts declared as global special fonts with the - `special' request. - - Finally, the `schar' request defines a global fallback glyph: - `gtroff' checks for glyphs defined with `schar' after the list of - fonts declared as global special fonts with the `special' request, - but before the already mounted special fonts. - - *Note Using Symbols::, for a detailed description of the glyph - searching mechanism in `gtroff'. - - - Request: .rchar c1 c2 ... - - Request: .rfschar f c1 c2 ... - Remove the definitions of glyphs C1, C2, .... This undoes the - effect of a `char', `fchar', or `schar' request. - - It is possible to omit the whitespace between arguments. - - The request `rfschar' removes glyph definitions defined with - `fschar' for glyph f. - - *Note Special Characters::. - - -File: groff, Node: Using Symbols-Footnotes, Up: Using Symbols - - (1) Note that a one-character symbol is not the same as an input -character, i.e., the character `a' is not the same as `\[a]'. By -default, `groff' defines only a single one-character symbol, `\[-]'; it -is usually accessed as `\-'. On the other hand, `gtroff' has the -special feature that `\[charXXX]' is the same as the input character -with character code XXX. For example, `\[char97]' is identical to the -letter `a' if ASCII encoding is active. - - (2) `\C' is actually a misnomer since it accesses an output glyph. - - (3) Note that the output glyphs themselves don't have such -properties. For `gtroff', a glyph is a numbered box with a given -width, depth, and height, nothing else. All manipulations with the -`cflags' request work on the input level. - - (4) `char' is a misnomer since an output glyph is defined. - - -File: groff, Node: Special Fonts, Next: Artificial Fonts, Prev: Using Symbols, Up: Fonts and Symbols - -Special Fonts -------------- - - Special fonts are those that `gtroff' searches when it cannot find -the requested glyph in the current font. The Symbol font is usually a -special font. - - `gtroff' provides the following two requests to add more special -fonts. *Note Using Symbols::, for a detailed description of the glyph -searching mechanism in `gtroff'. - - Usually, only non-TTY devices have special fonts. - - - Request: .special [s1 s2 ...] - - Request: .fspecial f [s1 s2 ...] - Use the `special' request to define special fonts. Initially, this - list is empty. - - Use the `fspecial' request to designate special fonts only when - font F is active. Initially, this list is empty. - - Previous calls to `special' or `fspecial' are overwritten; without - arguments, the particular list of special fonts is set to empty. - Special fonts are searched in the order they appear as arguments. - - All fonts which appear in a call to `special' or `fspecial' are - loaded. - - *Note Using Symbols::, for the exact search order of glyphs. - - -File: groff, Node: Artificial Fonts, Next: Ligatures and Kerning, Prev: Special Fonts, Up: Fonts and Symbols - -Artificial Fonts ----------------- - - There are a number of requests and escapes for artificially creating -fonts. These are largely vestiges of the days when output devices did -not have a wide variety of fonts, and when `nroff' and `troff' were -separate programs. Most of them are no longer necessary in GNU -`troff'. Nevertheless, they are supported. - - - Escape: \H'height' - - Escape: \H'+height' - - Escape: \H'-height' - - Register: \n[.height] - Change (increment, decrement) the height of the current font, but - not the width. If HEIGHT is zero, restore the original height. - Default scaling indicator is `z'. - - The read-only number register `.height' contains the font height as - set by `\H'. - - Currently, only the `-Tps' device supports this feature. - - Note that `\H' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font on the fly: - - - .mc \H'+5z'x\H'0' - - In compatibility mode, `gtroff' behaves differently: If an - increment or decrement is used, it is always taken relative to the - current point size and not relative to the previously selected font - height. Thus, - - - .cp 1 - \H'+5'test \H'+5'test - - prints the word `test' twice with the same font height (five - points larger than the current font size). - - - Escape: \S'slant' - - Register: \n[.slant] - Slant the current font by SLANT degrees. Positive values slant to - the right. Only integer values are possible. - - The read-only number register `.slant' contains the font slant as - set by `\S'. - - Currently, only the `-Tps' device supports this feature. - - Note that `\S' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font on the fly: - - - .mc \S'20'x\S'0' - - This request is incorrectly documented in the original UNIX troff - manual; the slant is always set to an absolute value. - - - Request: .ul [lines] - The `ul' request normally underlines subsequent lines if a TTY - output device is used. Otherwise, the lines are printed in italics - (only the term `underlined' is used in the following). The single - argument is the number of input lines to be underlined; with no - argument, the next line is underlined. If LINES is zero or - negative, stop the effects of `ul' (if it was active). Requests - and empty lines do not count for computing the number of underlined - input lines, even if they produce some output like `tl'. Lines - inserted by macros (e.g. invoked by a trap) do count. - - At the beginning of `ul', the current font is stored and the - underline font is activated. Within the span of a `ul' request, - it is possible to change fonts, but after the last line affected by - `ul' the saved font is restored. - - This number of lines still to be underlined is associated with the - current environment (*note Environments::). The underline font - can be changed with the `uf' request. - - The `ul' request does not underline spaces. - - - Request: .cu [lines] - The `cu' request is similar to `ul' but underlines spaces as well - (if a TTY output device is used). - - - Request: .uf font - Set the underline font (globally) used by `ul' and `cu'. By - default, this is the font at position 2. FONT can be either a - non-negative font position or the name of a font. - - - Request: .bd font [offset] - - Request: .bd font1 font2 [offset] - - Register: \n[.b] - Artificially create a bold font by printing each glyph twice, - slightly offset. - - Two syntax forms are available. - - * Imitate a bold font unconditionally. The first argument - specifies the font to embolden, and the second is the number - of basic units, minus one, by which the two glyphs are - offset. If the second argument is missing, emboldening is - turned off. - - FONT can be either a non-negative font position or the name - of a font. - - OFFSET is available in the `.b' read-only register if a - special font is active; in the `bd' request, its default unit - is `u'. - - * Imitate a bold form conditionally. Embolden FONT1 by OFFSET - only if font FONT2 is the current font. This command can be - issued repeatedly to set up different emboldening values for - different current fonts. If the second argument is missing, - emboldening is turned off for this particular current font. - - This affects special fonts only (either set up with the - `special' command in font files or with the `fspecial' - request). - - - Request: .cs font [width [em-size]] - Switch to and from "constant glyph space mode". If activated, the - width of every glyph is WIDTH/36 ems. The em size is given - absolutely by EM-SIZE; if this argument is missing, the em value - is taken from the current font size (as set with the `ps' request) - when the font is effectively in use. Without second and third - argument, constant glyph space mode is deactivated. - - Default scaling indicator for EM-SIZE is `z'; WIDTH is an integer. - - -File: groff, Node: Ligatures and Kerning, Prev: Artificial Fonts, Up: Fonts and Symbols - -Ligatures and Kerning ---------------------- - - Ligatures are groups of characters that are run together, i.e, -producing a single glyph. For example, the letters `f' and `i' can -form a ligature `fi' as in the word `file'. This produces a cleaner -look (albeit subtle) to the printed output. Usually, ligatures are not -available in fonts for TTY output devices. - - Most POSTSCRIPT fonts support the fi and fl ligatures. The C/A/T -typesetter that was the target of AT&T `troff' also supported `ff', -`ffi', and `ffl' ligatures. Advanced typesetters or `expert' fonts may -include ligatures for `ft' and `ct', although GNU `troff' does not -support these (yet). - - Only the current font is checked for ligatures and kerns; neither -special fonts nor entities defined with the `char' request (and its -siblings) are taken into account. - - - Request: .lg [flag] - - Register: \n[.lg] - Switch the ligature mechanism on or off; if the parameter is - non-zero or missing, ligatures are enabled, otherwise disabled. - Default is on. The current ligature mode can be found in the - read-only number register `.lg' (set to 1 or 2 if ligatures are - enabled, 0 otherwise). - - Setting the ligature mode to 2 enables the two-character ligatures - (fi, fl, and ff) and disables the three-character ligatures (ffi - and ffl). - - "Pairwise kerning" is another subtle typesetting mechanism that -modifies the distance between a glyph pair to improve readability. In -most cases (but not always) the distance is decreased. Typewriter-like -fonts and fonts for terminals where all glyphs have the same width -don't use kerning. - - - Request: .kern [flag] - - Register: \n[.kern] - Switch kerning on or off. If the parameter is non-zero or missing, - enable pairwise kerning, otherwise disable it. The read-only - number register `.kern' is set to 1 if pairwise kerning is enabled, - 0 otherwise. - - If the font description file contains pairwise kerning information, - glyphs from that font are kerned. Kerning between two glyphs can - be inhibited by placing `\&' between them: `V\&A'. - - *Note Font File Format::. - - "Track kerning" expands or reduces the space between glyphs. This -can be handy, for example, if you need to squeeze a long word onto a -single line or spread some text to fill a narrow column. It must be -used with great care since it is usually considered bad typography if -the reader notices the effect. - - - Request: .tkf f s1 n1 s2 n2 - Enable track kerning for font F. If the current font is F the - width of every glyph is increased by an amount between N1 and N2 - (N1, N2 can be negative); if the current point size is less than - or equal to S1 the width is increased by N1; if it is greater than - or equal to S2 the width is increased by N2; if the point size is - greater than or equal to S1 and less than or equal to S2 the - increase in width is a linear function of the point size. - - The default scaling indicator is `z' for S1 and S2, `p' for N1 and - N2. - - Note that the track kerning amount is added even to the rightmost - glyph in a line; for large values it is thus recommended to - increase the line length by the same amount to compensate it. - - Sometimes, when typesetting letters of different fonts, more or less -space at such boundaries are needed. There are two escapes to help -with this. - - - Escape: \/ - Increase the width of the preceding glyph so that the spacing - between that glyph and the following glyph is correct if the - following glyph is a roman glyph. For example, if an italic `f' - is immediately followed by a roman right parenthesis, then in many - fonts the top right portion of the `f' overlaps the top left of - the right parenthesis. Use this escape sequence whenever an - italic glyph is immediately followed by a roman glyph without any - intervening space. This small amount of space is also called - "italic correction". - - - - Escape: \, - Modify the spacing of the following glyph so that the spacing - between that glyph and the preceding glyph is correct if the - preceding glyph is a roman glyph. Use this escape sequence - whenever a roman glyph is immediately followed by an italic glyph - without any intervening space. In analogy to above, this space - could be called "left italic correction", but this term isn't used - widely. - - - - Escape: \& - Insert a zero-width character, which is invisible. Its intended - use is to stop interaction of a character with its surrounding. - - * It prevents the insertion of extra space after an - end-of-sentence character. - - - Test. - Test. - => Test. Test. - Test.\& - Test. - => Test. Test. - - * It prevents interpretation of a control character at the - beginning of an input line. - - - .Test - => warning: `Test' not defined - \&.Test - => .Test - - * It prevents kerning between two glyphs. - - * It is needed to map an arbitrary character to nothing in the - `tr' request (*note Character Translations::). - - - Escape: \) - This escape is similar to `\&' except that it behaves like a - character declared with the `cflags' request to be transparent for - the purposes of an end-of-sentence character. - - Its main usage is in macro definitions to protect against arguments - starting with a control character. - - - .de xxx - \)\\$1 - .. - .de yyy - \&\\$1 - .. - This is a test.\c - .xxx ' - This is a test. - =>This is a test.' This is a test. - This is a test.\c - .yyy ' - This is a test. - =>This is a test.' This is a test. - - - -File: groff, Node: Sizes, Next: Strings, Prev: Fonts and Symbols, Up: gtroff Reference - -Sizes -===== - - `gtroff' uses two dimensions with each line of text, type size and -vertical spacing. The "type size" is approximately the height of the -tallest glyph.(1) (*note Sizes-Footnote-1::) "Vertical spacing" is the -amount of space `gtroff' allows for a line of text; normally, this is -about 20% larger than the current type size. Ratios smaller than this -can result in hard-to-read text; larger than this, it spreads the text -out more vertically (useful for term papers). By default, `gtroff' -uses 10 point type on 12 point spacing. - - The difference between type size and vertical spacing is known, by -typesetters, as "leading" (this is pronounced `ledding'). - -* Menu: - -* Changing Type Sizes:: -* Fractional Type Sizes:: - - -File: groff, Node: Sizes-Footnotes, Up: Sizes - - (1) This is usually the parenthesis. Note that in most cases the -real dimensions of the glyphs in a font are _not_ related to its type -size! For example, the standard POSTSCRIPT font families `Times -Roman', `Helvetica', and `Courier' can't be used together at 10pt; to -get acceptable output, the size of `Helvetica' has to be reduced by one -point, and the size of `Courier' must be increased by one point. - |