# 16.7 Built-in Module `fm`

This module provides access to the IRIS Font Manager library. It is available only on Silicon Graphics machines. See also: 4Sight User's Guide, Section 1, Chapter 5: Using the IRIS Font Manager.

This is not yet a full interface to the IRIS Font Manager. Among the unsupported features are: matrix operations; cache operations; character operations (use string operations instead); some details of font info; individual glyph metrics; and printer matching.

It supports the following operations:

`init` ()
  Initialization function. Calls `fminit()`. It is normally not necessary to call this function, since it is called automatically the first time the `fm` module is imported.

`findfont` (fontname)
  Return a font handle object. Calls `fmfindfont(fontname)`.

`enumerate` ()
  Returns a list of available font names. This is an interface to `fmenumerate()`.

`prstr` (string)
  Render a string using the current font (see the `setfont()` font handle method below). Calls `fmprstr(string)`.

`setpath` (string)
  Sets the font search path. Calls `fmsetpath(string)`. (XXX Does not work!?!)

`fontpath` ()
  Returns the current font search path.

Font handle objects support the following operations:

`scalefont` (factor)
  Returns a handle for a scaled version of this font. Calls `fmscalefont(fh, factor)`.

`setfont` ()
  Makes this font the current font. Note: the effect is undone silently when the font handle object is deleted. Calls `fmsetfont(fh)`.

`getfontname` ()
  Returns this font's name. Calls `fmgetfontname(fh)`.

`getcomment` ()
  Returns the comment string associated with this font. Raises an exception if there is none. Calls `fmgetcomment(fh)`.

`getfontinfo` ()
  Returns a tuple giving some pertinent data about this font. This is an interface to `fmgetfontinfo()`. The returned tuple contains the following numbers: `(printermatched, fixed_width, xorig, yorig, xsize, ysize, height, nglyphs)`.

`getstrwidth` (string)
  Returns the width, in pixels, of the string when drawn in this font. Calls `fmgetstrwidth(fh, string)`.