GROFF_FONT(5) GROFF_FONT(5) NNAAMMEE groff_font - format of groff device and font description files DDEESSCCRRIIPPTTIIOONN 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 _n_a_m_e are stored in a directory ddeevv_n_a_m_e_. There are two types of file: a device description file called DDEESSCC and for each font _F a font file called _F. These are text files; there is no associated binary format. DDEESSCC ffiillee ffoorrmmaatt The DESC file can contain the following types of line: rreess _n There are _n machine units per inch. hhoorr _n The horizontal resolution is _n machine units. vveerrtt _n The vertical resolution is _n machine units. ssiizzeessccaallee _n The scale factor for pointsizes. By default this has a value of 1. One _s_c_a_l_e_d _p_o_i_n_t is equal to one point/_n. The arguments to the uunniittwwiiddtthh and ssiizzeess commands are given in scaled points. uunniittwwiiddtthh _n Quantities in the font files are given in machine units for fonts whose point size is _n scaled points. ttccoommmmaanndd This means that the postprocessor can handle the tt and uu output commands. ssiizzeess _s_1 _s_2_._._._s_n 00 This means that the device has fonts at _s_1, _s_2,..._s_n scaled points. The list of sizes must be terminated by a 00. Each ss_i can also be a range of sizes _m-_n. The list can extend over more than one line. ssttyylleess _S_1 _S_2_._._._S_m The first _m font positions will be associated with styles _S_1_._._._S_m. ffoonnttss _n _F_1 _F_2 _F_3_._._._F_n Fonts _F_1_._._._F_n 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 00 will cause no font to be mounted on the corresponding font position. Groff Version 1.08 24 September 1992 1 GROFF_FONT(5) GROFF_FONT(5) ffaammiillyy _f_a_m The default font family is _f_a_m. cchhaarrsseett 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 ttrrooffff but may be used by postprocessors to store arbitrary information about the device in the DESC file. FFoonntt ffiillee ffoorrmmaatt 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. nnaammee _F The name of the font is _F. ssppaacceewwiiddtthh _n The normal width of a space is _n. ssllaanntt _n The characters of the font have a slant of _n degrees. (Positive means forward.) lliiggaattuurreess _l_i_g_1 _l_i_g_2_._._._l_i_g_n [00] Characters _l_i_g_1, _l_i_g_2,...,_l_i_g_n are ligatures; pos- sible ligatures are ffff, ffii, ffll and ffffll. For back- wards compatibiliy, the list of ligatures may be terminated with a 00.. The list of ligatures may not extend over more than one line. ssppeecciiaall The font is _s_p_e_c_i_a_l; 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 ttrrooffff 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 _c_h_a_r_s_e_t subsection and it may also contain a _k_e_r_n_p_a_i_r_s subsection. These subsections can appear in any order. Each subsection starts with a word on a line by itself. Groff Version 1.08 24 September 1992 2 GROFF_FONT(5) GROFF_FONT(5) The word cchhaarrsseett starts the charset subsection. The cchhaarrsseett 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 _n_a_m_e _m_e_t_r_i_c_s _t_y_p_e _c_o_d_e _c_o_m_m_e_n_t _n_a_m_e identifies the character: if _n_a_m_e 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 \\[[_n_a_m_e]] (if it is exactly two characters _x_x it can be entered as \\((_x_x.) Groff supports eight bit characters; however some utilities has difficulties with eight bit characters. For this reason, there is a convention that the name cchhaarr_n is equivalent to the single character whose code is _n _. For example, cchhaarr116633 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 \\NN escape sequence in ttrrooffff. The _t_y_p_e 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 _c_o_d_e 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 \\NN escape sequence. The code can be any integer. If it starts with a 00 it will be interpreted as octal; if it starts with 00xx or 00XX it will be intepreted as hexdecimal. Anything on the line after the code field will be ignored. The _m_e_t_r_i_c_s field has the form: _w_i_d_t_h[,,_h_e_i_g_h_t[,,_d_e_p_t_h[,,_i_t_a_l_i_c___c_o_r_r_e_c_t_i_o_n[,,_l_e_f_t___i_t_a_l_i_c___c_o_r_r_e_c_t_i_o_n[,,_s_u_b_s_c_r_i_p_t___c_o_r_r_e_c_t_i_o_n]]]]] 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 cchhaarr as they are in ditroff. The _w_i_d_t_h sub- fields gives the width of the character. The _h_e_i_g_h_t Groff Version 1.08 24 September 1992 3 GROFF_FONT(5) GROFF_FONT(5) subfield gives the height of the character (upwards is positive); if a character does not extend above the base- line, it should be given a zero height, rather than a neg- ative height. The _d_e_p_t_h subfield gives the depth of the character, that is, the distance below the lowest point below the baseline to which the character extends (down- wards 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 _i_t_a_l_i_c___c_o_r_r_e_c_t_i_o_n sub- field 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 _l_e_f_t___i_t_a_l_i_c___c_o_r_r_e_c_t_i_o_n 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 _s_u_b_- _s_c_r_i_p_t___c_o_r_r_e_c_t_i_o_n 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 _n_a_m_e "" This indicates that _n_a_m_e is just another name for the character mentioned in the preceding line. The word kkeerrnnppaaiirrss starts the kernpairs section. This contains a sequence of lines of the form: _c_1 _c_2 _n This means that when character _c_1 appears next to charac- ter _c_2 the space between them should be increased by _n. Most entries in kernpairs section will have a negative value for _n. FFIILLEESS //uu11//ggnnuu//lliibb//ggrrooffff//ffoonntt//ddeevv_n_a_m_e//DDEESSCC Device description file for device _n_a_m_e. //uu11//ggnnuu//lliibb//ggrrooffff//ffoonntt//ddeevv_n_a_m_e//_F Font file for font _F of device _n_a_m_e. SSEEEE AALLSSOO ggrrooffff__oouutt(5), ggttrrooffff(1). Groff Version 1.08 24 September 1992 4 .