groff_font.man revision 104862
1.ig
2Copyright (C) 1989-1995, 2001, 2002 Free Software Foundation, Inc.
3
4Permission is granted to make and distribute verbatim copies of
5this manual provided the copyright notice and this permission notice
6are preserved on all copies.
7
8Permission is granted to copy and distribute modified versions of this
9manual under the conditions for verbatim copying, provided that the
10entire resulting derived work is distributed under the terms of a
11permission notice identical to this one.
12
13Permission is granted to copy and distribute translations of this
14manual into another language, under the above conditions for modified
15versions, except that this permission notice may be included in
16translations approved by the Free Software Foundation instead of in
17the original English.
18..
19.
20.de TQ
21.br
22.ns
23.TP \\$1
24..
25.
26.\" Like TP, but if specified indent is more than half
27.\" the current line-length - indent, use the default indent.
28.de Tp
29.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
30.el .TP "\\$1"
31..
32.
33.
34.TH GROFF_FONT @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
35.
36.
37.SH NAME
38groff_font \- format of groff device and font description files
39.
40.
41.SH DESCRIPTION
42The groff font format is roughly a superset of the ditroff
43font format.
44.
45The font files for device
46.I name
47are stored in a directory
48.BI dev name.
49.
50There are two types of file: a
51device description file called
52.B DESC
53and for each font
54.I F
55a font file called
56.IR F .
57.
58These are text files;
59unlike the ditroff font format,
60there is no associated binary format.
61.
62.
63.SS DESC file format
64.
65The DESC file can contain the following types of line as shown below.
66.
67Later entries in the file override previous values.
68.
69.TP
70.B charset
71This line and everything following in the file are ignored.
72.
73It is allowed for the sake of backwards compatibility.
74.
75.TP
76.BI family\  fam
77The default font family is
78.IR fam .
79.
80.TP
81.BI fonts\  n\ F1\ F2\ F3\|.\|.\|.\|Fn
82Fonts
83.I F1\|.\|.\|.\|Fn
84will be mounted in the font positions 
85.IR m +1,\|.\|.\|., m + n
86where
87.I m
88is the number of styles.
89.
90This command may extend over more than one line.
91.
92A font name of
93.B 0
94will cause no font to be mounted on the corresponding font position.
95.
96.TP
97.BI hor\  n
98The horizontal resolution is
99.I n
100machine units.
101.
102.TP
103.BI paperheight\  n
104The physical vertical dimension of the output medium in machine units.
105.
106This isn't used by
107.B troff
108itself; currently, only
109.B grops
110uses it.
111.
112.TP
113.BI paperwidth\  n
114The physical horizontal dimension of the output medium in machine units.
115.
116This isn't used by
117.BR troff .
118.
119Currently, only the
120.B grolbp
121output device uses it.
122.
123.TP
124.BI papersize\  string
125Select a paper size.
126.
127Valid values for
128.I string
129are the ISO paper types A0-A7, B0-B7, C0-C7, D0-D7, DL, and the US paper
130types letter, legal, tabloid, ledger, statement, executive, com10, and
131monarch.
132.
133Case is not significant for
134.IR string
135if it holds predefined paper types.
136.
137Alternatively,
138.I string
139can be a file name (e.g.\& `/etc/papersize'); if the file can be opened,
140.B groff
141reads the first line and tests for the above paper sizes.
142.
143Finally,
144.I string
145can be a custom paper size in the format
146.IB length , width
147(no spaces before and after the comma).
148.
149Both
150.I length
151and
152.I width
153must have a unit appended; valid values are `i' for inches, `c' for
154centimeters, `p' for points, and `P' for picas.
155.
156Example:
157.BR 12c,235p .
158.
159An argument which starts with a digit is always treated as a custom paper
160format.
161.
162.B papersize
163sets both the vertical and horizontal dimension of the output medium.
164.
165.IP
166More than one argument can be specified;
167.B groff
168scans from left to right and uses the first valid paper specification.
169.
170.
171.TP
172.B pass_filenames
173Make troff tell the driver the source file name being processed.
174.
175This is achieved by another tcommand:
176.B F
177.IR filename .
178.
179.TP
180.BI postpro\  program
181Use
182.I program
183as the postprocessor.
184.
185.TP
186.BI prepro\  program
187Call
188.I program
189as a preprocessor.
190.
191.TP
192.BI print\  program
193Use
194.I program
195as the spooler program for printing.
196.
197If omitted, the
198.B \-l
199and
200.B \-L
201options of
202.B groff
203are ignored.
204.
205.TP
206.BI res\  n
207There are
208.I n
209machine units per inch.
210.
211.TP
212.BI sizes\  s1\ s2\|.\|.\|.\|sn\  0
213This means that the device has fonts at
214.IR s1 ,
215.IR s2 ,\|.\|.\|.\| sn
216scaled points.
217.
218The list of sizes must be terminated by a
219.BR 0 .
220.
221Each
222.I si
223can also be a range of sizes
224.IR m \- n .
225.
226The list can extend over more than one line.
227.
228.TP
229.BI sizescale\  n
230The scale factor for pointsizes.
231.
232By default this has a value of 1.
233.
234One
235.I
236scaled point
237is equal to
238one
239.RI point/ n .
240.
241The arguments to the
242.B unitwidth
243and
244.B sizes
245commands are given in scaled points.
246.
247.TP
248.BI styles\  S1\ S2\|.\|.\|.\|Sm
249The first
250.I m
251font positions will be associated with styles
252.IR S1\|.\|.\|.\|Sm .
253.
254.TP
255.B tcommand
256This means that the postprocessor can handle the
257.B t
258and
259.B u
260output commands.
261.
262.TP
263.BI unitwidth\  n
264Quantities in the font files are given in machine units
265for fonts whose point size is
266.I n 
267scaled points.
268.
269.TP
270.B use_charnames_in_special
271This command indicates that troff should encode named characters inside
272special commands.
273.
274.TP
275.BI vert\  n
276The vertical resolution is
277.I n
278machine units.
279.
280.LP
281The
282.BR res ,
283.BR unitwidth ,
284.BR fonts ,
285and
286.B sizes
287lines are compulsory.
288.
289Other commands are ignored by
290.B troff
291but may be used by postprocessors to store arbitrary information
292about the device in the DESC file.
293.
294.LP
295Here a list of obsolete keywords which are recognized by
296.B groff
297but completely ignored:
298.BR spare1 ,
299.BR spare2 ,
300.BR biggestfont .
301.
302.
303.SS Font file format
304.
305A font file has two sections.
306The first section is a sequence
307of lines each containing a sequence of blank delimited
308words; the first word in the line is a key, and subsequent
309words give a value for that key.
310.
311.TP
312.BI ligatures\  lig1\ lig2\|.\|.\|.\|lign\ \fR[ 0 \fR]
313Characters
314.IR lig1 ,
315.IR lig2 ,\ \|.\|.\|.,\ lign
316are ligatures; possible ligatures are
317.BR ff ,
318.BR fi ,
319.BR fl ,
320.B ffi
321and
322.BR ffl .
323.
324For backwards compatibility, the list of ligatures may be terminated
325with a
326.BR 0.
327.
328The list of ligatures may not extend over more than one line.
329.
330.TP
331.BI name\  F
332The name of the font is
333.IR F .
334.
335.TP
336.BI slant\  n
337The characters of the font have a slant of
338.I n
339degrees.
340.
341(Positive means forward.)
342.
343.TP
344.BI spacewidth\  n
345The normal width of a space is
346.IR n .
347.
348.TP
349.B special
350The font is
351.IR special ;
352this means that when a character is requested that is not present in
353the current font, it will be searched for in any special fonts that
354are mounted.
355.
356.LP
357Other commands are ignored by
358.B troff
359but may be used by postprocessors to store arbitrary information
360about the font in the font file.
361.
362.LP
363The first section can contain comments which start with the
364.B #
365character and extend to the end of a line.
366.
367.LP
368The second section contains one or two subsections.
369.
370It must contain a
371.I charset
372subsection
373and it may also contain a
374.I kernpairs
375subsection.
376.
377These subsections can appear in any order.
378.
379Each subsection starts with a word on a line by itself.
380.
381.LP
382The word
383.B charset
384starts the charset subsection.
385.
386The
387.B charset
388line is followed by a sequence of lines.
389.
390Each line gives information for one character.
391.
392A line comprises a number of fields separated
393by blanks or tabs.
394.
395The format is
396.
397.IP
398.I name metrics type code 
399.RI [ entity_name ]
400.RB [ --
401.IR comment ]
402.
403.LP
404.I name
405identifies the character:
406if
407.I name
408is a single character
409.I c
410then it corresponds to the groff input character
411.IR c ;
412if it is of the form
413.BI \[rs] c
414where c is a single character, then it
415corresponds to the special character
416.BI \[rs][ c ]\fR;
417otherwise it corresponds to the groff input character
418.BI \[rs][ name ]\fR.
419.
420If it is exactly two characters
421.I xx
422it can be entered as
423.BI \[rs]( xx\fR.
424.
425Note that single-letter special characters can't be accessed as
426.BI \[rs] c\fR;
427the only exception is `\[rs]-' which is identical to `\[rs][-]'.
428.
429The name
430.B \-\-\-
431is special and indicates that the character is unnamed;
432such characters can only be used by means of the
433.B \[rs]N
434escape sequence in
435.BR troff .
436.
437.LP
438Groff supports eight-bit characters; however some utilities
439have difficulties with eight-bit characters.
440.
441For this reason, there is a convention that the name
442.BI char n
443is equivalent to the single character whose code is
444.IR n .
445.
446For example,
447.B char163
448would be equivalent to the character with code 163
449which is the pounds sterling sign in ISO Latin-1.
450.
451.LP
452The
453.I type
454field gives the character type:
455.
456.TP
4571
458means the character has a descender, for example, p;
459.
460.TP
4612
462means the character has an ascender, for example, b;
463.
464.TP
4653
466means the character has both an ascender and a descender, for example,
467(.
468.
469.LP
470The
471.I code
472field gives the code which the postprocessor uses to print the character.
473.
474The character can also be input to groff using this code by means of the
475.B \[rs]N
476escape sequence.
477.
478The code can be any integer.
479.
480If it starts with a
481.B 0
482it will be interpreted as octal;
483if it starts with
484.B 0x
485or
486.B 0X
487it will be intepreted as hexadecimal.
488.
489Note, however, that the
490.B \[rs]N
491escape sequence only accepts a decimal integer.
492.
493.LP
494The
495.I entity_name
496field gives an ascii string identifying the glyph which the postprocessor
497uses to print the character.
498.
499This field is optional and has been introduced so that the html device driver
500can encode its character set.
501.
502For example, the character `\[rs][Po]' is represented as `£' in
503html\~4.0.
504.
505.LP
506Anything on the line after the encoding field resp. after `-\&-' will
507be ignored.
508.
509.LP
510The
511.I metrics
512field has the form (in one line; it is broken here for the sake of
513readability):
514.
515.IP
516.IR width [\fB, height [\fB, depth [\fB, italic-correction
517.br
518.RI [\fB, left-italic-correction [\fB, subscript-correction ]]]]]
519.
520.LP
521There must not be any spaces between these subfields.
522.
523Missing subfields are assumed to be 0.
524.
525The subfields are all decimal integers.
526.
527Since there is no associated binary format, these
528values are not required to fit into a variable of type
529.B char
530as they are in ditroff.
531.
532The
533.I width
534subfields gives the width of the character.
535.
536The
537.I height
538subfield gives the height of the character (upwards is positive);
539if a character does not extend above the baseline, it should be
540given a zero height, rather than a negative height.
541.
542The
543.I depth
544subfield gives the depth of the character, that is, the distance
545below the lowest point below the baseline to which the
546character extends (downwards is positive);
547if a character does not extend below above the baseline, it should be
548given a zero depth, rather than a negative depth.
549.
550The
551.I italic-correction
552subfield gives the amount of space that should be added after the
553character when it is immediately to be followed by a character
554from a roman font.
555.
556The
557.I left-italic-correction
558subfield gives the amount of space that should be added before the
559character when it is immediately to be preceded by a character
560from a roman font.
561.
562The
563.I subscript-correction
564gives the amount of space that should be added after a character
565before adding a subscript.
566.
567This should be less than the italic correction.
568.
569.LP
570A line in the charset section can also have the format
571.
572.IP
573.I
574name \fB"
575.
576.LP
577This indicates that
578.I name
579is just another name for the character mentioned in the
580preceding line.
581.
582.LP
583The word
584.B kernpairs
585starts the kernpairs section.
586.
587This contains a sequence of lines of the form:
588.
589.IP
590.I c1 c2 n
591.
592.LP
593This means that when character
594.I c1
595appears next to character
596.I c2
597the space between them should be increased by
598.IR n .
599.
600Most entries in kernpairs section will have a negative value for
601.IR n .
602.
603.
604.SH FILES
605.
606.Tp \w'@FONTDIR@/devname/DESC'u+3n
607.BI @FONTDIR@/dev name /DESC
608Device description file for device
609.IR name .
610.
611.TP
612.BI @FONTDIR@/dev name / F
613Font file for font
614.I F
615of device
616.IR name .
617.
618.
619.SH "SEE ALSO"
620.
621.BR groff_out (@MAN5EXT@),
622.BR @g@troff (@MAN1EXT@).
623.
624.\" Local Variables:
625.\" mode: nroff
626.\" End:
627