shithub: freetype+ttf2subf

Download patch

ref: 80cfbd7073992c8e914c11378364261c3f9d1ddd
parent: a40b1b64a091cc7f981d2c471e2fef64a6ace77f
author: Werner Lemberg <[email protected]>
date: Fri Dec 26 02:26:08 EST 2003

* src/base/fttrigon.c, src/base/ftgloadr.c: Inlude
FT_INTERNAL_OBJECTS_H.

* src/base/ftstroke.c (FT_Outline_GetInsideBorder,
FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with
C++ compilers.

* src/cache/ftcmru.c, include/freetype/cache/ftcmru.h:
s/select/selection/ to avoid compiler warning.
* src/cff/cffload.h: s/select/ftselect/ to avoid potential
compiler warning.

Formatting.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2003-12-25  Werner Lemberg  <[email protected]>
+
+	* src/base/fttrigon.c, src/base/ftgloadr.c: Inlude
+	FT_INTERNAL_OBJECTS_H.
+
+	* src/base/ftstroke.c (FT_Outline_GetInsideBorder,
+	FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with
+	C++ compilers.
+
+	* src/cache/ftcmru.c, include/freetype/cache/ftcmru.h:
+	s/select/selection/ to avoid compiler warning.
+	* src/cff/cffload.h: s/select/ftselect/ to avoid potential
+	compiler warning.
+
 2003-12-24  Werner Lemberg  <[email protected]>
 
 	* src/cache/ftcsbits.c (FTC_SNode_Weight):
@@ -25,9 +39,15 @@
 	`(x) & ~63' instead!
 	Updated all related code.
 
-	* include/freetype/ftstroke.h, src/base/ftstroke.c: Added support
-	for extraction of "inside" and "outside" borders.
+	Add support for extraction of `inside' and `outside' borders.
 
+	* src/base/ftstroke.c (FT_StrokerBorder): New enumeration.
+	(FT_Outline_GetInsideBorder, FT_Outline_GetOutsideBorder,
+	FT_Stroker_GetBorderCounts, FT_Stroker_ExportBorder): New functions.
+	(FT_StrokeBorderRec): New boolean member `valid'.
+	(ft_stroke_border_get_counts): Updated.
+	* include/freetype/ftstroke.h: Updated.
+
 2003-12-22  Werner Lemberg  <[email protected]>
 
 	* include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions
@@ -61,11 +81,11 @@
 	src/cache/ftcbasic.c (added),
 	src/cache/ftclru.c (removed):
 
-	  *Complete* rewrite of the cache sub-system to "solve" the
+	  *Complete* rewrite of the cache sub-system to `solve' the
 	  following points:
 
 	    - all public APIs have been moved to FT_CACHE_H, everything
-	      under "include/freetype/cache" is only needed by client
+	      under `include/freetype/cache' is only needed by client
 	      applications that want to implement their own caches
 
 	    - a new function named FTC_Manager_RemoveFaceID to deal
@@ -2292,8 +2312,8 @@
 	(not defined, but in comments) for the unpatented hinting system.
 
 	* include/freetype/internal/tttypes.h (TT_FaceRec)
-	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: New element "FT_Bool
-	unpatented_hinting".
+	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: New element `FT_Bool
+	unpatented_hinting'.
 
 	* src/truetype/ttinterp.c (NO_APPLE_PATENT, APPLE_THRESHOLD):
 	Removed.
@@ -2359,8 +2379,8 @@
 
 	* src/pcf/pcfread.c (pcf_load_font): Fixed the computation of
 	face->num_glyphs.  We must increase the value by 1 to respect the
-	convention that glyph index 0 always corresponds to the "missing
-	glyph".
+	convention that glyph index 0 always corresponds to the `missing
+	glyph'.
 
 2003-04-24  Werner Lemberg  <[email protected]>
 
@@ -2456,7 +2476,7 @@
 2003-04-09  Torrey Lyons  <[email protected]>
 
 	* src/base/ftmac.c (open_face_from_buffer): Removed a double-free
-	bug that had nasty consequences when trying to open an "invalid"
+	bug that had nasty consequences when trying to open an `invalid'
 	font on a Mac.
 
 2003-04-09  Mike Fabian  <[email protected]>
@@ -2475,7 +2495,7 @@
 2003-04-03  Martin Muskens  <[email protected]>
 
 	* src/type1/t1load.c (T1_Open_Face): Fixed the code to make it
-	handle special cases where a font only contains a ".notdef" glyph
+	handle special cases where a font only contains a `.notdef' glyph
 	(happens in PDF-embedded fonts).  Otherwise, FT_Panic was called.
 
 2003-03-27  David Turner  <[email protected]>
@@ -2584,8 +2604,8 @@
 2003-03-13  David Turner  <[email protected]>
 
 	Added new environment variables to control memory debugging with
-	FreeType.  See the description of "FT2_DEBUG_MEMORY",
-	"FT2_ALLOC_TOTAL_MAX" and "FT2_ALLOC_COUNT_MAX" in DEBUG.TXT.
+	FreeType.  See the description of `FT2_DEBUG_MEMORY',
+	`FT2_ALLOC_TOTAL_MAX' and `FT2_ALLOC_COUNT_MAX' in DEBUG.TXT.
 
 	* src/base/ftdbgmem.c (FT_MemTableRec): Add `alloc_count',
 	`bound_total', `alloc_total_max', `bound_count', `alloc_count_max'.
@@ -2630,7 +2650,7 @@
 	(ftc_cmap_family_init): The cmap cache now
 	supports UCS-4 charmaps when available in Asian fonts.
 
-	* src/sfnt/ttload.c, src/base/ftobjs.c: Changed "asian" to "Asian"
+	* src/sfnt/ttload.c, src/base/ftobjs.c: Changed `asian' to `Asian'
 	in comments.
 
 2003-02-25  David Turner  <[email protected]>
@@ -2651,7 +2671,7 @@
 
 	- The table loaded now scans for *undocumented* elements of a
 	  physical font's auxiliary data record.  This is necessary to
-	  retrieve the "real" family and style names.
+	  retrieve the `real' family and style names.
 
 	NOTE THAT THESE CHANGES THE FAMILY NAME OF MANY PFR FONTS!
 
@@ -2697,7 +2717,7 @@
 	`exec->metrics'.
 
 	* src/autohint/ahhint.c (ah_hinter_load): Disabled the advance width
-	"correction" which seemed to provide more trouble than benefits.
+	`correction' which seemed to provide more trouble than benefits.
 
 2003-02-13  Graham Asher  <[email protected]>
 
@@ -2738,7 +2758,7 @@
 	* src/pfr/pfrsbit.c: Removed compiler warnings.
 
 	* src/cache/ftccmap.c (ftc_cmap_family_init): Changed an FT_ERROR
-	into an FT_TRACE1 since it caused "ftview" and others to dump too
+	into an FT_TRACE1 since it caused `ftview' and others to dump too
 	much junk when trying to display a waterfall with a font without a
 	Unicode charmap (e.g.  SYMBOL.TTF).
 
@@ -2802,9 +2822,9 @@
 	(pcf_find_property): Decorate it with FT_LOCAL_DEF.
 	* src/pcf/pcfread.h: New file, providing `pcf_find_property'.
 
-	* src/sfnt/ttload.c (sfnt_dir_check): Relaxed the "head" table size
+	* src/sfnt/ttload.c (sfnt_dir_check): Relaxed the `head' table size
 	verification to accept a few broken fonts who pad the size
-	incorrectly (the table should be padded, but its "size" field
+	incorrectly (the table should be padded, but its `size' field
 	shouldn't according to the specification).
 
 2003-01-18  Werner Lemberg  <[email protected]>
@@ -2870,9 +2890,9 @@
 
 	Patches to the auto-hinter in order to slightly improve the output.
 	Note that everything is controlled through the new
-	FT_CONFIG_OPTION_CHESTER_HINTS defined in "ftoption.h".  There are
+	FT_CONFIG_OPTION_CHESTER_HINTS defined in `ftoption.h'.  There are
 	also individual FT_CONFIG_CHESTER_XXX macros to control individual
-	"features".
+	`features'.
 
 	Note that all improvements are enabled by default, but can be
 	tweaked for optimization and testing purposes.  The configuration
@@ -2914,11 +2934,11 @@
 2003-01-08  Huw Dawies  <[email protected]>
 
 	* src/winfonts/winfnt.c (winfnt_header_fields): Read 16 bytes into
-	"reserved2", not "reserved".
+	`reserved2', not `reserved'.
 
 	* src/base/ftobjs.c (find_unicode_charmap): Fixed the error code
 	returned when the font doesn't contain a Unicode charmap.  This
-	allows FT2 to load "symbol.ttf" and a few others correctly since the
+	allows FT2 to load `symbol.ttf' and a few others correctly since the
 	last release.
 	(open_face): Fix return value.
 
@@ -2971,7 +2991,7 @@
 	assertion, and changing code to avoid hash table size contraction.
 
 	* src/base/Jamfile, src/base/rules.mk, src/base/descrip.mms: Adding
-	"ftstroker" to default build, as optional component.
+	`ftstroker' to default build, as optional component.
 
 2002-12-26  David Turner  <[email protected]>
 
@@ -3102,7 +3122,7 @@
 	configuration (typically by adding -D flags at compile time).
 
 	* src/sfnt/ttcmap0.c (tt_face_build_cmaps): Removed compiler
-	warnings in optimized mode relative to the "volatile" local
+	warnings in optimized mode relative to the `volatile' local
 	variables.  This was not a compiler bug after all, but the fact that
 	a pointer to a volatile variable is not the same as a volatile
 	pointer to a variable :-)
@@ -3234,8 +3254,8 @@
 	src/tools/docmaker/tohtml.py: Fixing a few nasty bugs.
 
 	* src/sfnt/ttcmap0.c (tt_cmap4_validate): The validator for format 4
-	sub-tables is now capable of dealing with invalid "length" fields at
-	the start of the sub-table.  This allows fonts like "mg______.ttf"
+	sub-tables is now capable of dealing with invalid `length' fields at
+	the start of the sub-table.  This allows fonts like `mg______.ttf'
 	(i.e.  Marriage) to return accurate charmaps.
 
 	* docs/CHANGES: Updated.
@@ -3499,7 +3519,7 @@
 	Removed conditional code.  This fixes a bug that prevented
 	compilation in debug mode of template instantiation.
 
-	* include/freetype/ftimage.h: Removed incorrect "zft_" definitions
+	* include/freetype/ftimage.h: Removed incorrect `zft_' definitions
 	and updated constants documentation comments.
 
 	* src/cff/cffparse.c (cff_parser_run): Fixed the CFF table loader.
@@ -3507,7 +3527,7 @@
 	certain fonts.
 
 	* include/freetype/freetype.h (FT_FaceRec): Updating documentation
-	comment.  The "descender" value is always *negative*, not positive.
+	comment.  The `descender' value is always *negative*, not positive.
 
 2002-09-09  Owen Taylor  <[email protected]>
 
@@ -3811,7 +3831,7 @@
 	The automatic and Postscript hinter now automatically detect
 	inflection points in glyph outlines and treats them specially.  This
 	is very useful to prevent nasty effect like the disappearing
-	diagonals of "S" and "s" in many, many fonts.
+	diagonals of `S' and `s' in many, many fonts.
 
 	* src/autohint/ahtypes.h (ah_flag_inflection): New macro.
 	* src/autohint/ahangles.c (ah_angle_diff): New function.
@@ -3825,8 +3845,8 @@
 	* src/tools/docmaker/docmaker.py, src/tools/docmaker/utils.py,
 	src/tools/docmaker/tohtml.py: Updating the DocMaker tool.
 
-	* include/freetype/freetype.h: Changing the type of the "load_flags"
-	parameter from "FT_Int" to "FT_Int32", this in order to support more
+	* include/freetype/freetype.h: Changing the type of the `load_flags'
+	parameter from `FT_Int' to `FT_Int32', this in order to support more
 	options.  This should only break binary and/or source compatibility
 	on 16-bit platforms (Atari?).
 	(FT_LOAD_NO_AUTOHINT): New macro.
@@ -3995,7 +4015,7 @@
 2002-07-30  David Turner  <[email protected]>
 
 	* include/freetype/ftincrem.h: Adding new experimental header file
-	to demonstrate a "cleaner" API to support incremental font loading.
+	to demonstrate a `cleaner' API to support incremental font loading.
 
 	* include/freetype/config/ftheader.h (FT_INCREMENTAL_H): New macro.
 
@@ -4031,10 +4051,10 @@
 2002-07-24  Graham Asher  <[email protected]>
 
 	* src/truetype/ttobjs.c: Fix for bug reported by Sven Neumann
-	[[email protected]] on the FreeType development forum: "If
+	[[email protected]] on the FreeType development forum: `If
 	FT_CONFIG_OPTION_INCREMENTAL is undefined (this is the default), the
 	TrueType loader crashes in line 852 of src/truetype/ttgload.c when
-	it tries to access face->glyph_locations."
+	it tries to access face->glyph_locations.'
 
 2002-07-18  Graham Asher  <[email protected]>
 
@@ -4137,8 +4157,8 @@
 2002-07-11  David Turner  <[email protected]>
 
 	Changing the SFNT loader to check for SFNT-based font files
-	differently.  We now ignore the range "helper" fields and check the
-	"head" table's magic number instead.
+	differently.  We now ignore the range `helper' fields and check the
+	`head' table's magic number instead.
 
 	* include/freetype/internal/tttypes.h (SFNT_HeaderRec): Add `offset'
 	field.
@@ -4655,7 +4675,7 @@
 2002-06-07  David Turner  <[email protected]>
 
 	Fixed the bug that prevented the correct display of fonts with
-	"ftview".
+	`ftview'.
 
 	* src/type42/t42drivr.c: Split into...
 	* src/type42/t42drivr.h, src/type42/t42parse.c,
@@ -4761,8 +4781,8 @@
 	* include/freetype/t1tables.h: Updated.
 
 	* src/base/Jamfile, src/base/rules.mk, src/base/descrip.mms:
-	Updating build control files for the new files "ftxf86.c" and
-	"fttype1.c" in src/base.
+	Updating build control files for the new files `ftxf86.c' and
+	`fttype1.c' in src/base.
 
 	* src/pshinter/pshglob.c (psh_blues_scale_zones): Fixed a bug that
 	prevented family blue zones substitution from hapenning correctly.
@@ -4784,7 +4804,7 @@
 	Fixing the SFNT name table loader to support various buggy fonts.
 	It now ignores empty name entries, entries with invalid pointer
 	Offsets and certain fonts containing tables with broken
-	"storageOffset" fields.
+	`storageOffset' fields.
 
 	Name strings are now loaded on demand, which reduces the memory
 	requirements for a given FT_Face tremendously (for example, the name
@@ -4838,7 +4858,7 @@
 2002-05-21  David Turner  <[email protected]>
 
 	* src/bdf/bdflib.c: Removed compiler warning, and changed all tables
-	to the "static const" storage specifier (instead of simply
+	to the `static const' storage specifier (instead of simply
 	`static').
 
 	* src/type42/t42drivr.c (hexval): Use more efficient code.
@@ -4849,7 +4869,7 @@
 	src/base/descrip.mms, src/base/Jamfile, src/base/rules.mk
 	(FT_Get_BDF_Charset_ID): New API to retrieve BDF-specific strings
 	from a face.  This is much cleaner than accessing the internal types
-	"BDF_Public_Face" defined in FT_INTERNAL_BDF_TYPES_H.
+	`BDF_Public_Face' defined in FT_INTERNAL_BDF_TYPES_H.
 
 2002-05-21  Werner Lemberg  <[email protected]>
 
@@ -5003,11 +5023,11 @@
 2002-05-01  David Turner  <[email protected]>
 
 	* src/sfnt/sfobjs.c (tt_face_get_name): Fixing a bug that caused
-	FreeType to crash when certain broken fonts (e.g. "hya6gb.ttf")
+	FreeType to crash when certain broken fonts (e.g. `hya6gb.ttf')
 	were opened.
 
 	* src/sfnt/ttload.c (TT_Load_Names): Applied a small work-around to
-	manage fonts containing a broken name table (e.g. "hya6gb.ttf").
+	manage fonts containing a broken name table (e.g. `hya6gb.ttf').
 
 	* src/sfnt/ttcmap0.c (tt_cmap4_validate): Fixed over-restrictive
 	validation test.  The charmap validator now accepts overlapping
@@ -5174,8 +5194,8 @@
 	* src/base/ftobjs.c, builds/win32/ftdebug.c,
 	builds/amiga/src/base/ftdebug.c: Version 2.1.0 couldn't be linked
 	against applications in Win32 and Amiga builds due to changes to
-	"src/base/ftdebug.c" that were not properly propagated to
-	"builds/win32" and "builds/amiga".  This has been fixed.
+	`src/base/ftdebug.c' that were not properly propagated to
+	`builds/win32' and `builds/amiga'.  This has been fixed.
 
 	* include/freetype/internal/ftobject.h,
 	include/freetype/internal/ftexcept.h, include/freetype/ftsysmem.h,
@@ -5262,7 +5282,7 @@
 
 	builds/amiga/src/base/ftdebug.c:
 
-	Added the new configuration file "ftstdlib.h" used to define
+	Added the new configuration file `ftstdlib.h' used to define
 	aliases for all ISO C library functions used by the engine
 	(e.g. strlen, qsort, setjmp, etc.).
 
@@ -5503,7 +5523,7 @@
 
 	* src/psaux/t1cmap.h, src/psaux/t1cmap.c, src/type1/t1cmap.h,
 	src/type1/t1cmap.c: Updating and moving the Type 1 FT_CMap support
-	from "src/type1" to "src/psaux" since it is going to be shared by
+	from `src/type1' to `src/psaux' since it is going to be shared by
 	the Type 1 and CID font drivers.
 
 	* src/psaux/Jamfile, src/psaux/psaux.c, src/psaux/psauxmod.c,
@@ -5713,11 +5733,11 @@
 
 	* src/cid/cidriver.c (cid_get_postscript_name): Fixed a bug that
 	caused the CID driver to return Postscript font names with a leading
-	slash ("/") as in "/MOEKai-Regular".
+	slash (`/') as in `/MOEKai-Regular'.
 
 	* src/sfnt/ttload.c (TT_Load_Names), src/sfnt/sfobjs.c (Get_Name),
 	src/sfnt/sfdriver.c (get_sfnt_postscript_name): Fixed the loader so
-	that it accepts broken fonts like "foxjump.ttf", which made FreeType
+	that it accepts broken fonts like `foxjump.ttf', which made FreeType
 	crash when trying to load them.
 
 	Also improved the name table parser to be able to load
@@ -5777,7 +5797,7 @@
 	* src/sfnt/ttload.c (TT_Load_Names): Simplifying and securing the
 	names table loader.  Invalid individual name entries are now handled
 	correctly.  This allows the loading of very buggy fonts like
-	"foxjump.ttf" without allocating tons of memory and causing crashes.
+	`foxjump.ttf' without allocating tons of memory and causing crashes.
 
 	* src/otlayout/otlcommon.h, src/otlayout/otlcommon.c: Adding (still
 	experimental) code for OpenType Layout tables validation and
@@ -5824,14 +5844,14 @@
 	  ft_io_stream    => ft_ansi_stream_io    (in base/ftsystem.c only)
 
 	* src/base/ftutil.c: New file.  Contains all memory and list
-	management code (previously in "ftobjs.c" and "ftlist.c",
+	management code (previously in `ftobjs.c' and `ftlist.c',
 	respectively).
 
 	* include/freetype/internal/ftobjs.h: Moving all code related to
 	glyph loaders to ...
-	* include/freetype/"internal/ftgloadr.h: This new file.
-	"FT_GlyphLoader" is now a pointer to the structure
-	"FT_GlyphLoaderRec".
+	* include/freetype/internal/ftgloadr.h: This new file.
+	`FT_GlyphLoader' is now a pointer to the structure
+	`FT_GlyphLoaderRec'.
 	(ft_glyph_own_bitmap): Renamed to ...
 	(FT_GLYPH_OWN_BITMAP): This.
 	* src/base/ftobjs.c: Moving all code related to glyph loaders
@@ -5846,8 +5866,8 @@
 2002-02-21  David Turner  <[email protected]>
 
 	Modified the debug sub-system initialization.  Trace levels can now
-	be specified within the "FT2_DEBUG" environment variable.  See the
-	comments within "ftdebug.c" for more details.
+	be specified within the `FT2_DEBUG' environment variable.  See the
+	comments within `ftdebug.c' for more details.
 
 	* src/base/ftdebug.c: (FT_SetTraceLevel): Removed.
 	(ft_debug_init): New function.
@@ -5872,8 +5892,8 @@
 	Removed.  Both files are now completely obsolete.
 	* src/base/Jamfile, src/base/rules.mk: Updated.
 
-	* include/freetype/fterrors.h: Adding "#undef FT_ERR_CAT" and
-	`#undef FT_ERR_XCAT" to avoid warnings with certain compilers (like
+	* include/freetype/fterrors.h: Adding `#undef FT_ERR_CAT' and
+	`#undef FT_ERR_XCAT' to avoid warnings with certain compilers (like
 	LCC).
 
 	* src/pshinter/pshalgo2.c (print_zone): Renamed to ...
@@ -5885,7 +5905,7 @@
 
 2002-02-20  David Turner  <[email protected]>
 
-	* README: Adding "[email protected]" address for bug reports.
+	* README: Adding `[email protected]' address for bug reports.
 
 2002-02-20  Werner Lemberg  <[email protected]>
 
@@ -6013,7 +6033,7 @@
 
 	* src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak.
 
-	* src/pcf/pcfread.c (pcf_load_font): Now handles the "AVERAGE_WIDTH"
+	* src/pcf/pcfread.c (pcf_load_font): Now handles the `AVERAGE_WIDTH'
 	property to return correct character pixel (width/height) pairs for
 	embedded bitmaps.
 
@@ -6079,7 +6099,7 @@
 2002-01-30  David Turner  <[email protected]>
 
 	* INSTALL: Moved to ...
-	* docs/INSTALL: Here to avoid conflicts with the "install" script on
+	* docs/INSTALL: Here to avoid conflicts with the `install' script on
 	Windows, where the filesystem doesn't preserve case.
 
 2002-01-29  David Turner  <[email protected]>
@@ -6089,7 +6109,7 @@
 
 	  ./configure --disable-shared --disable-nls
 
-	the "--disable-nls" was incorrectly sent to the "make" program.
+	the `--disable-nls' was incorrectly sent to the `make' program.
 
 2002-01-29  Werner Lemberg  <[email protected]>
 
@@ -6136,7 +6156,7 @@
 
 2002-01-21  Antoine Leca  <[email protected]>
 
-	* docs/PATENTS: Typo fixed (thanks to Detlef "Hawkeye" W�rkner) in
+	* docs/PATENTS: Typo fixed (thanks to Detlef `Hawkeye' W�rkner) in
 	the URL for the online resource.
 
 2002-01-18  Ian Brown  <[email protected]>
@@ -6211,7 +6231,7 @@
 
 	* src/autohint/ahhint.c (ah_align_linked_edge): Modified computation
 	of auto-hinted stem widths; this avoids color fringes in
-	"ClearType-like" rendering.
+	`ClearType-like' rendering.
 
 	* src/truetype/ttgload.c (TT_Load_Glyph_Header,
 	TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph):
@@ -6238,7 +6258,7 @@
 2002-01-03  Keith Packard  <[email protected]>
 
 	* builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that
-	all FreeType input streams are closed in child processes of a "fork"
+	all FreeType input streams are closed in child processes of a `fork'
 	on Unix systems.  This is important to avoid (potential) access
 	control issues.
 
@@ -6245,8 +6265,8 @@
 2002-01-03  David Turner  <[email protected]>
 
 	* src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the
-	library when dealing with certain weird fonts like "Stalingrad", in
-	"sadn.pfb" (this font has no full font name entry).
+	library when dealing with certain weird fonts like `Stalingrad', in
+	`sadn.pfb' (this font has no full font name entry).
 
 	* src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check):
 	New function to check the consistency of outline data.
@@ -6253,7 +6273,7 @@
 
 	* src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to
 	ensure that loaded glyphs are valid.  This allows certain fonts like
-	"tt1095m_.ttf" to be loaded even though it appears they contain
+	`tt1095m_.ttf' to be loaded even though it appears they contain
 	really funky glyphs.
 
 	There still is a bug there, though.
@@ -6304,8 +6324,8 @@
 2001-12-21  David Turner  <[email protected]>
 
 	* src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter):
-	Ignore invalid "hintmask" and "cntrmask" operators (instead of
-	returning an error).  Glyph 2028 of the CFF font "MSung-Light-Acro"
+	Ignore invalid `hintmask' and `cntrmask' operators (instead of
+	returning an error).  Glyph 2028 of the CFF font `MSung-Light-Acro'
 	couldn't be rendered otherwise (it seems its charstring is buggy,
 	though this requires more analysis).
 	(FT_COMPONENT): Define.
@@ -6401,12 +6421,12 @@
 	routines were never released when CID faces were destroyed.
 
 	* src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated
-	to move the definition of encoding tables back within "cffload.c"
+	to move the definition of encoding tables back within `cffload.c'
 	instead of making them part of a shared header (causing problems in
-	"multi" builds).  This reverts change 2001-08-08.
+	`multi' builds).  This reverts change 2001-08-08.
 
 	* docs/CHANGES: Updated for 2.0.6 release.
-	* docs/TODO: Added "stem3 and counter hints support" to the TODO
+	* docs/TODO: Added `stem3 and counter hints support' to the TODO
 	list for the Postscript hinter.
 	* docs/BUGS: Closed the AUTOHINT-NO-SBITS bug.
 
@@ -6420,12 +6440,12 @@
 	that prevented composites from loading correctly, due to missing
 	parentheses around macro parameters.
 
-	* src/sfnt/sfobjs.c (SFNT_Load_Face): Make the "post" and "name"
+	* src/sfnt/sfobjs.c (SFNT_Load_Face): Make the `post' and `name'
 	tables optional to load PCL fonts properly.
 
 	* src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c
 	(FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY):
-	"Fixed" the bug that prevented embedded bitmaps to be loaded when
+	`Fixed' the bug that prevented embedded bitmaps to be loaded when
 	the auto-hinter is used.  This actually is a hack but will be enough
 	until the internal re-design scheduled for FreeType 2.1.
 
@@ -6514,9 +6534,9 @@
 2001-12-11  David Turner  <[email protected]>
 
 	* builds/unix/freetype-config.in: Modified the script to prevent
-	passing "-L/usr/lib" to gcc.
+	passing `-L/usr/lib' to gcc.
 
-	* docs/FTL.TXT: Simple fix (change "LICENSE.TXT" to "FTL.TXT").
+	* docs/FTL.TXT: Simple fix (change `LICENSE.TXT' to `FTL.TXT').
 
 	* builds/unix/freetype2.m4: New file for checking configure paths.
 	We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I
@@ -6537,7 +6557,7 @@
 2001-12-10  Francesco Zappa Nardelli  <[email protected]>
 
 	* src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts
-	by setting the "face->metrics.max_advance" correctly.
+	by setting the `face->metrics.max_advance' correctly.
 
 2001-12-07  David Turner  <[email protected]>
 
@@ -6636,8 +6656,8 @@
 	* include/freetype/ttnameid.h: Added some new Microsoft language
 	codes and LCIDs as found in MSDN (Passport SDK).  Also added
 	comments about the meaning of bit 57 of the `OS/2' table
-	(TT_UCR_SURROGATES) which (with OpenType v.1.3) now means "there is
-	a character beyond 0xFFFF in this font".  Thanks to Detlef W�rkner
+	(TT_UCR_SURROGATES) which (with OpenType v.1.3) now means `there is
+	a character beyond 0xFFFF in this font'.  Thanks to Detlef W�rkner
 	<[email protected]> for noticing this.
 
 2001-11-20  David Turner  <[email protected]>
@@ -6684,7 +6704,7 @@
 	Fix typos.
 
 	* tests/gview.c: Updated the debugging glyph viewer to show the
-	hints generated by the "autohint" module.
+	hints generated by the `autohint' module.
 
 2001-10-27  David Turner  <[email protected]>
 
@@ -6695,7 +6715,7 @@
 
 	* include/freetype/ftcache.h, include/freetype/cache/*.h,
 	src/cache/*.c: Major re-design of the cache sub-system to provide
-	better performance as well as an "Acquire"/"Release" API.  Seems to
+	better performance as well as an `Acquire'/`Release' API.  Seems to
 	work well here, but probably needs a bit more testing.
 
 2001-10-26  Leonard Rosenthol  <[email protected]>
@@ -6763,7 +6783,7 @@
 	the source file.
 
 	* src/base/ftdbgmem.c: New debugging memory manager.  You must
-	define the FT_DEBUG_MEMORY macro in "ftoption.h" to enable it.  It
+	define the FT_DEBUG_MEMORY macro in `ftoption.h' to enable it.  It
 	will record every memory block allocated and report simple errors
 	like memory leaks and double deletes.
 
@@ -6817,7 +6837,7 @@
 	compiler warnings.
 
 	* src/pshinter/module.mk, src/pshinter/rules.mk: Adding control
-	files to build the PostScript hinter with the "old" build system.
+	files to build the PostScript hinter with the `old' build system.
 
 2001-10-19  Jacob Jansen  <[email protected]>
 
@@ -6827,7 +6847,7 @@
 2001-10-18  David Turner  <[email protected]>
 
 	* src/psnames/pstables.h, src/tools/glnames.py: Rewrote the
-	"glnames.py" script used to generate the "pstables.h" header file.
+	`glnames.py' script used to generate the `pstables.h' header file.
 	The old one contained a serious bug that made FreeType return
 	incorrect glyph names for certain glyphs.
 
@@ -6869,7 +6889,7 @@
 	* tests/Jamfile, tests/gview.c: Adding a new glyph hinting
 	viewer/debugger to the source tree.  Note that you will _not_ be
 	able to compile it since it depends on an unavailable graphics
-	library named "Nirvana" to render vector images.
+	library named `Nirvana' to render vector images.
 
 2001-10-17  David Turner  <[email protected]>
 
@@ -6991,7 +7011,7 @@
 	in PDF documents that were automatically generated from TrueType
 	ones).
 
-	* src/type1/t1load.c (is_alpha): Now supports "+" in font names;
+	* src/type1/t1load.c (is_alpha): Now supports `+' in font names;
 	this is used in embedded fonts.
 
 	* src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that
@@ -7073,7 +7093,7 @@
 	(cff_get_glyph_index): Minor documentation change.
 
 	* src/type1/t1driver.c (t1_get_name_index): New function used in
-	Get_Interface as the function returned when the "name_index"
+	Get_Interface as the function returned when the `name_index'
 	function is requested.
 
 	(get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency.
@@ -7090,10 +7110,10 @@
 
 	* src/cff/cffdrivr.c (cff_get_name_index): New function, returned
 	when `cff_get_interface' is called with a request for the
-	"name_index" function.
+	`name_index' function.
 
 	(cff_get_interface): Modified so that it returns the function
-	`cff_get_name_index' when the "name_index" function is requested.
+	`cff_get_name_index' when the `name_index' function is requested.
 
 	* src/base/ftobjs.c (FT_Get_Name_Index): New function, used to
 	return a glyph index for a given glyph name only if the driver
@@ -7239,7 +7259,7 @@
 	Removing _lots_ of compiler warnings when the most pedantic warning
 	levels of Visual C++ and Borland C++ are used.  Too many files to be
 	listed here, but FT2 now compiles without warnings with VC++ and the
-	"/W4" warning level (lint-style).
+	`/W4' warning level (lint-style).
 
 	* include/freetype/freetype.h (FT_New_Memory_Face): Updated
 	documentation.
@@ -7313,9 +7333,9 @@
 2001-06-14  David Turner  <[email protected]>
 
 	Modified the TrueType interpreter to let it use the new
-	trigonometric functions provided in "fttrigon.h".  This gets rid of
+	trigonometric functions provided in `fttrigon.h'.  This gets rid of
 	some old 64-bit computation routines, as well as many warnings when
-	compiling the library with the "long long" 64-bit integer type.
+	compiling the library with the `long long' 64-bit integer type.
 
 	* include/freetype/config/ftoption.h: Undefine
 	FT_CONFIG_OPTION_OLD_CALCS.
@@ -7437,7 +7457,7 @@
 
 2001-05-25  David Turner  <[email protected]>
 
-	Moved several documents from the top-level to the "docs" directory.
+	Moved several documents from the top-level to the `docs' directory.
 
 	* src/base/ftcalc.c (FT_DivFix): Small fix to return value.
 
@@ -7491,9 +7511,9 @@
 
 	* builds/newline: New file.
 	* builds/top_level.mk, builds/detect.mk: Use it.  This fixes
-	problems with Make on Windows 2000, as well as problems when "make
-	distclean" is invoked on a non-Unix platform when there is no
-	"config.mk" in the current directory.
+	problems with Make on Windows 2000, as well as problems when `make
+	distclean' is invoked on a non-Unix platform when there is no
+	`config.mk' in the current directory.
 
 	* builds/freetype.mk: Fixed a problem with object deletions under
 	Dos/Windows/OS/2 systems.
@@ -7545,7 +7565,7 @@
 
 	* src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny
 	fixes related to rounding in 64-bits routines and
-	pseudo-"optimizations".
+	pseudo-`optimizations'.
 
 2001-04-27  David Turner  <[email protected]>
 
@@ -7572,7 +7592,7 @@
 	fixed-point square root computation.  It is now used even with
 	64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-)
 
-	* src/base/ftbbox.c: Removed invalid "#include FT_BEZIER_H" line.
+	* src/base/ftbbox.c: Removed invalid `#include FT_BEZIER_H' line.
 
 2001-04-25  David Turner  <[email protected]>
 
@@ -7590,7 +7610,7 @@
 
 2001-04-20  David Turner  <[email protected]>
 
-	* ftconfig.h, ftoption.h: Updated "ftconfig.h" to detect 64-bit int
+	* ftconfig.h, ftoption.h: Updated `ftconfig.h' to detect 64-bit int
 	types on platforms where Autoconf is not available).  Also removed
 	FTCALC_USE_LONG_LONG and replaced it with
 	FT_CONFIG_OPTION_FORCE_INT64.
@@ -7707,7 +7727,7 @@
 2001-03-20  David Turner  <[email protected]>
 
 	* include/freetype/config/ftheader.h, include/freetype/ftsnames.h:
-	Renamed "ftnames.h" to "ftsnames.h", and FT_NAMES_H to
+	Renamed `ftnames.h' to `ftsnames.h', and FT_NAMES_H to
 	FT_SFNT_NAMES_H.
 
 	* docs/docmaker.py: Added generation of INDEX link in table of
@@ -7717,8 +7737,8 @@
 	compilation process has changed slightly (no more `src' required in
 	the include path).
 
-	* builds/*/*-def.mk: Changed the objects directory from "obj" to
-	"objs".
+	* builds/*/*-def.mk: Changed the objects directory from `obj' to
+	`objs'.
 
 	* include/freetype/config/ftheader.h: Removed obsolete macros like
 	FT_SOURCE_FILE, etc. and added cache-specific macro definitions that
@@ -7727,7 +7747,7 @@
 
 	* src/*/*: Removed the use of FT_SOURCE_FILE, etc.  Now, each
 	component needs to add its own directory to the include path at
-	compile time.  Modified all "rules.mk" and "descrip.mms"
+	compile time.  Modified all `rules.mk' and `descrip.mms'
 	accordingly.
 
 2001-03-20  Werner Lemberg  <[email protected]>
@@ -7753,7 +7773,7 @@
 	compiler warnings in pedantic modes.
 
 	* include/config/ft2build.h, include/config/ftheader.h: The file
-	"ft2build.h" was renamed to "ftheader.h" to avoid conflicts with the
+	`ft2build.h' was renamed to `ftheader.h' to avoid conflicts with the
 	top-level <ft2build.h>.
 
 	* include/config/ftheader.h: Added new section describing the #include
@@ -7775,7 +7795,7 @@
 	via FT_Get_Glyph_Name().
 
 	(cff_get_interface): Added support for getting a glyph name via the
-	"glyph_name" module interface.  Uses the new function
+	`glyph_name' module interface.  Uses the new function
 	get_cff_glyph_name().
 	Submitted by Sander van der Wal <[email protected]>.
 
@@ -7786,7 +7806,7 @@
 	Submitted by Sander van der Wal <[email protected]>.
 
 	* src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for
-	deprecated operator "dotsection".
+	deprecated operator `dotsection'.
 	Submitted by Sander van der Wal <[email protected]>.
 
 2001-03-12  Werner Lemberg  <[email protected]>
@@ -7972,7 +7992,7 @@
 2001-02-01  David Turner  <[email protected]>
 
 	* docs/docmaker.py: Improved the index sorting routine to place
-	capital letters before small ones.  Added the "<order>" marker to
+	capital letters before small ones.  Added the `<order>' marker to
 	section blocks in order to give the order of blocks.
 
 2001-01-30  Antoine Leca  <[email protected]>
@@ -8179,7 +8199,7 @@
 	* src/smooth/ftgrays.c (grays_convert_glyph): Implement it.
 
 	* INSTALL: Updated installation instructions on Win32, listing the
-	new "make setup list" target used to list supported
+	new `make setup list' target used to list supported
 	compilers/targets.
 
 	* src/raster/ftraster.c (ft_black_render): Test for unsupported
@@ -8197,7 +8217,7 @@
 
 	* builds/win32/detect.mk: Added support for the Intel C/C++
 	compiler, as well as _preliminary_ (read: doesn't work!) support for
-	Watcom.  Also added a new setup target.  Type "make setup list" for
+	Watcom.  Also added a new setup target.  Type `make setup list' for
 	a list of supported command-line compilers on Win32.
 
 	* src/base/ftdebug.c: Added dummy symbol to avoid empty file if
@@ -8298,7 +8318,7 @@
 	pointer).
 
 	* src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug:
-	The ANSI "free()" function was called instead of "memory->free()".
+	The ANSI `free()' function was called instead of `memory->free()'.
 
 	* docs/docmaker.py: Added section filtering, multi-page generation
 	(index page generation is still missing though).
@@ -8305,9 +8325,9 @@
 
 2000-12-04  David Turner  <[email protected]>
 
-	* builds/unix/install.mk, builds/unix/ft2unix.h: The file "ft2unix.h"
+	* builds/unix/install.mk, builds/unix/ft2unix.h: The file `ft2unix.h'
 	is now installed as <ft2build.h> for Unix systems.  Note that we
-	still use the "freetype2/freetype" installation path for now.
+	still use the `freetype2/freetype' installation path for now.
 
 	* */*.[ch]: Now using <ft2build.h> as the default build and setup
 	configuration file in all public headers.  Internal source files
@@ -8319,7 +8339,7 @@
 
 	* builds/win32/detect.mk, builds/win32/w32-bccd.mk,
 	builds/win32/w32-dev.mk: Changed the developer build targets to
-	"devel-gcc" and "devel-bcc" in order to be able to develop with the
+	`devel-gcc' and `devel-bcc' in order to be able to develop with the
 	Borland C++ compiler.
 
 2000-12-01  David Turner  <[email protected]>
@@ -8331,7 +8351,7 @@
 
 	* builds/unix/configure.in, builds/unix/configure,
 	builds/cygwin/configure.in, builds/cygwin/configure: Setting
-	"version_info" to 6:1:0 for the 2.0.1 release.
+	`version_info' to 6:1:0 for the 2.0.1 release.
 
 	* CHANGES: Added a summary of changes between 2.0.1 and 2.0.
 
@@ -8358,13 +8378,13 @@
 2000-11-30  David Turner  <[email protected]>
 
 	* INSTALL: Slightly updated the quick starter documentation to
-	include IDE compilation, prevent against BSD Make, and specify "make
-	setup" instead of a single "make" for build configuration.
+	include IDE compilation, prevent against BSD Make, and specify `make
+	setup' instead of a single `make' for build configuration.
 
 	* include/config/ftbuild.h, include/internal/internal.h: Added new
 	configuration files used to determine the location of all public,
 	configuration, and internal header files for FreeType 2.  Modified
-	all headers under "include/freetype" to reflect this change.  Note
+	all headers under `include/freetype' to reflect this change.  Note
 	that we still need to change the library source files themselves
 	though.
 
@@ -8372,7 +8392,7 @@
 	builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk,
 	builds/win32/detect.mk: Added new files to support compilation with
 	the free Borland C++ command-line compiler.  Modified the detection
-	rules to recognize the new "bcc32" target in "make setup bcc32".
+	rules to recognize the new `bcc32' target in `make setup bcc32'.
 
 	* src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c,
 	src/truetype/ttobjs.c, src/truetype/ttgload.c,
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -10,18 +10,18 @@
       rounded,  making  them virtually  unusable  if  not loaded  with
       FT_LOAD_LINEAR_DESIGN.
 
-    - Indexing CID-keyed CFF fonts is now working:  The glyph index is
-      correctly  treated as a CID,  similar to  FreeType's CID  driver
+    - Indexing CID-keyed CFF fonts is  now working: The glyph index is
+      correctly  treated as a  CID, similar  to FreeType's  CID driver
       module.  Note that CID CMaps support is still missing.
 
     - The FT_FACE_FLAGS_GLYPH_NAMES is now  set correctly for all font
       formats.
 
-    - Some subsetted Type 1 fonts  weren't parsed correctly.  This bug
+    - Some subsetted Type 1  fonts weren't parsed correctly.  This bug
       has been introduced in 2.1.7.
 
     - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
-      but one encoding.  Use the new FT_WinFNT_ID_XXX  values together
+      but one encoding.  Use  the new FT_WinFNT_ID_XXX values together
       with FT_Get_WinFNT_Header() to get the WinFNT charset ID.
 
 
@@ -34,6 +34,70 @@
     - A  new  API   function  `FT_Get_CMap_Language_ID'  (declared  in
       `tttables.h')  is  available  to   get  the  language  ID  of  a
       TrueType/SFNT cmap.
+
+    - The cache sub-system has been rewritten.
+
+      - There is now support for deinstallation of faces.
+
+      - A new  API function `FTC_Manager_RemoveFaceID'  has been added
+        to  delete  all  `idle'  nodes  that  correspond  to  a  given
+        FTC_FaceID.  All `locked' nodes  (i.e., those with a reference
+        count > 0), will be modified to prevent them from appearing in
+        further  lookups (they  will  be cleaned  normally when  their
+        reference count reaches 0).
+
+      - There  is  now  support  for point  scaling  (i.e.,  providing
+        character sizes in points + dpis, instead of pixels).
+
+      - Three abstract cache classes are now available:
+
+          FTC_GCache:  Used to store  one glyph  item per  cache node,
+                      with the ability to group common attributes into
+                      `families'.      This    replaces     the    old
+                      FTC_GlyphCache class.
+
+          FTC_ICache: Used to store one FT_Glyph per cache node.  This
+                      extends  FTC_GCache.  Family  definition, family
+                      comparison, and  glyph loading are  however left
+                      to sub-classes.
+
+          FTC_SCache: Used to  store up to 16 small  bitmaps per cache
+                      node.    This    extends   FTC_GCache.    Family
+                      definition, family  comparison and glyph loading
+                      are however left to sub-classes.
+
+      - The file `src/cache/ftcbasic.c' implements:
+
+          FTC_ImageCache: Extends    FTC_ICache;   implements   family
+                          definitions and glyph loading similar to the
+                          old API.
+
+          FTC_SBitCache: Extends    FTC_SCache,    implements   family
+                         definitions and glyph  loading similar to the
+                         old API
+
+        Client  applications  should  be  able to  extend  FTC_GCache,
+        FTC_ICache, or FTC_SCache much more easily (i.e., less code to
+        write, and  less callbacks).  For example,  one could envision
+        caches  that are  capable of  storing  transformed (obliqued),
+        stroked,   emboldened,   or   colored   glyph   images.    Use
+        `ftcbasic.c' as an example.
+
+      - All public  APIs are now  in `include/freetype/ftcache.h', (to
+        be    accessed   as    `FT_CACHE_H').     The   contents    of
+        `include/freetype/cache/' is only  needed by applications that
+        wish to implement their own caches.
+
+      - There were some major performance improvements through the use
+        of  various programming  tricks.   Cache hits  are  up to  70%
+        faster than in the old code.
+
+      - The  FTC_CMapCache has  been simplied.   Charmaps can  only be
+        accessed by  index right now.  There  is also a  new API named
+        `FT_Charmap_GetIndex' for this purpose.
+
+      - The  demo programs  have been  updated to  the new  code.  The
+        previous versions will not work with the current one.
 
 
   III. MISCELLANEOUS
--- a/include/freetype/cache/ftccache.h
+++ b/include/freetype/cache/ftccache.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType internal cache interface (specification).                   */
 /*                                                                         */
-/*  Copyright 2000-2001, 2002 by                                           */
+/*  Copyright 2000-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -30,6 +30,7 @@
   /* handle to cache class */
   typedef const struct FTC_CacheClassRec_*  FTC_CacheClass;
 
+
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -68,6 +69,7 @@
 #define FTC_NODE__NEXT(x)  FTC_NODE( (x)->mru.next )
 #define FTC_NODE__PREV(x)  FTC_NODE( (x)->mru.prev )
 
+
   /*************************************************************************/
   /*                                                                       */
   /* These functions are exported so that they can be called from          */
@@ -81,7 +83,6 @@
                     FTC_Manager  manager );
 
 
-
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -91,56 +92,63 @@
   /*************************************************************************/
 
   /* initialize a new cache node */
-  typedef FT_Error    (*FTC_Node_NewFunc)( FTC_Node    *pnode,
-                                           FT_Pointer   query,
-                                           FTC_Cache    cache );
+  typedef FT_Error
+  (*FTC_Node_NewFunc)( FTC_Node    *pnode,
+                       FT_Pointer   query,
+                       FTC_Cache    cache );
 
-  typedef FT_ULong    (*FTC_Node_WeightFunc)( FTC_Node   node,
-                                              FTC_Cache  cache );
+  typedef FT_ULong
+  (*FTC_Node_WeightFunc)( FTC_Node   node,
+                          FTC_Cache  cache );
 
   /* compare a node to a given key pair */
-  typedef FT_Bool     (*FTC_Node_CompareFunc)( FTC_Node    node,
-                                               FT_Pointer  key,
-                                               FTC_Cache   cache );
+  typedef FT_Bool
+  (*FTC_Node_CompareFunc)( FTC_Node    node,
+                           FT_Pointer  key,
+                           FTC_Cache   cache );
 
 
-  typedef void        (*FTC_Node_FreeFunc)( FTC_Node   node,
-                                            FTC_Cache  cache );
+  typedef void
+  (*FTC_Node_FreeFunc)( FTC_Node   node,
+                        FTC_Cache  cache );
 
-  typedef FT_Error    (*FTC_Cache_InitFunc)( FTC_Cache   cache );
+  typedef FT_Error
+  (*FTC_Cache_InitFunc)( FTC_Cache  cache );
 
-  typedef void        (*FTC_Cache_DoneFunc)( FTC_Cache   cache );
+  typedef void
+  (*FTC_Cache_DoneFunc)( FTC_Cache  cache );
 
 
-  typedef struct FTC_CacheClassRec_
+  typedef struct  FTC_CacheClassRec_
   {
-    FTC_Node_NewFunc        node_new;
-    FTC_Node_WeightFunc     node_weight;
-    FTC_Node_CompareFunc    node_compare;
-    FTC_Node_CompareFunc    node_remove_faceid;
-    FTC_Node_FreeFunc       node_free;
+    FTC_Node_NewFunc      node_new;
+    FTC_Node_WeightFunc   node_weight;
+    FTC_Node_CompareFunc  node_compare;
+    FTC_Node_CompareFunc  node_remove_faceid;
+    FTC_Node_FreeFunc     node_free;
 
-    FT_UInt                 cache_size;
-    FTC_Cache_InitFunc      cache_init;
-    FTC_Cache_DoneFunc      cache_done;
+    FT_UInt               cache_size;
+    FTC_Cache_InitFunc    cache_init;
+    FTC_Cache_DoneFunc    cache_done;
 
   } FTC_CacheClassRec;
 
+
   /* each cache really implements a dynamic hash table to manage its nodes */
   typedef struct  FTC_CacheRec_
   {
-    FT_UFast             p;
-    FT_UFast             mask;
-    FT_Long              slack;
-    FTC_Node*            buckets;
+    FT_UFast           p;
+    FT_UFast           mask;
+    FT_Long            slack;
+    FTC_Node*          buckets;
 
-    FTC_CacheClassRec    clazz;      /* local copy, for speed */
+    FTC_CacheClassRec  clazz;       /* local copy, for speed  */
 
-    FTC_Manager          manager;
-    FT_Memory            memory;
-    FT_UInt              index;  /* in manager's table         */
+    FTC_Manager        manager;
+    FT_Memory          memory;
+    FT_UInt            index;       /* in manager's table     */
 
-    FTC_CacheClass       org_class;  /* original class pointer */
+    FTC_CacheClass     org_class;   /* original class pointer */
 
   } FTC_CacheRec;
 
@@ -149,19 +157,19 @@
 #define FTC_CACHE_P( x )  ( (FTC_Cache*)(x) )
 
 
- /* default cache initialize */
+  /* default cache initialize */
   FT_EXPORT( FT_Error )
-  FTC_Cache_Init( FTC_Cache       cache );
+  FTC_Cache_Init( FTC_Cache  cache );
 
- /* default cache finalizer */
+  /* default cache finalizer */
   FT_EXPORT( void )
   FTC_Cache_Done( FTC_Cache  cache );
 
- /* call this function to lookup the cache. if no corresponding
-  * node is found, a new one is automatically created. This function
-  * is capable of flushing the cache adequately to make room for the
-  * new cache object.
-  */
+  /* Call this function to lookup the cache.  If no corresponding
+   * node is found, a new one is automatically created.  This function
+   * is capable of flushing the cache adequately to make room for the
+   * new cache object.
+   */
   FT_EXPORT( FT_Error )
   FTC_Cache_Lookup( FTC_Cache   cache,
                     FT_UInt32   hash,
@@ -174,30 +182,31 @@
                      FT_Pointer  query,
                      FTC_Node   *anode );
 
- /* remove all nodes that relate to a given face_id. This is useful
-  * when un-installing fonts. Note that if a cache node relates to
-  * the face_id, but is locked (i.e. has 'ref_count > 0'), the node
-  * will _not_ be destroyed, but its internal face_id reference will
-  * be modified.
-  *
-  * the end result will be that the node will never come back
-  * in further lookup requests, and will be flushed on demand from
-  * the cache normally when its reference count reaches 0
-  */
+  /* Remove all nodes that relate to a given face_id.  This is useful
+   * when un-installing fonts.  Note that if a cache node relates to
+   * the face_id, but is locked (i.e., has 'ref_count > 0'), the node
+   * will _not_ be destroyed, but its internal face_id reference will
+   * be modified.
+   *
+   * The final result will be that the node will never come back
+   * in further lookup requests, and will be flushed on demand from
+   * the cache normally when its reference count reaches 0.
+   */
   FT_EXPORT( void )
-  FTC_Cache_RemoveFaceID( FTC_Cache    cache,
-                          FTC_FaceID   face_id );
+  FTC_Cache_RemoveFaceID( FTC_Cache   cache,
+                          FTC_FaceID  face_id );
 
 
 
-#define  FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error )  \
+#define FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error )   \
   FT_BEGIN_STMNT                                                           \
-    FTC_Node  *_bucket, *_pnode, _node;                                    \
-    FTC_Cache  _cache = FTC_CACHE(cache);                                  \
-    FT_UInt32  _hash  = (FT_UInt32)(hash);                                 \
+    FTC_Node             *_bucket, *_pnode, _node;                         \
+    FTC_Cache             _cache   = FTC_CACHE(cache);                     \
+    FT_UInt32             _hash    = (FT_UInt32)(hash);                    \
     FTC_Node_CompareFunc  _nodcomp = (FTC_Node_CompareFunc)(nodecmp);      \
-    FT_UInt    _idx;                                                       \
+    FT_UInt               _idx;                                            \
                                                                            \
+                                                                           \
     error = 0;                                                             \
     _idx  = _hash & _cache->mask;                                          \
     if ( _idx < _cache->p )                                                \
@@ -208,7 +217,7 @@
     {                                                                      \
       _node = *_pnode;                                                     \
       if ( _node == NULL )                                                 \
-        goto _NewNode;                                                      \
+        goto _NewNode;                                                     \
                                                                            \
       if ( _node->hash == _hash && _nodcomp( _node, query, _cache ) )      \
         break;                                                             \
@@ -225,6 +234,7 @@
                                                                            \
     {                                                                      \
       FTC_Manager  _manager = _cache->manager;                             \
+                                                                           \
                                                                            \
       if ( _node != _manager->nodes_list )                                 \
         FTC_MruNode_Up( (FTC_MruNode*)&_manager->nodes_list,               \
--- a/include/freetype/cache/ftcglyph.h
+++ b/include/freetype/cache/ftcglyph.h
@@ -19,51 +19,50 @@
   /*
    *
    *  FTC_GCache is an _abstract_ cache object optimized to store glyph
-   *  data. It works as follows:
+   *  data.  It works as follows:
    *
-   *   - it manages FTC_GNode objects. Each one of them can hold one or more
-   *     glyph "items". Item types are not specified in the FTC_GCache but in
-   *     classes that extend it
+   *   - It manages FTC_GNode objects. Each one of them can hold one or more
+   *     glyph `items'.  Item types are not specified in the FTC_GCache but
+   *     in classes that extend it.
    *
-   *   - glyph attributes, like face_id, character size, render mode, etc..
-   *     can be grouped in abstract "glyph families". This avoids storing
+   *   - Glyph attributes, like face ID, character size, render mode, etc.,
+   *     can be grouped into abstract `glyph families'.  This avoids storing
    *     the attributes within the FTC_GCache, since it is likely that many
-   *     FTC_GNodes will belong to the same family in typical uses
+   *     FTC_GNodes will belong to the same family in typical uses.
    *
-   *   - each FTC_GNode is thus a FTC_Node with two additionnal fields:
+   *   - Each FTC_GNode is thus an FTC_Node with two additional fields:
    *
-   *       * gindex :: a glyph index, or the first index in a glyph range
-   *       * family :: a pointer to a glyph "family"
+   *       * gindex: A glyph index, or the first index in a glyph range.
+   *       * family: A pointer to a glyph `family'.
    *
    *   - Family types are not fully specific in the FTC_Family type, but
    *     by classes that extend it.
    *
-   *  Note that both FTC_ImageCache and FTC_SBitCache extend FTC_GCache. They
-   *  share an FTC_Family sub-class called FTC_BasicFamily which is used to
-   *  store the following data:  face_id, pixel/point sizes, load flags.
-   *  for more details, see the file "src/cache/ftcbasic.c"
+   *  Note that both FTC_ImageCache and FTC_SBitCache extend FTC_GCache.
+   *  They share an FTC_Family sub-class called FTC_BasicFamily which is
+   *  used to store the following data: face ID, pixel/point sizes, load
+   *  flags.  For more details see the file `src/cache/ftcbasic.c'.
    *
    *  Client applications can extend FTC_GNode with their own FTC_GNode
-   *  and FTC_Family sub-classes to implement more complex caches (e.g.
-   *  handling automatic synthetis, like obliquing & emboldening, colored
-   *  glyphs, etc...)
+   *  and FTC_Family sub-classes to implement more complex caches (e.g.,
+   *  handling automatic synthesis, like obliquing & emboldening, colored
+   *  glyphs, etc.).
    *
-   *  See also the FTC_ICache & FTC_SCache classes in "ftcimage.h" and
-   *  "ftcsbits.h", which both extend FTC_GCache with additionnal
+   *  See also the FTC_ICache & FTC_SCache classes in `ftcimage.h' and
+   *  `ftcsbits.h', which both extend FTC_GCache with additional
    *  optimizations.
    *
+   *  A typical FTC_GCache implementation must provide at least the
+   *  following:
    *
-   *  a typical FTC_GCache implementation must provide at least the following:
+   *  - FTC_GNode sub-class, e.g. MyNode, with relevant methods:
+   *        my_node_new            (must call FTC_GNode_Init)
+   *        my_node_free           (must call FTC_GNode_Done)
+   *        my_node_compare        (must call FTC_GNode_Compare)
+   *        my_node_remove_faceid  (must call ftc_gnode_unselect in case
+   *                                of match)
    *
-   *  - FTC_GNode sub-class, e.g. MyNode, with relevant methods, i.e:
-   *        my_node_new            ( must call FTC_GNode_Init )
-   *        my_node_free           ( must call FTC_GNode_Done )
-   *        my_node_compare        ( must call FTC_GNode_Compare )
-   *        my_node_remove_faceid  ( must call ftc_gnode_unselect in case
-   *                                 of match )
-   *
-   *
-   *  - FTC_Family sub-class, e.g. MyFamily, with relevant methods, e.g.:
+   *  - FTC_Family sub-class, e.g. MyFamily, with relevant methods:
    *        my_family_compare
    *        my_family_init
    *        my_family_reset (optional)
@@ -72,23 +71,24 @@
    *  - FTC_GQuery sub-class, e.g. MyQuery, to hold cache-specific query
    *    data.
    *
-   *  - provide constant structures for a FTC_GNodeClass
+   *  - Constant structures for a FTC_GNodeClass.
    *
    *  - MyCacheNew() can be implemented easily as a call to the convenience
-   *    function FTC_GCache_New
+   *    function FTC_GCache_New.
    *
-   *  - implement MyCacheLookup with a call to FTC_GCache_Lookup. This
-   *    function will automatically:
+   *  - MyCacheLookup with a call to FTC_GCache_Lookup.  This function will
+   *    automatically:
    *
-   *      - search for the corresponding family in the cache, or create
-   *        a new one if necessary. put it in FTC_GQUERY(myquery).family
+   *    - Search for the corresponding family in the cache, or create
+   *      a new one if necessary.  Put it in FTC_GQUERY(myquery).family
    *
-   *      - call FTC_Cache_Lookup
+   *    - Call FTC_Cache_Lookup.
    *
-   *    if it returns NULL, you should create a new node, then call
+   *    If it returns NULL, you should create a new node, then call
    *    ftc_cache_add as usual.
    */
 
+
   /*************************************************************************/
   /*                                                                       */
   /* Important: The functions defined in this file are only used to        */
@@ -125,16 +125,17 @@
 
 
  /*
-  *  we can group glyph in "families". Each family correspond to a
-  *  given face id, character size, transform, etc...
+  *  We can group glyphs into `families'.  Each family correspond to a
+  *  given face ID, character size, transform, etc.
   *
-  *  families are implemented as MRU list nodes. They are reference-counted
+  *  Families are implemented as MRU list nodes.  They are
+  *  reference-counted.
   */
 
   typedef struct  FTC_FamilyRec_
   {
     FTC_MruNodeRec    mrunode;
-    FT_UInt           num_nodes;   /* current number of nodes in this family */
+    FT_UInt           num_nodes; /* current number of nodes in this family */
     FTC_Cache         cache;
     FTC_MruListClass  clazz;
 
@@ -166,8 +167,6 @@
 #define FTC_GQUERY( x )  ( (FTC_GQuery)(x) )
 
 
-
-
   /*************************************************************************/
   /*                                                                       */
   /* These functions are exported so that they can be called from          */
@@ -177,9 +176,9 @@
 
   /* must be called by derived FTC_Node_InitFunc routines */
   FT_EXPORT( void )
-  FTC_GNode_Init( FTC_GNode    node,
-                  FT_UInt      gindex,  /* glyph index for node */
-                  FTC_Family   family );
+  FTC_GNode_Init( FTC_GNode   node,
+                  FT_UInt     gindex,  /* glyph index for node */
+                  FTC_Family  family );
 
   /* returns TRUE iff the query's glyph index correspond to the node;  */
   /* this assumes that the "family" and "hash" fields of the query are */
@@ -188,17 +187,16 @@
   FTC_GNode_Compare( FTC_GNode   gnode,
                      FTC_GQuery  gquery );
 
- /* call this function to clear a node's family. this is necessary
-  * to implement the "node_remove_faceid" cache method correctly
-  */
+  /* call this function to clear a node's family -- this is necessary */
+  /* to implement the `node_remove_faceid' cache method correctly     */
   FT_EXPORT( void )
-  FTC_GNode_UnselectFamily( FTC_GNode   gnode,
-                            FTC_Cache   cache );
+  FTC_GNode_UnselectFamily( FTC_GNode  gnode,
+                            FTC_Cache  cache );
 
   /* must be called by derived FTC_Node_DoneFunc routines */
   FT_EXPORT( void )
   FTC_GNode_Done( FTC_GNode  node,
-                  FTC_Cache      cache );
+                  FTC_Cache  cache );
 
 
   FT_EXPORT( void )
@@ -207,27 +205,26 @@
 
   typedef struct FTC_GCacheRec_
   {
-    FTC_CacheRec       cache;
-    FTC_MruListRec     families;
+    FTC_CacheRec    cache;
+    FTC_MruListRec  families;
 
   } FTC_GCacheRec, *FTC_GCache;
 
+#define FTC_GCACHE( x )  ((FTC_GCache)(x))
 
-#define FTC_GCACHE(x)  ((FTC_GCache)(x))
 
-
- /* can be used as @FTC_Cache_InitFunc */
+  /* can be used as @FTC_Cache_InitFunc */
   FT_EXPORT( FT_Error )
-  FTC_GCache_Init( FTC_GCache     cache );
+  FTC_GCache_Init( FTC_GCache  cache );
 
 
- /* can be used as @FTC_Cache_DoneFunc */
+  /* can be used as @FTC_Cache_DoneFunc */
   FT_EXPORT( void )
   FTC_GCache_Done( FTC_GCache  cache );
 
 
- /* the glyph cache class adds fields for the family implementation */
-  typedef struct FTC_GCacheClassRec_
+  /* the glyph cache class adds fields for the family implementation */
+  typedef struct  FTC_GCacheClassRec_
   {
     FTC_CacheClassRec  clazz;
     FTC_MruListClass   family_class;
@@ -236,13 +233,15 @@
 
   typedef const FTC_GCacheClassRec*   FTC_GCacheClass;
 
-#define  FTC_GCACHE_CLASS(x)  ((FTC_GCacheClass)(x))
+#define FTC_GCACHE_CLASS( x )  ((FTC_GCacheClass)(x))
 
-#define  FTC_CACHE__GCACHE_CLASS(x)  FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
-#define  FTC_CACHE__FAMILY_CLASS(x)  ((FTC_MruListClass) FTC_CACHE__GCACHE_CLASS(x)->family_class)
+#define FTC_CACHE__GCACHE_CLASS( x ) \
+          FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
+#define FTC_CACHE__FAMILY_CLASS( x ) \
+          ((FTC_MruListClass) FTC_CACHE__GCACHE_CLASS(x)->family_class)
 
 
- /* convenience function. use instead of FTC_Manager_Register_Cache */
+  /* convenience function; use it instead of FTC_Manager_Register_Cache */
   FT_EXPORT( FT_Error )
   FTC_GCache_New( FTC_Manager       manager,
                   FTC_GCacheClass   clazz,
@@ -256,33 +255,35 @@
                      FTC_Node    *anode );
 
 
-#define  FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, gindex, query, node, error )  \
-  FT_BEGIN_STMNT                                                                   \
-    FTC_GCache               _gcache   = FTC_GCACHE( cache );                      \
-    FTC_Family               _family;                                              \
-    FTC_GQuery               _gquery   = (FTC_GQuery)( query );                    \
-    FTC_MruNode_CompareFunc  _fcompare = (FTC_MruNode_CompareFunc)(famcmp);        \
-                                                                                   \
-    _gquery->gindex = (gindex);                                                    \
-                                                                                   \
-    FTC_MRULIST_LOOP( &_gcache->families, _family )                                \
-    {                                                                      \
-      if ( _fcompare( (FTC_MruNode)_family, _gquery ) )                    \
-      {                                                                    \
-        _gquery->family = _family;                                         \
-        goto _FamilyFound;                                                 \
-      }                                                                    \
-    }                                                                      \
-    FTC_MRULIST_LOOP_END();                                                \
-                                                                           \
-    error = FTC_MruList_New( &_gcache->families,                           \
-                             _gquery,                                      \
-                             (FTC_MruNode*)&_gquery->family );             \
-    if ( !error )                                                          \
-    {                                                                      \
-    _FamilyFound:                                                          \
-      FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error );    \
-    }                                                                      \
+#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash,                \
+                               gindex, query, node, error )                 \
+  FT_BEGIN_STMNT                                                            \
+    FTC_GCache               _gcache   = FTC_GCACHE( cache );               \
+    FTC_Family               _family;                                       \
+    FTC_GQuery               _gquery   = (FTC_GQuery)( query );             \
+    FTC_MruNode_CompareFunc  _fcompare = (FTC_MruNode_CompareFunc)(famcmp); \
+                                                                            \
+                                                                            \
+    _gquery->gindex = (gindex);                                             \
+                                                                            \
+    FTC_MRULIST_LOOP( &_gcache->families, _family )                         \
+    {                                                                       \
+      if ( _fcompare( (FTC_MruNode)_family, _gquery ) )                     \
+      {                                                                     \
+        _gquery->family = _family;                                          \
+        goto _FamilyFound;                                                  \
+      }                                                                     \
+    }                                                                       \
+    FTC_MRULIST_LOOP_END();                                                 \
+                                                                            \
+    error = FTC_MruList_New( &_gcache->families,                            \
+                             _gquery,                                       \
+                             (FTC_MruNode*)&_gquery->family );              \
+    if ( !error )                                                           \
+    {                                                                       \
+    _FamilyFound:                                                           \
+      FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error );     \
+    }                                                                       \
   FT_END_STMNT
   /* */
 
--- a/include/freetype/cache/ftcimage.h
+++ b/include/freetype/cache/ftcimage.h
@@ -20,11 +20,11 @@
   *  FTC_ICache is an _abstract_ cache used to store a single FT_Glyph
   *  image per cache node.
   *
-  *  FTC_ICache extends FTC_GCache. For an implementation example,
-  *  see FTC_ImageCache in "src/cache/ftbasic.c"
-  *
+  *  FTC_ICache extends FTC_GCache.  For an implementation example,
+  *  see FTC_ImageCache in `src/cache/ftbasic.c'.
   */
   
+
   /*************************************************************************/
   /*                                                                       */
   /* Each image cache really manages FT_Glyph objects.                     */
@@ -55,12 +55,13 @@
 #define FTC_INODE_GINDEX( x )  FTC_GNODE(x)->gindex
 #define FTC_INODE_FAMILY( x )  FTC_GNODE(x)->family
 
-  typedef FT_Error  (*FTC_IFamily_LoadGlyphFunc)( FTC_Family   family,
-                                                  FT_UInt      gindex,
-                                                  FTC_Cache    cache,
-                                                  FT_Glyph    *aglyph );
+  typedef FT_Error
+  (*FTC_IFamily_LoadGlyphFunc)( FTC_Family  family,
+                                FT_UInt     gindex,
+                                FTC_Cache   cache,
+                                FT_Glyph   *aglyph );
 
-  typedef struct FTC_IFamilyClassRec_
+  typedef struct  FTC_IFamilyClassRec_
   {
     FTC_MruListClassRec        clazz;
     FTC_IFamily_LoadGlyphFunc  family_load_glyph;
@@ -69,26 +70,27 @@
 
   typedef const FTC_IFamilyClassRec*  FTC_IFamilyClass;
 
-#define  FTC_IFAMILY_CLASS(x) ((FTC_IFamilyClass)(x))
+#define FTC_IFAMILY_CLASS( x )  ((FTC_IFamilyClass)(x))
 
-#define  FTC_CACHE__IFAMILY_CLASS(x)  \
-            FTC_IFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS(x)->family_class )
+#define FTC_CACHE__IFAMILY_CLASS( x ) \
+          FTC_IFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS(x)->family_class )
 
- /* can be used as a @FTC_Node_FreeFunc */
+
+  /* can be used as a @FTC_Node_FreeFunc */
   FT_EXPORT( void )
   FTC_INode_Free( FTC_INode  inode,
                   FTC_Cache  cache );
 
- /* can be used as @FTC_Node_NewFunc. "gquery.index" & "gquery.family" must
-  * be set correctly. this function will call the 'family_load_glyph' method
-  * to load the FT_Glyph into the cache node
-  */
+  /* Can be used as @FTC_Node_NewFunc.  `gquery.index' and `gquery.family'
+   * must be set correctly.  This function will call the `family_load_glyph'
+   * method to load the FT_Glyph into the cache node.
+   */
   FT_EXPORT( FT_Error )
   FTC_INode_New( FTC_INode   *pinode,
                  FTC_GQuery   gquery,
                  FTC_Cache    cache );
 
- /* can be used as @FTC_Node_WeightFunc */
+  /* can be used as @FTC_Node_WeightFunc */
   FT_EXPORT( FT_ULong )
   FTC_INode_Weight( FTC_INode  inode );
 
--- a/include/freetype/cache/ftcmanag.h
+++ b/include/freetype/cache/ftcmanag.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType Cache Manager (specification).                              */
 /*                                                                         */
-/*  Copyright 2000-2001 by                                                 */
+/*  Copyright 2000-2001, 2003 by                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -80,13 +80,14 @@
   /*************************************************************************/
 
 
-#define FTC_MAX_FACES_DEFAULT    2
-#define FTC_MAX_SIZES_DEFAULT    4
-#define FTC_MAX_BYTES_DEFAULT    200000L  /* ~200kByte by default */
+#define FTC_MAX_FACES_DEFAULT  2
+#define FTC_MAX_SIZES_DEFAULT  4
+#define FTC_MAX_BYTES_DEFAULT  200000L  /* ~200kByte by default */
 
   /* maximum number of caches registered in a single manager */
 #define FTC_MAX_CACHES         16
 
+
   typedef struct  FTC_ManagerRec_
   {
     FT_Library          library;
@@ -97,7 +98,7 @@
     FT_ULong            cur_weight;
     FT_UInt             num_nodes;
 
-    FTC_Cache           caches[ FTC_MAX_CACHES ];
+    FTC_Cache           caches[FTC_MAX_CACHES];
     FT_UInt             num_caches;
 
     FTC_MruListRec      faces;
@@ -134,12 +135,12 @@
   FTC_Manager_Compress( FTC_Manager  manager );
 
 
- /* try to flush "count" old nodes from the cache. return the number
-  * of really flushed nodes
-  */
+  /* try to flush `count' old nodes from the cache; return the number
+   * of really flushed nodes
+   */
   FT_EXPORT( FT_UInt )
   FTC_Manager_FlushN( FTC_Manager  manager,
-                       FT_UInt      count );
+                      FT_UInt      count );
 
 
   /* this must be used internally for the moment */
@@ -150,19 +151,19 @@
 
  /* */
 
-  typedef struct FTC_ScalerRec_
+  typedef struct  FTC_ScalerRec_
   {
-    FTC_FaceID   face_id;
-    FT_UInt      width;
-    FT_UInt      height;
-    FT_Int       pixel;
-    FT_UInt      x_res;
-    FT_UInt      y_res;
+    FTC_FaceID  face_id;
+    FT_UInt     width;
+    FT_UInt     height;
+    FT_Int      pixel;
+    FT_UInt     x_res;
+    FT_UInt     y_res;
 
   } FTC_ScalerRec, *FTC_Scaler;
 
 
-#define  FTC_SCALER_COMPARE(a,b)                  \
+#define FTC_SCALER_COMPARE( a, b )                \
     ( (a)->face_id      == (b)->face_id      &&   \
       (a)->width        == (b)->width        &&   \
       (a)->height       == (b)->height       &&   \
@@ -171,16 +172,16 @@
         ( (a)->x_res == (b)->x_res &&             \
           (a)->y_res == (b)->y_res ) ) )
 
-#define  FTC_SCALER_HASH(q)                                  \
-    ( FTC_FACE_ID_HASH((q)->face_id) +                       \
+#define FTC_SCALER_HASH( q )                                 \
+    ( FTC_FACE_ID_HASH( (q)->face_id ) +                     \
       (q)->width + (q)->height*7 +                           \
       ( (q)->pixel ? 0 : ( (q)->x_res*33 ^ (q)->y_res*61 ) ) )
 
 
   FT_EXPORT( FT_Error )
-  FTC_Manager_LookupSize( FTC_Manager    manager,
-                           FTC_Scaler     scaler,
-                           FT_Size       *asize );
+  FTC_Manager_LookupSize( FTC_Manager  manager,
+                          FTC_Scaler   scaler,
+                          FT_Size     *asize );
 
  /* */
 
--- a/include/freetype/cache/ftcmru.h
+++ b/include/freetype/cache/ftcmru.h
@@ -58,15 +58,16 @@
 
 FT_BEGIN_HEADER
 
-  typedef struct FTC_MruNodeRec_*              FTC_MruNode;
+  typedef struct FTC_MruNodeRec_*  FTC_MruNode;
 
-  typedef struct FTC_MruNodeRec_
+  typedef struct  FTC_MruNodeRec_
   {
-    FTC_MruNode   next;
-    FTC_MruNode   prev;
+    FTC_MruNode  next;
+    FTC_MruNode  prev;
 
   } FTC_MruNodeRec;
 
+
   FT_EXPORT( void )
   FTC_MruNode_Prepend( FTC_MruNode  *plist,
                        FTC_MruNode   node );
@@ -79,42 +80,49 @@
   FTC_MruNode_Remove( FTC_MruNode  *plist,
                       FTC_MruNode   node );
 
+
   typedef struct FTC_MruListRec_*              FTC_MruList;
 
   typedef struct FTC_MruListClassRec_ const *  FTC_MruListClass;
 
-  typedef FT_Int       (*FTC_MruNode_CompareFunc)( FTC_MruNode  node,
-                                                   FT_Pointer   key );
 
-  typedef FT_Error     (*FTC_MruNode_InitFunc)( FTC_MruNode  node,
-                                                FT_Pointer    key,
-                                                FT_Pointer    data );
+  typedef FT_Int
+  (*FTC_MruNode_CompareFunc)( FTC_MruNode  node,
+                              FT_Pointer   key );
 
-  typedef FT_Error     (*FTC_MruNode_ResetFunc)( FTC_MruNode  node,
-                                                 FT_Pointer   key,
-                                                 FT_Pointer   data );
+  typedef FT_Error
+  (*FTC_MruNode_InitFunc)( FTC_MruNode  node,
+                           FT_Pointer   key,
+                           FT_Pointer   data );
 
-  typedef void         (*FTC_MruNode_DoneFunc)( FTC_MruNode  node,
-                                                FT_Pointer   data );
+  typedef FT_Error
+  (*FTC_MruNode_ResetFunc)( FTC_MruNode  node,
+                            FT_Pointer   key,
+                            FT_Pointer   data );
 
-  typedef struct FTC_MruListClassRec_
+  typedef void
+  (*FTC_MruNode_DoneFunc)( FTC_MruNode  node,
+                           FT_Pointer   data );
+
+
+  typedef struct  FTC_MruListClassRec_
   {
-    FT_UInt                   node_size;
-    FTC_MruNode_CompareFunc   node_compare;
-    FTC_MruNode_InitFunc      node_init;
-    FTC_MruNode_ResetFunc     node_reset;
-    FTC_MruNode_DoneFunc      node_done;
+    FT_UInt                  node_size;
+    FTC_MruNode_CompareFunc  node_compare;
+    FTC_MruNode_InitFunc     node_init;
+    FTC_MruNode_ResetFunc    node_reset;
+    FTC_MruNode_DoneFunc     node_done;
 
   } FTC_MruListClassRec;
 
-  typedef struct FTC_MruListRec_
+  typedef struct  FTC_MruListRec_
   {
-    FT_UInt                  num_nodes;
-    FT_UInt                  max_nodes;
-    FTC_MruNode              nodes;
-    FT_Pointer               data;
-    FTC_MruListClassRec      clazz;
-    FT_Memory                memory;
+    FT_UInt              num_nodes;
+    FT_UInt              max_nodes;
+    FTC_MruNode          nodes;
+    FT_Pointer           data;
+    FTC_MruListClassRec  clazz;
+    FT_Memory            memory;
 
   } FTC_MruListRec;
 
@@ -135,12 +143,12 @@
 
   FT_EXPORT( FTC_MruNode )
   FTC_MruList_Find( FTC_MruList  list,
-                    FT_Pointer    key );
+                    FT_Pointer   key );
 
   FT_EXPORT( FT_Error )
-  FTC_MruList_New( FTC_MruList    list,
-                   FT_Pointer     key,
-                   FTC_MruNode   *anode );
+  FTC_MruList_New( FTC_MruList   list,
+                   FT_Pointer    key,
+                   FTC_MruNode  *anode );
 
   FT_EXPORT( FT_Error )
   FTC_MruList_Lookup( FTC_MruList   list,
@@ -154,17 +162,18 @@
 
   FT_EXPORT( void )
   FTC_MruList_RemoveSelection( FTC_MruList              list,
-                               FTC_MruNode_CompareFunc  select,
+                               FTC_MruNode_CompareFunc  selection,
                                FT_Pointer               key );
 
 
 #ifdef FTC_INLINE
 
-#define  FTC_MRULIST_LOOKUP( list, key, node, error )                    \
+#define FTC_MRULIST_LOOKUP( list, key, node, error )                     \
   FT_BEGIN_STMNT                                                         \
     FTC_MruNode_CompareFunc  _compare = (list)->clazz.node_compare;      \
     FTC_MruNode              _first, _node;                              \
                                                                          \
+                                                                         \
     error  = 0;                                                          \
     _first = (list)->nodes;                                              \
     _node  = NULL;                                                       \
@@ -180,8 +189,8 @@
           goto _Ok;                                                      \
         }                                                                \
         _node = _node->next;                                             \
-      }                                                                  \
-      while ( _node != _first) ;                                         \
+                                                                         \
+      } while ( _node != _first) ;                                       \
     }                                                                    \
                                                                          \
     error = FTC_MruList_New( (list), (key), (FTC_MruNode*)&(node) );     \
@@ -191,28 +200,31 @@
 
 #else  /* !FTC_INLINE */
 
-#define  FTC_MRULIST_LOOKUP_CMP( list, key, node, error )   \
+#define FTC_MRULIST_LOOKUP_CMP( list, key, node, error ) \
   error = FTC_MruList_Lookup( (list), (key), (FTC_MruNode*)&(node) ) 
 
 #endif /* !FTC_INLINE */
 
 
-#define  FTC_MRULIST_LOOP( list, node )       \
+#define FTC_MRULIST_LOOP( list, node )        \
   FT_BEGIN_STMNT                              \
-    FTC_MruNode   _first = (list)->nodes;     \
+    FTC_MruNode  _first = (list)->nodes;      \
                                               \
+                                              \
     if ( _first )                             \
     {                                         \
       FTC_MruNode  _node = _first;            \
+                                              \
+                                              \
       do                                      \
       {                                       \
         *(FTC_MruNode*)&(node) = _node;
 
 
-#define  FTC_MRULIST_LOOP_END()              \
+#define FTC_MRULIST_LOOP_END()               \
         _node = _node->next;                 \
-      }                                      \
-      while ( _node != _first );             \
+                                             \
+      } while ( _node != _first );           \
     }                                        \
   FT_END_STMNT
 
--- a/include/freetype/cache/ftcsbits.h
+++ b/include/freetype/cache/ftcsbits.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    A small-bitmap cache (specification).                                */
 /*                                                                         */
-/*  Copyright 2000-2001, 2002 by                                           */
+/*  Copyright 2000-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -33,24 +33,26 @@
   {
     FTC_GNodeRec  gnode;
     FT_UInt       count;
-    FTC_SBitRec   sbits[ FTC_SBIT_ITEMS_PER_NODE ];
+    FTC_SBitRec   sbits[FTC_SBIT_ITEMS_PER_NODE];
 
   } FTC_SNodeRec, *FTC_SNode;
 
 
-#define FTC_SNODE( x )  ( (FTC_SNode)( x ) )
-#define FTC_SNODE_GINDEX( x )  FTC_GNODE(x)->gindex
-#define FTC_SNODE_FAMILY( x )  FTC_GNODE(x)->family
+#define FTC_SNODE( x )         ( (FTC_SNode)( x ) )
+#define FTC_SNODE_GINDEX( x )  FTC_GNODE( x )->gindex
+#define FTC_SNODE_FAMILY( x )  FTC_GNODE( x )->family
 
-  typedef FT_UInt   (*FTC_SFamily_GetCountFunc)( FTC_Family   family,
-                                                 FTC_Manager  manager );
+  typedef FT_UInt
+  (*FTC_SFamily_GetCountFunc)( FTC_Family   family,
+                               FTC_Manager  manager );
 
-  typedef FT_Error  (*FTC_SFamily_LoadGlyphFunc)( FTC_Family   family,
-                                                  FT_UInt      gindex,
-                                                  FTC_Manager  manager,
-                                                  FT_Face     *aface );
+  typedef FT_Error
+  (*FTC_SFamily_LoadGlyphFunc)( FTC_Family   family,
+                                FT_UInt      gindex,
+                                FTC_Manager  manager,
+                                FT_Face     *aface );
 
-  typedef struct FTC_SFamilyClassRec_
+  typedef struct  FTC_SFamilyClassRec_
   {
     FTC_MruListClassRec        clazz;
     FTC_SFamily_GetCountFunc   family_get_count;
@@ -60,10 +62,11 @@
 
   typedef const FTC_SFamilyClassRec*  FTC_SFamilyClass;
 
-#define  FTC_SFAMILY_CLASS(x)  ((FTC_SFamilyClass)(x))
+#define FTC_SFAMILY_CLASS( x )  ((FTC_SFamilyClass)(x))
 
-#define  FTC_CACHE__SFAMILY_CLASS(x)  \
-             FTC_SFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS(x)->family_class )
+#define FTC_CACHE__SFAMILY_CLASS( x )  \
+          FTC_SFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS( x )->family_class )
+
 
   FT_EXPORT( void )
   FTC_SNode_Free( FTC_SNode  snode,
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Build macros of the FreeType 2 library.                              */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002 by                                           */
+/*  Copyright 1996-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -433,10 +433,10 @@
   /*    see the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need  */
   /*    to store small glyph bitmaps, as it will use less memory.          */
   /*                                                                       */
-  /*    this macro is *DEPRECATED*, simply include @FT_CACHE_H and you'll  */
-  /*    have all glyph image-related cache declarations                    */
+  /*    This macro is deprecated.  Simply include @FT_CACHE_H to have all  */
+  /*    glyph image-related cache declarations.                            */
   /*                                                                       */
-#define FT_CACHE_IMAGE_H    FT_CACHE_H
+#define FT_CACHE_IMAGE_H  FT_CACHE_H
 
 
   /*************************************************************************/
@@ -453,8 +453,8 @@
   /*    in @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,  */
   /*    including scalable outlines.                                       */
   /*                                                                       */
-  /*    this macro is *DEPRECATED*, simply include @FT_CACHE_H and you'll  */
-  /*    have all small bitmaps-related cache declarations                  */
+  /*    This macro is deprecated.  Simply include @FT_CACHE_H to have all  */
+  /*    small bitmaps-related cache declarations.                          */
   /*                                                                       */
 #define FT_CACHE_SMALL_BITMAPS_H  FT_CACHE_H
 
@@ -468,8 +468,8 @@
   /*    A macro used in #include statements to name the file containing    */
   /*    the `charmap' API of the FreeType 2 cache sub-system.              */
   /*                                                                       */
-  /*    this macro is *DEPRECATED*, simply include @FT_CACHE_H and you'll  */
-  /*    have all charmap-based cache declarations                          */
+  /*    This macro is deprecated.  Simply include @FT_CACHE_H to have all  */
+  /*    charmap-based cache declarations.                                  */
   /*                                                                       */
 #define FT_CACHE_CHARMAP_H     FT_CACHE_H
 
@@ -517,30 +517,30 @@
 
   /* */
 
-#define FT_TRIGONOMETRY_H          <freetype/fttrigon.h>
-#define FT_STROKER_H               <freetype/ftstroke.h>
-#define FT_SYNTHESIS_H             <freetype/ftsynth.h>
-#define FT_ERROR_DEFINITIONS_H     <freetype/fterrdef.h>
+#define FT_TRIGONOMETRY_H       <freetype/fttrigon.h>
+#define FT_STROKER_H            <freetype/ftstroke.h>
+#define FT_SYNTHESIS_H          <freetype/ftsynth.h>
+#define FT_ERROR_DEFINITIONS_H  <freetype/fterrdef.h>
 
-#define FT_CACHE_MANAGER_H         <freetype/cache/ftcmanag.h>
+#define FT_CACHE_MANAGER_H  <freetype/cache/ftcmanag.h>
 
 #define FT_CACHE_INTERNAL_MRU_H      <freetype/cache/ftcmru.h>
 #define FT_CACHE_INTERNAL_MANAGER_H  <freetype/cache/ftcmanag.h>
-#define FT_CACHE_INTERNAL_CACHE_H  <freetype/cache/ftccache.h>
+#define FT_CACHE_INTERNAL_CACHE_H    <freetype/cache/ftccache.h>
 #define FT_CACHE_INTERNAL_GLYPH_H    <freetype/cache/ftcglyph.h>
 #define FT_CACHE_INTERNAL_IMAGE_H    <freetype/cache/ftcimage.h>
 #define FT_CACHE_INTERNAL_SBITS_H    <freetype/cache/ftcsbits.h>
 
 
-#define FT_XFREE86_H               <freetype/ftxf86.h>
+#define FT_XFREE86_H              <freetype/ftxf86.h>
 
-#define FT_INCREMENTAL_H           <freetype/ftincrem.h>
+#define FT_INCREMENTAL_H          <freetype/ftincrem.h>
 
-#define FT_TRUETYPE_UNPATENTED_H   <freetype/ttunpat.h>
+#define FT_TRUETYPE_UNPATENTED_H  <freetype/ttunpat.h>
 
   /* now include internal headers definitions from <freetype/internal/...> */
 
-#define  FT_INTERNAL_INTERNAL_H    <freetype/internal/internal.h>
+#define  FT_INTERNAL_INTERNAL_H  <freetype/internal/internal.h>
 #include FT_INTERNAL_INTERNAL_H
 
 
--- a/include/freetype/ftcache.h
+++ b/include/freetype/ftcache.h
@@ -63,7 +63,7 @@
   /*   FTC_Face_Requester                                                  */
   /*                                                                       */
   /*   FTC_Manager_New                                                     */
-  /*   FTC_Manager_LookupFace                                             */
+  /*   FTC_Manager_LookupFace                                              */
   /*   FTC_Manager_Lookup_Size                                             */
   /*                                                                       */
   /*   FTC_Node                                                            */
@@ -111,7 +111,7 @@
   /*    An opaque pointer type that is used to identity face objects.  The */
   /*    contents of such objects is application-dependent.                 */
   /*                                                                       */
-  typedef struct FTC_FaceIDRec_*    FTC_FaceID;
+  typedef struct FTC_FaceIDRec_*  FTC_FaceID;
 
 
   /*************************************************************************/
@@ -319,7 +319,7 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
-  /*    FTC_Manager_LookupFace                                            */
+  /*    FTC_Manager_LookupFace                                             */
   /*                                                                       */
   /* <Description>                                                         */
   /*    Retrieves the @FT_Face object that corresponds to a given face ID  */
@@ -350,8 +350,8 @@
   /*                                                                       */
   FT_EXPORT( FT_Error )
   FTC_Manager_LookupFace( FTC_Manager  manager,
-                           FTC_FaceID   face_id,
-                           FT_Face     *aface );
+                          FTC_FaceID   face_id,
+                          FT_Face     *aface );
 
 
   /*************************************************************************/
@@ -374,10 +374,10 @@
                   FTC_Manager  manager );
 
 
