groff_font.man revision 69626
118099Spst.ig \"-*- nroff -*-
218099SpstCopyright (C) 1989-1995 Free Software Foundation, Inc.
318099Spst
418099SpstPermission is granted to make and distribute verbatim copies of
518099Spstthis manual provided the copyright notice and this permission notice
618099Spstare preserved on all copies.
718099Spst
818099SpstPermission is granted to copy and distribute modified versions of this
918099Spstmanual under the conditions for verbatim copying, provided that the
1018099Spstentire resulting derived work is distributed under the terms of a
1118099Spstpermission notice identical to this one.
1218099Spst
1318099SpstPermission is granted to copy and distribute translations of this
1418099Spstmanual into another language, under the above conditions for modified
1518099Spstversions, except that this permission notice may be included in
1618099Spsttranslations approved by the Free Software Foundation instead of in
1718099Spstthe original English.
1818099Spst..
1918099Spst.de TQ
2018099Spst.br
2118099Spst.ns
2218099Spst.TP \\$1
2318099Spst..
2418099Spst.\" Like TP, but if specified indent is more than half
2518099Spst.\" the current line-length - indent, use the default indent.
2618099Spst.de Tp
2718099Spst.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
2818099Spst.el .TP "\\$1"
2918099Spst..
3018099Spst.TH GROFF_FONT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
3118099Spst.SH NAME
3218099Spstgroff_font \- format of groff device and font description files
3318099Spst.SH DESCRIPTION
3418099SpstThe groff font format is roughly a superset of the ditroff
3518099Spstfont format.
3618099SpstUnlike the ditroff font format, there is no associated binary
3718099Spstformat.
3818099SpstThe font files for device
3918099Spst.I name
4018099Spstare stored in a directory
4118099Spst.BI dev name.
4218099SpstThere are two types of file: a
4318099Spstdevice description file called
4418099Spst.B DESC
4518099Spstand for each font
4618099Spst.I F
4718099Spsta font file called
4818099Spst.IR F .
4918099SpstThese are text files;
5018099Spstthere is no associated binary format.
5118099Spst.SS DESC file format
5218099SpstThe DESC file can contain the following types of line:
5318099Spst.TP
5418099Spst.BI res\  n
5518099SpstThere are
5618099Spst.I n
5718099Spstmachine units per inch.
5818099Spst.TP
5918099Spst.BI hor\  n
6018099SpstThe horizontal resolution is
6118099Spst.I n
6218099Spstmachine units.
6318099Spst.TP
6418099Spst.BI vert\  n
6518099SpstThe vertical resolution is
6618099Spst.I n
6718099Spstmachine units.
6818099Spst.TP
6918099Spst.BI sizescale\  n
7018099SpstThe scale factor for pointsizes.
7118099SpstBy default this has a value of 1.
7218099SpstOne
7318099Spst.I
7418099Spstscaled point
7518099Spstis equal to
7618099Spstone
7718099Spst.RI point/ n .
7818099SpstThe arguments to the
7918099Spst.B unitwidth
8018099Spstand
8118099Spst.B sizes
8218099Spstcommands are given in scaled points.
8318099Spst.TP
8418099Spst.BI unitwidth\  n
8518099SpstQuantities in the font files are given in machine units
8618099Spstfor fonts whose point size is
8718099Spst.I n 
8818099Spstscaled points.
8918099Spst.TP
9018099Spst.B tcommand
9118099SpstThis means that the postprocessor can handle the
9218099Spst.B t
9318099Spstand
9418099Spst.B u
9518099Spstoutput commands.
9618099Spst.TP
9718099Spst.BI sizes\  s1\ s2\|.\|.\|.\|sn\  0
9818099SpstThis means that the device has fonts at
9918099Spst.IR s1 ,
10018099Spst.IR s2 ,\|.\|.\|.\| sn
10118099Spstscaled points.
10218099SpstThe list of sizes must be terminated by a
10318099Spst.BR 0 .
10418099SpstEach
10518099Spst.BI s i
10618099Spstcan also be a range of sizes
10718099Spst.IR m \- n .
10818099SpstThe list can extend over more than one line.
10918099Spst.TP
11018099Spst.BI styles\  S1\ S2\|.\|.\|.\|Sm
11118099SpstThe first
11218099Spst.I m
11318099Spstfont positions will be associated with styles
11418099Spst.IR S1\|.\|.\|.\|Sm .
11518099Spst.TP
11618099Spst.BI fonts\  n\ F1\ F2\ F3\|.\|.\|.\|Fn
11718099SpstFonts
11818099Spst.I F1\|.\|.\|.\|Fn
11918099Spstwill be mounted in the font positions 
12018099Spst.IR m +1,\|.\|.\|., m + n
12118099Spstwhere
12218099Spst.I m
12318099Spstis the number of styles.
12418099SpstThis command may extend over more than one line.
12518099SpstA font name of
12618099Spst.B 0
12718099Spstwill cause no font to be mounted on the corresponding font position.
12818099Spst.TP
12918099Spst.BI family\  fam
13018099SpstThe default font family is
13118099Spst.IR fam .
13218099Spst.TP
13369626Sru.B use_charnames_in_special
13469626SruThis command indicates that troff should encode named characters inside
13569626Sruspecial commands.
13669626Sru.TP
13769626Sru.B pass_filenames
13869626Srurequests that troff tells the driver the source file name being processed.
13969626SruThis is achieved by another tcommand:
14069626Sru.B F
14169626Sru.IR filename .
14269626Sru.TP
14318099Spst.B charset
14418099SpstThis line and everything following in the file are ignored.
14518099SpstIt is allowed for the sake of backwards compatibility.
14618099Spst.LP
14718099SpstThe res, unitwidth, fonts and sizes lines are compulsory.
14818099SpstOther commands are ignored by
14918099Spst.B troff
15018099Spstbut may be used by postprocessors to store arbitrary information
15118099Spstabout the device in the DESC file.
15269626Sru.LP
15369626SruHere a list of obsolete keywords which are recognized by
15469626Sru.B groff
15569626Srubut completely ignored:
15669626Sru.BR spare1 ,
15769626Sru.BR spare2 ,
15869626Sru.BR biggestfont .
15918099Spst.SS Font file format
16018099SpstA font file has two sections. The first section is a sequence
16118099Spstof lines each containing a sequence of blank delimited
16218099Spstwords; the first word in the line is a key, and subsequent
16318099Spstwords give a value for that key.
16418099Spst.TP
16518099Spst.BI name\  F
16618099SpstThe name of the font is
16718099Spst.IR F .
16818099Spst.TP
16918099Spst.BI spacewidth\  n
17018099SpstThe normal width of a space is
17118099Spst.IR n .
17218099Spst.TP
17318099Spst.BI slant\  n
17418099SpstThe characters of the font have a slant of
17518099Spst.I n
17618099Spstdegrees. (Positive means forward.)
17718099Spst.TP
17818099Spst.BI ligatures\  lig1\ lig2\|.\|.\|.\|lign\ \fR[ 0 \fR]
17918099SpstCharacters
18018099Spst.IR lig1 ,
18118099Spst.IR lig2 ,\|.\|.\|., lign
18218099Spstare ligatures; possible ligatures are
18318099Spst.BR ff ,
18418099Spst.BR fi ,
18569626Sru.BR fl ,
18669626Sru.B ffi
18718099Spstand
18818099Spst.BR ffl .
18918099SpstFor backwards compatibility, the list of ligatures may be terminated
19018099Spstwith a
19118099Spst.BR 0.
19218099SpstThe list of ligatures may not extend over more than one line.
19318099Spst.TP
19418099Spst.B special
19518099SpstThe font is
19618099Spst.IR special ;
19718099Spstthis means that when a character is requested that is not present in
19818099Spstthe current font, it will be searched for in any special fonts that
19918099Spstare mounted.
20018099Spst.LP
20118099SpstOther commands are ignored by
20218099Spst.B troff
20318099Spstbut may be used by postprocessors to store arbitrary information
20418099Spstabout the font in the font file.
20518099Spst.LP
20618099SpstThe first section can contain comments which start with the
20718099Spst.B #
20818099Spstcharacter and extend to the end of a line.
20918099Spst.LP
21018099SpstThe second section contains one or two subsections.
21118099SpstIt must contain a
21218099Spst.I charset
21318099Spstsubsection
21418099Spstand it may also contain a
21518099Spst.I kernpairs
21618099Spstsubsection.
21718099SpstThese subsections can appear in any order.
21818099SpstEach subsection starts with a word on a line by itself.
21918099Spst.LP
22018099SpstThe word
22118099Spst.B charset
22218099Spststarts the charset subsection.
22318099SpstThe
22418099Spst.B charset
22518099Spstline is followed by a sequence of lines.
22618099SpstEach line gives information for one character.
22718099SpstA line comprises a number of fields separated
22818099Spstby blanks or tabs. The format is
22918099Spst.IP
23069626Sru.I name metrics type code 
23169626Sru.RI [ entity_name ]
23269626Sru.RB [ --
23369626Sru.IR comment ]
23418099Spst.LP
23518099Spst.I name
23618099Spstidentifies the character:
23718099Spstif
23818099Spst.I name
23918099Spstis a single character
24018099Spst.I c
24118099Spstthen it corresponds to the groff input character
24218099Spst.IR c ;
24318099Spstif it is of the form
24418099Spst.BI \e c
24518099Spstwhere c is a single character, then it
24618099Spstcorresponds to the groff input character
24718099Spst.BI \e c\fR;
24818099Spstotherwise it corresponds to the groff input character
24918099Spst.BI \e[ name ]
25018099Spst(if it is exactly two characters
25118099Spst.I xx
25218099Spstit can be entered as
25318099Spst.BI \e( xx\fR.)
25418099SpstGroff supports eight bit characters; however some utilities
25518099Spsthas difficulties with eight bit characters.
25618099SpstFor this reason, there is a convention that the name
25718099Spst.BI char n
25818099Spstis equivalent to the single character whose code is
25918099Spst.I n .
26018099SpstFor example,
26118099Spst.B char163
26218099Spstwould be equivalent to the character with code 163
26318099Spstwhich is the pounds sterling sign in ISO Latin-1.
26418099SpstThe name
26518099Spst.B \-\-\-
26618099Spstis special and indicates that the character is unnamed;
26718099Spstsuch characters can only be used by means of the
26818099Spst.B \eN
26918099Spstescape sequence in
27018099Spst.BR troff .
27118099Spst.LP
27218099SpstThe
27318099Spst.I type
27418099Spstfield gives the character type:
27518099Spst.TP
27618099Spst1
27718099Spstmeans the character has an descender, for example, p;
27818099Spst.TP
27918099Spst2
28018099Spstmeans the character has an ascender, for example, b;
28118099Spst.TP
28218099Spst3
28318099Spstmeans the character has both an ascender and a descender, for example,
28418099Spst(.
28518099Spst.LP
28618099SpstThe
28718099Spst.I code
28818099Spstfield gives the code which the postprocessor uses to print the character.
28918099SpstThe character can also be input to groff using this code by means of the
29018099Spst.B \eN
29118099Spstescape sequence.
29218099SpstThe code can be any integer.
29318099SpstIf it starts with a
29418099Spst.B 0
29518099Spstit will be interpreted as octal;
29618099Spstif it starts with
29718099Spst.B 0x
29818099Spstor
29918099Spst.B 0X
30018099Spstit will be intepreted as hexadecimal.
30118099Spst.LP
30269626SruThe
30369626Sru.I entity_name
30469626Srufield gives an ascii string identifying the glyph which the postprocessor
30569626Sruuses to print the character.
30669626SruThis field is optional and has been introduced so that the html device driver
30769626Srucan encode its character set.
30869626SruFor example, the character `\e[Po]' is represented as `£' in html 4.0.
30918099Spst.LP
31069626SruAnything on the line after the encoding field resp. after `-\&-' will
31169626Srube ignored.
31269626Sru.LP
31318099SpstThe
31418099Spst.I metrics
31518099Spstfield has the form:
31618099Spst.IP
31718099Spst.IR width [\fB, height [\fB, depth [\fB, italic_correction [\fB, \
31818099Spstleft_italic_correction [\fB, subscript_correction ]]]]]
31918099Spst.LP
32018099SpstThere must not be any spaces between these subfields.
32118099SpstMissing subfields are assumed to be 0.
32218099SpstThe subfields are all decimal integers.
32318099SpstSince there is no associated binary format, these
32418099Spstvalues are not required to fit into a variable of type
32518099Spst.B char
32618099Spstas they are in ditroff.
32718099SpstThe
32818099Spst.I width
32918099Spstsubfields gives the width of the character.
33018099SpstThe
33118099Spst.I height
33218099Spstsubfield gives the height of the character (upwards is positive);
33318099Spstif a character does not extend above the baseline, it should be
33418099Spstgiven a zero height, rather than a negative height.
33518099SpstThe
33618099Spst.I depth
33718099Spstsubfield gives the depth of the character, that is, the distance
33818099Spstbelow the lowest point below the baseline to which the
33918099Spstcharacter extends (downwards is positive);
34018099Spstif a character does not extend below above the baseline, it should be
34118099Spstgiven a zero depth, rather than a negative depth.
34218099SpstThe
34318099Spst.I italic_correction
34418099Spstsubfield gives the amount of space that should be added after the
34518099Spstcharacter when it is immediately to be followed by a character
34618099Spstfrom a roman font.
34718099SpstThe
34818099Spst.I left_italic_correction
34918099Spstsubfield gives the amount of space that should be added before the
35018099Spstcharacter when it is immediately to be preceded by a character
35118099Spstfrom a roman font.
35218099SpstThe
35318099Spst.I subscript_correction
35418099Spstgives the amount of space that should be added after a character
35518099Spstbefore adding a subscript.
35618099SpstThis should be less than the italic correction.
35718099Spst.LP
35818099SpstA line in the charset section can also have the format
35918099Spst.IP
36018099Spst.I
36118099Spstname \fB"
36218099Spst.LP
36318099SpstThis indicates that
36418099Spst.I name
36518099Spstis just another name for the character mentioned in the
36618099Spstpreceding line.
36718099Spst.LP
36818099SpstThe word
36918099Spst.B kernpairs
37018099Spststarts the kernpairs section.
37118099SpstThis contains a sequence of lines of the form:
37218099Spst.IP
37318099Spst.I
37418099Spstc1 c2 n
37518099Spst.LP
37618099SpstThis means that when character
37718099Spst.I c1
37818099Spstappears next to character
37918099Spst.I c2
38018099Spstthe space between them should be increased by
38118099Spst.IR n .
38218099SpstMost entries in kernpairs section will have a negative value for
38318099Spst.IR n .
38418099Spst.SH FILES
38518099Spst.Tp \w'@FONTDIR@/devname/DESC'u+3n
38618099Spst.BI @FONTDIR@/dev name /DESC
38718099SpstDevice description file for device
38818099Spst.IR name .
38918099Spst.TP
39018099Spst.BI @FONTDIR@/dev name / F
39118099SpstFont file for font
39218099Spst.I F
39318099Spstof device
39418099Spst.IR name .
39518099Spst.SH "SEE ALSO"
39618099Spst.BR groff_out (@MAN5EXT@),
39718099Spst.BR @g@troff (@MAN1EXT@).
398