shithub: freetype+ttf2subf

Download patch

ref: 5e3614f5847370786d8c91e1aa428ed15bbde55d
parent: db3faffbcf7a65b5a7f3c2413df2ad1bf3564659
author: Werner Lemberg <[email protected]>
date: Fri Sep 12 15:38:13 EDT 2003

* builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'.

* src/cff/cffdrivr.c: Don't load headers twice.

* include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro.
* src/base/ftobjs.c: Include FT_SERVICE_SFNT_H.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,59 +1,177 @@
+2003-09-11  Werner Lemberg  <[email protected]>
+
+	* builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'.
+
+	* src/cff/cffdrivr.c: Don't load headers twice.
+
+	* include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro.
+	* src/base/ftobjs.c: Include FT_SERVICE_SFNT_H.
+
 2003-09-11  David Turner  <[email protected]>
 
-        * include/freetype/ftmm.h, include/freetype/ftmodule.h,
-          include/freetype/tttables.h, include/freetype/config/ftconfig.h,
-          include/freetype/internal/ftobjs.h,
-          include/freetype/internal/ftserv.h,
-          include/freetype/internal/internal.h,
-          include/freetype/internal/sfnt.h,
-          include/freetype/internal/tttypes.h,
-          include/freetype/internal/services/bdf.h,
-          include/freetype/internal/services/glyfdict.h,
-          include/freetype/internal/services/multmast.h,
-          include/freetype/internal/services/postname.h,
-          include/freetype/internal/services/sfnt.h,
-          include/freetype/internal/services/xf86name.h,
-          src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c,
-          src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
-          src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c,
-          src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c:
+	Introducing the concept of `module services'.  This is the first
+	step towards a massive simplification of the engine's internals, in
+	order to get rid of various numbers of hacks.
 
-          heavy internal modifications to introduce the concept of
-          "module services". This is the first step towards a massive
-          simplification of the engine's internals, in order to
-          get rid of various numbers of hacks.
+	Note that this changes will break source & binary compatibility for
+	authors of external font drivers.
 
-          Note that this changes will break source & binary compatibility
-          for authors of external font drivers.
+	* include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT,
+	FT_DUMMY_STMNT): New macros.
 
-          Maybe 2.1.6 will be called 2.2.0 after all :-)
+	* include/freetype/internal/ftserv.h: New file, containing the new
+	structures and macros to provide `services'.
 
-        * README, builds/unix/configure, builds/unix/configure.ac,
-        docs/CHANGES, include/freetype/freetype.h:
+	* include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H,
+	FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H):
+	Removed, obsolete.
+	(FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'.
 
-          updating version numbers for 2.1.6, and removing obsolete
-          warnings in the documentation
+	* include/freetype/internal/services/bdf.h,
+	include/freetype/internal/services/glyfdict.h,
+	include/freetype/internal/services/postname.h,
+	include/freetype/internal/services/xf86name.h: New files.
 
-        * include/freetype/internal/ftcore.h,
-        include/freetype/internal/ftexcept.h,
-        include/freetype/internal/fthash.h,
-        include/freetype/internal/ftobject.h:
+	* include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func,
+	FT_Set_MM_Blend_Func): Function pointers moved (in modified form)
+	to...
+	* include/freetype/internal/services/multmast.h: New file.
 
-          removing obsolete files
+	* include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface'
+	is now of type `FT_Module_Requester'.
+	(SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers
+	moved (in modified form) to...
+	* include/freetype/internal/servies/sfnt.h: New file.
 
+	* include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function
+	pointer moved (in modified form) to `services/sfnt.h'.
 
+	* include/freetype/ftmodule.h (FT_Module_Interface): Make it a
+	a typedef to `FT_Pointer'.
 
+	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
+	`postscript_name'.
+	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
+	`postscript_name'.
+	Add `services' element.
+	(FT_LibraryRec): Remove `meta_class'.
 
+	* src/base/ftbdf.c: Include FT_SERVICE_BDF_H.
+	(test_font_type): Removed.
+	(FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services
+	provided in `FT_SERVICE_ID_BDF' 
+
+	* src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
+	(ft_face_get_mm_service): New auxiliary function to get services
+	from `FT_SERVICE_ID_MULTI_MASTERS'.
+	(FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates,
+	FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'.
+
+	* src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and
+	FT_SERVICE_GLYPH_DICT_H.
+	(ft_service_list_lookup): New function to get a specific service.
+	(destroy_face): Updated.
+	(Mac_Read_POST_Resource): Simplify some code.
+	(IsMacResource): Fix warnings.
+	(FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in
+	`FT_SERVICE_ID_GLYPH_DICT'.
+	(FT_Get_Postscript_Name): Use service provided in
+	`FT_SERVICE_ID_POSTSCRIPT_NAME'.
+	(FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in
+	`FT_SERVICE_ID_SFNT_TABLE'.
+
+	* src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H.
+	(FT_Get_X11_Font_Format): Use service provided in
+	`FT_SERVICE_ID_XF86_NAME'.
+
+	* src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and
+	FT_SERVICE_XFREE86_NAME_H.
+	(bdf_get_charset_id): New function.
+	(bdf_service_bdf): New structure providing BDF services.
+	(bdf_services): New services list.
+	(bdf_driver_requester): Use `ft_service_list_lookup'.
+
+	* src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and
+	FT_SERVICE_GLYPH_DICT_H.
+	(cff_service_glyph_dict): New structure providing CFF services.
+	(cff_services): New services list.
+	(cff_get_interface): Use `ft_service_list_lookup'.
+
+	* src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and
+	FT_SERVICE_XFREE86_NAME_H.
+	(cid_service_ps_name): New structure providing CID services.
+	(cid_services): New services list.
+	(cid_get_interface): Use `ft_service_list_lookup'.
+
+	* src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and
+	FT_SERVICE_XFREE86_NAME_H.
+	(pcf_service_bdf): New structure providing PCF services.
+	(pcf_services): New services list.
+	(pcf_driver_requester): Use `ft_service_list_lookup'.
+
+	* src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and
+	FT_SERVICE_POSTSCRIPT_NAME_H.
+	(get_sfnt_glyph_name): Renamed to...
+	(sfnt_get_glyph_name): This.
+	(get_sfnt_postscript_name): Renamed to...
+	(sfnt_get_ps_name): This.
+	Updated.
+	(sfnt_service_glyph_dict, sfnt_service_ps_name): New structures
+	providing services.
+	(sfnt_services): New services list.
+	(sfnt_get_interface): Use `ft_service_list_lookup'.
+
+	* src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H.
+	(tt_services): New services list.
+	(tt_get_interface): Use `ft_service_list_lookup'.
+
+	* src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H,
+	FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and
+	FT_SERVICE_POSTSCRIPT_NAME_H.
+	(t1_service_glyph_dict, t1_service_ps_name,
+	t1_service_multi_masters): New structures providing Type 1 services.
+	(t1_services): New services list.
+	(Get_Interface): Use `ft_service_list_lookup'.
+
+	* src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H,
+	FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H.
+	(t42_service_glyph_dict, t42_service_ps_name): New strucures
+	providing Type 42 services.
+	(t42_services): New services list.
+	(T42_Get_Interface): Use `ft_service_list_lookup'.
+
+
+	* README, builds/unix/configure, builds/unix/configure.ac,
+	docs/CHANGES, include/freetype/freetype.h: Updating version numbers
+	for 2.1.6, and removing obsolete warnings in the documentation.
+
+	* include/freetype/internal/ftcore.h,
+	include/freetype/internal/ftexcept.h,
+	include/freetype/internal/fthash.h,
+	include/freetype/internal/ftobject.h: Removed.  Obsolete.
+
 2003-09-09  David Turner  <[email protected]>
 
-        * src/base/ftpfr.c, src/pfr/pfrtypes.h, src/pfr/pfrload.c,
-        src/pfr/pfrobjs.c: fixing PFR kerning support. The tables within
-        the font file contain (charcode,charcode) kerning pairs, we need
-        to convert them to (gindex,gindex) !
+	Fixing PFR kerning support.  The tables within the font file contain
+	(charcode,charcode) kerning pairs, we need to convert them to
+	(gindex,gindex).
 
-        * include/freetype/ftoption.h: commenting out the macro
-        TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+	* src/base/ftpfr.c (ft_pfr_check): Fix serious typo.
+	* src/pfr/prfload.c: Remove dead code.
+	(pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs):
+	New functions.
+	(pfr_phy_font_done): Free `kern_pairs'.
+	(pfr_phy_font_load): Call `pfr_sort_kerning_pairs'.
+	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction.
+	* src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro.
+	(PFR_KernPairRec): Make `kerning' an FT_Int.
+	(PFR_PhyFontRec): New element `kern_pairs'.
+	(PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and
+	PFR_KERN_2BYTE_ADJ were erroneously reversed.
 
+	* include/freetype/ftoption.h: Commenting out the macro
+	TT_CONFIG_OPTION_BYTECODE_INTERPRETER.
+
 2003-08-31  Manish Singh  <[email protected]>
 
 	* src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but
@@ -1957,9 +2075,9 @@
 
 2002-11-01  David Turner  <[email protected]>
 
-	Added PFR-specific public API. Fixed the kerning retrievel routine
-        (it returned invalid values when the outline and metrics resolution
-        differ).
+	Added PFR-specific public API.  Fixed the kerning retrievel routine
+	(it returned invalid values when the outline and metrics resolution
+	differ).
 
 	* include/freetype/ftpfr.h, include/freetype/internal/pfr.h: New
 	files.
@@ -6772,7 +6890,7 @@
 	* src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get
 	the units_per_EM from the FontMatrix.
 
-	(cff_parse_fixed_thousand): New function. Gets a real number from
+	(cff_parse_fixed_thousand): New function.  Gets a real number from
 	the CFF font, but multiplies by 1000 (this is to avoid rounding
 	errors when placing this real number into a 16.16 fixed number).
 
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -110,6 +110,7 @@
 	  $(RM) builds/unix/config.status
 	  $(RM) builds/unix/unix-def.mk
 	  $(RM) builds/unix/unix-cc.mk
+	  $(RM) builds/unix/freetype2.pc
 	  $(RM) nul
 
   endif # test is_unix
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -3,15 +3,15 @@
 
   I. IMPORTANT BUG FIXES
 
-    - the PFR font driver didn't load kerning tables correctly,
-      and the functions in FT_PFR_H didn't work at all. Ugh !!
+    - The PFR  font driver didn't  load kerning tables  correctly, and
+      the functions in FT_PFR_H didn't work at all.
 
   II. IMPORTANT CHANGES
 
-    - the internal module API has been heavily changed. In favor
-      of massive simplifications within the font engine. This
-      also means that authors of third-party modules will need
-      to adapt their code !!
+    - The internal  module API  has been heavily  changed in  favor of
+      massive simplifications within the font engine.  This also means
+      that authors of third-party modules must adapt their code to the
+      new scheme.
 
 
 =====================================================================
@@ -21,51 +21,52 @@
 
   I. IMPORTANT BUG FIXES
 
-    - Parsing the /CIDFontName field now removes the leading slash to
+    - Parsing the /CIDFontName field  now removes the leading slash to
       be in sync with other font drivers.
 
-    - gzip support was buggy. Some fonts could not be read.
+    - gzip support was buggy.  Some fonts could not be read.
 
-    - Fonts which have nested subglyphs more than one level deep no
+    - Fonts which  have nested subglyphs  more than one level  deep no
       longer cause a segfault.
 
-    - Creation of synthetic cmaps for fonts in CFF format was broken
+    - Creation of synthetic  cmaps for fonts in CFF  format was broken
       partially.
 
-    - Numeric font dictionary entries for synthetic fonts are no longer
-      overwritten.
+    - Numeric  font  dictionary entries  for  synthetic  fonts are  no
+      longer overwritten.
 
-    - The font matrix wasn't applied to the advance width for Type1, CID,
-      and CFF fonts. This caused problem when loading certain synthetic
-      Type 1 fonts like "Helvetica Narrow"
+    - The font matrix  wasn't applied to the advance  width for Type1,
+      CID, and  CFF fonts.  This  caused problem when  loading certain
+      synthetic Type 1 fonts like "Helvetica Narrow"
 
-    - The test for the charset registry in BDF and PCF fonts is now
+    - The test  for the charset registry  in BDF and PCF  fonts is now
       case-insensitive.
 
-    - FT_Vector_Rotate rotating sometimes returned strange values due to
-      rounding errors.
+    - FT_Vector_Rotate rotating sometimes  returned strange values due
+      to rounding errors.
 
-    - The PCF driver now returns the correct number of glyphs (including
-      an artificial `notdef' glyph at index 0).
+    - The  PCF  driver  now  returns  the  correct  number  of  glyphs
+      (including an artificial `notdef' glyph at index 0).
 
-    - FreeType now supports buggy CMaps which are contained in many CJK
-      fonts from Dynalab.
+    - FreeType now  supports buggy CMaps  which are contained  in many
+      CJK fonts from Dynalab.
 
-    - Opening an invalid font on a Mac caused a segfault due to
+    - Opening  an invalid  font  on a  Mac  caused a  segfault due  to
       double-freeing memory.
 
-    - BDF fonts with more than 32768 glyphs weren't supported properly.
+    - BDF  fonts  with  more   than  32768  glyphs  weren't  supported
+      properly.
 
 
   II. IMPORTANT CHANGES
 
     - Accessing bitmap font formats has been synchronized.  To do that
-      the FT_Bitmap_Size structure has been extended to contain new
+      the FT_Bitmap_Size  structure has  been extended to  contain new
       fields `size', `x_ppem', and `y_ppem'.
 
     - The FNT driver now returns multiple faces, not multiple strikes.
 
-    - The `psnames' module has been updated to the Adobe Glyph List
+    - The `psnames'  module has been  updated to the Adobe  Glyph List
       version 2.0.
 
     - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
@@ -73,198 +74,208 @@
     - The algorithm for guessing the font style has been improved.
 
     - For fonts in sfnt format, root->height is no longer increased if
-      the line gap is zero.  There exist fonts (containing e.g. form
-      drawing characters) which intentionally have a zero line gap value.
+      the line gap  is zero.  There exist fonts  (containing e.g. form
+      drawing  characters) which  intentionally have  a zero  line gap
+      value.
 
-    - ft_glyph_bbox_xxx flags are now deprecated in favour of
+    - ft_glyph_bbox_xxx  flags   are  now  deprecated   in  favour  of
       FT_GLYPH_BBOX_XXX.
 
-    - ft_module_xxx flags are now deprecated in favour of FT_MODULE_XXX.
+    - ft_module_xxx   flags   are   now   deprecated  in   favour   of
+      FT_MODULE_XXX.
 
-    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now deprecated
-      in favour of FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those
-      encodings are not specific to Microsoft.
+    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}      are     now
+      deprecated               in               favour              of
+      FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB}  -- those encodings
+      are not specific to Microsoft.
 
 
   III. MISCELLANEOUS
 
-    - The autohinter has been further improved; for example, `m' glyphs
-      now retain its vertical symmetry.
+    - The  autohinter  has been  further  improved;  for example,  `m'
+      glyphs now retain its vertical symmetry.
 
     - Partial support of Mac fonts on non-Mac platforms.
 
-    - `make refdoc' (after first `make') builds the HTML documentation.
-      You need Python for this.
+    - `make   refdoc'   (after   first   `make')   builds   the   HTML
+      documentation.  You need Python for this.
 
