1186 lines
44 KiB
Plaintext
1186 lines
44 KiB
Plaintext
This is groff, produced by makeinfo version 4.2 from ./groff.texinfo.
|
||
|
||
This manual documents GNU `troff' version 1.18.
|
||
|
||
Copyright (C) 1994-2000, 2001, 2002 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 Miscellaneous
|
||
START-INFO-DIR-ENTRY
|
||
* Groff: (groff). The GNU troff document formatting system.
|
||
END-INFO-DIR-ENTRY
|
||
|
||
|
||
File: groff, Node: Page Control, Next: Fonts, 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::).
|
||
|
||
- 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, Next: Sizes, Prev: Page Control, Up: gtroff Reference
|
||
|
||
Fonts
|
||
=====
|
||
|
||
`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, Up: Fonts
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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.
|
||
|
||
In summary, `gtroff' tries the following to find 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 all fonts given with the `fspecial' request, in the order of
|
||
appearance in `fspecial' calls.
|
||
|
||
* Check all fonts given with the `special' request, in the order of
|
||
appearance in `special' calls (inclusively the special fonts
|
||
defined in the `DESC' file, which come first).
|
||
|
||
* As a last resort, consult all fonts loaded up to now (in the order
|
||
they have been called the first time) for special fonts and check
|
||
them.
|
||
|
||
*Note Font Files::, and *Note Special Fonts::, for more details.
|
||
|
||
- Escape: \(NM
|
||
- Escape: \[NAME]
|
||
Insert a symbol NAME (two-character name NM). 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.
|
||
|
||
The list of available symbols is device dependent; see the
|
||
`groff_char(7)' man page for a complete list for the given output
|
||
device. 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
|
||
|
||
|
||
- 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.
|
||
|
||
- 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.
|
||
|
||
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' 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\(rq' have this property).
|
||
|
||
- Request: .char g [string]
|
||
- Request: .fchar 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 this request 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.
|
||
|
||
- Request: .rchar c1 c2 ...
|
||
Remove the definitions of glyphs C1, C2, .... This undoes the
|
||
effect of a `char' or `fchar' request.
|
||
|
||
It is possible to omit the whitespace between arguments.
|
||
|
||
*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
|
||
|
||
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. They are
|
||
appended to the list of global special fonts in the given order.
|
||
The first entries in this list are the fonts defined with the
|
||
`fonts' command in the `DESC' file which are marked as special in
|
||
the corresponding font description files.
|
||
|
||
Use the `fspecial' request to designate special fonts only when
|
||
font F font is active. They are appended to the list of special
|
||
fonts for F in the given order. Initially, this list is empty.
|
||
|
||
|
||
File: groff, Node: Artificial Fonts, Next: Ligatures and Kerning, Prev: Special Fonts, Up: Fonts
|
||
|
||
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'
|
||
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'.
|
||
|
||
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'
|
||
Slant the current font by SLANT degrees. Positive values slant to
|
||
the right.
|
||
|
||
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
|
||
|
||
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).
|
||
|
||
- 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, 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.
|
||
|
||
|
||
File: groff, Node: Changing Type Sizes, Next: Fractional Type Sizes, Prev: Sizes, Up: Sizes
|
||
|
||
Changing Type Sizes
|
||
-------------------
|
||
|
||
- Request: .ps [size]
|
||
- Request: .ps +size
|
||
- Request: .ps -size
|
||
- Escape: \sSIZE
|
||
- Register: \n[.s]
|
||
Use the `ps' request or the `\s' escape to change (increase,
|
||
decrease) the type size (in points). Specify SIZE as either an
|
||
absolute point size, or as a relative change from the current size.
|
||
The size 0, or no argument, goes back to the previous size.
|
||
|
||
Default scaling indicator of `size' is `z'. If `size' is zero or
|
||
negative, it is set to 1u.
|
||
|
||
The read-only number register `.s' returns the point size in
|
||
points as a decimal fraction. This is a string. To get the point
|
||
size in scaled points, use the `.ps' register instead.
|
||
|
||
`.s' is associated with the current environment (*note
|
||
Environments::).
|
||
|
||
|
||
snap, snap,
|
||
.ps +2
|
||
grin, grin,
|
||
.ps +2
|
||
wink, wink, \s+2nudge, nudge,\s+8 say no more!
|
||
.ps 10
|
||
|
||
The `\s' escape may be called in a variety of ways. Much like
|
||
other escapes there must be a way to determine where the argument
|
||
ends and the text begins. Any of the following forms are valid:
|
||
|
||
`\sN'
|
||
Set the point size to N points. N must be either 0 or in the
|
||
range 4 to 39.
|
||
|
||
`\s+N'
|
||
`\s-N'
|
||
Increase or decrease the point size by N points. N must be
|
||
exactly one digit.
|
||
|
||
`\s(NN'
|
||
Set the point size to NN points. NN must be exactly two
|
||
digits.
|
||
|
||
`\s+(NN'
|
||
`\s-(NN'
|
||
`\s(+NN'
|
||
`\s(-NN'
|
||
Increase or decrease the point size by NN points. NN must be
|
||
exactly two digits.
|
||
|
||
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]
|
||
|
||
*Note Fractional Type Sizes::, for yet another syntactical form of
|
||
using the `\s' escape.
|
||
|
||
- Request: .sizes s1 s2 ... sn [0]
|
||
Some devices may only have certain permissible sizes, in which case
|
||
`gtroff' rounds to the nearest permissible size. The `DESC' file
|
||
specifies which sizes are permissible for the device.
|
||
|
||
Use the `sizes' request to change the permissible sizes for the
|
||
current output device. Arguments are in scaled points; the
|
||
`sizescale' line in the `DESC' file for the output device provides
|
||
the scaling factor. For example, if the scaling factor is 1000,
|
||
then the value 12000 is 12 points.
|
||
|
||
Each argument can be a single point size (such as `12000'), or a
|
||
range of sizes (such as `4000-72000'). You can optionally end the
|
||
list with a zero.
|
||
|
||
- Request: .vs [space]
|
||
- Request: .vs +space
|
||
- Request: .vs -space
|
||
- Register: \n[.v]
|
||
Change (increase, decrease) the vertical spacing by SPACE. The
|
||
default scaling indicator is `p'.
|
||
|
||
If `vs' is called without an argument, the vertical spacing is
|
||
reset to the previous value before the last call to `vs'.
|
||
|
||
`gtroff' creates a warning of type `range' if SPACE is zero or
|
||
negative; the vertical spacing is then set to the vertical
|
||
resolution (as given in the `.V' register).
|
||
|
||
The read-only number register `.v' contains the current vertical
|
||
spacing; it is associated with the current environment (*note
|
||
Environments::).
|
||
|
||
The effective vertical line spacing consists of four components.
|
||
|
||
* The vertical line spacing as set with the `vs' request.
|
||
|
||
* The "post-vertical line spacing" as set with the `pvs' request.
|
||
This is vertical space which will be added after a line has been
|
||
output.
|
||
|
||
* The "extra pre-vertical line space" as set with the `\x' request,
|
||
using a negative value. This is vertical space which will be
|
||
added once before the current line has been output.
|
||
|
||
* The "extra post-vertical line space" as set with the `\x' request,
|
||
using a positive value. This is vertical space which will be
|
||
added once after the current line has been output.
|
||
|
||
It is usually better to use `vs' or `pvs' instead of `ls' to produce
|
||
double-spaced documents: `vs' and `pvs' have a finer granularity for
|
||
the inserted vertical space compared to `ls'; furthermore, certain
|
||
preprocessors assume single-spacing.
|
||
|
||
*Note Manipulating Spacing::, for more details on the `\x' escape
|
||
and the `ls' request.
|
||
|
||
- Request: .pvs [space]
|
||
- Request: .pvs +space
|
||
- Request: .pvs -space
|
||
- Register: \n[.pvs]
|
||
Change (increase, decrease) the post-vertical spacing by SPACE.
|
||
The default scaling indicator is `p'.
|
||
|
||
If `pvs' is called without an argument, the post-vertical spacing
|
||
is reset to the previous value before the last call to `pvs'.
|
||
|
||
`gtroff' creates a warning of type `range' if SPACE is zero or
|
||
negative; the vertical spacing is then set to zero.
|
||
|
||
The read-only number register `.pvs' contains the current
|
||
post-vertical spacing; it is associated with the current
|
||
environment (*note Environments::).
|
||
|
||
|
||
File: groff, Node: Fractional Type Sizes, Prev: Changing Type Sizes, Up: Sizes
|
||
|
||
Fractional Type Sizes
|
||
---------------------
|
||
|
||
A "scaled point" is equal to 1/SIZESCALE points, where SIZESCALE is
|
||
specified in the `DESC' file (1 by default). There is a new scale
|
||
indicator `z' which has the effect of multiplying by SIZESCALE.
|
||
Requests and escape sequences in `gtroff' interpret arguments that
|
||
represent a point size as being in units of scaled points, but they
|
||
evaluate each such argument using a default scale indicator of `z'.
|
||
Arguments treated in this way are the argument to the `ps' request, the
|
||
third argument to the `cs' request, the second and fourth arguments to
|
||
the `tkf' request, the argument to the `\H' escape sequence, and those
|
||
variants of the `\s' escape sequence that take a numeric expression as
|
||
their argument (see below).
|
||
|
||
For example, suppose SIZESCALE is 1000; then a scaled point is
|
||
equivalent to a millipoint; the request `.ps 10.25' is equivalent to
|
||
`.ps 10.25z' and thus sets the point size to 10250 scaled points, which
|
||
is equal to 10.25 points.
|
||
|
||
`gtroff' disallows the use of the `z' scale indicator in instances
|
||
where it would make no sense, such as a numeric expression whose
|
||
default scale indicator was neither `u' nor `z'. Similarly it would
|
||
make no sense to use a scaling indicator other than `z' or `u' in a
|
||
numeric expression whose default scale indicator was `z', and so
|
||
`gtroff' disallows this as well.
|
||
|
||
There is also new scale indicator `s' which multiplies by the number
|
||
of units in a scaled point. So, for example, `\n[.ps]s' is equal to
|
||
`1m'. Be sure not to confuse the `s' and `z' scale indicators.
|
||
|
||
- Register: \n[.ps]
|
||
A read-only number register returning the point size in scaled
|
||
points.
|
||
|
||
`.ps' is associated with the current environment (*note
|
||
Environments::).
|
||
|
||
- Register: \n[.psr]
|
||
- Register: \n[.sr]
|
||
The last-requested point size in scaled points is contained in the
|
||
`.psr' read-only number register. The last requested point size
|
||
in points as a decimal fraction can be found in `.sr'. This is a
|
||
string-valued read-only number register.
|
||
|
||
Note that the requested point sizes are device-independent, whereas
|
||
the values returned by the `.ps' and `.s' registers are not. For
|
||
example, if a point size of 11pt is requested, and a `sizes'
|
||
request (or a `sizescale' line in a `DESC' file) specifies 10.95pt
|
||
instead, this value is actually used.
|
||
|
||
Both registers are associated with the current environment (*note
|
||
Environments::).
|
||
|
||
The `\s' escape has the following syntax for working with fractional
|
||
type sizes:
|
||
|
||
`\s[N]'
|
||
`\s'N''
|
||
Set the point size to N scaled points; N is a numeric expression
|
||
with a default scale indicator of `z'.
|
||
|
||
`\s[+N]'
|
||
`\s[-N]'
|
||
`\s+[N]'
|
||
`\s-[N]'
|
||
`\s'+N''
|
||
`\s'-N''
|
||
`\s+'N''
|
||
`\s-'N''
|
||
Increase or or decrease the point size by N scaled points; N is a
|
||
numeric expression with a default scale indicator of `z'.
|
||
|
||
*Note Font Files::.
|
||
|