The output of Dvips is a program in the PostScript language that instructs your (presumably PostScript-capable) printer how to typeset your document by transforming it into toner on paper. Your printer, in turn, contains a PostScript interpreter that carries out the instructions in this typesetting program.
The program must include the definition of any PostScript fonts that you use in your document. Fonts built into your printer (probably the standard 35: `Times-Roman', `ZapfDingbats', ...) are defined within the interpreter itself. Other fonts must be downloaded as pfa or pfb files (see section Glyph files) from your host (the computer on which you're running Dvips).
You may be wondering exactly how a PostScript interpreter figures out what character to typeset, with this mass of metrics, glyphs, encodings, and other information. (If you're not wondering, skip this section ...)
The basic PostScript operator for imaging characters is
show
. Suppose you've asked TeX to typeset an `S'. This will
eventually wind up in the Dvips output as the equivalent of this
PostScript operation:
(S) show
Here is how PostScript typesets the `S':
/S
.
/S
as a key in a dictionary named
CharStrings
, another mandatory entry in a font dictionary.
S
in CharStrings
is the equivalent of a
series of standard PostScript commands like `curveto',
`lineto', `fill', and so on. These commands are executed to
draw the character. There can also be hint information that helps
adapt the character to low-resolution rasters. (See section Glyph files.)
The commands are actually represented in a more compact way than
standard PostScript source; see the Type 1 book for details.
This method for typesetting characters is used in both Level 1 and Level 2 PostScript. See the PostScript reference manuals for more information.