svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
groff_font(5)
groff_font(5) File Formats Manual groff_font(5)
Name
groff_font - GNU roff device and font description files
Description
The groff font and output device description formats are slight exten‐
sions of those used by AT&T device-independent troff. In distinction
to the AT&T implementation, groff lacks a binary format; all files are
text files. (Plan 9 troff has also abandoned the binary format.) The
device and font description files for a device name are stored in a de‐
vname directory. The device description file is called DESC, and, for
each font supported by the device, a font description file is called f,
where f is usually an abbreviation of a font's name and/or style. For
example, the ps (PostScript) device has groff font description files
for Times roman (TR) and Zapf Chancery Medium italic (ZCMI), among many
others, while the utf8 device (for terminal emulators) has only font
descriptions for the roman, italic, bold, and bold-italic styles (R, I,
B, and BI, respectively).
Device and font description files are read by the formatter, troff, and
by output drivers. The programs typically delegate these files' pro‐
cessing to an internal library, libgroff, ensuring their consistent in‐
terpretation.
DESC file format
The DESC file contains a series of directives; each begins a line.
Their order is not important, with two exceptions: (1) the res direc‐
tive must precede any papersize directive; and (2) the charset direc‐
tive must come last (if at all). If a directive name is repeated,
later entries in the file override previous ones (except that the paper
dimensions are computed based on the res directive last seen when
papersize is encountered). Spaces and/or tabs separate words and are
ignored at line boundaries. Comments start with the “#” character and
extend to the end of a line. Empty lines are ignored.
family fam
The default font family is fam.
fonts n F1 ... Fn
Fonts F1, ..., Fn are mounted at font positions m+1, ..., m+n
where m is the number of styles (see below). This directive may
extend over more than one line. A font name of 0 causes no font
to be mounted at the corresponding position.
hor n The horizontal motion quantum is n basic units. Horizontal
quantities are rounded to multiples of n.
image_generator program
Use program to generate PNG images from PostScript input. Under
GNU/Linux, this is usually gs(1), but under other systems (no‐
tably Cygwin) it might be set to another name. The grohtml(1)
driver uses this directive.
paperlength n
The vertical dimension of the output medium is n basic units
(deprecated: use papersize instead).
papersize format-or-dimension-pair-or-file-name ...
The dimensions of the output medium are as according to the ar‐
gument, which is either a standard paper format, a pair of di‐
mensions, or the name of a plain text file containing either of
the foregoing. Recognized paper formats are the ISO and DIN
formats A0–A7, B0–B7, C0–C7, and D0–D7; the U.S. formats letter,
legal, tabloid, ledger, statement, and executive; and the enve‐
lope formats com10, monarch, and DL. Matching is performed
without regard for lettercase.
Alternatively, the argument can be a custom paper format
length,width (with no spaces before or after the comma). Both
length and width must have a unit appended; valid units are “i”
for inches, “c” for centimeters, “p” for points, and “P” for pi‐
cas. Example: “12c,235p”. An argument that starts with a digit
is always treated as a custom paper format.
Finally, the argument can be a file name (e.g., /etc/papersize);
if the file can be opened, the first line is read and a match
attempted against each other form. No comment syntax is sup‐
ported.
More than one argument can be specified; each is scanned in turn
and the first valid paper specification used.
paperwidth n
The horizontal dimension of the output medium is n basic units
(deprecated: use papersize instead).
pass_filenames
Direct troff to emit the name of the source file being
processed. This is achieved with the intermediate output com‐
mand “x F”, which grohtml interprets.
postpro program
Use program as the postprocessor.
prepro program
Use program as a preprocessor. The html and xhtml output de‐
vices use this directive.
print program
Use program as the print spooler. If omitted, groff's -l and -L
options are ignored.
res n The device resolution is n basic units per inch.
sizes s1 ... sn 0
The device has fonts at s1, ..., sn scaled points (see below).
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.
sizescale n
A typographical point is subdivided into n scaled points. The
default is 1.
styles S1 ... Sm
The first m font mounting positions are associated with styles
S1, ..., Sm.
tcommand
The postprocessor can handle the t and u intermediate output
commands.
unicode
The output device supports the complete Unicode repertoire.
This directive is useful only for devices which produce charac‐
ter entities instead of glyphs.
If unicode is present, no charset section is required in the
font description files since the Unicode handling built into
groff is used. However, if there are entries in a font descrip‐
tion file's charset section, they either override the default
mappings for those particular characters or add new mappings
(normally for composite characters).
The utf8, html, and xhtml output devices use this directive.
unitwidth n
Quantities in the font description files are in basic units for
fonts whose type size is n scaled points.
unscaled_charwidths
Make the font handling module always return unscaled glyph
widths. The grohtml driver uses this directive.
use_charnames_in_special
troff should encode named glyphs inside device control commands.
The grohtml driver uses this directive.
vert n The vertical motion quantum is n basic units. Vertical quanti‐
ties are rounded to multiples of n.
charset
This directive and the rest of the file are ignored. It is rec‐
ognized for compatibility with other troff implementations. In
GNU troff, character set repertoire is described on a per-font
basis.
troff recognizes but ignores the directives spare1, spare2, and
biggestfont.
The res, unitwidth, fonts, and sizes lines are mandatory. Directives
not listed above are ignored by troff but may be used by postprocessors
to obtain further information about the device.
Font description file format
On typesetting output devices, each font is typically available at mul‐
tiple sizes. While paper measurements in the device description file
are in absolute units, measurements applicable to fonts must be propor‐
tional to the type size. groff achieves this using the precedent set
by AT&T device-independent troff: one font size is chosen as a norm,
and all others are scaled linearly relative to that basis. The “unit
width” is the number of basic units per point when the font is rendered
at this nominal size.
For instance, groff's lbp device uses a unitwidth of 800. Its Times
roman font (“TR”) has a spacewidth of 833; this is also the width of
its comma, period, centered period, and mathematical asterisk, while
its “M” is 2,963 basic units. Thus, an “M” on the lbp device is 2,963
basic units wide at a notional type size of 800 points. (800-point
type is not practical for most purposes, but using it enables the quan‐
tities in the font description files to be expressed as integers.)
A font description file has two sections. The first is a sequence of
directives, and is parsed similarly to the DESC file described above.
Except for the directive names that begin the second section, their or‐
dering is immaterial. Later directives of the same name override ear‐
lier ones, spaces and tabs are handled in the same way, and the same
comment syntax is supported. Empty lines are ignored throughout.
name F The name of the font is F. “DESC” is an invalid font name.
Simple integers are valid, but their use is discouraged. (groff
requests and escape sequences interpret non-negative font names
as mounting positions instead. Further, a font named “0” cannot
be automatically mounted by the fonts directive of a DESC file.)
spacewidth n
The width of an unadjusted inter-word space is n basic units.
The directives above must appear in the first section; those below are
optional.
slant n
The font's glyphs have a slant of n degrees; a positive n slants
in the direction of text flow.
ligatures lig1 ... lign [0]
Glyphs lig1, ..., lign are ligatures; possible ligatures are ff,
fi, fl, ffi, and ffl. For compatibility with other troff imple‐
mentations, the list of ligatures may be terminated with a 0.
The list of ligatures must not extend over more than one line.
special
The font is special: when a glyph is requested that is not
present in the current font, it is sought in any mounted fonts
that bear this property.
Other directives in this section are ignored by troff, but may be used
by postprocessors to obtain further information about the font.
The second section contains one or two subsections. These can appear
in either order; the first one encountered commences the second sec‐
tion. Each starts with a directive on a line by itself. A charset
subsection is mandatory unless the associated DESC file contains the
unicode directive. Another subsection, kernpairs, is optional.
The directive charset starts the character set subsection. (For type‐
setter devices, this directive is misnamed since it starts a list of
glyphs, not characters.) It precedes a series of glyph descriptions,
one per line. Each such glyph description comprises a set of fields
separated by spaces or tabs and organized as follows.
name metrics type code [entity-name] [-- comment]
name identifies the glyph: if name is a printable character c, it cor‐
responds to the troff ordinary character c. If name is a multi-charac‐
ter sequence not beginning with \, it corresponds to the GNU troff spe‐
cial character escape sequence “\[name]”. A name consisting of three
minus signs, “---”, indicates that the glyph is unnamed: such glyphs
can be accessed only by the \N escape sequence in troff. A special
character named “---” can still be defined using .char and similar re‐
quests. The name “\-” defines the minus sign glyph. Finally, name can
be the horizontal motion escape sequences, \| and \^ (“thin” and “hair”
spaces, respectively), in which case only the width metric described
below is applied; a font can thus customize the widths of these spaces.
The form of the metrics field is as follows (on one line; it may be
broken here for readability).
width[,[height[,[depth[,[italic-correction[,[
left-italic-correction[,[subscript-correction]]]]]]]]]]
There must not be any spaces, tabs, or newlines between these sub‐
fields, which are in basic units expressed as decimal integers. Un‐
specified subfields default to 0. Since there is no associated binary
format, these values are not required to fit into the C language data
type char as they are in AT&T device-independent troff.
The width subfield gives the width of the glyph. The height subfield
gives the height of the glyph (upwards is positive); if a glyph 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
glyph, that is, the distance below the baseline to which the glyph ex‐
tends (downwards is positive); if a glyph does not extend below the
baseline, it should be given a zero depth, rather than a negative
depth. Italic corrections are relevant to glyphs in italic or oblique
styles. The italic-correction is the amount of space that should be
added after an oblique glyph to be followed immediately by an upright
glyph. The left-italic-correction is the amount of space that should
be added before an oblique glyph to be preceded immediately by an up‐
right glyph. The subscript-correction is the amount of space that
should be added after an oblique glyph to be followed by a subscript;
it should be less than the italic correction.
For fonts used with typesetting devices, the type field gives a feat‐
ural description of the glyph: it is a bit mask recording whether the
glyph is an ascender, descender, both, or neither. When a \w escape
sequence is interpolated, these values are bitwise or-ed together for
each glyph and stored in the ct register. In font descriptions for
terminal devices, all glyphs might have a type of zero, regardless of
their appearance.
0 means the glyph lies entirely between the baseline and a hori‐
zontal line at the “x-height” of the font, as with “a”, “c”, and
“x”;
1 means the glyph descends below the baseline, like “p”;
2 means the glyph ascends above the font's x-height, like “A” or
“b”); and
3 means the glyph is both an ascender and a descender—this is true
of parentheses in some fonts.
The code field gives a numeric identifier that the postprocessor uses
to render the glyph. The glyph can be specified to troff using this
code by means of the \N escape sequence. The code can be any integer
(that is, any integer parsable by the C standard library's strtol(3)
function).
The entity-name field defines an identifier for the glyph that the
postprocessor uses to print the troff glyph name. This field is op‐
tional; it was introduced so that the grohtml output driver could en‐
code its character set. For example, the glyph \[Po] is represented by
“£” in HTML 4.0. For efficiency, these data are now compiled di‐
rectly into grohtml. grops uses the field to build sub-encoding arrays
for PostScript fonts containing more than 256 glyphs. Anything on the
line after the entity-name field or “--” is ignored.
A line in the charset section can also have the form
name "
identifying name as another name for the glyph mentioned in the preced‐
ing line. Such aliases can be chained.
The directive kernpairs starts a list of kerning adjustments to be made
to adjacent glyph pairs from this font. It contains a sequence of
lines formatted as follows.
g1 g2 n
The foregoing means that when glyph g1 is typeset immediately before
g2, the space between them should be increased by n. Most kerning
pairs should have a negative value for n.
Files
/usr/share/groff/1.23.0/font/devname/DESC
describes the output device name.
/usr/share/groff/1.23.0/font/devname/F
describes the font known as F on device name.
See also
Groff: The GNU Implementation of troff, by Trent A. Fisher and Werner
Lemberg, is the primary groff manual. You can browse it interactively
with “info groff”.
“Troff User's Manual” by Joseph F. Ossanna, 1976 (revised by Brian W.
Kernighan, 1992), AT&T Bell Laboratories Computing Science Technical
Report No. 54, widely called simply “CSTR #54”, documents the language,
device and font description file formats, and device-independent output
format referred to collectively in groff documentation as “AT&T troff”.
“A Typesetter-independent TROFF” by Brian W. Kernighan, 1982, AT&T Bell
Laboratories Computing Science Technical Report No. 97, provides addi‐
tional insights into the device and font description file formats and
device-independent output format.
groff(1), subsection “Utilities”, lists programs available for describ‐
ing fonts in a variety of formats such that groff output drivers can
use them.
troff(1) documents the default device and font description file search
path.
groff_out(5), addftinfo(1)
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
box; cbp-1 | cbp-1 l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE = Availabil‐
ity text/groff = Stability Uncommitted
NOTES
Source code for open source software components in Oracle Solaris can
be found at https://www.oracle.com/downloads/opensource/solaris-source-
code-downloads.html.
This software was built from source available at:
https://github.com/oracle/solaris-userland
The original community source was downloaded from:
https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz
Further information about this software can be found on the open source
community website at https://www.gnu.org/software/groff.
groff 1.23.0 2 July 2023 groff_font(5)