GROFF_FONT(5)                                       GROFF_FONT(5)

NAME
       groff_font  -  format of groff device and font description
       files

DESCRIPTION
       The groff font format is roughly a superset of the ditroff
       font  format.  Unlike the ditroff font format, there is no
       associated binary format.  The font files for device  name
       are stored in a directory devname.  There are two types of
       file: a device description file called DESC and  for  each
       font  F a font file called F.  These are text files; there
       is no associated binary format.

   DESC file format
       The DESC file can contain the following types of line:

       res n  There are n machine units per inch.

       hor n  The horizontal resolution is n machine units.

       vert n The vertical resolution is n machine units.

       sizescale n
              The scale factor for pointsizes.  By  default  this
              has a value of 1.  One scaled point is equal to one
              point/n.  The arguments to the unitwidth and  sizes
              commands are given in scaled points.

       unitwidth n
              Quantities  in  the font files are given in machine
              units for  fonts  whose  point  size  is  n  scaled
              points.

       tcommand
              This  means that the postprocessor can handle the t
              and u output commands.

       sizes s1 s2...sn 0
              This  means  that  the  device  has  fonts  at  s1,
              s2,...sn  scaled points.  The list of sizes must be
              terminated by a 0.  Each si can also be a range  of
              sizes  m-n.  The list can extend over more than one
              line.

       styles S1 S2...Sm
              The first m font positions will be associated  with
              styles S1...Sm.

       fonts n F1 F2 F3...Fn
              Fonts F1...Fn will be mounted in the font positions
              m+1,...,m+n where m is the number of styles.   This
              command may extend over more than one line.  A font
              name of 0 will cause no font to be mounted  on  the
              corresponding font position.

       family fam
              The default font family is fam.

       charset
              This  line and everything following in the file are
              ignored.  It is allowed for the sake  of  backwards
              compatibility.

       The  res, unitwidth, fonts and sizes lines are compulsory.
       Other commands are ignored by troff but  may  be  used  by
       postprocessors  to  store  arbitrary information about the
       device in the DESC file.

   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;  pos-
              sible  ligatures are ff, fi, fl and ffl.  For back-
              wards 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 charac-
              ter is requested that is not present in the current
              font, it will be searched for in any special  fonts
              that are mounted.

       Other  commands  are  ignored  by troff 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  charset  subsection.   The
       charset  line  is  followed  by a sequence of lines.  Each
       line gives information for one  character.   A  line  com-
       prises 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 charac-
       ter  c then it corresponds to the groff input character c;
       if it is of the form \c where c  is  a  single  character,
       then  it corresponds to the groff input character \c; oth-
       erwise it corresponds to the groff input character \[name]
       (if  it  is exactly two characters xx it can be entered as
       \(xx.)  Groff supports eight bit characters; however  some
       utilities has 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.
       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 troff.

       The type field gives the character type:

       1      means the character has an descender, for  example,
              p;

       2      means  the  character has an ascender, for example,
              b;

       3      means 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  groff  using  this  code  by  means  of  the \N escape
       sequence.  The code can be any integer.  If it starts with
       a  0 it will be interpreted as octal; if it starts with 0x
       or 0X it will be intepreted as hexadecimal.

       Anything on the line after the code field will be ignored.

       The metrics field has the form:

              width[,height[,depth[,italic_correc-
              tion[,left_italic_correction[,subscript_correc-
              tion]]]]]

       There  must  not  be  any  spaces between these subfields.
       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  vari-
       able  of type char as they are in ditroff.  The width sub-
       fields gives the width of the character.  The height  sub-
       field  gives the height of the character (upwards is posi-
       tive); 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 charac-
       ter,  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 char-
       acter 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  charac-
       ter  c2  the  space between them should be increased by n.
       Most entries in kernpairs section  will  have  a  negative
       value for n.

FILES
       /usr/lib/groff/font/devname/DESC
              Device description file for device name.

       /usr/lib/groff/font/devname/F
              Font file for font F of device name.

SEE ALSO
       groff_out(5), troff(1).

Groff Version 1.11         26 June 1995                         1