Postscript Fonts

Type1 fonts   Internet Font browser   Internet font archive   Home

Fonts in PostScript are actually dictionaries. A font dictionary contains several operators. Most of these
operators simply set up the path for a single character in the font. When PostScript needs to typeset an
'A' in the current font, it finds the operator specified in the font for 'A' and invokes it. This operator draws the letter. This means that there is no fundamental difference between letters and any other kind of ink on the page: text is graphics. A font is just a program to draw things, the current graphics state applies to text just as much as it applies to lines andcurves which your program draws.
The fonts themselves are stored in a special dictionary of fonts, and they are named. If you want to
retrieve a font by name, you need to use the findfont operator. findfont retrieves the font from the
dictionary (if it is there) and leaves the font on the stack. You can then specify how big the font should
be and make it the current font.
The basic process for setting the font is:

scalefont takes two arguments, the lower argument on the stack is a font dictionary while the second is
the size of the new font in points. scalefont returns a new font dictionary which is the same as the old
one but scaled to the given size. setfont, on the other hand, takes a font dictionary and makes it the
current font.

For example, let us say that we want to start typesetting in Times Roman, and we want it to be set to 20
points. The following code would set up the correct font:

/Times-Roman findfont % Get the basic font
20 scalefont % Scale the font to 20 points
setfont % Make it the current font


Since the font "Times-Roman" is stored in a dictionary, we search for it using its PostScript name. The
printer will usually come with a set of built in fonts and will almost always allow you to add more. The
names of the fonts available will vary from printer to printer, but Times is almost always present. Fonts
typically come in families. "Times" is the name of the family we used here, and it has four member fonts:
Times-Roman, Times-Italic, Time-Bold, and Times-BoldItalic.


Showing Text

The show operator is used to typeset text on the page. It takes a single argument: a string containing the
text to be typeset. Text can be considered to be part of the path, so you must also have set the current
point with call to moveto or an equivalent operator. A typical call to show might look like this:

newpath % Start a new path
72 72 moveto % Lower left corner of text at (72, 72)
(Hello, world!) show % Typeset "Hello, world!"

If we ran this code right after the font selection code above, we would get the string "Hello, world!"
printed an inch in from the lower left corner, and it would be printed in 20 point Times-Roman.

Type1 fonts   Internet Font browser   Internet font archive   Home