{
    "content": [
        {
            "type": "text",
            "text": "# groff_font (info)\n\n## NAME\n\ngrofffont - format of groff device and font description files\n\n## DESCRIPTION\n\nThe groff font format is roughly a superset of the ditroff font format.\nThe font files for device name  are  stored  in  a  directory  devname.\nThere  are two types of file: a device description file called DESC and\nfor each font F, a font file called F.  These are  text  files;  unlike\nthe ditroff font format, there is no associated binary format.\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION**\n- **FILES**\n- **SEE ALSO**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "groff_font",
        "section": "",
        "mode": "info",
        "summary": "grofffont - format of groff device and font description files",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "groffout",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/groffout/5/json"
            },
            {
                "name": "troff",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/troff/1/json"
            },
            {
                "name": "addftinfo",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/addftinfo/1/json"
            },
            {
                "name": "afmtodit",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/afmtodit/1/json"
            },
            {
                "name": "name",
                "section": "n",
                "url": "https://www.chedong.com/phpMan.php/man/name/n/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 255,
                "subsections": []
            },
            {
                "name": "FILES",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 9,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "grofffont - format of groff device and font description files\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "The groff font format is roughly a superset of the ditroff font format.\nThe font files for device name  are  stored  in  a  directory  devname.\nThere  are two types of file: a device description file called DESC and\nfor each font F, a font file called F.  These are  text  files;  unlike\nthe ditroff font format, there is no associated binary format.\n\nDESC file format\nThe  DESC  file can contain the following types of line as shown below.\nLater entries in the file override previous values.\n\nEmpty lines are ignored.\n\ncharset\nThis line and everything following in the file are ignored.   It\nis allowed for the sake of backwards compatibility.\n\nfamily fam\nThe default font family is fam.\n\nfonts n F1 F2 F3 ... Fn\nFonts  F1,  ...,  Fn are mounted in the font positions m+1, ...,\nm+n where m is the number of styles.  This  command  may  extend\nover  more than one line.  A font name of 0 causes no font to be\nmounted on the corresponding font position.\n\nhor n  The horizontal resolution is n machine units.\n\nimagegenerator string\nNeeded for grohtml only.  It specifies the program  to  generate\nPNG  images from PostScript input.  Under GNU/Linux this is usu-\nally gs but under other systems (notably cygwin) it might be set\nto another name.\n\npaperlength n\nThe  physical vertical dimension of the output medium in machine\nunits.  This isn't used by troff itself but by  output  devices.\nDeprecated.  Use papersize instead.\n\npapersize string\nSelect  a paper size.  Valid values for string are the ISO paper\ntypes A0-A7, B0-B7, C0-C7, D0-D7, DL, and  the  US  paper  types\nletter, legal, tabloid, ledger, statement, executive, com10, and\nmonarch.  Case is not significant for string if it holds  prede-\nfined  paper  types.   Alternatively,  string can be a file name\n(e.g. /etc/papersize); if the file can be  opened,  groff  reads\nthe  first  line  and tests for the above paper sizes.  Finally,\nstring can be a custom paper size in the format length,width (no\nspaces  before and after the comma).  Both length and width must\nhave a unit appended; valid values are 'i' for inches,  'c'  for\ncentimeters,  'p'  for  points,  and  'P'  for  picas.  Example:\n12c,235p.  An argument which  starts  with  a  digit  is  always\ntreated  as a custom paper format.  papersize sets both the ver-\ntical and horizontal dimension of the output medium.\n\nMore than one argument can be specified; groff scans  from  left\nto right and uses the first valid paper specification.\n\npaperwidth n\nThe  physical  horizontal  dimension of the output medium in ma-\nchine units.  Deprecated.  Use papersize  instead.   This  isn't\nused by troff itself but by output devices.\n\npassfilenames\nMake troff tell the driver the source file name being processed.\nThis is achieved by another tcommand: F filename.\n\npostpro program\nUse program as the postprocessor.\n\nprepro program\nCall program as a preprocessor.\n\nprint program\nUse program as the spooler program for  printing.   If  omitted,\nthe -l and -L options of groff are ignored.\n\nres n  There are n machine units per inch.\n\nsizes s1 s2 ... sn 0\nThis  means  that the device has fonts at s1, s2, ..., sn scaled\npoints.  The list of sizes must be terminated by a 0.   Each  si\ncan also be a range of sizes m-n.  The list can extend over more\nthan one line.\n\nsizescale n\nThe scale factor for point sizes.  By default this has  a  value\nof  1.  One scaled point is equal to one point/n.  The arguments\nto the unitwidth and sizes commands are given in scaled points.\n\nstyles S1 S2 ... Sm\nThe first m font positions are associated with styles  S1,  ...,\nSm.\n\ntcommand\nThis  means that the postprocessor can handle the t and u output\ncommands.\n\nunicode\nIndicate that the output device supports  the  complete  Unicode\nrepertoire.  Useful only for devices which produce character en-\ntities instead of glyphs.\n\nIf unicode is present, no charset section  is  required  in  the\nfont  description  files  since  the Unicode handling built into\ngroff is used.  However, if there are entries in a charset  sec-\ntion,  they  either override the default mappings for those par-\nticular characters or add new mappings (normally  for  composite\ncharacters).\n\nThis is used for -Tutf8, -Thtml, and -Txhtml.\n\nunitwidth n\nQuantities  in  the  font  files  are given in machine units for\nfonts whose point size is n scaled points.\n\nunscaledcharwidths\nMake the font  handling  module  always  return  unscaled  glyph\nwidths.  Needed for the grohtml device.\n\nusecharnamesinspecial\nThis command indicates that troff should encode named glyphs in-\nside special commands.\n\nvert n The vertical resolution is n machine units.\n\nThe res, unitwidth, fonts, and sizes lines  are  compulsory.   Not  all\ncommands  in  the  DESC file are used by troff itself; some of the key-\nwords (or even additional ones) are used by postprocessors to store ar-\nbitrary information about the device.\n\nHere a list of obsolete keywords which are recognized by groff but com-\npletely ignored: spare1, spare2, biggestfont.\n\nFont file format\nA font file has two sections; empty lines are ignored in both of them.\n\nThe first section is a sequence of lines each containing a sequence  of\nblank  delimited words; the first word in the line is a key, and subse-\nquent words give a value for that key.\n\nligatures lig1 lig2 ... lign [0]\nGlyphs lig1, lig2, ..., lign are ligatures;  possible  ligatures\nare  ff, fi, fl, ffi, and ffl.  For backwards compatibility, the\nlist of ligatures may be terminated with a 0.  The list of liga-\ntures may not extend over more than one line.\n\nname F The name of the font is F.\n\nslant n\nThe  glyphs  of  the  font have a slant of n degrees.  (Positive\nmeans forward.)\n\nspacewidth n\nThe normal width of a space is n.\n\nspecial\nThe font is special; this means that when a glyph  is  requested\nthat  is  not present in the current font, it is searched for in\nany special fonts that are mounted.\n\nOther commands are ignored by troff but may be used  by  postprocessors\nto store arbitrary information about the font in the font file.\n\nThe first section can contain comments which start with the # character\nand extend to the end of a line.\n\nThe second section contains one or two subsections.  It must contain  a\ncharset  subsection  and  it  may  also contain a kernpairs subsection.\nThese subsections can appear in any order.  Each subsection starts with\na word on a line by itself.\n\nThe  word  charset  starts the charset subsection.  The charset line is\nfollowed by a sequence of lines.  Each line gives information  for  one\nglyph.   A  line  comprises  a  number of fields separated by blanks or\ntabs.  The format is\n\nname metrics type code [entityname] [-- comment]\n\nname identifies the glyph: if name is a single glyph c then  it  corre-\nsponds  to the groff input character c; if it is of the form \\c where c\nis a single character, then it corresponds  to  the  special  character\n\\[c];  otherwise  it  corresponds to the groff input character \\[name].\nIf it is exactly two characters xx it can be  entered  as  \\(xx.   Note\nthat single-letter special characters can't be accessed as \\c; the only\nexception is '\\-' which is identical to '\\[-]'.  The name ---  is  spe-\ncial  and  indicates that the glyph is unnamed; such glyphs can only be\nused by means of the \\N escape sequence in troff.\n\nThe type field gives the glyph type:\n\n1      means the glyph has a descender, for example, 'p';\n\n2      means the glyph has an ascender, for example, 'b';\n\n3      means the glyph has both an ascender and a descender, for  exam-\nple, '('.\n\nThe code field gives the code which the postprocessor uses to print the\nglyph.  The glyph can also be input to groff using this code  by  means\nof  the \\N escape sequence.  The code can be any integer.  If it starts\nwith a 0 it is interpreted as octal; if it starts with 0x or 0X  it  is\ninterpreted as hexadecimal.  Note, however, that the \\N escape sequence\nonly accepts a decimal integer.\n\nThe entityname field gives an ASCII string identifying the glyph which\nthe postprocessor uses to print that glyph.  This field is optional and\nis currently used by grops to build sub-encoding arrays  for  PS  fonts\ncontaining  more than 256 glyphs.  (It has also been used for grohtml's\nentity names but for efficiency reasons this data is now  compiled  di-\nrectly into grohtml.)\n\nAnything on the line after the encoding field or '--' are ignored.\n\nThe  metrics field has the form (in one line; it is broken here for the\nsake of readability):\n\nwidth[,height[,depth[,italic-correction\n[,left-italic-correction[,subscript-correction]]]]]\n\nThere must not be any spaces between  these  subfields.   Missing  sub-\nfields  are  assumed  to be 0.  The subfields are all decimal integers.\nSince there is no associated binary format, these values  are  not  re-\nquired to fit into a variable of type char as they are in ditroff.  The\nwidth subfields gives the width of  the  glyph.   The  height  subfield\ngives  the  height  of the glyph (upwards is positive); if a glyph does\nnot extend above the baseline, it should be given a zero height, rather\nthan  a  negative  height.   The  depth subfield gives the depth of the\nglyph, that is, the distance below the baseline to which the glyph  ex-\ntends  (downwards  is  positive);  if a glyph does not extend below the\nbaseline, it should be given a  zero  depth,  rather  than  a  negative\ndepth.   The  italic-correction subfield gives the amount of space that\nshould be added after the glyph when it is immediately to  be  followed\nby  a  glyph  from  a  roman font.  The left-italic-correction subfield\ngives the amount of space that should be added before the glyph when it\nis  immediately  to be preceded by a glyph from a roman font.  The sub-\nscript-correction gives the amount of space that should be added  after\na glyph before adding a subscript.  This should be less than the italic\ncorrection.\n\nA line in the charset section can also have the format\n\nname \"\n\nThis indicates that name is just another name for the  glyph  mentioned\nin the preceding line.\n\nThe  word  kernpairs starts the kernpairs section.  This contains a se-\nquence of lines of the form:\n\nc1 c2 n\n\nThis means that when glyph c1 appears next to glyph c2  the  space  be-\ntween them should be increased by n.  Most entries in kernpairs section\nhave a negative value for n.\n",
                "subsections": []
            },
            "FILES": {
                "content": "/usr/share/groff/1.22.4/font/devname/DESC\nDevice description file for device name.\n\n/usr/share/groff/1.22.4/font/devname/F\nFont file for font F of device name.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "groffout(5), troff(1), addftinfo(1), afmtodit(1)\n\nA man page name(n) of section n can be viewed either with\n$ man n name\nfor text mode or\n$ groffer n name\nfor graphical mode (default is PDF mode).\n\ngroff 1.22.4                     23 March 2022                   GROFFFONT(5)",
                "subsections": []
            }
        }
    }
}