- /* remove all nodes belonging to a given face_id */
+  /* remove all nodes belonging to a given face_id */
   FT_EXPORT( void )
   FTC_Manager_RemoveFaceID( FTC_Manager  manager,
-                             FTC_FaceID   face_id );
+                            FTC_FaceID   face_id );
 
 
   /*************************************************************************/
@@ -405,7 +405,7 @@
   /*    FTC_CMapCache_New                                                  */
   /*                                                                       */
   /* @description:                                                         */
-  /*    Creates a new charmap cache.                                       */
+  /*    Create a new charmap cache.                                        */
   /*                                                                       */
   /* @input:                                                               */
   /*    manager :: A handle to the cache manager.                          */
@@ -425,11 +425,11 @@
                      FTC_CMapCache  *acache );
 
 
- /* retrieve the index of a given charmap
-  */
+  /* retrieve the index of a given charmap */
   FT_EXPORT( FT_Int )
   FT_Get_CharMap_Index( FT_CharMap  charmap );
 
+
   /*************************************************************************/
   /*                                                                       */
   /* @function:                                                            */
@@ -436,20 +436,20 @@
   /*    FTC_CMapCache_Lookup                                               */
   /*                                                                       */
   /* @description:                                                         */
-  /*    Translates a character code into a glyph index, using the charmap  */
+  /*    Translate a character code into a glyph index, using the charmap   */
   /*    cache.                                                             */
   /*                                                                       */
   /* @input:                                                               */