-    - The make build system should now work more reliably on DOS-like
+    - The make build system should  now work more reliably on DOS-like
       platforms.
 
-    - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has been
-      added.
+    - Support for  EMX gcc  and Watson C/C++  compilers on  MS-DOS has
+      been added.
 
     - Better VMS build support.
 
-    - Support for the pkg-config package by providing a `freetype.pc'
+    - Support for the pkg-config  package by providing a `freetype.pc'
       file.
 
     - New configure option --with-old-mac-fonts for Darwin.
 
-    - Some source files have been renamed (mainly to fit into the 8.3
+    - Some source files have been  renamed (mainly to fit into the 8.3
       naming scheme).
 
 
-==============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.4 and 2.1.3
 
   I. IMPORTANT BUG FIXES
 
-    - Updated to newest libtool version, fixing build problems on various
-      platforms.
+    - Updated  to newest  libtool  version, fixing  build problems  on
+      various platforms.
 
-    - A fix in the Gzip stream reader: It couldn't read certain .gz files
-      properly due to a small typo.  In certain cases, FreeType could also
-      loop endlessly when trying to load tiny gzipped files.
+    - A fix  in the Gzip stream  reader: It couldn't  read certain .gz
+      files properly due to a  small typo.  In certain cases, FreeType
+      could  also loop  endlessly  when trying  to  load tiny  gzipped
+      files.
 
-    - The configure script now tries to use the system-wide zlib when
-      it finds one (instead of the copy found in src/gzip).  And
-      "freetype-config" has been updated to return relevant flags in this
-      case when invoked with "--libs" (e.g. "-lzlib").
+    - The configure script now tries  to use the system-wide zlib when
+      it  finds one  (instead of  the  copy found  in src/gzip).   And
+      "freetype-config" has  been updated to return  relevant flags in
+      this case when invoked with "--libs" (e.g. "-lzlib").
 
-    - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
-      Unicode charmap (e.g. SYMBOL.TTF).  FreeType erroneously rejected
-      them.
+    - Certain fonts couldn't be loaded  by 2.1.3 because they lacked a
+      Unicode   charmap  (e.g.   SYMBOL.TTF).    FreeType  erroneously
+      rejected them.
 
     - The CFF loader was modified to accept fonts which only contain a
-      subset of their reference charset.  This prevented the correct use
-      of PDF-embedded fonts.
+      subset of  their reference charset.  This  prevented the correct
+      use of PDF-embedded fonts.
 
     - The logic to detect Unicode charmaps has been modified.  This is
-      required to support fonts which include both 16-bit and 32-bit
-      charmaps (like very recent asian ones) using the new 10 and 12 SFNT
-      formats.
+      required to  support fonts which include both  16-bit and 32-bit
+      charmaps (like very  recent asian ones) using the  new 10 and 12
+      SFNT formats.
 
-    - The TrueType loader now limits the depth of composite glyphs.  This is
-      necessary to prevent broken fonts to break the engine by blowing the
-      stack with recursive glyph definitions.
+    - The TrueType  loader now limits  the depth of  composite glyphs.
+      This is necessary to prevent broken fonts to break the engine by
+      blowing the stack with recursive glyph definitions.
 
-    - The CMap cache is now capable of managing UCS-4 character codes that
-      are mapped through extended charmaps in recent TrueType/OpenType
-      fonts.
+    - The CMap cache is now  capable of managing UCS-4 character codes
+      that   are   mapped   through   extended  charmaps   in   recent
+      TrueType/OpenType fonts.
 
-    - The cache sub-system now properly manages out-of-memory conditions
-      instead of blindly reporting them to the caller.  This means that it
-      will try to empty the cache before restarting its allocations to see
-      if that can help.
+    - The   cache  sub-system   now  properly   manages  out-of-memory
+      conditions  instead of  blindly  reporting them  to the  caller.
+      This means that it will try to empty the cache before restarting
+      its allocations to see if that can help.
 
-    - The PFR driver didn't return the list of available embedded bitmaps
-      properly.
+    - The  PFR driver  didn't return  the list  of  available embedded
+      bitmaps properly.
 
-    - There was a nasty memory leak when using embedded bitmaps in certain
-      font formats.
+    - There was  a nasty  memory leak when  using embedded  bitmaps in
+      certain font formats.
 
 
   II. IMPORTANT CHANGES
 
-    - David Chester contributed some enhancements to the auto-hinter that
-      significantly increase the quality of its output.  The Postscript
-      hinter was also improved in several ways.
+    - David Chester  contributed some enhancements  to the auto-hinter
+      that  significantly increase  the  quality of  its output.   The
+      Postscript hinter was also improved in several ways.
 
     - The FT_RENDER_MODE_LIGHT render mode was implemented.
 
-    - A new API function called `FT_Get_BDF_Property' has been added to
-      FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font files.
-      THIS IS STILL EXPERIMENTAL, since it hasn't been properly tested yet.
+    - A new  API function called `FT_Get_BDF_Property'  has been added
+      to FT_BDF_H to  retrieve BDF properties from BDF  _and_ PCF font
+      files.   THIS  IS  STILL  EXPERIMENTAL,  since  it  hasn't  been
+      properly tested yet.
 
     - A Windows FNT specific API has been added, mostly to access font
       headers.  This is used by Wine.
 
-    - TrueType tables without an "hmtx" table are now tolerated when an
-      incremental interface is used.  This happens for certain Type42 fonts
-      passed from Ghostscript to FreeType.
+    - TrueType tables  without an "hmtx" table are  now tolerated when
+      an  incremental interface  is  used.  This  happens for  certain
+      Type42 fonts passed from Ghostscript to FreeType.
 
-    - The PFR font driver is now capable of returning the font family and
-      style names when they are available (instead of the sole "FontID").
-      This is performed by parsing an *undocumented* portion of the font
-      file!
+    - The PFR font driver is  now capable of returning the font family
+      and style  names when  they are available  (instead of  the sole
+      "FontID").   This  is  performed  by parsing  an  *undocumented*
+      portion of the font file!
 
 
   III. MISCELLANEOUS
 
-    - The path stroker in FT_STROKER_H has entered beta stage.  It now works
-      very well, but its interface might change a bit in the future.  More
-      on this in later releases.
+    - The path stroker in FT_STROKER_H has entered beta stage.  It now
+      works very  well, but  its interface might  change a bit  in the
+      future.  More on this in later releases.
 
-    - The documentation for FT_Size_Metrics didn't appear properly in the
-      API reference.
+    - The documentation for  FT_Size_Metrics didn't appear properly in
+      the API reference.
 
     - The file docs/VERSION.DLL has been updated to explain versioning
-      with FreeType (i.e., comparing release/libtool/so numbers, and how to
-      use them in autoconf scripts).
+      with FreeType  (i.e., comparing release/libtool/so  numbers, and
+      how to use them in autoconf scripts).
 
-    - The installation documentation has been seriously revamped.
+    - The  installation  documentation  has been  seriously  revamped.
       Everything is now in the "docs" directory.
 
 
-==============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.3 and 2.1.2
 
   I. IMPORTANT BUG FIXES
 
-    - FT_Vector_Transform had been incorrectly modified in 2.1.2, resulting
-      in incorrect transformations being applied (for example, rotations
-      were processed in opposite angles).
+    - FT_Vector_Transform  had  been  incorrectly modified  in  2.1.2,
+      resulting  in  incorrect   transformations  being  applied  (for
+      example, rotations were processed in opposite angles).
 
-    - The format 8 and 12 TrueType charmap enumeration routines have been
-      fixed (FT_Get_Next_Char returned invalid values).
+    - The format  8 and 12 TrueType charmap  enumeration routines have
+      been fixed (FT_Get_Next_Char returned invalid values).
 
-    - The PFR font driver returned incorrect advance widths if the outline
-      and metrics resolution defined in the font file were different.
+    - The  PFR font driver  returned incorrect  advance widths  if the
+      outline  and metrics resolution  defined in  the font  file were
+      different.
 
-    - FT_Glyph_To_Bitmap now returns successfully when called with an
+    - FT_Glyph_To_Bitmap now returns  successfully when called with an
       FT_BitmapGlyph argument (it previously returned an error).
 
-    - A bug in the Type 1 loader that prevented valid font bounding boxes to
-      be loaded from multiple master fonts.
+    - A bug  in the Type 1  loader that prevented  valid font bounding
+      boxes to be loaded from multiple master fonts.
 
-    - The SFNT validation code has been rewritten.  FreeType can now load
-      "broken" fonts that were usable on Windows, but not with previous
-      versions of the library.
+    - The SFNT  validation code has been rewritten.   FreeType can now
+      load "broken"  fonts that were  usable on Windows, but  not with
+      previous versions of the library.
 
     - The computation of bearings in the BDF driver has been fixed.
 
-    - The Postscript hinter crashed when trying to hint certain glyphs (more
-      precisely, when trying to apply hints to an empty glyph outline).
+    - The Postscript hinter crashed when trying to hint certain glyphs
+      (more precisely,  when trying to  apply hints to an  empty glyph
+      outline).
 
-    - The TrueType glyph loader now supports composites in "Apple format"
-      (they differ slightly from Microsoft/OpenType ones in the way
-      transformation offsets are computed).
+    - The  TrueType glyph  loader  now supports  composites in  "Apple
+      format"  (they differ slightly  from Microsoft/OpenType  ones in
+      the way transformation offsets are computed).
 
