GNU Info

Info Node: (groff)Font File Format

(groff)Font File Format


Prev: DESC File Format Up: Font Files
Enter node , (file) or (file)node

Font File Format
----------------

   A font file has two sections.  The first section is a sequence of
lines each containing a sequence of blank delimited words; the first
word in the line is a key, and subsequent words give a value for that
key.

`name F'
     The name of the font is F.

`spacewidth N'
     The normal width of a space is N.

`slant N'
     The characters of the font have a slant of N degrees.  (Positive
     means forward.)

`ligatures LIG1 LIG2 ... LIGN [0]'
     Characters LIG1, LIG2, ..., LIGN are ligatures; possible ligatures
     are `ff', `fi', `fl', `ffi' and `ffl'.  For backwards
     compatibility, the list of ligatures may be terminated with a 0.
     The list of ligatures may not extend over more than one line.

`special'
     The font is special; this means that when a character is requested
     that is not present in the current font, it is searched for in any
     special fonts that are mounted.

   Other commands are ignored by `gtroff' but may be used by
postprocessors to store arbitrary information about the font in the font
file.

   The first section can contain comments which start with the `#'
character and extend to the end of a line.

   The second section contains one or two subsections.  It must contain
a `charset' subsection and it may also contain a `kernpairs'
subsection.  These subsections can appear in any order.  Each
subsection starts with a word on a line by itself.

   The word `charset' starts the character set subsection.  The
`charset' line is followed by a sequence of lines.  Each line gives
information for one character.  A line comprises a number of fields
separated by blanks or tabs.  The format is


     NAME METRICS TYPE CODE COMMENT

NAME identifies the character: If NAME is a single character C then it
corresponds to the `gtroff' input character C; if it is of the form
`\C' where C is a single character, then it corresponds to the `gtroff'
input character \C; otherwise it corresponds to the groff input
character `\[NAME]'.  (If it is exactly two characters XX it can be
entered as `\(XX'.)  `gtroff' supports 8-bit characters; however some
utilities have difficulties with eight-bit characters.  For this
reason, there is a convention that the name `charN' is equivalent to
the single character whose code is N.  For example, `char163' would be
equivalent to the character with code 163 which is the pounds sterling
sign in ISO Latin-1 character set.  The name `---' is special and
indicates that the character is unnamed; such characters can only be
used by means of the `\N' escape sequence in `gtroff'.

   The TYPE field gives the character type:

`1'
     the character has an descender, for example, `p';

`2'
     the character has an ascender, for example, `b';

`3'
     the character has both an ascender and a descender, for example,
     `('.

   The CODE field gives the code which the postprocessor uses to print
the character.  The character can also be input to `gtroff' using this
code by means of the `\N' escape sequence.  The code can be any
integer.  If it starts with `0' it is interpreted as octal; if it
starts with `0x' or `0X' it is interpreted as hexadecimal.

   Anything on the line after the CODE field is ignored.

   The METRICS field has the form:


     WIDTH[,HEIGHT[,DEPTH[,ITALIC_CORRECTION
       [,LEFT_ITALIC_CORRECTION[,SUBSCRIPT_CORRECTION]]]]]

There must not be any spaces between these subfields (it has been split
here into two lines for better legibility only).  Missing subfields are
assumed to be 0.  The subfields are all decimal integers.  Since there
is no associated binary format, these values are not required to fit
into a variable of type `char' as they are in `ditroff'.  The WIDTH
subfield gives the width of the character.  The HEIGHT subfield gives
the height of the character (upwards is positive); if a character does
not extend above the baseline, it should be given a zero height, rather
than a negative height.  The DEPTH subfield gives the depth of the
character, that is, the distance below the lowest point below the
baseline to which the character extends (downwards is positive); if a
character does not extend below above the baseline, it should be given
a zero depth, rather than a negative depth.  The ITALIC_CORRECTION
subfield gives the amount of space that should be added after the
character when it is immediately to be followed by a character from a
roman font.  The LEFT_ITALIC_CORRECTION subfield gives the amount of
space that should be added before the character when it is immediately
to be preceded by a character from a roman font.  The
SUBSCRIPT_CORRECTION gives the amount of space that should be added
after a character before adding a subscript.  This should be less than
the italic correction.

   A line in the `charset' section can also have the format


     NAME "

This indicates that NAME is just another name for the character
mentioned in the preceding line.

   The word `kernpairs' starts the kernpairs section.  This contains a
sequence of lines of the form:


     C1 C2 N

This means that when character C1 appears next to character C2 the
space between them should be increased by N.  Most entries in the
kernpairs section have a negative value for N.


automatically generated by info2www version 1.2.2.9