-  /*    cache     :: A charmap cache handle.                               */
+  /*    cache      :: A charmap cache handle.                              */
   /*                                                                       */
   /*    face_id    :: source face id                                       */
   /*                                                                       */
   /*    cmap_index :: index of charmap in source face                      */
   /*                                                                       */
-  /*    char_code :: The character code (in the corresponding charmap).    */
+  /*    char_code  :: The character code (in the corresponding charmap).   */
   /*                                                                       */
   /* @return:                                                              */
-  /*    Glyph index.  0 means "no glyph".                                  */
+  /*    Glyph index.  0 means `no glyph'.                                  */
   /*                                                                       */
   FT_EXPORT( FT_UInt )
   FTC_CMapCache_Lookup( FTC_CMapCache  cache,
@@ -463,7 +463,7 @@
   /* <Section>                                                             */
   /*    cache_subsystem                                                    */
   /*                                                                       */
-  /**********************************************************************/
+  /*************************************************************************/
 
 
   /*************************************************************************/
@@ -564,13 +564,13 @@
   /*    Never try to transform or discard it manually!  You can however    */
   /*    create a copy with @FT_Glyph_Copy and modify the new one.          */
   /*                                                                       */
-  /*    If "anode" is _not_ NULL, it receives the address of the cache     */
+  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
   /*    node containing the glyph image, after increasing its reference    */
   /*    count.  This ensures that the node (as well as the FT_Glyph) will  */
   /*    always be kept in the cache until you call @FTC_Node_Unref to      */
-  /*    "release" it.                                                      */
+  /*    `release' it.                                                      */
   /*                                                                       */
-  /*    If "anode" is NULL, the cache node is left unchanged, which means  */
+  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
   /*    that the FT_Glyph could be flushed out of the cache on the next    */
   /*    call to one of the caching sub-system APIs.  Don't assume that it  */
   /*    is persistent!                                                     */
@@ -582,14 +582,7 @@
                          FT_Glyph       *aglyph,
                          FTC_Node       *anode );
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    cache_subsystem                                                    */
-  /*                                                                       */
-  /*************************************************************************/
 
