MFC: following 2 commits:
[dragonfly.git] / contrib / groff-1.19 / man / groff_font.man
blobb806aac9accdee9c9bd3e18359ba3793a5bd018c
1 .ig
2 Copyright (C) 1989-1995, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
4 Permission is granted to make and distribute verbatim copies of
5 this manual provided the copyright notice and this permission notice
6 are preserved on all copies.
8 Permission is granted to copy and distribute modified versions of this
9 manual under the conditions for verbatim copying, provided that the
10 entire resulting derived work is distributed under the terms of a
11 permission notice identical to this one.
13 Permission is granted to copy and distribute translations of this
14 manual into another language, under the above conditions for modified
15 versions, except that this permission notice may be included in
16 translations approved by the Free Software Foundation instead of in
17 the original English.
20 .do nr groff_font_C \n[.C]
21 .cp 0
23 .de TQ
24 .  br
25 .  ns
26 .  TP \\$1
29 .\" Like TP, but if specified indent is more than half
30 .\" the current line-length - indent, use the default indent.
31 .de Tp
32 .  ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
33 .  el .TP "\\$1"
37 .TH GROFF_FONT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
40 .SH NAME
41 groff_font \- format of groff device and font description files
44 .SH DESCRIPTION
45 The groff font format is roughly a superset of the ditroff
46 font format.
48 The font files for device
49 .I name
50 are stored in a directory
51 .BI dev name\c
52 \&.
54 There are two types of file: a
55 device description file called
56 .B DESC
57 and for each font
58 .I F
59 a font file called
60 .IR F .
62 These are text files;
63 unlike the ditroff font format,
64 there is no associated binary format.
67 .SS DESC file format
69 The DESC file can contain the following types of line as shown below.
71 Later entries in the file override previous values.
73 .TP
74 .B charset
75 This line and everything following in the file are ignored.
77 It is allowed for the sake of backwards compatibility.
79 .TP
80 .BI family\  fam
81 The default font family is
82 .IR fam .
84 .TP
85 .BI fonts\  n\ F1\ F2\ F3\|.\|.\|.\|Fn
86 Fonts
87 .I F1\|.\|.\|.\|Fn
88 will be mounted in the font positions 
89 .IR m +1,\|.\|.\|., m + n
90 where
91 .I m
92 is the number of styles.
94 This command may extend over more than one line.
96 A font name of
97 .B 0
98 will cause no font to be mounted on the corresponding font position.
101 .BI hor\  n
102 The horizontal resolution is
103 .I n
104 machine units.
107 .BI image_generator\  string
108 Needed for
109 .B grohtml
110 only.
111 It specifies the program to generate PNG images from
112 PostScript input.
113 Under GNU/Linux this is usually
114 .I gs
115 but under other systems (notably cygwin) it might be set to another name.
118 .BI paperlength\  n
119 The physical vertical dimension of the output medium in machine units.
121 This isn't used by
122 .B troff
123 itself but by output devices.
125 Deprecated.
128 .B papersize
129 instead.
132 .BI papersize\  string
133 Select a paper size.
135 Valid values for
136 .I string
137 are the ISO paper types A0-A7, B0-B7, C0-C7, D0-D7, DL, and the US paper
138 types letter, legal, tabloid, ledger, statement, executive, com10, and
139 monarch.
141 Case is not significant for
142 .IR string
143 if it holds predefined paper types.
145 Alternatively,
146 .I string
147 can be a file name (e.g.\& `/etc/papersize'); if the file can be opened,
148 .B groff
149 reads the first line and tests for the above paper sizes.
151 Finally,
152 .I string
153 can be a custom paper size in the format
154 .IB length , width
155 (no spaces before and after the comma).
157 Both
158 .I length
160 .I width
161 must have a unit appended; valid values are `i' for inches, `c' for
162 centimeters, `p' for points, and `P' for picas.
164 Example:
165 .BR 12c,235p .
167 An argument which starts with a digit is always treated as a custom paper
168 format.
170 .B papersize
171 sets both the vertical and horizontal dimension of the output medium.
174 More than one argument can be specified;
175 .B groff
176 scans from left to right and uses the first valid paper specification.
179 .BI paperwidth\  n
180 The physical horizontal dimension of the output medium in machine units.
182 Deprecated.
185 .B papersize
186 instead.
188 This isn't used by
189 .BR troff
190 itself but by output devices.
193 .B pass_filenames
194 Make troff tell the driver the source file name being processed.
196 This is achieved by another tcommand:
197 .B F
198 .IR filename .
201 .BI postpro\  program
203 .I program
204 as the postprocessor.
207 .BI prepro\  program
208 Call
209 .I program
210 as a preprocessor.
213 .BI print\  program
215 .I program
216 as the spooler program for printing.
218 If omitted, the
219 .B \-l
221 .B \-L
222 options of
223 .B groff
224 are ignored.
227 .BI res\  n
228 There are
229 .I n
230 machine units per inch.
233 .BI sizes\  s1\ s2\|.\|.\|.\|sn\  0
234 This means that the device has fonts at
235 .IR s1 ,
236 .IR s2 ,\|.\|.\|.\| sn
237 scaled points.
239 The list of sizes must be terminated by a
240 .BR 0 .
242 Each
243 .I si
244 can also be a range of sizes
245 .IR m \- n .
247 The list can extend over more than one line.
250 .BI sizescale\  n
251 The scale factor for pointsizes.
253 By default this has a value of 1.
257 scaled point
258 is equal to
260 .RI point/ n .
262 The arguments to the
263 .B unitwidth
265 .B sizes
266 commands are given in scaled points.
269 .BI styles\  S1\ S2\|.\|.\|.\|Sm
270 The first
271 .I m
272 font positions will be associated with styles
273 .IR S1\|.\|.\|.\|Sm .
276 .B tcommand
277 This means that the postprocessor can handle the
278 .B t
280 .B u
281 output commands.
284 .BI unitwidth\  n
285 Quantities in the font files are given in machine units
286 for fonts whose point size is
287 .I n 
288 scaled points.
291 .B unscaled_charwidths
292 Make the font handling module always return unscaled character widths.
293 Needed for the
294 .B grohtml
295 device.
298 .B use_charnames_in_special
299 This command indicates that troff should encode named characters inside
300 special commands.
303 .BI vert\  n
304 The vertical resolution is
305 .I n
306 machine units.
310 .BR res ,
311 .BR unitwidth ,
312 .BR fonts ,
314 .B sizes
315 lines are compulsory.
317 Not all commands in the DESC file are used by
318 .B troff
319 itself; some of the keywords (or even additional ones) are used by
320 postprocessors to store arbitrary information about the device.
323 Here a list of obsolete keywords which are recognized by
324 .B groff
325 but completely ignored:
326 .BR spare1 ,
327 .BR spare2 ,
328 .BR biggestfont .
331 .SS Font file format
333 A font file has two sections.
334 The first section is a sequence
335 of lines each containing a sequence of blank delimited
336 words; the first word in the line is a key, and subsequent
337 words give a value for that key.
340 .BI ligatures\  lig1\ lig2\|.\|.\|.\|lign\ \fR[ 0 \fR]
341 Characters
342 .IR lig1 ,
343 .IR lig2 ,\ \|.\|.\|.,\ lign
344 are ligatures; possible ligatures are
345 .BR ff ,
346 .BR fi ,
347 .BR fl ,
348 .B ffi
350 .BR ffl .
352 For backwards compatibility, the list of ligatures may be terminated
353 with a
354 .BR 0.
356 The list of ligatures may not extend over more than one line.
359 .BI name\  F
360 The name of the font is
361 .IR F .
364 .BI slant\  n
365 The characters of the font have a slant of
366 .I n
367 degrees.
369 (Positive means forward.)
372 .BI spacewidth\  n
373 The normal width of a space is
374 .IR n .
377 .B special
378 The font is
379 .IR special ;
380 this means that when a character is requested that is not present in
381 the current font, it will be searched for in any special fonts that
382 are mounted.
385 Other commands are ignored by
386 .B troff
387 but may be used by postprocessors to store arbitrary information
388 about the font in the font file.
391 The first section can contain comments which start with the
392 .B #
393 character and extend to the end of a line.
396 The second section contains one or two subsections.
398 It must contain a
399 .I charset
400 subsection
401 and it may also contain a
402 .I kernpairs
403 subsection.
405 These subsections can appear in any order.
407 Each subsection starts with a word on a line by itself.
410 The word
411 .B charset
412 starts the charset subsection.
415 .B charset
416 line is followed by a sequence of lines.
418 Each line gives information for one character.
420 A line comprises a number of fields separated
421 by blanks or tabs.
423 The format is
426 .I name metrics type code 
427 .RI [ entity_name ]
428 .RB [ --
429 .IR comment ]
432 .I name
433 identifies the character:
435 .I name
436 is a single character
437 .I c
438 then it corresponds to the groff input character
439 .IR c ;
440 if it is of the form
441 .BI \[rs] c
442 where c is a single character, then it
443 corresponds to the special character
444 .BI \[rs][ c ]\fR;
445 otherwise it corresponds to the groff input character
446 .BI \[rs][ name ]\fR.
448 If it is exactly two characters
449 .I xx
450 it can be entered as
451 .BI \[rs]( xx\fR.
453 Note that single-letter special characters can't be accessed as
454 .BI \[rs] c\fR;
455 the only exception is `\[rs]-' which is identical to `\[rs][-]'.
457 The name
458 .B \-\-\-
459 is special and indicates that the character is unnamed;
460 such characters can only be used by means of the
461 .B \[rs]N
462 escape sequence in
463 .BR troff .
466 Groff supports eight-bit characters; however some utilities
467 have difficulties with eight-bit characters.
469 For this reason, there is a convention that the name
470 .BI char n
471 is equivalent to the single character whose code is
472 .IR n .
474 For example,
475 .B char163
476 would be equivalent to the character with code 163
477 which is the pounds sterling sign in ISO Latin-1.
481 .I type
482 field gives the character type:
486 means the character has a descender, for example, p;
490 means the character has an ascender, for example, b;
494 means the character has both an ascender and a descender, for example,
499 .I code
500 field gives the code which the postprocessor uses to print the character.
502 The character can also be input to groff using this code by means of the
503 .B \[rs]N
504 escape sequence.
506 The code can be any integer.
508 If it starts with a
509 .B 0
510 it will be interpreted as octal;
511 if it starts with
512 .B 0x
514 .B 0X
515 it will be intepreted as hexadecimal.
517 Note, however, that the
518 .B \[rs]N
519 escape sequence only accepts a decimal integer.
523 .I entity_name
524 field gives an ascii string identifying the glyph which the postprocessor
525 uses to print the character.
527 This field is optional and has been introduced so that the html device driver
528 can encode its character set.
530 For example, the character `\[rs][Po]' is represented as `£' in
531 html\~4.0.
534 Anything on the line after the encoding field resp. after `-\&-' will
535 be ignored.
539 .I metrics
540 field has the form (in one line; it is broken here for the sake of
541 readability):
544 .I width\c
545 .RI [\fB, height\c
546 .RI [\fB, depth\c
547 .RI [\fB, italic-correction
549 .RI [\fB, left-italic-correction\c
550 .RI [\fB, subscript-correction ]]]]]
553 There must not be any spaces between these subfields.
555 Missing subfields are assumed to be 0.
557 The subfields are all decimal integers.
559 Since there is no associated binary format, these
560 values are not required to fit into a variable of type
561 .B char
562 as they are in ditroff.
565 .I width
566 subfields gives the width of the character.
569 .I height
570 subfield gives the height of the character (upwards is positive);
571 if a character does not extend above the baseline, it should be
572 given a zero height, rather than a negative height.
575 .I depth
576 subfield gives the depth of the character, that is, the distance
577 below the lowest point below the baseline to which the
578 character extends (downwards is positive);
579 if a character does not extend below above the baseline, it should be
580 given a zero depth, rather than a negative depth.
583 .I italic-correction
584 subfield gives the amount of space that should be added after the
585 character when it is immediately to be followed by a character
586 from a roman font.
589 .I left-italic-correction
590 subfield gives the amount of space that should be added before the
591 character when it is immediately to be preceded by a character
592 from a roman font.
595 .I subscript-correction
596 gives the amount of space that should be added after a character
597 before adding a subscript.
599 This should be less than the italic correction.
602 A line in the charset section can also have the format
606 name \fB"
609 This indicates that
610 .I name
611 is just another name for the character mentioned in the
612 preceding line.
615 The word
616 .B kernpairs
617 starts the kernpairs section.
619 This contains a sequence of lines of the form:
622 .I c1 c2 n
625 This means that when character
626 .I c1
627 appears next to character
628 .I c2
629 the space between them should be increased by
630 .IR n .
632 Most entries in kernpairs section will have a negative value for
633 .IR n .
636 .SH FILES
638 .Tp \w'@FONTDIR@/devname/DESC'u+3n
639 .BI @FONTDIR@/dev name /DESC
640 Device description file for device
641 .IR name .
644 .BI @FONTDIR@/dev name / F
645 Font file for font
646 .I F
647 of device
648 .IR name .
651 .SH "SEE ALSO"
653 .BR groff_out (@MAN5EXT@),
654 .BR @g@troff (@MAN1EXT@).
656 .cp \n[groff_font_C]
658 .\" Local Variables:
659 .\" mode: nroff
660 .\" End: