This  file describes various  problems that  have been  encountered in
compiling,  installing  and   running  FreeType  2.   Suggestions  for
additions or other improvements to this file are welcome.

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

Running Problems
================


* Some Type 1, Multiple Masters, and CID-keyed PostScript fonts aren't
  handled correctly.

-----

Of course,  there might be  bugs in FreeType,  but some fonts based on
the  PostScript  format can't  behandled indeed.  The  reason  is that
FreeType  doesn't contain a full  PostScript  interpreter  but applies
pattern matching instead.  In case a font doesn't follow the  standard
structure of the given font format, FreeType fails.  A typical example
is Adobe's `Optima'  font family which  contains extra code  to switch
between low and high resolution versions of the glyphs.

It might be  possible to patch  FreeType in  some situations,  though.
Please report failing fonts so that we investigate the problem and set
up a list of such problematic fonts.

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


Compilation Problems
====================


* I get an `internal compilation error' (ICE) while compiling FreeType
  2.2.1 with Intel C++.

  This has been reported for the following compiler version:

    Intel(R) C++ Compiler for 32-bit applications,
      Version 9.0 Build 20050430Z Package ID: W_CC_P_9.0.019

-----

The best solution is to update the compiler to version

  Intel(R) C++ Compiler for 32-bit applications,
    Version 9.1 Build 20060323Z Package ID: W_CC_P_9.1.022

or newer.  If this isn't feasible, apply the following patch.


--- src/cache/ftcbasic.c 20 Mar 2006 12:10:24 -0000 1.20
+++ src/cache/ftcbasic.c.patched 15 May 2006 02:51:02 -0000
@@ -252,7 +252,7 @@
   */

   FT_CALLBACK_TABLE_DEF
-  const FTC_IFamilyClassRec  ftc_basic_image_family_class =
+  FTC_IFamilyClassRec  ftc_basic_image_family_class =
   {
     {
       sizeof ( FTC_BasicFamilyRec ),
@@ -266,7 +266,7 @@


   FT_CALLBACK_TABLE_DEF
-  const FTC_GCacheClassRec  ftc_basic_image_cache_class =
+  FTC_GCacheClassRec  ftc_basic_image_cache_class =
   {
     {
       ftc_inode_new,


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

--- end of PROBLEMS ---