-
   /*************************************************************************/
   /*                                                                       */
   /* <Type>                                                                */
@@ -635,7 +628,7 @@
   /*                                                                       */
   /*    yadvance  :: The vertical advance height in pixels.                */
   /*                                                                       */
-  /*    buffer   :: A pointer to the bitmap pixels.                        */
+  /*    buffer    :: A pointer to the bitmap pixels.                       */
   /*                                                                       */
   typedef struct  FTC_SBitRec_
   {
@@ -698,7 +691,7 @@
   /*                                                                       */
   /* <Description>                                                         */
   /*    Looks up a given small glyph bitmap in a given sbit cache and      */
-  /*    "lock" it to prevent its flushing from the cache until needed      */
+  /*    `lock' it to prevent its flushing from the cache until needed.     */
   /*                                                                       */
   /* <Input>                                                               */
   /*    cache  :: A handle to the source sbit cache.                       */
@@ -726,12 +719,12 @@
   /*    The descriptor's `buffer' field is set to 0 to indicate a missing  */
   /*    glyph bitmap.                                                      */
   /*                                                                       */
-  /*    If "anode" is _not_ NULL, it receives the address of the cache     */
+  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
   /*    node containing the bitmap, after increasing its reference count.  */
   /*    This ensures that the node (as well as the image) will always be   */
-  /*    kept in the cache until you call @FTC_Node_Unref to "release" it.  */
+  /*    kept in the cache until you call @FTC_Node_Unref to `release' it.  */
   /*                                                                       */
-  /*    If "anode" is NULL, the cache node is left unchanged, which means  */
+  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
   /*    that the bitmap could be flushed out of the cache on the next      */
   /*    call to one of the caching sub-system APIs.  Don't assume that it  */
   /*    is persistent!                                                     */
--- a/include/freetype/ftstroke.h
+++ b/include/freetype/ftstroke.h
@@ -24,39 +24,41 @@
 
 FT_BEGIN_HEADER
 
-/*@*************************************************************
- *
- * @type: FT_Stroker
- *
- * @description:
- *    opaque handler to a path stroker object
- */
-  typedef struct FT_StrokerRec_*    FT_Stroker;
+ /*@*************************************************************
+  *
+  * @type:
+  *   FT_Stroker
+  *
+  * @description:
+  *   Opaque handler to a path stroker object.
+  */
+  typedef struct FT_StrokerRec_*  FT_Stroker;
 
 
-/*@*************************************************************
- *
- * @enum: FT_Stroker_LineJoin
- *
- * @description:
- *    these values determine how two joining lines are rendered
- *    in a stroker.
- *
- * @values:
- *    FT_STROKER_LINEJOIN_ROUND ::
- *      used to render rounded line joins. circular arcs are used
- *      to join two lines smoothly
- *
- *    FT_STROKER_LINEJOIN_BEVEL ::
- *      used to render beveled line joins; i.e. the two joining lines
- *      are extended until they intersect
- *
- *    FT_STROKER_LINEJOIN_MITER ::
- *      same as beveled rendering, except that an additional line
- *      break is added if the angle between the two joining lines
- *      is too closed (this is useful to avoid unpleasant spikes
- *      in beveled rendering).
- */
+  /*@*************************************************************
+   *
+   * @enum:
+   *   FT_Stroker_LineJoin
+   *
+   * @description:
+   *   These values determine how two joining lines are rendered
+   *   in a stroker.
+   *
+   * @values:
+   *   FT_STROKER_LINEJOIN_ROUND ::
+   *     Used to render rounded line joins.  Circular arcs are used
+   *     to join two lines smoothly.
+   *
+   *   FT_STROKER_LINEJOIN_BEVEL ::
+   *     Used to render beveled line joins; i.e., the two joining lines
+   *     are extended until they intersect.
+   *
+   *   FT_STROKER_LINEJOIN_MITER ::
+   *     Same as beveled rendering, except that an additional line
+   *     break is added if the angle between the two joining lines
+   *     is too closed (this is useful to avoid unpleasant spikes
+   *     in beveled rendering).
+   */
   typedef enum
   {
     FT_STROKER_LINEJOIN_ROUND = 0,
@@ -66,27 +68,28 @@
   } FT_Stroker_LineJoin;
 
 
-/*@*************************************************************
- *
- * @enum: FT_Stroker_LineCap
- *
- * @description:
- *    these values determine how the end of opened sub-paths are
- *    rendered in a stroke
- *
- * @values:
- *    FT_STROKER_LINECAP_BUTT ::
- *      the end of lines is rendered as a full stop on the last
- *      point itself
- *
- *    FT_STROKER_LINECAP_ROUND ::
- *      the end of lines is rendered as a half-circle around the
- *      last point
- *
- *    FT_STROKER_LINECAP_SQUARE ::
- *      the end of lines is rendered as a square around the
- *      last point
- */
+  /*@*************************************************************
+   *
+   * @enum:
+   *   FT_Stroker_LineCap
+   *
+   * @description:
+   *   These values determine how the end of opened sub-paths are
+   *   rendered in a stroke.
+   *
+   * @values:
+   *   FT_STROKER_LINECAP_BUTT ::
+   *     The end of lines is rendered as a full stop on the last
+   *     point itself.
+   *
+   *   FT_STROKER_LINECAP_ROUND ::
+   *     The end of lines is rendered as a half-circle around the
+   *     last point.
+   *
+   *   FT_STROKER_LINECAP_SQUARE ::
+   *     The end of lines is rendered as a square around the
+   *     last point.
+   */
   typedef enum
   {
     FT_STROKER_LINECAP_BUTT = 0,
@@ -96,30 +99,31 @@
   } FT_Stroker_LineCap;
 
 
-/**************************************************************
- *
- * @enum: FT_StrokerBorder
- *
- * @description:
- *    theses values are used to select a given stroke border
- *    in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder
- *
- * @values:
- *    FT_STROKER_BORDER_LEFT ::
- *      select the left border, relative to the drawing direction
- *
- *    FT_STROKER_BORDER_RIGHT ::
- *      select the right border, relative to the drawing direction
- *
- * @note:
- *   applications are generally interested in the "inside" and "outside"
- *   borders. However, there is no direct mapping between these and
- *   the "left" / "right" ones, since this really depends on the glyph's
- *   drawing orientation, which varies between font formats
- *
- *   you can however use @FT_Outline_GetInsideBorder and
- *   @FT_Outline_GetOutsideBorder to get these.
- */
+  /**************************************************************
+   *
+   * @enum:
+   *   FT_StrokerBorder
+   *
+   * @description:
+   *   These values are used to select a given stroke border
+   *   in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
+   *
+   * @values:
+   *   FT_STROKER_BORDER_LEFT ::
+   *     Select the left border, relative to the drawing direction.
+   *
+   *   FT_STROKER_BORDER_RIGHT ::
+   *     Select the right border, relative to the drawing direction.
+   *
+   * @note:
+   *   Applications are generally interested in the `inside' and `outside'
+   *   borders.  However, there is no direct mapping between these and
+   *   the `left' / `right' ones, since this really depends on the glyph's
+   *   drawing orientation, which varies between font formats.
+   *
+   *   You can however use @FT_Outline_GetInsideBorder and
+   *   @FT_Outline_GetOutsideBorder to get these.
+   */
   typedef enum
   {
     FT_STROKER_BORDER_LEFT = 0,
@@ -128,80 +132,100 @@
   } FT_StrokerBorder;
 
 
-/**************************************************************
- *
- * @function: FT_Outline_GetInsideBorder
- *
- * @description:
- *    retrieve the @FT_StrokerBorder value corresponding to the
- *    "inside" borders of a given outline
- *
- * @input:
- *    outline :: source outline handle
- *
- * @return:
- *    border index. @FT_STROKER_BORDER_LEFT for empty or invalid outlines
- */
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Outline_GetInsideBorder
+   *
+   * @description:
+   *   Retrieve the @FT_StrokerBorder value corresponding to the
+   *   `inside' borders of a given outline.
+   *
+   * @input:
+   *   outline ::
+   *     The source outline handle.
+   *
+   * @return:
+   *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid
+   *   outlines.
+   */
   FT_EXPORT( FT_StrokerBorder )
   FT_Outline_GetInsideBorder( FT_Outline*  outline );
 
 
-/**************************************************************
- *
- * @function: FT_Outline_GetOutsideBorder
- *
- * @description:
- *    retrieve the @FT_StrokerBorder value corresponding to the
- *    "outside" borders of a given outline
- *
- * @input:
- *    outline :: source outline handle
- *
- * @return:
- *    border index. @FT_STROKER_BORDER_LEFT for empty or invalid outlines
- */
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Outline_GetOutsideBorder
+   *
+   * @description:
+   *   Retrieve the @FT_StrokerBorder value corresponding to the
+   *   `outside' borders of a given outline.
+   *
+   * @input:
+   *   outline ::
+   *     The source outline handle.
+   *
+   * @return:
+   *   The border index.  @FT_STROKER_BORDER_LEFT for empty or invalid
+   *   outlines.
+   */
   FT_EXPORT( FT_StrokerBorder )
   FT_Outline_GetOutsideBorder( FT_Outline*  outline );
 
  
-/**************************************************************
- *
- * @function: FT_Stroker_New
- *
- * @description:
- *    create a new stroker object
- *
- * @input:
- *    memory :: memory manager handle
- *
- * @output:
- *    new stroker object handle, NULL in case of error
- *
- * @return:
- *    error code. 0 means success
- */
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_New
+   *
+   * @description:
+   *   Create a new stroker object.
+   *
+   * @input:
+   *   memory ::
+   *     The memory manager handle.
+   *
+   * @output:
+   *   A new stroker object handle.  NULL in case of error.
+   *
+   * @return:
+   *    FreeType error code.  0 means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_New( FT_Memory    memory,
                   FT_Stroker  *astroker );
 
 
-/**************************************************************
- *
- * @function: FT_Stroker_Set
- *
- * @description:
- *    reset a stroker object's attributes
- *
- * @input:
- *    stroker     :: target stroker handle
- *    radius      :: border radius
- *    line_cap    :: line cap style
- *    line_join   :: line join style
- *    miter_limit :: miter limit for the FT_STROKER_LINEJOIN_MITER style,
- *                   expressed as 16.16 fixed point value.
- * @note:
- *   the radius is expressed in the same units that the outline coordinates.
- */
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_Set
+   *
+   * @description:
+   *   Reset a stroker object's attributes.
+   *
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   radius ::
+   *     The border radius.
+   *
+   *   line_cap ::
+   *     The line cap style.
+   *
+   *   line_join ::
+   *     The line join style.
+   *
+   *   miter_limit ::
+   *     The miter limit for the FT_STROKER_LINEJOIN_MITER style,
+   *     expressed as 16.16 fixed point value.
+   *
+   * @note:
+   *   The radius is expressed in the same units that the outline
+   *   coordinates.
+   */
   FT_EXPORT( void )
   FT_Stroker_Set( FT_Stroker           stroker,
                   FT_Fixed             radius,
@@ -210,152 +234,187 @@
                   FT_Fixed             miter_limit );
 
 
-/**************************************************************
- *
- * @function: FT_Stroker_ParseOutline
- *
- * @description:
- *    a convenient function used to parse a whole outline with
- *    the stroker. The resulting outline(s) can be retrieved
- *    later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export
- *
- * @input:
- *    stroker     :: target stroker handle
- *    outline     :: source outline
- *    opened      :: boolean. if TRUE, the outline is treated as an open path,
- *                   instead of a closed one
- *
- * @return:*
- *   error code. 0 means success
- *
- * @note:
- *   if 'opened' is 0 (the default), the outline is treated as a closed path,
- *   and the stroker will generate two distinct "border" outlines
- *
- *   if 'opened' is 1, the outline is processed as an open path, and the
- *   stroker will generate a single "stroke" outline
- */
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_ParseOutline
+   *
+   * @description:
+   *   A convenience function used to parse a whole outline with
+   *   the stroker.  The resulting outline(s) can be retrieved
+   *   later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export.
+   *
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   outline ::
+   *     The source outline.
+   *
+   *   opened ::
+   *     A boolean.  If TRUE, the outline is treated as an open path
+   *     instead of a closed one.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   If `opened' is 0 (the default), the outline is treated as a closed
+   *   path, and the stroker will generate two distinct `border' outlines.
+   *
+   *   If `opened' is 1, the outline is processed as an open path, and the
+   *   stroker will generate a single `stroke' outline.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_ParseOutline( FT_Stroker   stroker,
                            FT_Outline*  outline,
                            FT_Bool      opened );
 
