This file shows the interdependencies of various FreeType modules.

Note that the use of `psnames' can be controlled in ftconfig.h
(FT_CONFIG_OPTION_POSTSCRIPT_NAMES).

  module       dependency
 ---------------------------------------
  cff          sfnt, pshinter, psnames
  cid          psaux, pshinter, psnames
  truetype     sfnt
  type1        psaux, pshinter, psnames
  type42       truetype
  psaux        psnames
  sfnt         psnames

------------------------------------------------------------------------

Copyright 2001, 2002 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This  file  is  part  of the  FreeType  project, and may  only be  used,
modified,  and  distributed  under  the  terms of  the FreeType  project
license, LICENSE.TXT.   By continuing to use, modify, or distribute this
file you  indicate that  you have  read the  license and understand  and
accept it fully.


--- end of modules.txt ---