-    - FreeType was very slow at opening certain asian CID/CFF fonts, due
-      to fixed increment in dynamic array re-allocations.  This has been
-      changed to exponential behaviour to get acceptable performance.
+    - FreeType was  very slow at opening certain  asian CID/CFF fonts,
+      due to  fixed increment  in dynamic array  re-allocations.  This
+      has  been changed  to  exponential behaviour  to get  acceptable
+      performance.
 
 
 
   II. IMPORTANT CHANGES
 
-    - The PCF driver now supports gzip-compressed font files natively.  This
-      means that you will be able to use all these bitmap fonts that come
-      with XFree86 with FreeType (and libXft/libXft2, by extension).
+    - The PCF driver now supports gzip-compressed font files natively.
+      This means that  you will be able to use  all these bitmap fonts
+      that  come with  XFree86 with  FreeType (and  libXft/libXft2, by
+      extension).
 
-    - The automatic and postscript hinters have both been updated.  This
-      results in a relatively important increase of rendering quality since
-      many nasty defaults have been supressed.  Please visit the web page:
+    - The  automatic and  postscript hinters  have both  been updated.
+      This  results in  a relatively  important increase  of rendering
+      quality since  many nasty defaults have  been supressed.  Please
+      visit the web page:
 
         http://www.freetype.org/hinting/smooth-hinting.html
 
       for additional details on this topic.
 
-    - The "load_flags" parameter of FT_Load_Glyph is now an FT_Int32
-      (instead of just being an FT_Int).  This breaks source and binary
-      compatibility for 16bit systems only, while retaining both of them for
-      32 and 64 bit ones.
+    - The "load_flags"  parameter of FT_Load_Glyph is  now an FT_Int32
+      (instead  of just  being  an FT_Int).   This  breaks source  and
+      binary  compatibility for  16bit systems  only,  while retaining
+      both of them for 32 and 64 bit ones.
 
       Some new flags have been added consequently:
 
@@ -271,63 +282,66 @@
         FT_LOAD_NO_AUTOHINT   :: Disable the use of the auto-hinter
                                  (but not native format hinters).
 
-        FT_LOAD_TARGET_NORMAL :: Hint and render for normal anti-aliased
-                                 displays.
+        FT_LOAD_TARGET_NORMAL :: Hint and render for normal
+                                 anti-aliased displays.
 
         FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
 
-        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or BGR
-                                 sub-pixel displays (like LCD screens).
-                                 THIS IS STILL EXPERIMENTAL!
+        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
+                                 BGR sub-pixel displays (like LCD
+                                 screens).  THIS IS STILL
+                                 EXPERIMENTAL!
 
-        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for vertical
-                                 sub-pixel displays (like rotated LCD
-                                 screens).  THIS IS STILL EXPERIMENTAL!
+        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
+                                 vertical sub-pixel displays (like
+                                 rotated LCD screens).  THIS IS STILL
+                                 EXPERIMENTAL!
 
-      FT_LOAD_MONOCHROME is still supported, but only affects rendering, not
-      the hinting.
+      FT_LOAD_MONOCHROME   is  still   supported,  but   only  affects
+      rendering, not the hinting.
 
-      Note that the 'ftview' demo program available in the 'ft2demos' package
-      has been updated to support LCD-optimized display on non-paletted
-      displays (under Win32 and X11).
+      Note that the `ftview'  demo program available in the `ft2demos'
+      package  has been  updated to  support LCD-optimized  display on
+      non-paletted displays (under Win32 and X11).
 
-    - The PFR driver now supports embedded bitmaps (all formats supported),
-      and returns correct kerning metrics for all glyphs.
+    - The  PFR  driver  now  supports embedded  bitmaps  (all  formats
+      supported), and returns correct kerning metrics for all glyphs.
 
-    - The TrueType charmap loader now supports certain "broken" fonts that
-      load under Windows without problems.
+    - The TrueType charmap loader  now supports certain `broken' fonts
+      that load under Windows without problems.
 
     - The cache API has been slightly modified (it's still a beta!):
 
-       - The type FTC_ImageDesc has been removed; it is now replaced by
-         FTC_ImageTypeRec.  Note that one of its fields is a `load_flag'
-         parameter for FT_Load_Glyph.
+       - The type  FTC_ImageDesc has been removed; it  is now replaced
+         by  FTC_ImageTypeRec.   Note that  one  of  its  fields is  a
+         `load_flag' parameter for FT_Load_Glyph.
 
-       - The field "num_grays" of FT_SBitRec has been changed to "max_grays"
-         in order to fit within a single byte.  Its maximum value is thus 255
-         (instead of 256 as previously).
+       - The  field  "num_grays" of  FT_SBitRec  has  been changed  to
+         "max_grays"  in  order to  fit  within  a  single byte.   Its
+         maximum value is thus 255 (instead of 256 as previously).
 
 
   III. MISCELLANEOUS
 
-    - Added support for the DESTDIR variable during "make install".  This
-      simplifies packaging of FreeType.
+    - Added support  for the  DESTDIR variable during  "make install".
+      This simplifies packaging of FreeType.
 
-    - Included modified copies of the ZLib sources in 'src/gzip' in order to
-      support gzip-compressed PCF fonts.  We do not use the system-provided
-      zlib for now, though this is a probable enhancement for future
-      releases.
+    - Included modified  copies of the  ZLib sources in  `src/gzip' in
+      order to support  gzip-compressed PCF fonts.  We do  not use the
+      system-provided  zlib  for  now,   though  this  is  a  probable
+      enhancement for future releases.
 
-    - The DocMaker tool used to generate the on-line API reference has been
-      completely rewritten.  It is now located in
+    - The DocMaker tool used to generate the on-line API reference has
+      been   completely    rewritten.    It   is    now   located   in
       "src/tools/docmaker/docmaker.py".  Features:
 
         - better cross-referenced output
         - more polished output