-/**************************************************************
- *
- * @function: FT_Stroker_BeginSubPath
- *
- * @description:
- *    start a new sub-path in the stroker
- *    
- * @input:
- *    stroker     :: target stroker handle
- *    to          :: pointer to start vector
- *    open        :: boolean. if TRUE, the sub-path is treated as an open
- *                   one
- *
- * @return:*
- *   error code. 0 means success
- *
- * @note:
- *   this function is useful when you need to stroke a path that is
- *   not stored as a @FT_Outline object
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_BeginSubPath
+   *
+   * @description:
+   *   Start a new sub-path in the stroker.
+   *    
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   to ::
+   *     A pointer to the start vector.
+   *
+   *   open ::
+   *     A boolean.  If TRUE, the sub-path is treated as an open one.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This function is useful when you need to stroke a path that is
+   *   not stored as a @FT_Outline object.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_BeginSubPath( FT_Stroker  stroker,
                            FT_Vector*  to,
                            FT_Bool     open );
 
-/**************************************************************
- *
- * @function: FT_Stroker_EndSubPath
- *
- * @description:
- *    close the current sub-path in the stroker
- *    
- * @input:
- *    stroker     :: target stroker handle
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- *   you should call this function after @FT_Stroker_BeginSubPath.
- *   if the subpath was not "opened", this function will "draw" a
- *   single line segment to the start position when needed.
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_EndSubPath
+   *
+   * @description:
+   *   Close the current sub-path in the stroker.
+   *    
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   You should call this function after @FT_Stroker_BeginSubPath.
+   *   If the subpath was not `opened', this function will `draw' a
+   *   single line segment to the start position when needed.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_EndSubPath( FT_Stroker  stroker );
 
 
-/**************************************************************
- *
- * @function: FT_Stroker_LineTo
- *
- * @description:
- *    "draw" a single line segment in the stroker's current sub-path,
- *    from the last position
- *    
- * @input:
- *    stroker     :: target stroker handle
- *    to          :: pointer to destination point
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- *   you should call this function between @FT_Stroker_BeginSubPath and
- *   @FT_Stroker_EndSubPath
- */
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_LineTo
+   *
+   * @description:
+   *   `Draw' a single line segment in the stroker's current sub-path,
+   *   from the last position.
+   *    
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   to ::
+   *     A pointer to the destination point.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   You should call this function between @FT_Stroker_BeginSubPath and
+   *   @FT_Stroker_EndSubPath.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_LineTo( FT_Stroker  stroker,
                      FT_Vector*  to );
 
-/**************************************************************
- *
- * @function: FT_Stroker_ConicTo
- *
- * @description:
- *    "draw" a single quadratic bezier in the stroker's current sub-path,
- *    from the last position
- *    
- * @input:
- *    stroker     :: target stroker handle
- *    control     :: pointer to bezier control point
- *    to          :: pointer to destination point
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- *   you should call this function between @FT_Stroker_BeginSubPath and
- *   @FT_Stroker_EndSubPath
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_ConicTo
+   *
+   * @description:
+   *   `Draw; a single quadratic bezier in the stroker's current sub-path,
+   *   from the last position.
+   *    
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   control ::
+   *     A pointer to a B�zier control point.
+   *
+   *   to ::
+   *     A pointer to the destination point.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   You should call this function between @FT_Stroker_BeginSubPath and
+   *   @FT_Stroker_EndSubPath.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_ConicTo( FT_Stroker  stroker,
                       FT_Vector*  control,
                       FT_Vector*  to );
 
-/**************************************************************
- *
- * @function: FT_Stroker_CubicTo
- *
- * @description:
- *    "draw" a single cubic bezier in the stroker's current sub-path,
- *    from the last position
- *    
- * @input:
- *    stroker     :: target stroker handle
- *    control1    :: pointer to first bezier control point
- *    control2    :: pointer to second bezier control point
- *    to          :: pointer to destination point
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- *   you should call this function between @FT_Stroker_BeginSubPath and
- *   @FT_Stroker_EndSubPath
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_CubicTo
+   *
+   * @description:
+   *   `Draw' a single cubic B�zier in the stroker's current sub-path,
+   *   from the last position.
+   *    
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   control1 ::
+   *     A pointer to the first B�zier control point.
+   *
+   *   control2 ::
+   *     A pointer to second B�zier control point.
+   *
+   *   to ::
+   *     A pointer to the destination point.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   You should call this function between @FT_Stroker_BeginSubPath and
+   *   @FT_Stroker_EndSubPath.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_CubicTo( FT_Stroker  stroker,
                       FT_Vector*  control1,
@@ -363,38 +422,45 @@
                       FT_Vector*  to );
 
 
-/**************************************************************
- *
- * @function: FT_Stroker_GetBorderCounts
- *
- * @description:
- *    call this function once you finished parsing your paths
- *    with the stroker. It will return the number of points and
- *    contours necessary to export one of the "border" or "stroke"
- *    outlines generated by the stroker.
- *    
- * @input:
- *    stroker  :: target stroker handle
- *    border   :: border index
- *
- * @output:
- *    anum_points   :: number of points
- *    anum_contours :: number of contours
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- *   when an outline, or a sub-path, is "closed", the stroker generates
- *   two independent 'border' outlines, named 'left' and 'right'
- *   
- *   when the outline, or a sub-path, is "opened", the stroker merges
- *   the 'border' outlines with caps. The 'left' border receives all
- *   points, while the 'right' border becomes empty.
- *
- *   use the function @FT_Stroker_GetCounts instead if you want to
- *   retrieve the counts associated to both borders.
- */
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_GetBorderCounts
+   *
+   * @description:
+   *   Vall this function once you have finished parsing your paths
+   *   with the stroker.  It will return the number of points and
+   *   contours necessary to export one of the `border' or `stroke'
+   *   outlines generated by the stroker.
+   *    
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   border ::
+   *     The border index.
+   *
+   * @output:
+   *   anum_points ::
+   *     The number of points.
+   *
+   *   anum_contours ::
+   *     The number of contours.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   When an outline, or a sub-path, is `closed', the stroker generates
+   *   two independent `border' outlines, named `left' and `right'.
+   *   
+   *   When the outline, or a sub-path, is `opened', the stroker merges
+   *   the `border' outlines with caps.  The `left' border receives all
+   *   points, while the `right' border becomes empty.
+   *
+   *   Use the function @FT_Stroker_GetCounts instead if you want to
+   *   retrieve the counts associated to both borders.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_GetBorderCounts( FT_Stroker        stroker,
                               FT_StrokerBorder  border,
@@ -401,124 +467,120 @@
                               FT_UInt          *anum_points,
                               FT_UInt          *anum_contours );
 
-/**************************************************************
- *
- * @function: FT_Stroker_ExportBorder
- *
- * @description:
- *    call this function after @FT_Stroker_GetBorderCounts to
- *    export the corresponding border to your own @FT_Outline
- *    structure.
- *    
- *    note that this function will append the border points and
- *    contours to your outline, but will not try to resize its
- *    arrays.
- *
- * @input:
- *    stroker  :: target stroker handle
- *    border   :: border index
- *    outline  :: target outline handle
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- *   always call this function after @FT_Stroker_GetBorderCounts to
- *   get sure that there is enough room in your @FT_Outline object to
- *   receive all new data.
- *
- *   when an outline, or a sub-path, is "closed", the stroker generates
- *   two independent 'border' outlines, named 'left' and 'right'
- *   
- *   when the outline, or a sub-path, is "opened", the stroker merges
- *   the 'border' outlines with caps. The 'left' border receives all
- *   points, while the 'right' border becomes empty.
- *
- *   use the function @FT_Stroker_Export instead if you want to
- *   retrieve all borders at once
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_ExportBorder
+   *
+   * @description:
+   *   Call this function after @FT_Stroker_GetBorderCounts to
+   *   export the corresponding border to your own @FT_Outline
+   *   structure.
+   *    
+   *   Note that this function will append the border points and
+   *   contours to your outline, but will not try to resize its
+   *   arrays.
+   *
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   border ::
+   *     The border index.
+   *
+   *   outline ::
+   *     The target outline handle.
+   *
+   * @note:
+   *   Always call this function after @FT_Stroker_GetBorderCounts to
+   *   get sure that there is enough room in your @FT_Outline object to
+   *   receive all new data.
+   *
+   *   When an outline, or a sub-path, is `closed', the stroker generates
+   *   two independent `border' outlines, named `left' and `right'
+   *   
+   *   When the outline, or a sub-path, is `opened', the stroker merges
+   *   the `border' outlines with caps. The `left' border receives all
+   *   points, while the `right' border becomes empty.
+   *
+   *   Use the function @FT_Stroker_Export instead if you want to
+   *   retrieve all borders at once.
+   */
   FT_EXPORT( void )
   FT_Stroker_ExportBorder( FT_Stroker        stroker,
                            FT_StrokerBorder  border,
                            FT_Outline*       outline );
 
-/**************************************************************
- *
- * @function: FT_Stroker_GetCounts
- *
- * @description:
- *    call this function once you finished parsing your paths
- *    with the stroker. It will return the number of points and
- *    contours necessary to export all points/borders from the stroked
- *    outline/path.
- *    
- * @input:
- *    stroker  :: target stroker handle
- *
- * @output:
- *    anum_points   :: number of points
- *    anum_contours :: number of contours
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_GetCounts
+   *
+   * @description:
+   *   Call this function once you have finished parsing your paths
+   *   with the stroker.  It returns the number of points and
+   *   contours necessary to export all points/borders from the stroked
+   *   outline/path.
+   *    
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   * @output:
+   *   anum_points ::
+   *     The number of points.
+   *
+   *   anum_contours ::
+   *     The number of contours.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Stroker_GetCounts( FT_Stroker  stroker,
                         FT_UInt    *anum_points,
                         FT_UInt    *anum_contours );
 
-/**************************************************************
- *
- * @function: FT_Stroker_ExportBorder
- *
- * @description:
- *    call this function after @FT_Stroker_GetBorderCounts to
- *    export the corresponding border to your own @FT_Outline
- *    structure.
- *    
- *    note that this function will append the border points and
- *    contours to your outline, but will not try to resize its
- *    arrays.
- *
- * @input:
- *    stroker  :: target stroker handle
- *    border   :: border index
- *    outline  :: target outline handle
- *
- * @return:
- *   error code. 0 means success
- *
- * @note:
- *   always call this function after @FT_Stroker_GetBorderCounts to
- *   get sure that there is enough room in your @FT_Outline object to
- *   receive all new data.
- *
- *   when an outline, or a sub-path, is "closed", the stroker generates
- *   two independent 'border' outlines, named 'left' and 'right'
- *   
- *   when the outline, or a sub-path, is "opened", the stroker merges
- *   the 'border' outlines with caps. The 'left' border receives all
- *   points, while the 'right' border becomes empty.
- *
- *   use the function @FT_Stroker_Export instead if you want to
- *   retrieve all borders at once
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_Export
+   *
+   * @description:
+   *   Call this function after @FT_Stroker_GetBorderCounts to
+   *   export the all borders to your own @FT_Outline structure.
+   *    
+   *   Note that this function will append the border points and
+   *   contours to your outline, but will not try to resize its
+   *   arrays.
+   *
+   * @input:
+   *   stroker ::
+   *     The target stroker handle.
+   *
+   *   outline ::
+   *     The target outline handle.
+   */
   FT_EXPORT( void )
   FT_Stroker_Export( FT_Stroker   stroker,
                      FT_Outline*  outline );
 
-/**************************************************************
- *
- * @function: FT_Stroker_Done
- *
- * @description:
- *    destroy a stroker object
- *
- * @input:
- *    stroker :: stroker handle. can be NULL
- */
+
+  /**************************************************************
+   *
+   * @function:
+   *   FT_Stroker_Done
+   *
+   * @description:
+   *   Destroy a stroker object.
+   *
+   * @input:
+   *   stroker ::
+   *     A stroker handle.  Can be NULL.
+   */
   FT_EXPORT( void )
   FT_Stroker_Done( FT_Stroker  stroker );
 
--- a/src/base/ftgloadr.c
+++ b/src/base/ftgloadr.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    The FreeType glyph loader (body).                                    */
 /*                                                                         */
-/*  Copyright 2002 by                                                      */
+/*  Copyright 2002, 2003 by                                                */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -19,6 +19,7 @@
 #include <ft2build.h>
 #include FT_INTERNAL_GLYPH_LOADER_H
 #include FT_INTERNAL_MEMORY_H
+#include FT_INTERNAL_OBJECTS_H
 
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gloader
--- a/src/base/ftstroke.c
+++ b/src/base/ftstroke.c
@@ -27,10 +27,11 @@
   FT_EXPORT_DEF( FT_StrokerBorder )
   FT_Outline_GetInsideBorder( FT_Outline*  outline )
   {
-    FT_Orientation  or = FT_Outline_Get_Orientation( outline );
+    FT_Orientation  o = FT_Outline_Get_Orientation( outline );
 
-    return ( or == FT_ORIENTATION_TRUETYPE ) ? FT_STROKER_BORDER_RIGHT
-                                             : FT_STROKER_BORDER_LEFT ;
+
+    return o == FT_ORIENTATION_TRUETYPE ? FT_STROKER_BORDER_RIGHT
+                                        : FT_STROKER_BORDER_LEFT ;
   }
 
 
@@ -37,10 +38,11 @@
   FT_EXPORT_DEF( FT_StrokerBorder )
   FT_Outline_GetOutsideBorder( FT_Outline*  outline )
   {
-    FT_Orientation  or = FT_Outline_Get_Orientation( outline );
+    FT_Orientation  o = FT_Outline_Get_Orientation( outline );
 
-    return ( or == FT_ORIENTATION_TRUETYPE ) ? FT_STROKER_BORDER_RIGHT
-                                             : FT_STROKER_BORDER_LEFT ;
+
+    return o == FT_ORIENTATION_TRUETYPE ? FT_STROKER_BORDER_RIGHT
+                                        : FT_STROKER_BORDER_LEFT ;
   }
 
 
@@ -1457,6 +1459,7 @@
     FT_UInt   num_points = 0, num_contours = 0;
     FT_Error  error;
 
+
     if ( !stroker || border > 1 )
     {
       error = FT_Err_Invalid_Argument;
@@ -1509,7 +1512,7 @@
   FT_EXPORT_DEF( void )
   FT_Stroker_ExportBorder( FT_Stroker        stroker,
                            FT_StrokerBorder  border,
-                     FT_Outline*  outline )
+                           FT_Outline*       outline )
   {
     if ( border == FT_STROKER_BORDER_LEFT  ||
          border == FT_STROKER_BORDER_RIGHT )
@@ -1516,6 +1519,7 @@
     {
       FT_StrokeBorder  sborder = & stroker->borders[border];
 
+
       if ( sborder->valid )
         ft_stroke_border_export( sborder, outline );
     }
@@ -1529,8 +1533,6 @@
     FT_Stroker_ExportBorder( stroker, FT_STROKER_BORDER_LEFT, outline );
     FT_Stroker_ExportBorder( stroker, FT_STROKER_BORDER_RIGHT, outline );
   }
-
-
 
 
   /*
--- a/src/base/fttrigon.c
+++ b/src/base/fttrigon.c
@@ -17,6 +17,7 @@
 
 
 #include <ft2build.h>
+#include FT_INTERNAL_OBJECTS_H
 #include FT_TRIGONOMETRY_H
 
 
--- a/src/bdf/bdfdrivr.h
+++ b/src/bdf/bdfdrivr.h
@@ -2,7 +2,7 @@
 
     FreeType font driver for bdf fonts
 
-  Copyright (C) 2001, 2002 by
+  Copyright (C) 2001, 2002, 2003 by
   Francesco Zappa Nardelli
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
--- a/src/cache/Jamfile
+++ b/src/cache/Jamfile
@@ -1,4 +1,4 @@
-# FreeType 2 src/cache Jamfile (c) 2001 David Turner
+# FreeType 2 src/cache Jamfile (c) 2001, 2003 David Turner
 #
 
 SubDir  FT2_TOP $(FT2_SRC_DIR) cache ;
--- a/src/cache/descrip.mms
+++ b/src/cache/descrip.mms
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 2001, 2002 by
+# Copyright 2001, 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
--- a/src/cache/ftcache.c
+++ b/src/cache/ftcache.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    The FreeType Caching sub-system (body only).                         */
 /*                                                                         */
-/*  Copyright 2000-2001 by                                                 */
+/*  Copyright 2000-2001, 2003 by                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
--- a/src/cache/ftcbasic.c
+++ b/src/cache/ftcbasic.c
@@ -1,3 +1,21 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftcbasic.c                                                             */
+/*                                                                         */
+/*    The FreeType basic cache interface (body).                           */
+/*                                                                         */
+/*  Copyright 2003 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
 #include <ft2build.h>
 #include FT_CACHE_H
 #include FT_CACHE_INTERNAL_GLYPH_H
@@ -8,12 +26,11 @@
 #include "ftcerror.h"
 
 
- /*
-  *  Basic Families
-  *
-  *
-  */
-  typedef struct FTC_BasicAttrRec_
+  /*
+   *  Basic Families
+   *
+   */
+  typedef struct  FTC_BasicAttrRec_
   {
     FTC_ScalerRec  scaler;
     FT_UInt        load_flags;
@@ -20,42 +37,42 @@
 
   } FTC_BasicAttrRec, *FTC_BasicAttrs;
 
-#define  FTC_BASIC_ATTR_COMPARE(a,b)                           \
-       ( FTC_SCALER_COMPARE( &(a)->scaler, &(b)->scaler ) &&   \
-         (a)->load_flags == (b)->load_flags                )
+#define FTC_BASIC_ATTR_COMPARE( a, b )                           \
+          ( FTC_SCALER_COMPARE( &(a)->scaler, &(b)->scaler ) &&  \
+            (a)->load_flags == (b)->load_flags               )
 
-#define  FTC_BASIC_ATTR_HASH(a)   \
-       ( FTC_SCALER_HASH(&(a)->scaler) + 31*(a)->load_flags )
+#define FTC_BASIC_ATTR_HASH( a )                                   \
+          ( FTC_SCALER_HASH( &(a)->scaler ) + 31*(a)->load_flags )
 
 
-  typedef struct FTC_BasicQueryRec_
+  typedef struct  FTC_BasicQueryRec_
   {
-    FTC_GQueryRec      gquery;
-    FTC_BasicAttrRec   attrs;
+    FTC_GQueryRec     gquery;
+    FTC_BasicAttrRec  attrs;
 
   } FTC_BasicQueryRec, *FTC_BasicQuery;
 
 
-
-  typedef struct FTC_BasicFamilyRec_
+  typedef struct  FTC_BasicFamilyRec_
   {
-    FTC_FamilyRec      family;
-    FTC_BasicAttrRec   attrs;
+    FTC_FamilyRec     family;
+    FTC_BasicAttrRec  attrs;
 
   } FTC_BasicFamilyRec, *FTC_BasicFamily;
 
 
   static FT_Bool
-  ftc_basic_family_compare( FTC_BasicFamily   family,
-                            FTC_BasicQuery    query )
+  ftc_basic_family_compare( FTC_BasicFamily  family,
+                            FTC_BasicQuery   query )
   {
     return FT_BOOL( FTC_BASIC_ATTR_COMPARE( &family->attrs, &query->attrs ) );
   }
 
+
   static FT_Error
-  ftc_basic_family_init( FTC_BasicFamily   family,
-                         FTC_BasicQuery    query,
-                         FTC_Cache         cache )
+  ftc_basic_family_init( FTC_BasicFamily  family,
+                         FTC_BasicQuery   query,
+                         FTC_Cache        cache )
   {
     FTC_Family_Init( FTC_FAMILY( family ), cache );
     family->attrs = query->attrs;
@@ -71,6 +88,7 @@
     FT_Face   face;
     FT_UInt   result = 0;
 
+
     error = FTC_Manager_LookupFace( manager, family->attrs.scaler.face_id,
                                     &face );
     if ( !error )
@@ -89,16 +107,19 @@
     FT_Error  error;
     FT_Size   size;
 
+
     error = FTC_Manager_LookupSize( manager, &family->attrs.scaler, &size );
     if ( !error )
     {
-      FT_Face   face = size->face;
+      FT_Face  face = size->face;
 
-      error = FT_Load_Glyph( face, gindex, family->attrs.load_flags |
-                                           FT_LOAD_RENDER );
+
+      error = FT_Load_Glyph( face, gindex,
+                             family->attrs.load_flags | FT_LOAD_RENDER );
       if ( !error )
         *aface = face;
     }
+
     return error;
   }
 
@@ -109,11 +130,12 @@
                                FTC_Cache        cache,
                                FT_Glyph        *aglyph )
   {
-    FT_Error       error;
-    FTC_Scaler     scaler = &family->attrs.scaler;
-    FT_Face        face;
-    FT_Size        size;
+    FT_Error    error;
+    FTC_Scaler  scaler = &family->attrs.scaler;
+    FT_Face     face;
+    FT_Size     size;
 
+
     /* we will now load the glyph image */
     error = FTC_Manager_LookupSize( cache->manager,
                                     scaler,
@@ -143,6 +165,7 @@
           error = FTC_Err_Invalid_Argument;
       }
     }
+
   Exit:
     return error;
   }
@@ -153,15 +176,16 @@
                                   FTC_FaceID  face_id,
                                   FTC_Cache   cache )
   {
-    FTC_BasicFamily  family = (FTC_BasicFamily) gnode->family;
+    FTC_BasicFamily  family = (FTC_BasicFamily)gnode->family;
     FT_Bool          result;
 
+
     result = FT_BOOL( family->attrs.scaler.face_id == face_id );
     if ( result )
     {
-     /* we must call this function to avoid this node from appearing
-      * in later lookups with the same face_id !!
-      */
+      /* we must call this function to avoid this node from appearing
+       * in later lookups with the same face_id!
+       */
       FTC_GNode_UnselectFamily( gnode, cache );
     }
     return result;
@@ -168,7 +192,6 @@
   }
 
 
-
  /*
   *
   * basic image cache
@@ -179,30 +202,29 @@
   {
     {
       sizeof( FTC_BasicFamilyRec ),
-      (FTC_MruNode_CompareFunc)  ftc_basic_family_compare,
-      (FTC_MruNode_InitFunc)     ftc_basic_family_init,
-      (FTC_MruNode_ResetFunc)    NULL,
-      (FTC_MruNode_DoneFunc)     NULL
+      (FTC_MruNode_CompareFunc)ftc_basic_family_compare,
+      (FTC_MruNode_InitFunc)   ftc_basic_family_init,
+      (FTC_MruNode_ResetFunc)  NULL,
+      (FTC_MruNode_DoneFunc)   NULL
     },
-    (FTC_IFamily_LoadGlyphFunc)  ftc_basic_family_load_glyph
+    (FTC_IFamily_LoadGlyphFunc)ftc_basic_family_load_glyph
   };
 
 
-
   static const FTC_GCacheClassRec  ftc_basic_image_cache_class =
   {
     {
-      (FTC_Node_NewFunc)      FTC_INode_New,
-      (FTC_Node_WeightFunc)   FTC_INode_Weight,
-      (FTC_Node_CompareFunc)  FTC_GNode_Compare,
-      (FTC_Node_CompareFunc)  ftc_basic_gnode_compare_faceid,
-      (FTC_Node_FreeFunc)     FTC_INode_Free,
+      (FTC_Node_NewFunc)    FTC_INode_New,
+      (FTC_Node_WeightFunc) FTC_INode_Weight,
+      (FTC_Node_CompareFunc)FTC_GNode_Compare,
+      (FTC_Node_CompareFunc)ftc_basic_gnode_compare_faceid,
+      (FTC_Node_FreeFunc)   FTC_INode_Free,
 
       sizeof( FTC_GCacheRec ),
-      (FTC_Cache_InitFunc)    FTC_GCache_Init,
-      (FTC_Cache_DoneFunc)    FTC_GCache_Done
+      (FTC_Cache_InitFunc)  FTC_GCache_Init,
+      (FTC_Cache_DoneFunc)  FTC_GCache_Done
     },
-    (FTC_MruListClass) & ftc_basic_image_family_class
+    (FTC_MruListClass)&ftc_basic_image_family_class
   };
 
 
@@ -210,8 +232,8 @@
   FTC_ImageCache_New( FTC_Manager      manager,
                       FTC_ImageCache  *acache )
   {
-    return FTC_GCache_New( manager, & ftc_basic_image_cache_class,
-                           (FTC_GCache*) acache );
+    return FTC_GCache_New( manager, &ftc_basic_image_cache_class,
+                           (FTC_GCache*)acache );
   }
 
 
@@ -249,7 +271,7 @@
 
     hash = FTC_BASIC_ATTR_HASH( &query.attrs ) + gindex;
     
-#if 1  /* inlining is about 50% faster !! */ 
+#if 1  /* inlining is about 50% faster! */ 
     FTC_GCACHE_LOOKUP_CMP( cache,
                            ftc_basic_family_compare,
                            FTC_GNode_Compare,
@@ -265,12 +287,12 @@
 #endif
     if ( !error )
     {
-      *aglyph = FTC_INODE(node)->glyph;
+      *aglyph = FTC_INODE( node )->glyph;
 
       if ( anode )
       {
-        *anode = FTC_NODE(node);
-        FTC_NODE(node)->ref_count++;
+        *anode = FTC_NODE( node );
+        FTC_NODE( node )->ref_count++;
       }
     }
 
@@ -279,7 +301,6 @@
   }
 
 
-
  /*
   *
   * basic small bitmap cache
@@ -291,13 +312,13 @@
   {
     {
       sizeof( FTC_BasicFamilyRec ),
-      (FTC_MruNode_CompareFunc)  ftc_basic_family_compare,
-      (FTC_MruNode_InitFunc)     ftc_basic_family_init,
-      (FTC_MruNode_ResetFunc)    NULL,
-      (FTC_MruNode_DoneFunc)     NULL
+      (FTC_MruNode_CompareFunc)ftc_basic_family_compare,
+      (FTC_MruNode_InitFunc)   ftc_basic_family_init,
+      (FTC_MruNode_ResetFunc)  NULL,
+      (FTC_MruNode_DoneFunc)   NULL
     },
-    (FTC_SFamily_GetCountFunc)   ftc_basic_family_get_count,
-    (FTC_SFamily_LoadGlyphFunc)  ftc_basic_family_load_bitmap
+    (FTC_SFamily_GetCountFunc) ftc_basic_family_get_count,
+    (FTC_SFamily_LoadGlyphFunc)ftc_basic_family_load_bitmap
   };
 
 
@@ -304,37 +325,35 @@
   static const FTC_GCacheClassRec  ftc_basic_sbit_cache_class =
   {
     {
-      (FTC_Node_NewFunc)      FTC_SNode_New,
-      (FTC_Node_WeightFunc)   FTC_SNode_Weight,
-      (FTC_Node_CompareFunc)  FTC_SNode_Compare,
-      (FTC_Node_CompareFunc)  ftc_basic_gnode_compare_faceid,
-      (FTC_Node_FreeFunc)     FTC_SNode_Free,
+      (FTC_Node_NewFunc)    FTC_SNode_New,
+      (FTC_Node_WeightFunc) FTC_SNode_Weight,
+      (FTC_Node_CompareFunc)FTC_SNode_Compare,
+      (FTC_Node_CompareFunc)ftc_basic_gnode_compare_faceid,
+      (FTC_Node_FreeFunc)   FTC_SNode_Free,
 
       sizeof( FTC_GCacheRec ),
-      (FTC_Cache_InitFunc)    FTC_GCache_Init,
-      (FTC_Cache_DoneFunc)    FTC_GCache_Done
+      (FTC_Cache_InitFunc)  FTC_GCache_Init,
+      (FTC_Cache_DoneFunc)  FTC_GCache_Done
     },
-    (FTC_MruListClass) & ftc_basic_sbit_family_class
+    (FTC_MruListClass)&ftc_basic_sbit_family_class
   };
 
 
-
-
   FT_EXPORT_DEF( FT_Error )
   FTC_SBitCache_New( FTC_Manager     manager,
                      FTC_SBitCache  *acache )
   {
-    return FTC_GCache_New( manager, & ftc_basic_sbit_cache_class,
-                           (FTC_GCache*) acache );
+    return FTC_GCache_New( manager, &ftc_basic_sbit_cache_class,
+                           (FTC_GCache*)acache );
   }
 
 
   FT_EXPORT_DEF( FT_Error )
-  FTC_SBitCache_Lookup( FTC_SBitCache   cache,
-                        FTC_ImageType   type,
-                        FT_UInt         gindex,
-                        FTC_SBit       *ansbit,
-                        FTC_Node       *anode )
+  FTC_SBitCache_Lookup( FTC_SBitCache  cache,
+                        FTC_ImageType  type,
+                        FT_UInt        gindex,
+                        FTC_SBit      *ansbit,
+                        FTC_Node      *anode )
   {
     FT_Error           error;
     FTC_BasicQueryRec  query;
@@ -341,6 +360,7 @@
     FTC_SNode          node;
     FT_UInt32          hash;
 
+
     if ( anode )
       *anode = NULL;
 
@@ -356,12 +376,11 @@
     query.attrs.scaler.pixel   = 1;
     query.attrs.load_flags     = type->flags;
 
-   /* beware, the hash must be the same for all glyph ranges !!
-    */
+    /* beware, the hash must be the same for all glyph ranges! */
     hash = FTC_BASIC_ATTR_HASH( &query.attrs ) +
-           (gindex/FTC_SBIT_ITEMS_PER_NODE);
+           gindex / FTC_SBIT_ITEMS_PER_NODE;
 
-#if 1  /* inlining is about 50% faster !! */ 
+#if 1  /* inlining is about 50% faster! */ 
     FTC_GCACHE_LOOKUP_CMP( cache,
                            ftc_basic_family_compare,
                            FTC_SNode_Compare,
@@ -374,12 +393,12 @@
                                hash,
                                gindex,
                                FTC_GQUERY( &query ),
-                               (FTC_Node*) &node );
+                               (FTC_Node*)&node );
 #endif                               
     if ( error )
       goto Exit;
 
-    *ansbit = node->sbits + ( gindex - FTC_GNODE(node)->gindex );
+    *ansbit = node->sbits + ( gindex - FTC_GNODE( node )->gindex );
 
     if ( anode )
     {
@@ -391,3 +410,5 @@
     return error;
   }
 
+
+/* END */
--- a/src/cache/ftccache.c
+++ b/src/cache/ftccache.c
@@ -45,7 +45,8 @@
   ftc_node_mru_link( FTC_Node     node,
                      FTC_Manager  manager )
   {
-    FTC_MruNode_Prepend( (FTC_MruNode*)&manager->nodes_list, (FTC_MruNode)node );
+    FTC_MruNode_Prepend( (FTC_MruNode*)&manager->nodes_list,
+                         (FTC_MruNode)node );
     manager->num_nodes++;
   }
 
@@ -55,7 +56,8 @@
   ftc_node_mru_unlink( FTC_Node     node,
                        FTC_Manager  manager )
   {
-    FTC_MruNode_Remove( (FTC_MruNode*)&manager->nodes_list, (FTC_MruNode)node );
+    FTC_MruNode_Remove( (FTC_MruNode*)&manager->nodes_list,
+                        (FTC_MruNode)node );
     manager->num_nodes--;
   }
 
@@ -65,64 +67,67 @@
   ftc_node_mru_up( FTC_Node     node,
                    FTC_Manager  manager )
   {
-    FTC_MruNode_Up( (FTC_MruNode*)&manager->nodes_list, (FTC_MruNode)node );
+    FTC_MruNode_Up( (FTC_MruNode*)&manager->nodes_list,
+                    (FTC_MruNode)node );
   }
 
 
- /* note that this function cannot fail. If we cannot re-size the
-  * buckets array appropriately, we simply degrade the hash table's
-  * performance !!
-  */
+  /* Note that this function cannot fail.  If we cannot re-size the
+   * buckets array appropriately, we simply degrade the hash table's
+   * performance!
+   */
   static void
   ftc_cache_resize( FTC_Cache  cache )
   {
     for (;;)
     {
-      FTC_Node   node, *pnode;
-      FT_UInt    p      = cache->p;
-      FT_UInt    mask   = cache->mask;
-      FT_UInt    count  = mask + p + 1;    /* number of buckets */
+      FTC_Node  node, *pnode;
+      FT_UInt   p      = cache->p;
+      FT_UInt   mask   = cache->mask;
+      FT_UInt   count  = mask + p + 1;    /* number of buckets */
 
-     /* do we need to shrink the buckets array ?
-      */
+
+      /* do we need to shrink the buckets array? */
       if ( cache->slack < 0 )
       {
-        FTC_Node   new_list = NULL;
+        FTC_Node  new_list = NULL;
 
+
         /* try to expand the buckets array _before_ splitting
          * the bucket lists
          */
-         if ( p >= mask )
-         {
-           FT_Memory  memory = cache->memory;
+        if ( p >= mask )
+        {
+          FT_Memory  memory = cache->memory;
 
+
           /* if we can't expand the array, leave immediately */
-           if ( FT_MEM_RENEW_ARRAY( cache->buckets, (mask+1)*2, (mask+1)*4 ) )
-             break;
-         }
+          if ( FT_MEM_RENEW_ARRAY( cache->buckets, (mask+1)*2, (mask+1)*4 ) )
+            break;
+        }
 
         /* split a single bucket */
-         pnode = cache->buckets + p;
+        pnode = cache->buckets + p;
 
-         for (;;)
-         {
-           node = *pnode;
-           if ( node == NULL )
-             break;
+        for (;;)
+        {
+          node = *pnode;
+          if ( node == NULL )
+            break;
 
-           if ( node->hash & ( mask + 1 ) )
-           {
-             *pnode     = node->link;
-             node->link = new_list;
-             new_list   = node;
-           }
-           else
-             pnode = &node->link;
-         }
+          if ( node->hash & ( mask + 1 ) )
+          {
+            *pnode     = node->link;
+            node->link = new_list;
+            new_list   = node;
+          }
+          else
+            pnode = &node->link;
+        }
 
-         cache->buckets[p + mask + 1] = new_list;
+        cache->buckets[p + mask + 1] = new_list;
 
-         cache->slack += FTC_HASH_MAX_LOAD;
+        cache->slack += FTC_HASH_MAX_LOAD;
 
         if ( p >= mask )
         {
@@ -132,13 +137,14 @@
         else
           cache->p = p + 1;
       }
-     /* do we need to expand the buckets array ?
-      */
+
+      /* do we need to expand the buckets array? */
       else if ( cache->slack > (FT_Long)count * FTC_HASH_SUB_LOAD )
       {
         FT_UInt    old_index = p + mask;
         FTC_Node*  pold;
 
+
         if ( old_index + 1 <= FTC_HASH_INITIAL_SIZE )
           break;
 
@@ -146,8 +152,10 @@
         {
           FT_Memory  memory = cache->memory;
 
-         /* if we can't shrink the array, leave immediately */
-          if ( FT_MEM_RENEW_ARRAY( cache->buckets, ( mask + 1 ) * 2, (mask+1) ) )
+
+          /* if we can't shrink the array, leave immediately */
+          if ( FT_MEM_RENEW_ARRAY( cache->buckets,
+                                   ( mask + 1 ) * 2, mask + 1 ) )
             break;
 
           cache->mask >>= 1;
@@ -173,7 +181,6 @@
   }
 
 
-
   /* remove a node from its cache's hash table */
   static void
   ftc_node_hash_unlink( FTC_Node   node0,
@@ -193,6 +200,7 @@
     {
       FTC_Node  node = *pnode;
 
+
       if ( node == NULL )
       {
         FT_ERROR(( "ftc_node_hash_unlink: unknown node!\n" ));
@@ -213,8 +221,7 @@
   }
 
 
-
-  /* add a node to the "top" of its cache's hash table */
+  /* add a node to the `top' of its cache's hash table */
   static void
   ftc_node_hash_link( FTC_Node   node,
                       FTC_Cache  cache )