-        - uses Python regular expressions (though it didn't speed the
+        - uses Python regular expressions  (though it didn't speed the
           program)
-        - much more modular structure, which allows for different "backends"
-          in order to generate HTML, XML, or whatever format.
+        - much  more  modular structure,  which  allows for  different
+          "backends"  in  order to  generate  HTML,  XML, or  whatever
+          format.
 
       One can regenerate the API reference by calling:
 
@@ -340,86 +354,92 @@
                 include/freetype/cache/*.h
 
     - A new, experimental, support for incremental font loading (i.e.,
-      loading of fonts where the glyphs are not in the font file itself, but
-      provided by an external component, like a Postscript interpreter) has
-      been added by Graham Asher.  This is still work in progress, however.
+      loading  of fonts  where the  glyphs are  not in  the  font file
+      itself, but provided by an external component, like a Postscript
+      interpreter) has been added by Graham Asher.  This is still work
+      in progress, however.
 
-    - A new, EXPERIMENTAL, path stroker has been added.  It doesn't suffer
-      from severe rounding errors and treat bezier arcs directly.  Still
-      work in progress (i.e. not part of the official API).  See the file
-      <freetype/ftstroker.h> for some of the details.
+    - A new,  EXPERIMENTAL, path stroker  has been added.   It doesn't
+      suffer  from  severe  rounding  errors  and  treat  bezier  arcs
+      directly.  Still work in progress (i.e. not part of the official
+      API).   See  the file  <freetype/ftstroker.h>  for  some of  the
+      details.
 
-    - The massive re-formatting of sources and internal re-design is still
-      under-way.  Many internal functions, constants, and types have been
-      renamed.
+    - The massive  re-formatting of sources and  internal re-design is
+      still under-way.  Many  internal functions, constants, and types
+      have been renamed.
 
 
-========================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.2 and 2.1.1
 
   I. IMPORTANT BUG FIXES
 
-    - Many font drivers didn't select a Unicode charmap by default when
-      a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS options
-      enabled), causing many applications to not be able to display text
-      correctly with the 2.1.x releases.
+    - Many  font drivers didn't  select a  Unicode charmap  by default
+      when a new face  was opened (with the FT_CONFIG_OPTION_USE_CMAPS
+      options enabled),  causing many applications  to not be  able to
+      display text correctly with the 2.1.x releases.
 
-    - The PFR driver had a bug in its composite loading code that produces
-      incorrectly placed accents with many fonts.
+    - The  PFR driver had  a bug  in its  composite loading  code that
+      produces incorrectly placed accents with many fonts.
 
     - The Type42 driver crashed sometimes due to a nasty bug.
 
-    - The Type 1 custom encoding charmap didn't handle the case where the
-      first glyph index wasn't 0.
+    - The Type 1 custom encoding  charmap didn't handle the case where
+      the first glyph index wasn't 0.
 
-    - A serious typo in the TrueType composite loader produced incorrectly
-      placed glyphs in fonts like "Wingdings" and a few others.
+    - A  serious  typo  in  the  TrueType  composite  loader  produced
+      incorrectly placed  glyphs in fonts  like "Wingdings" and  a few
+      others.
 
 
   II. MISCELLANEOUS
 
-    - The Win32 Visual C++ project file has been updated to include the
-      PFR driver as well.
+    - The Win32  Visual C++ project  file has been updated  to include
+      the PFR driver as well.
 
-    - "freetype.m4" is now installed by default by "make install" on Unix
-      systems.
+    - "freetype.m4" is  now installed by default by  "make install" on
+      Unix systems.
 
-    - The function FT_Get_PS_Font_Info now works with CID and Type42 fonts
-      as well.
+    - The function  FT_Get_PS_Font_Info now works with  CID and Type42
+      fonts as well.
 
 
-========================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.1 and 2.1.0
 
   I. IMPORTANT BUG FIXES
 
-    - The `version_info' returned by `freetype-config' in 2.1.0 returned an
-      invalid value. It now returns 9:1:3 (2.0.9 returned 9:0:3).
+    - The  `version_info'  returned   by  `freetype-config'  in  2.1.0
+      returned an invalid value.  It now returns 9:1:3 (2.0.9 returned
+      9:0:3).
 
-    - Version 2.1.0 couldn't be linked against applications on Win32 and
-      Amiga systems due to a new debug function that wasn't properly
-      propagated to the system-specific directory in `builds'.
+    - Version 2.1.0  couldn't be linked against  applications on Win32
+      and  Amiga systems  due  to  a new  debug  function that  wasn't
+      properly   propagated  to   the  system-specific   directory  in
+      `builds'.
 
     - Various MacOS and Mac OS X specific fixes.
 
-    - Fixed a bug in the TrueType charmap validation routines that made
-      version 2.1.0 too restrictive -- many popular fonts have been
-      rejected.
+    - Fixed  a bug in  the TrueType  charmap validation  routines that
+      made version  2.1.0 too restrictive  -- many popular  fonts have
+      been rejected.
 
-    - There was still a very small difference between the monochrome glyph
-      bitmaps produced by FreeType 1.x and FreeType 2.x with the bytecode
-      interpreter enabled.  This was caused by an invalid flag setting in
-      the TrueType glyph loader, making the rasterizer change its drop-out
-      control mode.  Now theresults should _really_ be completely identical.
+    - There was  still a very small difference  between the monochrome
+      glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
+      bytecode  interpreter enabled.   This was  caused by  an invalid
+      flag setting in the TrueType glyph loader, making the rasterizer
+      change  its  drop-out   control  mode.   Now  theresults  should
+      _really_ be completely identical.
 
     - The TrueType name table loader has been improved to support many
-      popular though buggy Asian fonts.  It now ignores empty name entries,
-      invalid pointer offsets and a few other incorrect subtleties.
-      Moreover, name strings are now loaded on demand, which reduces the
-      memory load of many faces (e.g. the ARIAL.TTF font file contains a
-      10kByte name table with 70 names).
+      popular  though buggy Asian  fonts.  It  now ignores  empty name
+      entries,  invalid  pointer offsets  and  a  few other  incorrect
+      subtleties.  Moreover,  name strings  are now loaded  on demand,
+      which reduces the memory load  of many faces (e.g. the ARIAL.TTF
+      font file contains a 10kByte name table with 70 names).
 
     - Fixed a bug in the Postscript hinter that prevented family blues
       substitution to happen correctly.
@@ -429,58 +449,60 @@
 
     - Three new font drivers in this release:
 
-      * A BDF font driver, contributed by Franco Zappa Nardelli, heavily
-        modified by Werner Lemberg.  It also supports anti-aliased bitmaps
-        (using a slightly extended BDF format).
+      * A  BDF  font driver,  contributed  by  Franco Zappa  Nardelli,
+        heavily  modified   by  Werner  Lemberg.    It  also  supports
+        anti-aliased bitmaps (using a slightly extended BDF format).
 
-      * A Type42 font driver, contributed by Roberto Alameda.  It is
+      * A Type42  font driver, contributed by Roberto  Alameda.  It is
         still experimental but seems to work relatively well.
 
-      * A PFR font driver, contributed by David Turner himself.  It doesn't
-        support PFR hinting -- note that BitStream has at least two patents
-        on this format!
+      * A PFR  font driver, contributed  by David Turner  himself.  It
+        doesn't  support PFR  hinting --  note that  BitStream  has at
+        least two patents on this format!
 
 
   III. MISCELLANEOUS
 
-    - The cache sub-system has been optimized in important ways.  Cache hits
-      are now significantly faster.  For example, using the CMap cache is
-      about twice faster than calling FT_Get_Char_Index on most platforms.
-      Similarly, using an SBit cache is about five times faster than loading
-      the bitmaps from a bitmap file, and 300 to 500 times faster than
-      generating them from a scalable format.
+    - The  cache  sub-system has  been  optimized  in important  ways.
+      Cache hits are now significantly faster.  For example, using the
+      CMap cache is about  twice faster than calling FT_Get_Char_Index
+      on most platforms.  Similarly, using an SBit cache is about five
+      times faster  than loading the  bitmaps from a bitmap  file, and
+      300 to  500 times  faster than generating  them from  a scalable
+      format.
 
-      Note that you should recompile your sources if you designed a custom
-      cache class for the FT2 Cache subsystem, since the changes performed
-      are source, but not binary, compatible.
+      Note that  you should recompile  your sources if you  designed a
+      custom  cache  class for  the  FT2  Cache  subsystem, since  the
+      changes performed are source, but not binary, compatible.
 
 
-========================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.1.0 and 2.0.9
 
   I. IMPORTANT BUG FIXES
 
-    - The TrueType bytecode interpreter has been fixed to produce
+    - The  TrueType bytecode  interpreter  has been  fixed to  produce
       _exactly_ the same output as FreeType 1.x.  Previous differences
-      were due to slightly distinct fixed-point computation routines
+      were due  to slightly distinct  fixed-point computation routines
       used to perform dot products and vector length measurements.
 
-      It seems that native TrueType hinting is _extremely_ sensitive
-      to rounding errors.  The required vector computation routines have
-      been optimized and placed within the "ttinterp.c" file.
+      It seems  that native TrueType hinting  is _extremely_ sensitive
+      to  rounding errors.  The  required vector  computation routines
+      have been optimized and placed within the "ttinterp.c" file.
 
     - Fixed the parsing of accelerator tables in the PCF font driver.
 
-    - Fixed the Type1 glyph loader routine used to compute the font's
+    - Fixed the Type1 glyph loader  routine used to compute the font's
       maximum advance width.
 
+
   II. NEW FEATURES
 
     - The `configure' script used on Unix systems has been modified to
-      check that GNU Make is being used to build the library.  Otherwise,
-      it will display a message proposing to use the GNUMAKE environment
-      variable to name it.
+      check  that  GNU  Make  is  being used  to  build  the  library.
+      Otherwise,  it  will display  a  message  proposing  to use  the
+      GNUMAKE environment variable to name it.
 
       The Unix-specific file README.UNX has been modified accordingly.
 
@@ -487,58 +509,59 @@
 
   III. MISCELLANEOUS
 
-    - The FreeType License in `docs/FTL.txt' has been updated to include
-      a proposed preferred disclaimer.  If you are using FreeType in your
-      products, you are encouraged (but not mandated) to use the following
-      text in your documentation:
+    - The  FreeType  License in  `docs/FTL.txt'  has  been updated  to
+      include  a  proposed preferred  disclaimer.   If  you are  using
+      FreeType in your products, you are encouraged (but not mandated)
+      to use the following text in your documentation:
 
       """
-        Portions of this software are copyright � 1996-2002 The FreeType
-        Project (www.freetype.org).  All rights reserved.
+        Portions of this software are copyright � 1996-2002 The
+        FreeType Project (www.freetype.org).  All rights reserved.
       """
 
     - The default size of the render pool has been reduced to 16kByte.
-      This shouldn't result in any noticeable performance penalty, unless
-      you are using the engine as-is to render very large and complex
-      glyphs.
+      This  shouldn't result  in any  noticeable  performance penalty,
+      unless you are  using the engine as-is to  render very large and
+      complex glyphs.
 
-    - The FreeType 2 redesign has begun.  More information can be found
-      at this URL:
+    - The  FreeType 2  redesign has  begun.  More  information  can be
+      found at this URL:
 
         http://www.freetype.org/freetype2/redesign.html
 
-      The following internal changes have been performed within the sources
-      of this release:
+      The following  internal changes  have been performed  within the
+      sources of this release:
 
-        - Many internal types have been renamed to increase consistency.
-          The following should be true, except for public types:
+        - Many   internal  types   have  been   renamed   to  increase
+          consistency.   The  following  should  be true,  except  for
+          public types:
 
-            * All structure types have a name ending in "Rec" (short for
-              `record').
+            * All structure  types have a name ending  in "Rec" (short
+              for `record').
 
-            * A pointer-to-structure type has the same name as the
+            * A  pointer-to-structure type  has the  same name  as the
               structure, _without_ the "Rec" suffix.
 
-                Example:
+              Example:
 
-                  typedef struct FooRec_
-                  {
-                    ...
+                typedef struct FooRec_
+                {
+                  ...
 
-                  } FooRec, *Foo;
+                } FooRec, *Foo;
 
-        - Many internal macros have been renamed to increase consistency.
-          The following should be true:
+        - Many   internal  macros  have   been  renamed   to  increase
+          consistency.  The following should be true:
 
-            * All macros have a name beginning with "FT_".  This required
-              a few changes like
+            * All  macros  have a  name  beginning  with "FT_".   This
+              required a few changes like
 
                 ALLOC   => FT_ALLOC
                 FREE    => FT_FREE
                 REALLOC => FT_REALLOC
 
-            * All macros are completely UPPERCASE.  This required a few
-              changes like:
+            * All  macros are completely  UPPERCASE.  This  required a
+              few changes like:
 
                 READ_Short  => FT_READ_SHORT
                 NEXT_Short  => FT_NEXT_SHORT
@@ -547,7 +570,7 @@
                 MEM_Copy    => FT_MEM_COPY
                 etc.
 
-            * Whenever possible, all macro names follow the
+            * Whenever   possible,   all   macro  names   follow   the
               FT_<OBJECT>_<METHOD> pattern.  For example
 
                 ACCESS_Frame   => FT_FRAME_ENTER
@@ -561,7 +584,7 @@
                 FILE_ReadAt    => FT_STREAM_READ_AT
                 READ_Fields    => FT_STREAM_READ_FIELDS
 
-        - Many internal functions have been renamed to follow the
+        - Many  internal functions  have  been renamed  to follow  the
           FT_<Object>_<Method> pattern.  For example:
 
             FT_Seek_Stream       => FT_Stream_Seek
@@ -573,30 +596,31 @@
 
           Note that method names do not contain "_".
 
-        - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
-          with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a type
-          as the fourth argument.  Instead, the array element type size
-          is computed automatically from the type of the target pointer
-          used.
+        - The FT_ALLOC_ARRAY  and FT_REALLOC_ARRAY have  been replaced
+          with  FT_NEW_ARRAY and  FT_RENEW_ARRAY which  do not  take a
+          type  as the  fourth argument.   Instead, the  array element
+          type  size is computed  automatically from  the type  of the
+          target pointer used.
 
-        - A new object class, FT_CMap, has been introduced.  These
-          internal objects are used to model character maps.  This eases
-          the support of additional charmap types within the engine.
+        - A  new object  class, FT_CMap,  has been  introduced.  These
+          internal  objects are  used to  model character  maps.  This
+          eases  the support  of additional  charmap types  within the
+          engine.
 
-        - A new configuration file named "ftstdlib.h" has been added
-          to `include/freetype/config'.  It is used to define aliases
-          for _every_ routine of the ISO C library that the font engine
-          uses.  Each aliases has a "ft_" prefix (e.g. "ft_strlen" is an
-          alias for "strlen").
+        - A new  configuration file named "ftstdlib.h"  has been added
+          to `include/freetype/config'.  It  is used to define aliases
+          for  _every_ routine  of the  ISO  C library  that the  font
+          engine   uses.    Each    aliases   has   a   "ft_"   prefix
+          (e.g. "ft_strlen" is an alias for "strlen").
 
-          This is used to ease the porting of FreeType 2 to exotic runtime
-          environments where the ISO C Library isn't available (e.g.
-          XFree86 extension modules).
+          This is  used to  ease the porting  of FreeType 2  to exotic
+          runtime environments where the ISO C Library isn't available
+          (e.g.  XFree86 extension modules).
 
       More details are available in the "ChangeLog" file.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.9 and 2.0.8
 
@@ -603,104 +627,108 @@
   I. IMPORTANT BUG FIXES
 
     - Certain fonts like "foxjump.ttf" contain broken name tables with
-      invalid entries and wild offsets.  This caused FreeType to crash when
-      trying to load them.
+      invalid entries and wild offsets.  This caused FreeType to crash
+      when trying to load them.
 
-      The SFNT `name' table loader has been fixed to be able to support
-      these strange fonts.
+      The  SFNT `name'  table  loader has  been  fixed to  be able  to
+      support these strange fonts.
 
-      Moreover, the code in charge of processing this table has been changed
-      to always favour Windows-formatted entries over other ones.  Hence, a
-      font that works on Windows but not on the Mac will load cleanly in
-      FreeType and report accurate values for Family & PostScript names.
+      Moreover, the code  in charge of processing this  table has been
+      changed  to always favour  Windows-formatted entries  over other
+      ones.  Hence,  a font that works  on Windows but not  on the Mac
+      will  load cleanly in  FreeType and  report accurate  values for
+      Family & PostScript names.
 
     - The CID font driver has been fixed.  It unfortunately returned a
-      Postscript Font name with a leading slash, as in
+      Postscript   Font   name   with   a   leading   slash,   as   in
       "/MunhwaGothic-Regular".
 
-    - FreeType 2 should now compile fine on AIX 4.3.3 as a shared library.
+    - FreeType  2 should now  compile fine  on AIX  4.3.3 as  a shared
+      library.
 
-    - A bug in the Postscript hinter has been found and fixed, removing
-      un-even stem widths at small pixel sizes (like 14-17).
+    - A  bug  in the  Postscript  hinter  has  been found  and  fixed,
+      removing un-even stem widths at small pixel sizes (like 14-17).
 
-      This improves the quality of a certain number of Postscript fonts.
+      This  improves the  quality of  a certain  number  of Postscript
+      fonts.
 
 
   II. NEW FEATURES
 
-    - A new function named `FT_Library_Version' has been added to return
-      the current library's major, minor, and patch version numbers.  This
-      is important since the macros FREETYPE_MAJOR, FREETYPE_MINOR, and
-      FREETYPE_PATCH cannot be used when the library is dynamically linked
-      by a program.
+    - A  new function  named  `FT_Library_Version' has  been added  to
+      return  the current  library's major,  minor, and  patch version
+      numbers.   This is  important since  the  macros FREETYPE_MAJOR,
+      FREETYPE_MINOR,  and  FREETYPE_PATCH  cannot  be used  when  the
+      library is dynamically linked by a program.
 
-    - Two new APIs have been added: `FT_Get_First_Char' and
+    - Two   new  APIs   have  been   added:   `FT_Get_First_Char'  and
       `FT_Get_Next_Char'.
 
-      Together, these can be used to iterate efficiently over the currently
-      selected charmap of a given face.  Read the API reference for more
-      details.
+      Together,  these can  be used  to iterate  efficiently  over the
+      currently  selected  charmap of  a  given  face.   Read the  API
+      reference for more details.
 
 
   III. MISCELLANEOUS
 
-    - The FreeType sources are under heavy internal re-factoring.  As a
-      consequence, we have created a branch named "STABLE" on the CVS to
-      hold all future releases/fixes in the 2.0.x family.
+    - The FreeType sources are  under heavy internal re-factoring.  As
+      a consequence,  we have created  a branch named "STABLE"  on the
+      CVS to hold all future releases/fixes in the 2.0.x family.
 
-      The HEAD branch now contains the re-factored sources and shouldn't be
-      used for testing or packaging new releases.  In case you would like
-      to access the 2.0.9 sources from our CVS repository, use the tag
-      `VER-2-0-9'.
+      The  HEAD  branch  now  contains  the  re-factored  sources  and
+      shouldn't  be used for  testing or  packaging new  releases.  In
+      case you  would like  to access the  2.0.9 sources from  our CVS
+      repository, use the tag `VER-2-0-9'.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.8 and 2.0.7
 
   I. IMPORTANT BUG FIXES
 
-    - There was a small but nasty bug in "freetype-config.in" which
+    - There was  a small but  nasty bug in  "freetype-config.in" which
       caused the "freetype-config" script to fail on Unix.
 
-      This didn't prevent the installation of the library or even
-      its execution, but caused problems when trying to compile many
-      Unix packages that depend on it.
+      This didn't prevent the installation  of the library or even its
+      execution, but caused problems  when trying to compile many Unix
+      packages that depend on it.
 
-    - Some TrueType or OpenType fonts embedded in PDF documents do
-      not have a 'cmap', 'post' and 'name' as is required by the
+    - Some TrueType or OpenType fonts embedded in PDF documents do not
+      have  a  'cmap',  'post'  and  'name'  as  is  required  by  the
       specification.  FreeType no longer refuses to load such fonts.
 
-    - various fixes to the PCF font driver
+    - Various fixes to the PCF font driver.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.7 and 2.0.6
 
   I. IMPORTANT BUG FIXES
 
-    - Fixed two bugs in the Type 1 font driver.  The first one resulted in a
-      memory leak in subtle cases.  The other one caused FreeType to crash
-      when trying to load ".gsf" files (Ghostscript so-called Postscript
-      fonts).
+    - Fixed  two  bugs in  the  Type 1  font  driver.   The first  one
+      resulted in a memory leak in subtle cases.  The other one caused
+      FreeType to crash when  trying to load ".gsf" files (Ghostscript
+      so-called Postscript fonts).
 
-      (This made _many_ KDE applications crash on certain systems.  FreeType
-       _is_ becoming a critical system component on Linux :-)
+      (This  made _many_  KDE applications  crash on  certain systems.
+       FreeType _is_ becoming a critical system component on Linux :-)
 
     - Fixed a memory leak in the CFF font driver.
 
     - Fixed a memory leak in the PCF font driver.
 
-    - Fixed the Visual C++ project file "builds/win32/visualc/freetype.dsp"
-      since it didn't include the Postscript hinter component, causing
-      errors at build time.
+    - Fixed       the        Visual       C++       project       file
+      "builds/win32/visualc/freetype.dsp" since  it didn't include the
+      Postscript hinter component, causing errors at build time.
 
-    - Fixed a small rendering bug in the anti-aliased renderer that only
-      occurred when trying to draw thin (less than 1 pixel) strokes.
+    - Fixed a  small rendering bug  in the anti-aliased  renderer that
+      only  occurred when  trying to  draw  thin (less  than 1  pixel)
+      strokes.
 
-    - Fixed "builds/unix/freetype2.a4" which is used to generate a valid
-      "freetype2.m4" for use with autoconf.
+    - Fixed  "builds/unix/freetype2.a4" which  is used  to  generate a
+      valid "freetype2.m4" for use with autoconf.
 
     - Fixed the OpenVMS Makefiles.
 
@@ -707,51 +735,52 @@
 
   II. MISCELLANEOUS
 
-    - Added "configure" and "install" scripts to the top-level directory.
-      A GNU-style installation is thus now easily possible with
+    - Added  "configure"  and   "install"  scripts  to  the  top-level
+      directory.  A GNU-style installation is thus now easily possible
+      with
 
-          ./configure  <options>
-          make
-          make install
+        ./configure  <options>
+        make
+        make install
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.6 and 2.0.5
 
   I. IMPORTANT BUG FIXES
 
-    - It wasn't possible to load embedded bitmaps when the auto-hinter was
-      used.  This is now fixed.
+    - It wasn't possible to load embedded bitmaps when the auto-hinter
+      was used.  This is now fixed.
 
-    - The TrueType font driver didn't load some composites properly (the
-      sub-glyphs were slightly shifted, and this was only noticeable when
-      using monochrome rendering).
+    - The TrueType  font driver  didn't load some  composites properly
+      (the  sub-glyphs  were  slightly  shifted,  and  this  was  only
+      noticeable when using monochrome rendering).
 
-    - Various fixes to the auto-hinter.  They merely improve the output of
-      sans-serif fonts.  Note that there are still problems with serifed
-      fonts and composites (accented characters).
+    - Various  fixes  to the  auto-hinter.   They  merely improve  the
+      output of sans-serif fonts.   Note that there are still problems
+      with serifed fonts and composites (accented characters).
 
-    - All scalable font drivers erroneously returned un-fitted glyph
-      advances when hinting was requested.  This created problems for a
-      number of layout applications.  This is a very old bug that got
-      undetected mainly because most test/demo program perform rounding
-      explicitly or implicitly (through the cache).
+    - All scalable  font drivers erroneously  returned un-fitted glyph
+      advances when hinting was  requested.  This created problems for
+      a number  of layout applications.  This  is a very  old bug that
+      got  undetected mainly  because most  test/demo  program perform
+      rounding explicitly or implicitly (through the cache).
 
-    - FT_Glyph_To_Bitmap() did erroneously modify the source glyph in
+    - FT_Glyph_To_Bitmap() did erroneously  modify the source glyph in
       certain cases.
 
-    - "glnames.py" still contained a bug that made FreeType return invalid
-      names for certain glyphs.
+    - "glnames.py"  still contained  a bug  that made  FreeType return
+      invalid names for certain glyphs.
 
-    - The library crashed when loading certain Type 1 fonts like "sadn.pfb"
-      ("Stalingrad Normal"), which appear to contain pathetic font info
-      dictionaries.
+    - The  library crashed  when  loading certain  Type  1 fonts  like
+      "sadn.pfb"  ("Stalingrad  Normal"),   which  appear  to  contain
+      pathetic font info dictionaries.
 
-    - The TrueType glyph loader is now much more paranoid and checks everything
-      when loading a given glyph image.  This was necessary to avoid
-      problems (crashes and/or memory overwrites) with broken fonts that
-      came from a really buggy automatic font converter.
+    - The TrueType glyph  loader is now much more  paranoid and checks
+      everything when loading a given glyph image.  This was necessary
+      to avoid problems (crashes and/or memory overwrites) with broken
+      fonts that came from a really buggy automatic font converter.
 
 
   II. IMPORTANT UPDATES AND NEW FEATURES
@@ -758,103 +787,108 @@
 
     - Important updates to the Mac-specific parts of the library.
 
-    - The caching sub-system has been completely re-designed, and its API
-      has evolved (the old one is still supported for backwards
+    - The caching sub-system has  been completely re-designed, and its
+      API has  evolved (the old  one is still supported  for backwards
       compatibility).
 
-      The documentation for it is not yet completed, sorry.  For now, you
-      are encouraged to continue using the old API.  However, the ftview
-      demo program in the ft2demos package has already been updated to use
-      the new caching functions.
+      The documentation for it is  not yet completed, sorry.  For now,
+      you are encouraged to continue  using the old API.  However, the
+      ftview  demo program in  the ft2demos  package has  already been
+      updated to use the new caching functions.
 
-    - A new charmap cache is provided too.  See FTC_CMapCache().  This is
-      useful to perform character code -> glyph index translations quickly,
-      without the need for an opened FT_Face.
+    - A new charmap cache is provided too.  See FTC_CMapCache().  This
+      is useful to perform  character code -> glyph index translations
+      quickly, without the need for an opened FT_Face.
 
-    - A NEW POSTSCRIPT HINTER module has been added to support native hints
-      in the following formats: PostScript Type 1, PostScript CID, and
-      CFF/CEF.
+    - A NEW POSTSCRIPT HINTER module  has been added to support native
+      hints in  the following  formats: PostScript Type  1, PostScript
+      CID, and CFF/CEF.
 
-      Please test!  Note that the auto-hinter produces better results for a
-      number of badly-hinted fonts (mostly auto-generated ones) though.
+      Please test!  Note that  the auto-hinter produces better results
+      for a number of  badly-hinted fonts (mostly auto-generated ones)
+      though.
 
-    - A memory debugger is now part of the standard FreeType sources.  To
-      enable it, define FT_DEBUG_MEMORY in <freetype/config/ftoption.h>, and
-      recompile the library.
+    - A memory debugger is now  part of the standard FreeType sources.
+      To      enable      it,      define      FT_DEBUG_MEMORY      in
+      <freetype/config/ftoption.h>, and recompile the library.
 
-      Additionally, define the _environment_ variable FT_DEBUG_MEMORY and
-      run any program using FreeType.  When the library is exited, a summary
-      of memory footprints and possible leaks will be displayed.
+      Additionally, define  the _environment_ variable FT_DEBUG_MEMORY
+      and run any program using FreeType.  When the library is exited,
+      a  summary  of memory  footprints  and  possible  leaks will  be
+      displayed.
 
-      This works transparently with _any_ program that uses FreeType.
-      However, you will need a lot of memory to use this (allocated blocks
-      are never released to the heap to detect double deletes easily).
+      This works transparently with  _any_ program that uses FreeType.
+      However, you  will need a lot  of memory to  use this (allocated
+      blocks are never  released to the heap to  detect double deletes
+      easily).
 
 
   III. MISCELLANEOUS
 
-    - We are aware of subtle differences between the output of FreeType
-      versions 1 and 2 when it comes to monochrome TrueType-hinted glyphs.
-      These are most probably due to small differences in the monochrome
-      rasterizers and will be worked out in an upcoming release.
+    - We  are  aware  of  subtle  differences between  the  output  of
+      FreeType  versions   1  and  2  when  it   comes  to  monochrome
+      TrueType-hinted glyphs.   These are  most probably due  to small
+      differences in the monochrome rasterizers and will be worked out
+      in an upcoming release.
 
     - We have decided to fork the sources in a "stable" branch, and an
-      "unstable" one, since FreeType is becoming a critical component of
-      many Unix systems.
+      "unstable" one, since FreeType  is becoming a critical component
+      of many Unix systems.
 
-      The next bug-fix releases of the library will be named 2.0.7, 2.0.8,
-      etc., while the "2.1" branch will contain a version of the sources
-      where we will start major reworking of the library's internals, in
-      order to produce FreeType 2.2.0 (or even 3.0) in a more distant
-      future.
+      The next  bug-fix releases of  the library will be  named 2.0.7,
+      2.0.8, etc.,  while the "2.1"  branch will contain a  version of
+      the sources where we will start major reworking of the library's
+      internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
+      more distant future.
 
-      We also hope that this scheme will allow much more frequent releases
-      than in the past.
+      We  also hope  that this  scheme will  allow much  more frequent
+      releases than in the past.
 
 
-============================================================================
+======================================================================
 
 LATEST CHANGES BETWEEN 2.0.5 and 2.0.4
 
-  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE WILL
-  BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
+  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE
+  WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
 
-  - Fixed a bug that made certain glyphs, like "Cacute", "cacute" and
-    "lslash" unavailable from Unicode charmaps of Postscript fonts.  This
-    prevented the correct display of Polish text, for example.
+  - Fixed a bug that made  certain glyphs, like "Cacute", "cacute" and
+    "lslash"  unavailable from Unicode  charmaps of  Postscript fonts.
+    This prevented the correct display of Polish text, for example.
 
-  - The kerning table of Type 1 fonts was loaded by FreeType, when its AFM
-    file was attached to its face, but the FT_FACE_FLAG_HAS_KERNING bit
-    flags was not set correctly, preventing FT_Get_Kerning to return
-    meaningful values.
+  - The kerning table of Type 1 fonts was loaded by FreeType, when its
+    AFM    file    was    attached    to    its    face,    but    the
+    FT_FACE_FLAG_HAS_KERNING   bit  flags   was  not   set  correctly,
+    preventing FT_Get_Kerning to return meaningful values.
 
-  - Improved SFNT (TrueType & OpenType) charmap support.  Slightly better
-    performance, as well as support for the new formats defined by the
-    OpenType 1.3 specification (8, 10, and 12)
+  - Improved  SFNT (TrueType  & OpenType)  charmap  support.  Slightly
+    better performance, as well as support for the new formats defined
+    by the OpenType 1.3 specification (8, 10, and 12)
 
-  - Fixed a serious typo in "src/base/ftcalc.c" which caused invalid
+  - Fixed a  serious typo in "src/base/ftcalc.c"  which caused invalid
     computations in certain rare cases, producing ugly artefacts.
 
-  - The size of the EM square is computed with a more accurate algorithm
-    for Postscript fonts.  The old one caused slight errors with embedded
-    fonts found in PDF documents.
+  - The  size  of the  EM  square is  computed  with  a more  accurate
+    algorithm for Postscript fonts.   The old one caused slight errors
+    with embedded fonts found in PDF documents.
 
-  - Fixed a bug in the cache manager that prevented normal LRU behaviour
-    within the cache manager, causing unnecessary reloads (for FT_Face and
-    FT_Size objects only).
+  - Fixed  a  bug in  the  cache  manager  that prevented  normal  LRU
+    behaviour  within the cache  manager, causing  unnecessary reloads
+    (for FT_Face and FT_Size objects only).
 
-  - Added a new function named "FT_Get_Name_Index" to retrieve the glyph
-    index of a given glyph name, when found in a face.
+  - Added  a new  function named  "FT_Get_Name_Index" to  retrieve the
+    glyph index of a given glyph name, when found in a face.
 
-  - Added a new function named "FT_Get_Postscript_Name" to retrieve the
-    "unique" Postscript font name of a given face.
+  - Added  a new function  named "FT_Get_Postscript_Name"  to retrieve
+    the "unique" Postscript font name of a given face.
 
-  - Added a new public header size named FT_SIZES_H (or
-    <freetype/ftsizes.h>) providing new FT_Size-management functions:
+  - Added   a   new   public   header  size   named   FT_SIZES_H   (or
+    <freetype/ftsizes.h>) providing  new FT_Size-management functions:
     FT_New_Size, FT_Activate_Size, FT_Done_Size.
 
-  - Fixed a reallocation bug that generated a dangling pointer (and possibly
-    memory leaks) with Postscript fonts (in src/psaux/psobjs.c).
+  - Fixed a  reallocation bug that  generated a dangling  pointer (and
+    possibly    memory    leaks)    with    Postscript    fonts    (in
+    src/psaux/psobjs.c).
 
   - Many fixes for 16-bit correctness.
 
@@ -862,124 +896,131 @@
 
   - Added an Amiga build directory in "builds/amiga".
 
-============================================================================
 
+======================================================================
+
 LATEST CHANGES BETWEEN 2.0.4 and 2.0.3
 
-  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely, the
-    font transformation set through FT_Set_Transform was applied twice to
-    auto-hinted glyphs, resulting in incorrectly rotated text output.
+  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely,
+    the font  transformation set through  FT_Set_Transform was applied
+    twice to auto-hinted glyphs, resulting in incorrectly rotated text
+    output.
 
-  - Fixed _many_ compiler warnings.  FT2 should now compile cleanly with
-    Visual C++'s most pedantic warning level (/W4).  It already compiled
-    fine with GCC and a few other compilers.
+  - Fixed _many_  compiler warnings.   FT2 should now  compile cleanly
+    with Visual  C++'s most pedantic warning level  (/W4).  It already
+    compiled fine with GCC and a few other compilers.
 
-  - Fixed a bug that prevented the linear advance width of composite
+  - Fixed a bug  that prevented the linear advance  width of composite
     TrueType glyphs to be correctly returned.
 
-  - Fixed the Visual C++ project files located in "builds/win32/visualc"
-    (previous versions used older names of the library).
+  - Fixed    the    Visual    C++    project    files    located    in
+    "builds/win32/visualc" (previous versions  used older names of the
+    library).
 
-  - Many 32-bit constants have an "L" appended to their value, in order
-    to improve the 16-bitness of the code.  Someone is actually trying to
-    use FT2 on an Atari ST machine!
+  - Many  32-bit constants  have an  "L" appended  to their  value, in
+    order to improve the 16-bitness  of the code.  Someone is actually
+    trying to use FT2 on an Atari ST machine!
 
-  - Updated the "builds/detect.mk" file in order to automatically build
-    FT2 on AIX systems.  AIX uses "/usr/sbin/init" instead of "/sbin/init"
-    and wasn't previously detected as a Unix platform by the FreeType build
-    system.
+  - Updated  the  "builds/detect.mk" file  in  order to  automatically
+    build FT2  on AIX systems.   AIX uses "/usr/sbin/init"  instead of
+    "/sbin/init" and wasn't previously  detected as a Unix platform by
+    the FreeType build system.
 
-  - Updated the Unix-specific portions of the build system (new libtool
-    version, etc.).
+  - Updated  the  Unix-specific  portions  of the  build  system  (new
+    libtool version, etc.).
 
-  - The SFNT kerning lodaer now ensures that the table is sorted (since some
-    problem fonts do not meet this requirement).
+  - The  SFNT kerning  lodaer now  ensures  that the  table is  sorted
+    (since some problem fonts do not meet this requirement).
 
-============================================================================
 
+=======================================================================
+
 LATEST CHANGES BETWEEN 2.0.3 and 2.0.2
 
   I. CHANGES TO THE MODULES / FONT DRIVERS
 
-    - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix several
-      annoying artefacts, mainly:
+    - THE  AUTO-HINTER HAS  BEEN SLIGHTLY  IMPROVED, in  order  to fix
+      several annoying artefacts, mainly:
 
-        - Blue zone alignement of horizontal stems wasn't performed
-          correctly, resulting in artefacts like the "d" being placed one
-          pixel below the "b" in some fonts like Time New Roman.
+        - Blue  zone alignement of  horizontal stems  wasn't performed
+          correctly, resulting in artefacts  like the "d" being placed
+          one pixel below the "b" in some fonts like Time New Roman.
 
-        - Overshoot thresholding wasn't performed correctly, creating
+        - Overshoot thresholding  wasn't performed correctly, creating
           unpleasant artefacts at large character pixel sizes.
 
-        - Composite glyph loading has been simplified.  This gets rid
-          of various artefacts where the components of a composite glyphs
-          were not correctly spaced.
+        - Composite glyph loading has  been simplified.  This gets rid
+          of  various artefacts  where the  components of  a composite
+          glyphs were not correctly spaced.
 
-      These are the last changes to the current auto-hinting module.  A new
-      hinting sub-system is currently in the work in order to support native
-      hints in Type 1 / CFF / OpenType fonts, as well as globally improve
-      rendering.
+      These are  the last changes to the  current auto-hinting module.
+      A new  hinting sub-system is currently  in the work  in order to
+      support native hints  in Type 1 / CFF /  OpenType fonts, as well
+      as globally improve rendering.
 
-    - The PCF driver has been fixed.  It reported invalid glyph dimensions
-      for the fonts available on Solaris.
+    - The  PCF  driver has  been  fixed.   It  reported invalid  glyph
+      dimensions for the fonts available on Solaris.
 
-    - The Type 1, CID and CFF drivers have been modified to fix the
+    - The Type  1, CID and CFF  drivers have been modified  to fix the
       computation of the EM size.
 
-    - The Type 1 driver has been fixed to avoid a dangerous bug that
-      crashed the library with non-conforming fonts (i.e. ones that do not
-      place the .notdef glyph at position 0).
+    - The Type 1  driver has been fixed to avoid  a dangerous bug that
+      crashed the library with non-conforming fonts (i.e. ones that do
+      not place the .notdef glyph at position 0).
 
-    - The TrueType driver had a rather subtle bug (dangling pointer when
-      loading composite glyphs) that could crash the library in rare
-      occasions!
+    - The TrueType  driver had a  rather subtle bug  (dangling pointer
+      when loading  composite glyphs) that could crash  the library in
+      rare occasions!
 
 
   II. HIGH-LEVEL API CHANGES
 
-    - The error code enumeration values have been changed.  An error value
-      is decomposed in a generic error code, and a module number.  see
-      <freetype/fterrors.h> for details.
+    - The error  code enumeration values have been  changed.  An error
+      value  is decomposed  in  a  generic error  code,  and a  module
+      number.  see <freetype/fterrors.h> for details.
 
-    - A new public header file has been introduced, named FT_TRIGONOMETRY_H
-      (include/freetype/fttrig.h), providing trigonometric functions to
-      compute sines, cosines, arctangents, etc. with 16.16 fixed precision.
-      The implementation is based on the CORDIC algorithm and is very fast
-      while being sufficiently accurate.
+    - A   new  public   header   file  has   been  introduced,   named
+      FT_TRIGONOMETRY_H     (include/freetype/fttrig.h),     providing
+      trigonometric functions to  compute sines, cosines, arctangents,
+      etc. with 16.16 fixed precision.  The implementation is based on
+      the CORDIC  algorithm and is very fast  while being sufficiently
+      accurate.
 
 
   III. INTERNALS
 
-    - Added BeOS-specific files in the old build sub-system.  Note that
-      no changes were required to compile the library with Jam.
+    - Added  BeOS-specific files  in the  old build  sub-system.  Note
+      that no changes were required to compile the library with Jam.
 
-    - The configuration is now capable of automatically detecting 64-bit
-      integers on a set of predefined compilers (GCC, Visual C++, Borland
-      C++) and will use them by default.  This provides a small performance
-      boost.
+    - The  configuration  is now  capable  of automatically  detecting
+      64-bit integers  on a set  of predefined compilers  (GCC, Visual
+      C++, Borland C++) and will use them by default.  This provides a
+      small performance boost.
 
-    - A small memory leak that happened when opening 0-sized files (duh!)
-      have been fixed.
+    - A  small memory leak  that happened  when opening  0-sized files
+      (duh!)  have been fixed.
 
-    - Fixed bezier stack depth bug in the routines provided by the
-      FT_BBOX_H header file.  Also fixed similar bugs in the rasterizers.
+    - Fixed bezier  stack depth  bug in the  routines provided  by the
+      FT_BBOX_H  header   file.   Also  fixed  similar   bugs  in  the
+      rasterizers.
 
-    - The outline bounding box code has been rewritten to use direct
-      computations, instead of bezier sub-division, to compute the exact
-      bounding box of glyphs.  This is slightly slower but more accurate.
+    - The outline bounding  box code has been rewritten  to use direct
+      computations,  instead of  bezier sub-division,  to  compute the
+      exact bounding box of glyphs.   This is slightly slower but more
+      accurate.
 
-    - The build system has been improved and fixed, mainly to support "make"
-      on Windows 2000 correctly, avoid problems with "make distclean" on non
-      Unix systems, etc.
+    - The build system has been  improved and fixed, mainly to support
+      "make"  on Windows  2000  correctly, avoid  problems with  "make
+      distclean" on non Unix systems, etc.
 
-    - Hexadecimal constants have been suffixed with "U" to avoid problems
-      with certain compilers on 64-bit platforms.
+    - Hexadecimal  constants  have been  suffixed  with  "U" to  avoid
+      problems with certain compilers on 64-bit platforms.
 
     - A new directory named "src/tools" has been created.  It contains
       Python scripts and simple unit test programs used to develop the
       library.
 
-    - The DocMaker tool has been moved from "docs" to "src/tools" and
+    - The DocMaker tool has been  moved from "docs" to "src/tools" and
       has been updated with the following:
 
          - Now accepts the "--title=XXXX" or "-t XXXX" option from the
@@ -986,25 +1027,25 @@
            command line to set the project's name in the generated API
            reference.
 
-         - Now accepts the "--output=DIR" or "-o DIR" option from the
-           command line to set the output directory for all generated HTML
-           files.
+         - Now accepts the "--output=DIR"  or "-o DIR" option from the
+           command line to set  the output directory for all generated
+           HTML files.
 
          - Now accepts the "--prefix=XXXX" or "-p XXX" option from the
-           command line to set the file prefix to use for all generated HTML
-           files.
+           command  line  to  set  the  file prefix  to  use  for  all
+           generated HTML files.
 
-         - Now generates the current time/data on each generated page
+         - Now generates the current  time/data on each generated page
            in order to distinguish between versions.
 
-      DocMaker can be used with other projects now, not only FT2 (e.g. MLib,
-      FTLayout, etc.).
+      DocMaker  can be  used with  other  projects now,  not only  FT2
+      (e.g. MLib, FTLayout, etc.).
 
-===========================================================================
 
+======================================================================
+
 LATEST CHANGES BETWEEN 2.0.2 and 2.0.1
 
-
   I. CHANGES TO THE MODULES / FONT DRIVERS
 
     - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
@@ -1445,7 +1486,7 @@
     * Support for transforms and direct rendering in FT_Load_Glyph:
 
       Most of the functionality found in <freetype/ftglyph.h> has been
-      moved to the core library. Hence, the following:
+      moved to the core library.  Hence, the following:
 
       - A   transform   can   be   specified  for   a   face   through
         FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
@@ -1476,7 +1517,7 @@
 
 OLD CHANGES FOR BETA 7
 
-  - bug-fixed the  OpenType/CFF parser. It  now loads and  displays my
+  - bug-fixed the  OpenType/CFF parser.  It  now loads and displays my
     two  fonts nicely,  but I'm  pretty certain  that more  testing is
     needed :-)
 
@@ -1484,20 +1525,20 @@
     correctly (well, the accent is  not always well placed, but that's
     another problem..)
 
-  - added the CID-keyed Type 1  driver in "src/cid". Works pretty well
+  - added the CID-keyed Type 1 driver in "src/cid".  Works pretty well
     for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
     really useful CMAP files..
 
-  - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks
-    to Boris Letocha for spotting them and providing a fix..
+  - fixed  two  bugs  in  the  smooth  renderer  (src/base/ftgrays.c).
+    Thanks to Boris Letocha for spotting them and providing a fix.
 
-  - fixed potential "divide by zero" bugs in ftcalc.c.. my god..
+  - fixed potential "divide by zero" bugs in ftcalc.c.
 
   - added source  code for  the OpenType/CFF driver  (still incomplete
     though..)
 
   - modified the  SFNT driver slightly  to perform more  robust header
-    checks  in TT_Load_SFNT_Header. This  prevents certain  font files
+    checks  in TT_Load_SFNT_Header.  This prevents certain  font files
     (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
     "recognized" as TrueType font files..
 
@@ -1508,8 +1549,8 @@
   - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
     to minimally speed it up..
 
-  - added support for Multiple Master fonts in "type1z". There is also
-    a  new file  named  <freetype/ftmm.h> which  defines functions  to
+  - added  support for  Multiple Master  fonts in  "type1z".  There is
+    also a new file named <freetype/ftmm.h> which defines functions to
     manage them from client applications.
 
     The new file "src/base/ftmm.c" is also optional to the engine..
@@ -1521,7 +1562,7 @@
     correctly (used for many oblique fonts..)
 
   - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
-    to use %p instead of %lx).. Thanks to Karl Robillard
+    to use %p instead of %lx).  Thanks to Karl Robillard.
 
   - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
     added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
@@ -1540,7 +1581,7 @@
 
 OLD CHANGES 16 May 2000
 
-  - tagged "BETA-6"  in the  CVS tree. This  one is a  serious release
+  - tagged "BETA-6"  in the  CVS tree.  This one is a  serious release
     candidate even though it doesn't incorporate the auto-hinter yet..
 
   - various obsolete files were removed, and copyright header updated
@@ -1570,8 +1611,8 @@
     |
     |  It seems the C pre-processor  that comes with LCC is broken, it
     |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
-    |  correctly when one of the  argument is a macro. Also, something
-    |  like:
+    |  correctly   when  one  of   the  argument  is  a  macro.  Also,
+    |  something like:
     |
     |     #define F(x)  print##x
     |
@@ -1581,12 +1622,12 @@
     |
     |     print "hello")
     |
-    |  by its pre-processor. For  this reason, you simply cannot build
+    |  by its pre-processor.  For this reason, you simply cannot build
     |  FreeType 2 in debug mode with this compiler..
 
-  - yet another massive grunt work. I've changed the definition of the
-    EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These now
-    take an argument, which is the function's return value type.
+  - yet  another massive grunt work.  I've  changed the  definition of
+    the EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These
+    now take an argument, which is the function's return value type.
 
     This  is necessary to  compile FreeType  as a  DLL on  Windows and
     OS/2.  Depending on the compiler used, a compiler-specific keyword
@@ -1594,7 +1635,7 @@
     after (BorlandC++) the type..
 
     Of course, this needed a lot of changes throughout the source code
-    to make it compile again... All cleaned up now, apparently..
+    to make it compile again...  All cleaned up now, apparently..
 
     Note also  that there is a  new EXPORT_VAR macro  defined to allow
     the   _declaration_    of   an   exportable    public   (constant)
@@ -1623,10 +1664,10 @@
     (the implementation was already in "ftobjs.c").
 
   - the file <freetype/fterrors.h> has been seriously updated in order
-    to allow the automatic generation of error message tables. See the
-    comments within it for more information.
+    to allow  the automatic generation  of error message tables.   See
+    the comments within it for more information.
 
-  - major directory  hierarchy re-organisation. This was  done for two
+  - major directory  hierarchy re-organisation.  This was done for two
     things:
 
       * first,  to ease  the "manual"  compilation of  the  library by
@@ -1633,7 +1674,7 @@
         requiring at lot less include paths :-)
 
       * second,  to  allow  external  programs to  effectively  access
-        internal  data  fields. For  example,  this  can be  extremely
+        internal  data  fields.  For example,  this  can be  extremely
         useful if  someone wants  to write a  font producer or  a font
         manager on top of FreeType.
 
@@ -1646,14 +1687,15 @@
     Some new include sub-directories are available:
 
      a. the  "freetype/config" directory,  contains two files  used to
-        configure the build of the library. Client applications should
-        not need to look at these normally, but they can if they want.
+        configure  the  build  of  the  library.  Client  applications
+        should  not need  to look  at these  normally, but they can if
+        they want.
 
         #include <freetype/config/ftoption.h>
         #include <freetype/config/ftconfig.h>
 
      b. the "freetype/internal"  directory, contains header files that
-        describes library  internals. These are the  header files that
+        describes library  internals.  These are the header files that
         were  previously  found  in  the "src/base"  and  "src/shared"
         directories.
 
@@ -1736,9 +1778,9 @@
     to handle the new XFree86 4.0 fonts (and a few other ones..)
 
   - the smooth  renderer is now  complete and supports  sub-banding to
-    render large glyphs at high speed. However, it is still located in
-    "demos/src/ftgrays.c" and should move to the library itself in the
-    next  beta..   NOTE:  The  smooth  renderer   doesn't  compile  in
+    render large glyphs  at high speed.  However, it is still  located
+    in "demos/src/ftgrays.c" and should move to the  library itself in
+    the next  beta.  NOTE: The  smooth  renderer  doesn't  compile  in
     stand-alone mode anymore, but this should be fixed RSN..
 
   - introduced convenience  functions to  more easily deal  with glyph
@@ -1751,14 +1793,14 @@
     results).
 
   - changed   the  raster   interface,  in   order  to   allow  client
-    applications to provide their own span-drawing callbacks. However,
-    only the smooth renderer  supports this. See "FT_Raster_Params" in
-    the file "include/ftimage.h"
+    applications  to   provide  their   own  span-drawing   callbacks.
+    However,   only   the   smooth   renderer   supports   this.   See
+    "FT_Raster_Params" in the file "include/ftimage.h".
 
   - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
     computation!
 
-  - Note: The tutorial is out-of-date, grumpf.. :-(
+  - Note: The tutorial is out-of-date.
 
 
 ======================================================================
@@ -1800,7 +1842,7 @@
 
 OLD CHANGES - 22-feb-2000
 
-  - introduced the "psnames" module. It is used to:
+  - introduced the "psnames" module.  It is used to:
 
       o convert  a Postscript glyph  name into the  equivalent Unicode
         character code (used by the  Type 1 driver(s) to synthetize on
@@ -1812,16 +1854,16 @@
         names support routines, while the other two tables are used by
         the Type 1 driver(s)).
 
-  - introduced the "type1z" alternate Type  1 driver. This is a (still
+  - introduced the "type1z" alternate Type 1 driver.  This is a (still
     experimental) driver  for the Type  1 format that  will ultimately
-    replace the one  in "src/type1". It uses pattern  matching to load
-    data from the  font, instead of a finite  state analyzer. It works
-    much better than the "old"  driver with "broken" fonts. It is also
+    replace the one  in "src/type1".  It uses pattern matching to load
+    data from the font, instead of a finite  state analyzer.  It works
+    much better than the "old" driver with "broken" fonts.  It is also
     much smaller (under 15 Kb).
 
   - the  Type 1  drivers (both  in "src/type1"  and  "src/type1z") are
     nearly  complete.  They  both  provide automatic  Unicode  charmap
-    synthesis through  the "psnames" module. No  re-encoding vector is
+    synthesis through  the "psnames" module.  No re-encoding vector is
     needed.  (note  that they  still  leak  memory  due to  some  code
     missing, and I'm getting lazy).
 
@@ -1829,7 +1871,7 @@
     wasn't exactly tested as it should ;-)
 
   - The TrueType  glyph loader has  been seriously rewritten  (see the
-    file  "src/truetype/ttgload.c". It  is now  much, much  simpler as
+    file  "src/truetype/ttgload.c".  It is now  much, much  simpler as
     well as  easier to read,  maintain and understand  :-) Preliminary
     versions introduced a  memory leak that has been  reported by Jack
     Davis, and is now fixed..
@@ -1880,7 +1922,7 @@
     drivers to co-exist peacefully
 
   - updated  the "T1_Face"  type  to better  separate Postscript  font
-    content  from the  rest of  the FT_Face  structure. Might  be used
+    content  from the  rest of  the FT_Face  structure.  Might be used
     later by the CFF/Type2 driver..
 
   - added an experimental replacement Type 1 driver featuring advanced
@@ -1932,9 +1974,9 @@
       field "face->glyph.format"
 
     - the list  of available  charmaps is directly  accessible through
-      "face->charmaps",  counting "face->num_charmaps"  elements. Each
+      "face->charmaps", counting "face->num_charmaps"  elements.  Each
       charmap  has an  'encoding'  field which  specifies which  known
-      encoding it deals with. Valid values are, for example :
+      encoding it deals with.  Valid values are, for example:
 
           ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
           ft_encoding_apple_roman
@@ -1942,7 +1984,7 @@
           ft_encoding_adobe_standard
           ft_encoding_adobe_expert
 
-      other  values may  be added  in the  future. Each  charmap still
+      other  values may  be added  in the  future.  Each charmap still
       holds  its "platform_id"  and "encoding_id"  values in  case the
       encoding is too exotic for the current library
 
@@ -1992,12 +2034,12 @@
   should encompass all known bitmap types.
 
   Each new  image format  must provide at  least one "raster",  i.e. a
-  module capable of  transforming the glyph image into  a bitmap. It's
+  module capable of  transforming the glyph image into a bitmap.  It's
   also possible  to change the default  raster used for  a given glyph
   image format.
 
   The default outline  scan-converter now uses 128 levels  of grays by
-  default,  which tends  to smooth  many  things. Note  that the  demo
+  default,  which tends  to smooth  many  things.  Note that the  demo
   programs have been updated significantly in order to display these..
 
 
@@ -2012,7 +2054,7 @@
      it is not detected, with pseudo-standard compilation flags)
 
    - the ability to compile from the Makefiles with very different and
-     exotic compilers. Note that  linking the library can be difficult
+     exotic compilers.  Note that linking the library can be difficult
      for some platforms.
 
      For example, the file `config/win32/lcclib.bat' is invoked by the
@@ -2023,9 +2065,9 @@
   Here's how it works:
 
   - the first time you type `make',  the build system runs a series of
-    sub-makefiles in order to detect your host platform. It then dumps
-    what  it found,  and  creates  a file  called  `config.mk' in  the
-    current  directory. This  is a  sub-Makefile used  to  define many
+    sub-makefiles  in order  to detect  your host  platform.  It  then
+    dumps what it found, and creates a file called `config.mk' in  the
+    current  directory.  This is a  sub-Makefile used  to  define many
     important Make variables used to build the library.
 
   - the second time, the build system detects the `config.mk' then use
@@ -2039,7 +2081,7 @@
   re-run make.
 
   Finally, the  default compiler  for all platforms  is gcc  (for now,
-  this will hopefully changed in  the future). You can however specify
+  this will hopefully changed in the future).  You can however specify
   a different  compiler by specifying  it after the 'setup'  target as
   in:
 
@@ -2063,7 +2105,7 @@
 
   In  the  previous  beta,  a  single FT_System  object  was  used  to
   encompass  all  low-level  operations like  thread  synchronisation,
-  memory management and i/o access. This has been greatly simplified:
+  memory management and i/o access.  This has been greatly simplified:
 
     - thread synchronisation  has been dropped, for  the simple reason
       that the library  is already re-entrant, and that  if you really
@@ -2077,12 +2119,12 @@
 
     - resources have disappeared (they created more problems than they
       solved), and  i/o management have  been simplified greatly  as a
-      result. Streams are defined through FT_Stream objects, which can
-      be either memory-based or disk-based.
+      result.  Streams are  defined through  FT_Stream objects,  which
+      can be either memory-based or disk-based.
 
       Note that  each face  has its own  stream, which is  closed only
       when  the  face object  is  destroyed.  Hence,  a function  like
-      TT_Flush_Face in  1.x cannot be directly  supported. However, if
+      TT_Flush_Face in 1.x cannot be directly  supported.  However, if
       you really need something like  this, you can easily tailor your
       own streams  to achieve the same  feature at a  lower level (and
       use FT_Open_Face instead of FT_New_Face to create the face).
@@ -2103,18 +2145,19 @@
   library at compile time is  managed through a new configuration file
   called `config/<platform>/ftmodule.h'.
 
-  This file is autogenerated when invoking `make modules'. This target
-  will parse  all sub-directories of 'src', looking  for a "module.mk"
-  rules file, used to describe the driver to the build system.
+  This  file is  autogenerated  when  invoking  `make modules'.   This
+  target  will  parse  all  sub-directories  of  'src', looking  for a
+  "module.mk" rules  file, used  to describe  the driver to  the build
+  system.
 
   Hence, one  should call  `make modules' each  time a font  driver is
   added or removed from the `src' directory.
 
-  Finally, this version provides a "pseudo-driver" in `src/sfnt'. This
-  driver doesn't  support font  files directly, but  provides services
-  used by  all TrueType-like font  drivers. Hence, its code  is shared
-  between  the TrueType  & OpenType  font formats,  and  possibly more
-  formats to come if we're lucky..
+  Finally, this  version  provides  a "pseudo-driver"  in  `src/sfnt'.
+  This  driver  doesn't  support  font  files  directly, but  provides
+  services used by all TrueType-like font drivers.  Hence, its code is
+  shared between  the TrueType & OpenType  font formats,  and possibly
+  more formats to come if we're lucky..
 
 
 ----------------------------------------------------------------------
@@ -2128,7 +2171,7 @@
   driver.
 
   Extension ids are  now strings, rather than 4-byte  tags, as this is
-  usually more readable..
+  usually more readable.
 
   Each extension has:
     - some data, associated to each face object
@@ -2135,7 +2178,7 @@
     - an interface (table of function pointers)
 
   An extension  that is format-specific should  simply register itself
-  to the correct font driver. Here is some example code:
+  to the correct font driver.  Here is some example code:
 
    // Registering an extensions
    //
--- a/include/freetype/internal/ftserv.h
+++ b/include/freetype/internal/ftserv.h
@@ -135,5 +135,6 @@
 #define FT_SERVICE_GLYPH_DICT_H        <freetype/internal/services/glyfdict.h>
 #define FT_SERVICE_BDF_H               <freetype/internal/services/bdf.h>
 #define FT_SERVICE_XFREE86_NAME_H      <freetype/internal/services/xf86name.h>
+#define FT_SERVICE_SFNT_H              <freetype/internal/services/sfnt.h>
 
 #endif /* __FT_SERVICE_H__ */
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -27,6 +27,7 @@
 #include FT_TRUETYPE_IDS_H
 #include FT_OUTLINE_H
 
+#include FT_SERVICE_SFNT_H
 #include FT_SERVICE_POSTSCRIPT_NAME_H
 #include FT_SERVICE_GLYPH_DICT_H
 
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -217,8 +217,6 @@
   *
   */
 
-#include FT_SERVICE_GLYPH_DICT_H
-
   static FT_Error
   cff_get_glyph_name( CFF_Face    face,
                       FT_UInt     glyph_index,