@@ -237,8 +244,6 @@
   }
 
 
-
-
   /* remove a node from the cache manager */
   FT_EXPORT_DEF( void )
   ftc_node_destroy( FTC_Node     node,
@@ -256,7 +261,7 @@
     }
 #endif
 
-    cache = manager->caches[ node->cache_index ];
+    cache = manager->caches[node->cache_index];
 
 #ifdef FT_DEBUG_ERROR
     if ( cache == NULL )
@@ -296,19 +301,19 @@
 
 
   FT_EXPORT_DEF( FT_Error )
-  FTC_Cache_Init( FTC_Cache       cache )
+  FTC_Cache_Init( FTC_Cache  cache )
   {
     FT_Memory  memory = cache->memory;
 
-    cache->p       = 0;
-    cache->mask    = FTC_HASH_INITIAL_SIZE - 1;
-    cache->slack   = FTC_HASH_INITIAL_SIZE * FTC_HASH_MAX_LOAD;
 
+    cache->p     = 0;
+    cache->mask  = FTC_HASH_INITIAL_SIZE - 1;
+    cache->slack = FTC_HASH_INITIAL_SIZE * FTC_HASH_MAX_LOAD;
+
     return ( FT_MEM_NEW_ARRAY( cache->buckets, FTC_HASH_INITIAL_SIZE * 2 ) );
   }
 
 
-
   FT_EXPORT_DEF( void )
   FTC_Cache_Clear( FTC_Cache  cache )
   {
@@ -318,6 +323,7 @@
       FT_UFast     i;
       FT_UInt      count;
 
+
       count = cache->p + cache->mask + 1;
 
       for ( i = 0; i < count; i++ )
@@ -353,6 +359,7 @@
     {
       FT_Memory  memory = cache->memory;
 
+
       FTC_Cache_Clear( cache );
 
       FT_FREE( cache->buckets );
@@ -365,11 +372,10 @@
   }
 
 
-
   static void
-  ftc_cache_add( FTC_Cache    cache,
-                 FT_UInt32    hash,
-                 FTC_Node     node )
+  ftc_cache_add( FTC_Cache  cache,
+                 FT_UInt32  hash,
+                 FTC_Node   node )
   {
     node->hash = hash;
     node->cache_index = (FT_UInt16) cache->index;
@@ -381,6 +387,7 @@
     {
       FTC_Manager  manager = cache->manager;
 
+
       manager->cur_weight += cache->clazz.node_weight( node, cache );
 
       if ( manager->cur_weight >= manager->max_weight )
@@ -402,25 +409,25 @@
     FT_Error  error;
     FTC_Node  node;
 
-   /*
-    *  try to allocate a new cache node. Note that in case of
-    *  out-of-memory error (OOM), we'll flush the cache a bit,
-    *  then try again.
-    *
-    *  on each try, the "tries" variable gives the number
-    *  of old nodes we want to flush from the manager's global list
-    *  before the next allocation attempt. it barely doubles on
-    *  each iteration
-    *
-    */
+    /*
+     *  Try to allocate a new cache node.  Note that in case of
+     *  out-of-memory error (OOM), we'll flush the cache a bit,
+     *  then try again.
+     *
+     *  On each try, the `tries' variable gives the number
+     *  of old nodes we want to flush from the manager's global list
+     *  before the next allocation attempt.  It barely doubles on
+     *  each iteration.
+     *
+     */
     error = cache->clazz.node_new( &node, query, cache );
     if ( error )
       goto FlushCache;
 
   AddNode:
-   /* don't assume that the cache has the same number of buckets, since
-    * our allocation request might have triggered global cache flushing
-    */
+    /* don't assume that the cache has the same number of buckets, since
+     * our allocation request might have triggered global cache flushing
+     */
     ftc_cache_add( cache, hash, node );
 
   Exit:
@@ -436,6 +443,7 @@
       FTC_Manager  manager = cache->manager;
       FT_UInt      count, tries = 1;
 
+
       for (;;)
       {
         error = cache->clazz.node_new( &node, query, cache );
@@ -452,7 +460,7 @@
 
         if ( count == tries )
         {
-          count = tries*2;
+          count = tries * 2;
           if ( count < tries || count > manager->num_nodes )
             count = manager->num_nodes;
         }
@@ -510,6 +518,7 @@
     {
       FTC_Manager  manager = cache->manager;
 
+
       if ( node != manager->nodes_list )
         ftc_node_mru_up( node, manager );
     }
@@ -521,16 +530,15 @@
   }
 
 
-
-
   FT_EXPORT_DEF( void )
-  FTC_Cache_RemoveFaceID( FTC_Cache    cache,
-                           FTC_FaceID   face_id )
+  FTC_Cache_RemoveFaceID( FTC_Cache   cache,
+                          FTC_FaceID  face_id )
   {
     FT_UFast     i, count;
     FTC_Manager  manager = cache->manager;
     FTC_Node     frees   = NULL;
 
+
     count = cache->p + cache->mask;
     for ( i = 0; i < count; i++ )
     {
@@ -537,16 +545,18 @@
       FTC_Node*  bucket = cache->buckets + i;
       FTC_Node*  pnode  = bucket;
 
+
       for ( ;; )
       {
         FTC_Node  node = *pnode;
 
+
         if ( node == NULL )
           break;
 
         if ( cache->clazz.node_remove_faceid( node, face_id, cache ) )
         {
-          *pnode = node->link;
+          *pnode     = node->link;
           node->link = frees;
           frees      = node;
         }
@@ -555,12 +565,12 @@
       }
     }
 
-   /* remove all nodes in the free list
-    */
+    /* remove all nodes in the free list */
     while ( frees )
     {
       FTC_Node  node;
 
+
       node  = frees;
       frees = node->link;
 
@@ -569,10 +579,11 @@
 
       cache->clazz.node_free( node, cache );
 
-      cache->slack ++;
+      cache->slack++;
     }
 
     ftc_cache_resize( cache );
   }
+
 
 /* END */
--- a/src/cache/ftccmap.c
+++ b/src/cache/ftccmap.c
@@ -29,6 +29,7 @@
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cache
 
+
   /*************************************************************************/
   /*                                                                       */
   /* Each FTC_CMapNode contains a simple array to map a range of character */
@@ -47,22 +48,24 @@
 #define FTC_CMAP_INDICES_MAX  128
 
   /* compute a query/node hash */
-#define  FTC_CMAP_HASH( faceid, index, charcode )    \
-   ( FTC_FACE_ID_HASH( faceid ) + 211*( index ) + ((char_code) / FTC_CMAP_INDICES_MAX) )
+#define FTC_CMAP_HASH( faceid, index, charcode )           \
+          ( FTC_FACE_ID_HASH( faceid ) + 211 * ( index ) + \
+            ( (char_code) / FTC_CMAP_INDICES_MAX )       )
 
   /* the charmap query */
   typedef struct  FTC_CMapQueryRec_
   {
-    FTC_FaceID    face_id;
-    FT_UInt       cmap_index;
-    FT_UInt32     char_code;
+    FTC_FaceID  face_id;
+    FT_UInt     cmap_index;
+    FT_UInt32   char_code;
 
   } FTC_CMapQueryRec, *FTC_CMapQuery;
 
-#define  FTC_CMAP_QUERY(x)  ((FTC_CMapQuery)(x))
-#define  FTC_CMAP_QUERY_HASH(x)  FTC_CMAP_HASH( (x)->face_id, (x)->cmap_index, (x)->char_code )
+#define FTC_CMAP_QUERY( x )  ((FTC_CMapQuery)(x))
+#define FTC_CMAP_QUERY_HASH( x )                                         \
+          FTC_CMAP_HASH( (x)->face_id, (x)->cmap_index, (x)->char_code )
 
- /* the cmap cache node */
+  /* the cmap cache node */
   typedef struct  FTC_CMapNodeRec_
   {
     FTC_NodeRec  node;
@@ -74,7 +77,8 @@
   } FTC_CMapNodeRec, *FTC_CMapNode;
 
 #define FTC_CMAP_NODE( x ) ( (FTC_CMapNode)( x ) )
-#define FTC_CMAP_NODE_HASH(x)  FTC_CMAP_HASH( (x)->face_id, (x)->cmap_index, (x)->first )
+#define FTC_CMAP_NODE_HASH( x )                                      \
+          FTC_CMAP_HASH( (x)->face_id, (x)->cmap_index, (x)->first )
 
   /* if (indices[n] == FTC_CMAP_UNKNOWN), we assume that the corresponding */
   /* glyph indices haven't been queried through FT_Get_Glyph_Index() yet   */
@@ -90,14 +94,15 @@
   /*************************************************************************/
 
 
-  /* no need for specific finalizer; we use "ftc_node_done" directly */
+  /* no need for specific finalizer; we use `ftc_node_done' directly */
 
   FT_CALLBACK_DEF( void )
-  ftc_cmap_node_free( FTC_CMapNode   node,
-                      FTC_Cache      cache )
+  ftc_cmap_node_free( FTC_CMapNode  node,
+                      FTC_Cache     cache )
   {
     FT_Memory  memory = cache->memory;
 
+
     FT_FREE( node );
   }
 
@@ -113,6 +118,7 @@
     FTC_CMapNode  node;
     FT_UInt       nn;
 
+
     if ( !FT_NEW( node ) )
     {
       node->face_id    = query->face_id;
@@ -149,8 +155,10 @@
     {
       FT_UInt32  offset = (FT_UInt32)( query->char_code - node->first );
 
+
       return FT_BOOL( offset < FTC_CMAP_INDICES_MAX );
     }
+
     return 0;
   }
 
@@ -162,6 +170,7 @@
     return FT_BOOL( node->face_id == face_id );
   }
 
+
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -174,17 +183,18 @@
   FT_CALLBACK_TABLE_DEF
   const FTC_CacheClassRec  ftc_cmap_cache_class =
   {
-    (FTC_Node_NewFunc)      ftc_cmap_node_new,
-    (FTC_Node_WeightFunc)   ftc_cmap_node_weight,
-    (FTC_Node_CompareFunc)  ftc_cmap_node_compare,
-    (FTC_Node_CompareFunc)  ftc_cmap_node_remove_faceid,
-    (FTC_Node_FreeFunc)     ftc_cmap_node_free,
+    (FTC_Node_NewFunc)    ftc_cmap_node_new,
+    (FTC_Node_WeightFunc) ftc_cmap_node_weight,
+    (FTC_Node_CompareFunc)ftc_cmap_node_compare,
+    (FTC_Node_CompareFunc)ftc_cmap_node_remove_faceid,
+    (FTC_Node_FreeFunc)   ftc_cmap_node_free,
 
     sizeof ( FTC_CacheRec ),
-    (FTC_Cache_InitFunc) FTC_Cache_Init,
-    (FTC_Cache_DoneFunc) FTC_Cache_Done,
+    (FTC_Cache_InitFunc)  FTC_Cache_Init,
+    (FTC_Cache_DoneFunc)  FTC_Cache_Done,
   };
 
+
   /* documentation is in ftccmap.h */
 
   FT_EXPORT_DEF( FT_Error )
@@ -192,9 +202,11 @@
                      FTC_CMapCache  *acache )
   {
     return FTC_Manager_RegisterCache( manager,
-                                      & ftc_cmap_cache_class,
+                                      &ftc_cmap_cache_class,
                                       FTC_CACHE_P( acache ) );
   }
+
+
   /* documentation is in ftccmap.h */
 
   FT_EXPORT_DEF( FT_UInt )
@@ -234,11 +246,12 @@
 
     FT_ASSERT( (FT_UInt)( char_code - node->first ) < FTC_CMAP_INDICES_MAX );
 
-    gindex = node->indices[ char_code - node->first ];
+    gindex = node->indices[char_code - node->first];
     if ( gindex == FTC_CMAP_UNKNOWN )
     {
-      FT_Face     face;
+      FT_Face  face;
 
+
       gindex = 0;
 
       error = FTC_Manager_LookupFace( cache->manager, node->face_id, &face );
@@ -249,23 +262,25 @@
       {
         FT_CharMap  old, cmap  = NULL;
 
+
         old  = face->charmap;
-        cmap = face->charmaps[ cmap_index ];
+        cmap = face->charmaps[cmap_index];
 
-        if (old != cmap)
+        if ( old != cmap )
           FT_Set_Charmap( face, cmap );
 
         gindex = FT_Get_Char_Index( face, char_code );
 
-        if (old != cmap)
+        if ( old != cmap )
           FT_Set_Charmap( face, old );
       }
 
-      node->indices[ char_code - node->first ] = gindex;
+      node->indices[char_code - node->first] = gindex;
     }
 
   Exit:
     return gindex;
   }
+
 
 /* END */
--- a/src/cache/ftcglyph.c
+++ b/src/cache/ftcglyph.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType Glyph Image (FT_Glyph) cache (body).                        */
 /*                                                                         */
-/*  Copyright 2000-2001 by                                                 */
+/*  Copyright 2000-2001, 2003 by                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -39,17 +39,17 @@
 
 
   FT_EXPORT_DEF( void )
-  FTC_GNode_UnselectFamily( FTC_GNode   gnode,
-                            FTC_Cache   cache )
+  FTC_GNode_UnselectFamily( FTC_GNode  gnode,
+                            FTC_Cache  cache )
   {
     FTC_Family  family = gnode->family;
 
+
     gnode->family = NULL;
     if ( family && --family->num_nodes <= 0 )
-    {
-      FTC_MruList_Remove( & FTC_GCACHE(cache)->families, (FTC_MruNode)family );
+      FTC_MruList_Remove( &FTC_GCACHE( cache )->families,
+                          (FTC_MruNode)family );
   }
-  }
 
 
   FT_EXPORT_DEF( void )
@@ -84,8 +84,9 @@
   FTC_Family_Init( FTC_Family  family,
                    FTC_Cache   cache )
   {
-    FTC_GCacheClass  clazz = FTC_CACHE__GCACHE_CLASS(cache);
+    FTC_GCacheClass  clazz = FTC_CACHE__GCACHE_CLASS( cache );
 
+
     family->clazz     = clazz->family_class;
     family->num_nodes = 0;
     family->cache     = cache;
@@ -97,17 +98,18 @@
   {
     FT_Error error;
 
-    error = FTC_Cache_Init( FTC_CACHE(cache) );
+    error = FTC_Cache_Init( FTC_CACHE( cache ) );
     if ( !error )
     {
-      FTC_GCacheClass   clazz = (FTC_GCacheClass) FTC_CACHE(cache)->org_class;
+      FTC_GCacheClass   clazz = (FTC_GCacheClass)FTC_CACHE( cache )->org_class;
 
       FTC_MruList_Init( &cache->families,
                         clazz->family_class,
-                        0,  /* no maximum here !! */
+                        0,  /* no maximum here! */
                         cache,
-                        FTC_CACHE(cache)->memory );
+                        FTC_CACHE( cache )->memory );
     }
+
     return error;
   }
 
@@ -125,8 +127,8 @@
                   FTC_GCacheClass   clazz,
                   FTC_GCache       *acache )
   {
-    return FTC_Manager_RegisterCache( manager, (FTC_CacheClass) clazz,
-                                      (FTC_Cache*) acache );
+    return FTC_Manager_RegisterCache( manager, (FTC_CacheClass)clazz,
+                                      (FTC_Cache*)acache );
   }
 
 
@@ -137,13 +139,14 @@
                      FTC_GQuery   query,
                      FTC_Node    *anode )
   {
-    FT_Error    error;
+    FT_Error  error;
 
+
     query->gindex = gindex;
 
     FTC_MRULIST_LOOKUP( &cache->families, query, query->family, error );
     if ( !error )
-      error = FTC_Cache_Lookup( FTC_CACHE(cache), hash, query, anode );
+      error = FTC_Cache_Lookup( FTC_CACHE( cache ), hash, query, anode );
 
     return error;
   }
--- a/src/cache/ftcimage.c
+++ b/src/cache/ftcimage.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType Image cache (body).                                         */
 /*                                                                         */
-/*  Copyright 2000-2001 by                                                 */
+/*  Copyright 2000-2001, 2003 by                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -31,6 +31,7 @@
   {
     FT_Memory  memory = cache->memory;
 
+
     if ( inode->glyph )
     {
       FT_Done_Glyph( inode->glyph );
@@ -52,6 +53,7 @@
     FT_Error   error;
     FTC_INode  inode;
 
+
     if ( !FT_NEW( inode ) )
     {
       FTC_GNode         gnode  = FTC_GNODE( inode );
@@ -59,12 +61,15 @@
       FT_UInt           gindex = gquery->gindex;
       FTC_IFamilyClass  clazz  = FTC_CACHE__IFAMILY_CLASS( cache );
 
+
       /* initialize its inner fields */
       FTC_GNode_Init( gnode, gindex, family );
 
       /* we will now load the glyph image */
-      error = clazz->family_load_glyph( family, gindex, cache, &inode->glyph );
+      error = clazz->family_load_glyph( family, gindex, cache,
+                                        &inode->glyph );
     }
+
     *pinode = inode;
     return error;
   }
--- a/src/cache/ftcmanag.c
+++ b/src/cache/ftcmanag.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType Cache Manager (body).                                       */
 /*                                                                         */
-/*  Copyright 2000-2001, 2002 by                                           */
+/*  Copyright 2000-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -33,19 +33,22 @@
 
 
   static FT_Error
-  ftc_scaler_lookup_size( FTC_Manager    manager,
-                          FTC_Scaler     scaler,
-                          FT_Size       *asize )
+  ftc_scaler_lookup_size( FTC_Manager  manager,
+                          FTC_Scaler   scaler,
+                          FT_Size     *asize )
   {
     FT_Face   face;
     FT_Size   size = NULL;
     FT_Error  error;
 
+
     error = FTC_Manager_LookupFace( manager, scaler->face_id, &face );
-    if ( error ) goto Exit;
+    if ( error )
+      goto Exit;
 
     error = FT_New_Size( face, &size );
-    if ( error ) goto Exit;
+    if ( error )
+      goto Exit;
 
     FT_Activate_Size( size );
 
@@ -66,11 +69,11 @@
   }
 
 
-  typedef struct FTC_SizeNodeRec_
+  typedef struct  FTC_SizeNodeRec_
   {
-    FTC_MruNodeRec    node;
-    FT_Size           size;
-    FTC_ScalerRec     scaler;
+    FTC_MruNodeRec  node;
+    FT_Size         size;
+    FTC_ScalerRec   scaler;
 
   } FTC_SizeNodeRec, *FTC_SizeNode;
 
@@ -80,6 +83,7 @@
   {
     FT_Size  size = node->size;
 
+
     if ( size )
       FT_Done_Size( size );
   }
@@ -91,15 +95,15 @@
   {
     FTC_Scaler  scaler0 = &node->scaler;
 
+
     return FTC_SCALER_COMPARE( scaler0, scaler );
   }
 
 
-
   FT_CALLBACK_DEF( FT_Error )
-  ftc_size_node_init( FTC_SizeNode   node,
-                      FTC_Scaler     scaler,
-                      FTC_Manager    manager )
+  ftc_size_node_init( FTC_SizeNode  node,
+                      FTC_Scaler    scaler,
+                      FTC_Manager   manager )
   {
     node->scaler = scaler[0];
 
@@ -108,9 +112,9 @@
 
 
   FT_CALLBACK_DEF( FT_Error )
-  ftc_size_node_reset( FTC_SizeNode       node,
-                       FTC_Scaler         scaler,
-                       FTC_Manager        manager )
+  ftc_size_node_reset( FTC_SizeNode  node,
+                       FTC_Scaler    scaler,
+                       FTC_Manager   manager )
   {
     FT_Done_Size( node->size );
 
@@ -123,14 +127,14 @@
   static const FTC_MruListClassRec  ftc_size_list_class =
   {
     sizeof( FTC_SizeNodeRec ),
-    (FTC_MruNode_CompareFunc)  ftc_size_node_compare,
-    (FTC_MruNode_InitFunc)     ftc_size_node_init,
-    (FTC_MruNode_ResetFunc)    ftc_size_node_reset,
-    (FTC_MruNode_DoneFunc)     ftc_size_node_done
+    (FTC_MruNode_CompareFunc)ftc_size_node_compare,
+    (FTC_MruNode_InitFunc)   ftc_size_node_init,
+    (FTC_MruNode_ResetFunc)  ftc_size_node_reset,
+    (FTC_MruNode_DoneFunc)   ftc_size_node_done
   };
 
 
- /* helper function used by ftc_face_node_done */
+  /* helper function used by ftc_face_node_done */
   static FT_Bool
   ftc_size_node_compare_faceid( FTC_SizeNode  node,
                                 FTC_FaceID    face_id )
@@ -140,9 +144,9 @@
 
 
   FT_EXPORT_DEF( FT_Error )
-  FTC_Manager_LookupSize( FTC_Manager    manager,
-                          FTC_Scaler     scaler,
-                          FT_Size       *asize )
+  FTC_Manager_LookupSize( FTC_Manager  manager,
+                          FTC_Scaler   scaler,
+                          FT_Size     *asize )
   {
     FT_Error      error;
     FTC_SizeNode  node;
@@ -163,6 +167,7 @@
     {
       FTC_Scaler  scaler0 = &node->scaler;
       
+
       if ( FTC_SCALER_COMPARE( scaler0, scaler ) )
         goto Found;
     }
@@ -195,14 +200,14 @@
   } FTC_FaceNodeRec, *FTC_FaceNode;
 
 
-
   FT_CALLBACK_DEF( FT_Error )
   ftc_face_node_init( FTC_FaceNode  node,
                       FTC_FaceID    face_id,
                       FTC_Manager   manager )
   {
-    FT_Error      error;
+    FT_Error  error;
 
+
     node->face_id = face_id;
 
     error = manager->request_face( face_id,
@@ -215,6 +220,7 @@
       if ( node->face->size )
         FT_Done_Size( node->face->size );
     }
+
     return error;
   }
 
@@ -226,9 +232,9 @@
     /* we must begin by removing all scalers for the target face */
     /* from the manager's list                                   */
     FTC_MruList_RemoveSelection(
-          & manager->sizes,
-          (FTC_MruNode_CompareFunc) ftc_size_node_compare_faceid,
-          node->face_id );
+      & manager->sizes,
+      (FTC_MruNode_CompareFunc)ftc_size_node_compare_faceid,
+      node->face_id );
 
     /* all right, we can discard the face now */
     FT_Done_Face( node->face );
@@ -249,14 +255,13 @@
   {
     sizeof( FTC_FaceNodeRec),
 
-    (FTC_MruNode_CompareFunc) ftc_face_node_compare,
-    (FTC_MruNode_InitFunc)    ftc_face_node_init,
-    (FTC_MruNode_ResetFunc)   NULL,
-    (FTC_MruNode_DoneFunc)    ftc_face_node_done
+    (FTC_MruNode_CompareFunc)ftc_face_node_compare,
+    (FTC_MruNode_InitFunc)   ftc_face_node_init,
+    (FTC_MruNode_ResetFunc)  NULL,
+    (FTC_MruNode_DoneFunc)   ftc_face_node_done
   };
 
 
-
   /* documentation is in ftcache.h */
 
   FT_EXPORT_DEF( FT_Error )
@@ -296,8 +301,6 @@
   }
 
 
-
-
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -385,6 +388,7 @@
     {
       FTC_Cache  cache = manager->caches[idx];
 
+
       if ( cache )
       {
         cache->clazz.cache_done( cache );
@@ -439,17 +443,16 @@
 
       do
       {
-        FTC_Cache     cache = manager->caches[ node->cache_index ];
+        FTC_Cache  cache = manager->caches[node->cache_index];
 
+
         if ( (FT_UInt)node->cache_index >= manager->num_caches )
           FT_ERROR(( "FTC_Manager_Check: invalid node (cache index = %ld\n",
                      node->cache_index ));
         else
-        {
           weight += cache->clazz.node_weight( node, cache );
-        }
 
-        node = FTC_NODE__NEXT(node);
+        node = FTC_NODE__NEXT( node );
 
       } while ( node != first );
 
@@ -468,7 +471,7 @@
       do
       {
         count++;
-        node = FTC_NODE__NEXT(node);
+        node = FTC_NODE__NEXT( node );
 
       } while ( node != first );
 
@@ -510,14 +513,14 @@
     if ( manager->cur_weight < manager->max_weight || first == NULL )
       return;
 
-    /* go to last node - it's a circular list */
-    node = FTC_NODE__PREV(first);
+    /* go to last node -- it's a circular list */
+    node = FTC_NODE__PREV( first );
     do
     {
       FTC_Node  prev;
 
 
-      prev = ( node == first ) ? NULL : FTC_NODE__PREV(node);
+      prev = ( node == first ) ? NULL : FTC_NODE__PREV( node );
 
       if ( node->ref_count <= 0 )
         ftc_node_destroy( node, manager );
@@ -532,8 +535,8 @@
 
   FT_EXPORT_DEF( FT_Error )
   FTC_Manager_RegisterCache( FTC_Manager      manager,
-                              FTC_CacheClass   clazz,
-                              FTC_Cache       *acache )
+                             FTC_CacheClass   clazz,
+                             FTC_Cache       *acache )
   {
     FT_Error   error = FTC_Err_Invalid_Argument;
     FTC_Cache  cache = NULL;
@@ -543,6 +546,7 @@
     {
       FT_Memory  memory = manager->memory;
 
+
       if ( manager->num_caches >= FTC_MAX_CACHES )
       {
         error = FTC_Err_Too_Many_Caches;
@@ -570,7 +574,7 @@
           goto Exit;
         }
 
-        manager->caches[ manager->num_caches++ ] = cache;
+        manager->caches[manager->num_caches++] = cache;
       }
     }
 
@@ -582,13 +586,14 @@
 
   FT_EXPORT_DEF( FT_UInt )
   FTC_Manager_FlushN( FTC_Manager  manager,
-                       FT_UInt      count )
+                      FT_UInt      count )
   {
     FTC_Node  first = manager->nodes_list;
     FTC_Node  node;
     FT_UInt   result;
 
-    /* try to remove "count" nodes from the list */
+
+    /* try to remove `count' nodes from the list */
     if ( first == NULL )  /* empty list! */
       return 0;
 
@@ -596,10 +601,10 @@
     node = FTC_NODE__PREV(first);
     for ( result = 0; result < count; )
     {
-      FTC_Node  prev = FTC_NODE__PREV(node);
+      FTC_Node  prev = FTC_NODE__PREV( node );
 
 
-     /* don't touch locked nodes */
+      /* don't touch locked nodes */
       if ( node->ref_count <= 0 )
       {
         ftc_node_destroy( node, manager );
@@ -621,9 +626,9 @@
   {
     FT_UInt  nn;
 
-   /* this will remove all FTC_SizeNode that correspond to
-    * the face_id as well
-    */
+    /* this will remove all FTC_SizeNode that correspond to
+     * the face_id as well
+     */
     FTC_MruList_RemoveSelection( &manager->faces, NULL, face_id );
 
     for ( nn = 0; nn < manager->num_caches; nn++ )
--- a/src/cache/ftcmru.c
+++ b/src/cache/ftcmru.c
@@ -1,3 +1,21 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftcmru.c                                                               */
+/*                                                                         */
+/*    FreeType MRU support (body).                                         */
+/*                                                                         */
+/*  Copyright 2003 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
 #include <ft2build.h>
 #include FT_CACHE_H
 #include FT_CACHE_INTERNAL_MRU_H
@@ -6,6 +24,7 @@
 
 #include "ftcerror.h"
 
+
   FT_EXPORT_DEF( void )
   FTC_MruNode_Prepend( FTC_MruNode  *plist,
                        FTC_MruNode   node )
@@ -12,23 +31,27 @@
   {
     FTC_MruNode  first = *plist;
 
+
     if ( first )
     {
       FTC_MruNode  last = first->prev;
 
+
 #ifdef FT_DEBUG_ERROR
       {
         FTC_MruNode  cnode = first;
+
+
         do
         {
           if ( cnode == node )
           {
-            fprintf( stderr, "FTC_MruNode_Prepend: invalid action !!\n" );
-            exit(2);
+            fprintf( stderr, "FTC_MruNode_Prepend: invalid action!\n" );
+            exit( 2 );
           }
           cnode = cnode->next;
-        }
-        while ( cnode != first );
+
+        } while ( cnode != first );
       }
 #endif
 
@@ -52,6 +75,7 @@
   {
     FTC_MruNode  first = *plist;
 
+
     FT_ASSERT( first != NULL );
 
     if ( first != node )
@@ -58,6 +82,7 @@
     {
       FTC_MruNode  prev, next, last;
 
+
 #ifdef FT_DEBUG_ERROR
       {
         FTC_MruNode  cnode = first;
@@ -66,11 +91,11 @@
           if ( cnode == node )
             goto Ok;
           cnode = cnode->next;
-        }
-        while ( cnode != first );
 
-        fprintf( stderr, "FTC_MruNode_Up: invalid action !!\n" );
-        exit(2);
+        } while ( cnode != first );
+
+        fprintf( stderr, "FTC_MruNode_Up: invalid action!\n" );
+        exit( 2 );
       Ok:
       }
 #endif
@@ -85,7 +110,7 @@
       last->next  = node;
       first->prev = node;
 
-      node->next  = first;
+      node->next = first;
       node->prev = last;
 
       *plist = node;
@@ -100,21 +125,24 @@
     FTC_MruNode  first = *plist;
     FTC_MruNode  prev, next;
 
+
     FT_ASSERT( first != NULL );
 
 #ifdef FT_DEBUG_ERROR
       {
         FTC_MruNode  cnode = first;
+
+
         do
         {
           if ( cnode == node )
             goto Ok;
           cnode = cnode->next;
-        }
-        while ( cnode != first );
 
-        fprintf( stderr, "FTC_MruNode_Remove: invalid action !!\n" );
-        exit(2);
+        } while ( cnode != first );
+
+        fprintf( stderr, "FTC_MruNode_Remove: invalid action!\n" );
+        exit( 2 );
       Ok:
       }
 #endif
@@ -134,10 +162,9 @@
     }
     else if ( node == first )
         *plist = next;
-    }
+  }
 
 
-
   FT_EXPORT_DEF( void )
   FTC_MruList_Init( FTC_MruList       list,
                     FTC_MruListClass  clazz,
@@ -171,14 +198,14 @@
   }
 
 
-
   FT_EXPORT_DEF( FTC_MruNode )
   FTC_MruList_Find( FTC_MruList  list,
-                      FT_Pointer   key )
+                    FT_Pointer   key )
   {
     FTC_MruNode_CompareFunc  compare = list->clazz.node_compare;
     FTC_MruNode              first, node;
 
+
     first = list->nodes;
     node  = NULL;
 
@@ -191,23 +218,24 @@
           return node;
 
         node = node->next;
+  
+      } while ( node != first);
     }
-      while ( node != first) ;
-    }
+
     return NULL;
   }
 
 
-
   FT_EXPORT_DEF( FT_Error )
-  FTC_MruList_New( FTC_MruList    list,
-                   FT_Pointer     key,
-                   FTC_MruNode   *anode )
+  FTC_MruList_New( FTC_MruList   list,
+                   FT_Pointer    key,
+                   FTC_MruNode  *anode )
   {
     FT_Error     error;
     FTC_MruNode  node;
     FT_Memory    memory = list->memory;
 
+
     if ( list->num_nodes >= list->max_nodes && list->max_nodes > 0 )
     {
       node = list->nodes->prev;
@@ -254,11 +282,12 @@
 
   FT_EXPORT( FT_Error )
   FTC_MruList_Lookup( FTC_MruList   list,
-                   FT_Pointer    key,
-                   FTC_MruNode  *anode )
+                      FT_Pointer    key,
+                      FTC_MruNode  *anode )
   {
     FTC_MruNode  node;
 
+
     node = FTC_MruList_Find( list, key );
     if ( node == NULL )
       return FTC_MruList_New( list, key, anode );
@@ -269,8 +298,8 @@
 
 
   FT_EXPORT_DEF( void )
-  FTC_MruList_Remove( FTC_MruList   list,
-                      FTC_MruNode   node )
+  FTC_MruList_Remove( FTC_MruList  list,
+                      FTC_MruNode  node )
   {
     FTC_MruNode_Remove( &list->nodes, node );
     list->num_nodes--;
@@ -278,23 +307,25 @@
     {
       FT_Memory  memory = list->memory;
 
-    if ( list->clazz.node_done )
-      list->clazz.node_done( node, list->data );
 
-    FT_FREE( node );
+      if ( list->clazz.node_done )
+       list->clazz.node_done( node, list->data );
+
+      FT_FREE( node );
+    }
   }
-  }
 
 
   FT_EXPORT_DEF( void )
   FTC_MruList_RemoveSelection( FTC_MruList              list,
-                               FTC_MruNode_CompareFunc  select,
+                               FTC_MruNode_CompareFunc  selection,
                                FT_Pointer               key )
   {
     FTC_MruNode  first, node, next;
 
+
     first = list->nodes;
-    while ( first && select( first, key ) )
+    while ( first && selection( first, key ) )
     {
       FTC_MruList_Remove( list, first );
       first = list->nodes;
@@ -307,7 +338,7 @@
       {
         next = node->next;
 
-        if ( select( node, key ) )
+        if ( selection( node, key ) )
           FTC_MruList_Remove( list, node );
 
         node = next;
@@ -315,5 +346,5 @@
     }
   }
 
-/* END */
 
+/* END */
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -26,7 +26,6 @@
 #include "ftcerror.h"
 
 
-
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -77,18 +76,18 @@
 
 
   static FT_Error
-  ftc_snode_load( FTC_SNode       snode,
-                  FTC_Manager     manager,
-                  FT_UInt         gindex,
-                  FT_ULong       *asize )
+  ftc_snode_load( FTC_SNode    snode,
+                  FTC_Manager  manager,
+                  FT_UInt      gindex,
+                  FT_ULong    *asize )
   {
-    FT_Error           error;
-    FTC_GNode          gnode  = FTC_GNODE( snode );
-    FTC_Family         family = gnode->family;
-    FT_Memory          memory = manager->memory;
-    FT_Face            face;
-    FTC_SBit           sbit;
-    FTC_SFamilyClass   clazz;
+    FT_Error          error;
+    FTC_GNode         gnode  = FTC_GNODE( snode );
+    FTC_Family        family = gnode->family;
+    FT_Memory         memory = manager->memory;
+    FT_Face           face;
+    FTC_SBit          sbit;
+    FTC_SFamilyClass  clazz;
 
 
     if ( (FT_UInt)(gindex - gnode->gindex) >= snode->count )
@@ -97,8 +96,8 @@
       return FTC_Err_Invalid_Argument;
     }
 
-    sbit   = snode->sbits + ( gindex - gnode->gindex );
-    clazz  = (FTC_SFamilyClass) family->clazz;
+    sbit  = snode->sbits + ( gindex - gnode->gindex );
+    clazz = (FTC_SFamilyClass)family->clazz;
 
     sbit->buffer = 0;
 
@@ -112,14 +111,15 @@
       FT_Bitmap*    bitmap = &slot->bitmap;
       FT_Int        xadvance, yadvance;
 
+
       if ( slot->format != FT_GLYPH_FORMAT_BITMAP )
       {
-        FT_ERROR(( "%s: glyph loaded didn't returned a bitmap !!\n",
+        FT_ERROR(( "%s: glyph loaded didn't return a bitmap!\n",
                    "ftc_snode_load" ));
         goto BadGlyph;
       }
 
-      /* check that our values fit into 8-bit containers!       */
+      /*        /* If this is not the case, our bitmap is too large       */
       /* and we will leave it as `missing' with sbit.buffer = 0 */
 
@@ -189,6 +189,7 @@
     FTC_SFamilyClass  clazz = FTC_CACHE__SFAMILY_CLASS( cache );
     FT_UInt           total;
 
+
     total = clazz->family_get_count( family, cache->manager );
     if ( total == 0 || gindex >= total )
     {
@@ -198,9 +199,10 @@
 
     if ( !FT_NEW( snode ) )
     {
-      FT_UInt   count, start;
+      FT_UInt  count, start;
 
-      start = gindex - (gindex % FTC_SBIT_ITEMS_PER_NODE);
+
+      start = gindex - ( gindex % FTC_SBIT_ITEMS_PER_NODE );
       count = total - start;
       if ( count > FTC_SBIT_ITEMS_PER_NODE )
         count = FTC_SBIT_ITEMS_PER_NODE;
@@ -262,12 +264,13 @@
                      FTC_GQuery  gquery,
                      FTC_Cache   cache )
   {
-    FTC_GNode   gnode  = FTC_GNODE( snode );
-    FT_UInt     gindex = gquery->gindex;
-    FT_Bool     result;
+    FTC_GNode  gnode  = FTC_GNODE( snode );
+    FT_UInt    gindex = gquery->gindex;
+    FT_Bool    result;
 
-    result = FT_BOOL( gnode->family == gquery->family                  &&
-                      (FT_UInt)(gindex - gnode->gindex) < snode->count );
+
+    result = FT_BOOL( gnode->family == gquery->family                    &&
+                      (FT_UInt)( gindex - gnode->gindex ) < snode->count );
     if ( result )
     {
       /* check if we need to load the glyph bitmap now */
@@ -289,5 +292,6 @@
 
     return result;
   }
+
 
 /* END */
--- a/src/cff/Jamfile
+++ b/src/cff/Jamfile
@@ -1,4 +1,4 @@
-# FreeType 2 src/cff Jamfile (c) 2001 David Turner
+# FreeType 2 src/cff Jamfile (c) 2001, 2002 David Turner
 #
 
 SubDir  FT2_TOP $(FT2_SRC_DIR) cff ;
--- a/src/cff/cff.c
+++ b/src/cff/cff.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType OpenType driver component (body only).                      */
 /*                                                                         */
-/*  Copyright 1996-2001 by                                                 */
+/*  Copyright 1996-2001, 2002 by                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
--- a/src/cff/cffload.h
+++ b/src/cff/cffload.h
@@ -62,7 +62,7 @@
 
 
   FT_LOCAL( FT_Byte )
-  cff_fd_select_get( CFF_FDSelect  select,
+  cff_fd_select_get( CFF_FDSelect  fdselect,
                      FT_UInt       glyph_index );
 
 
--- a/src/cff/cffparse.h
+++ b/src/cff/cffparse.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    CFF token stream parser (specification)                              */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002 by                                           */
+/*  Copyright 1996-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
--- a/src/pshinter/Jamfile
+++ b/src/pshinter/Jamfile
@@ -1,4 +1,4 @@
-# FreeType 2 src/pshinter Jamfile (c) 2001 David Turner
+# FreeType 2 src/pshinter Jamfile (c) 2001, 2003 David Turner
 #
 
 SubDir  FT2_TOP $(FT2_SRC_DIR) pshinter ;
--- a/src/pshinter/pshrec.h
+++ b/src/pshinter/pshrec.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Postscript (Type1/Type2) hints recorder (specification).             */
 /*                                                                         */
-/*  Copyright 2001, 2002 by                                                */
+/*  Copyright 2001, 2002, 2003 by                                          */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
--- a/src/sfnt/sfnt.c
+++ b/src/sfnt/sfnt.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Single object library component.                                     */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002 by                                           */
+/*  Copyright 1996-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
--- a/src/sfnt/ttcmap0.h
+++ b/src/sfnt/ttcmap0.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    TrueType new character mapping table (cmap) support (specification). */
 /*                                                                         */
-/*  Copyright 2002 by                                                      */
+/*  Copyright 2002, 2003 by                                                */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
--- a/src/type42/t42types.h
+++ b/src/type42/t42types.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Type 42 font data types (specification only).                        */
 /*                                                                         */
-/*  Copyright 2002 by Roberto Alameda.                                     */
+/*  Copyright 2002, 2003 by Roberto Alameda.                               */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
 /*  modified, and distributed under the terms of the FreeType project      */
--- a/src/winfonts/winfnt.h
+++ b/src/winfonts/winfnt.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType font driver for Windows FNT/FON files                       */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002 by                                           */
+/*  Copyright 1996-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */