diff --git a/ChangeLog b/ChangeLog
index 649e4569a..c3e3e5874 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,597 +1,602 @@
-2005-10-05  Werner Lemberg  <wl@gnu.org>
-
-	Add FT_FACE_FLAG_HINTER to indicate that a specific font driver has
-	a hinting engine of its own.
-
-	* include/freetype/freetype.h (FT_FACE_FLAG_HINTER): New macro.
-
-	* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
-	(cid_face_init), src/truetype/ttobjs.c (tt_face_init)
-	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER], src/type1/t1objs.c
-	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init)
-	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Update face flags.
-
-	* docs/CHANGES: Document it.
-
-2005-09-27  Werner Lemberg  <wl@gnu.org>
-
-	* builds/unix/freetype2.m4: Add license exception so that the file
-	can be used in any other autoconf script.
-
-2005-09-26  David Turner  <david@freetype.org>
-
-	* src/autofit/aflatin.c (af_latin_compute_stem_width): Fix bad
-	computation of the `vertical' flag, causing ugly things in LCD mode
-	and others.
-
-2005-09-23  David Turner  <david@freetype.org>
-
-	* src/autofit/aflatin.c (af_latin_hints_init): Fix a bug that
-	prevented internal hint mode bitflags from being computed correctly.
-
-	* src/base/Jamfile: Adding src/base/ftgxval.c.
-
-	* src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
-	src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c, src/gxvalid/gxvkern.c,
-	src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
-	src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
-	src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
-	src/gxvalid/gxvmort5.c, src/gxvalid/gxvmorx.c,
-	src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
-	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx5.c,
-	src/gxvalid/gxvopbd.c, src/gxvalid/gxvprop.c,
-	src/truetype/ttgload.c: Remove _many_ compiler warnings when
-	compiling with Visual C++ at maximum level (/W4).
-
-	* src/autofit/afangles.c (af_angle_atan): Replaced CORDIC-based
-	implementation with one using lookup tables.  This simple thing
-	speeds up glyph loading by 18%, according to ftbench!
-
-	* src/sfnt/sfdriver.c (sfnt_get_interface): Don't check for
-	`get_sfnt' and `load_sfnt' module interfaces.
-
-2005-09-22  Werner Lemberg  <wl@gnu.org>
-
-	* docs/CHANGES: Mention SING Glyphlet support.
-
-2005-09-22  David Turner  <david@freetype.org>
-
-	* src/base/Jamfile: Disable compilation of ftgxval module
-	temporarily.
-
-2005-09-19  David Somers  <dsomers@omz13.com>
-
-	* freetype2/src/sfnt/ttload.c (sfnt_dir_check): Modified to allow a
-	font to have no `head' table if tables `SING' and `META' are
-	present; this is to support `SING Glyphlet'.
-
-	`SING Glyphlet' is an extension to OpenType developed by Adobe
-	primarily to facilitate adding supplemental glyphs to an OpenType
-	font (with emphasis on, but not necessariy limited to, gaiji to a
-	CJK font).  A SING Glyphlet Font is an OpenType font that contains
-	the outline(s), either in a `glyf' or `CFF' table, for a glyph;
-	`cmap', `BASE', and `GSUB' tables are present with the same format
-	and functionaliy as a regular OpenType font; there are no `name',
-	`head', `OS/2', and `post' tables; there are two new tables, `SING'
-	which contains details about the glyphlet, and `META' which contains
-	metadata.
-
-	Further information on the SING Glyphlet format can be found at:
-
-	  http://www.adobe.com/products/indesign/sing_gaiji.html
-
-	* freetype2/include/freetype/ttags.h (TTAG_SING, TTAG_META): New
-	macros for the OpenType tables `SING' and `META'.  These two tables
-	are used in SING Glyphlet Format fonts.
-
-2005-09-09  Werner Lemberg  <wl@gnu.org>
-
-	* src/sfnt/sfobjs.c (sfnt_load_face): Reactivate code to set
-	FT_FACE_FLAG_KERNING which has been commented out erroneously.
-
-	* docs/CHANGES: Document it.
-
-2005-09-05  Werner Lemberg  <wl@gnu.org>
-
-	Fixes for `make multi' and using C++ compiler.
-
-	* gxvalid/gxvcommn.c (gxv_set_length_by_ushort_offset,
-	gxv_set_length_by_ulong_offset, gxv_array_getlimits_byte,
-	gxv_array_getlimits_ushort): Declare with FT_LOCAL_DEF.
-	(gxv_compare_ranges): Make it static.
-	(gxv_LookupTable_fmt0_validate, gxv_LookupTable_fmt2_validate,
-	gxv_LookupTable_fmt4_validate, gxv_LookupTable_fmt6_validate,
-	gxv_LookupTable_fmt8_validate, gxv_LookupTable_validate): Improve
-	trace messages.
-	(gxv_StateArray_validate, gxv_XStateArray_validate): s/class/clazz/.
-	(GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
-	GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Move to
-	gxvcommn.h.
-
-	* gxvalid/gxvcommn.h: Add prototypes for
-	gxv_StateTable_subtable_setup, gxv_XStateTable_subtable_setup,
-	gxv_XStateTable_validate, gxv_array_getlimits_byte,
-	gxv_array_getlimits_ushort, gxv_set_length_by_ushort_offset,
-	gxv_set_length_by_ulong_offset, gxv_odtect_add_range,
-	gxv_odtect_validate.
-	(GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
-	GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Moved from
-	gxvcommn.c.
-
-	* src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
-	gxv_bsln_parts_fmt1_validate): Improve trace messages.
-
-	* gxvalid/gxvfeat.c: Split off predefined registry stuff to...
-	* gxvalid/gxvfeat.h: New file.
-
-	* gxvalid/gxvjust.c (gxv_just_wdc_entry_validate): Improve trace
-	message.
-
-	* gxvalid/gxvkern.c (GXV_kern_Dialect): Add KERN_DIALECT_UNKNOWN.
-	(gxv_kern_subtable_fmt1_valueTable_load,
-	gxv_kern_subtable_fmt1_subtable_setup,
-	gxv_kern_subtable_fmt1_entry_validate): Fix C++ compiler errors.
-	(gxv_kern_coverage_validate): Use KERN_DIALECT_UNKWOWN.
-	Improve trace message.
-	(gxv_kern_validate_generic): Fix C++ compiler error.
-	Improve trace message.
-	(gxv_kern_validate_classic): Fix C++ compiler error.
-
-	* gxvalid/gxvmort0.c (gxv_mort_subtable_type0_validate): Declare
-	with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmort1.c
-	(gxv_mort_subtable_type1_substitutionTable_load,
-	gxv_mort_subtable_type1_subtable_setup): Fix C++ compiler errors.
-	(gxv_mort_subtable_type1_substTable_validate): Improve trace
-	message.
-	(gxv_mort_subtable_type1_validate): Declare with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmort2.c (gxv_mort_subtable_type2_opttable_load,
-	gxv_mort_subtable_type2_subtable_setup,
-	gxv_mort_subtable_type2_ligActionOffset_validate,
-	gxv_mort_subtable_type2_ligatureTable_validate): Fix C++ compiler
-	errors.
-	(gxv_mort_subtable_type2_validate): Declare with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmort4.c (gxv_mort_subtable_type4_validate): Declare
-	with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup,
-	gxv_mort_subtable_type5_InsertList_validate): Fix C++ compiler
-	errors.
-	(gxv_mort_subtable_type5_validate): Declare with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmort.c: Include gxvfeat.h.
-	(gxv_mort_featurearray_validate, gxv_mort_coverage_validate):
-	Declare with FT_LOCAL_DEF.
-	(gxv_mort_subtables_validate, gxv_mort_validate): Improve trace
-	messages.
-
-	* gxvalid/gxvmort.h (gxv_mort_feature_validate): Remove.
-
-	* gxvalid/gxvmorx0.c (gxv_morx_subtable_type0_validate): Declare
-	with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmorx1.c
-	(gxv_morx_subtable_type1_substitutionTable_load,
-	gxv_morx_subtable_type1_subtable_setup,
-	gxv_morx_subtable_type1_entry_validate,
-	gxv_morx_subtable_type1_substitutionTable_validate): Fix C++
-	compiler errors.
-	(gxv_morx_subtable_type1_validate): Declare with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmorx2.c (gxv_morx_subtable_type2_opttable_load,
-	gxv_morx_subtable_type2_subtable_setup,
-	gxv_morx_subtable_type2_ligActionIndex_validate,
-	gxv_morx_subtable_type2_ligatureTable_validate): Fix C++ compiler
-	errors.
-	(gxv_morx_subtable_type2_validate): Declare with FT_LOCAL_DEF.
-	Fix typo.
-
-	* gxvalid/gxvmorx4.c (gxv_morx_subtable_type4_validate): Declare
-	with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmorx5.c (gxv_morx_subtable_type5_insertionGlyph_load,
-	gxv_morx_subtable_type5_subtable_setup): Fix C++ compiler error.
-	(gxv_morx_subtable_type5_validate): Declare with FT_LOCAL_DEF.
-
-	* gxvalid/gxvmorx.c (gxv_morx_subtables_validate,
-	gxv_morx_validate): Improve trace message.
-
-	* gxvalid/gxvopbd.c (gxv_opbd_LookupFmt4_transit): Fix compiler
-	warnings.
-	(gxv_opbd_validate): Improve trace message.
-
-	* gxvalid/gxvprop.c: Decorate constants with `U' and `L' where
-	appropriate.
-	(gxv_prop_zero_advance_validate, gxv_prop_validate): Improve trace
-	message.
-
-	* gxvalid/gxvtrak.c (gxv_trak_trackTable_validate): Remove unused
-	parameter.  Update all callers.
-	(gxv_trak_validate): Improve trace message.
-
-	* rules.mk (GXV_DRV_H): Add gxvfeat.h.
-
-2005-09-01  Werner Lemberg  <wl@gnu.org>
-
-	* src/gxvalid/gxvbsln.c (GXV_BSLN_VALUE_EMPTY): Add `U'.
-
-	* src/gxvalid/gxmort1.c (GXV_MORT_SUBTABLE_TYPE1_HEADER_SIZE),
-	src/gxvalid/gxmort2.c (GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE): Fix
-	typo.
-
-	* src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
-	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx4.c,
-	src/gxvalid/gxvmorx5.c, src/gxvalid/gxvmort.c: Improve trace
-	messages.
-	Decorate constants with `U' and `L' where appropriate.
-	Fix compiler warnings.
-
-2005-08-31  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgload.c (load_truetype_glyph): Fix typo.
-
-	* src/gxvalid/gxvbsln.c (gxv_bsln_validate): Fix trace message.
-
-	* src/gxvalid/gxvcommn.c (gxv_odtect_add_range): Use `const'.
-
-	* src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c,
-	src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmod.c,
-	src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
-	src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
-	src/gxvalid/gxvmort5.c, src/gxvalid/gxvmort.c: Improve trace
-	messages.
-	Decorate constants with `U' and `L' where appropriate.
-	Fix compiler warnings.
-
-2005-08-30  Werner Lemberg  <wl@gnu.org>
-
-	* src/gxvalid/README: Revised.
-	* src/gxvalid/gxvbsln.c: Fix compiler warnings.
-	* src/gxvalid/gxvcommn.c: Fix compiler warnings.
-	(gxv_XEntryTable_validate, gxv_compare_ranges): Remove unused
-	parameter.  Update all callers.
-	Improve trace messages.
-	Some formatting.
-
-2005-08-29  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/freetype.h, include/freetype/ftchapters.h: Add
-	a preliminary section with some explanations about user allocation.
-
-	* src/tools/docmaker/tohtml.py (HtmlFormatter.section_enter):
-	Don't abort if there are no data types, functions, etc., in a
-	section.
-	Print synopsis only if we have a data type, function, etc.
-
-	* docs/INSTALL.ANY, docs/INSTALL, docs/INSTALL.UNX, docs/CUSTOMIZE,
-	docs/INSTALL.GNU, docs/TRUETYPE, docs/DEBUG, docs/UPGRADE.UNX,
-	docs/VERSION.DLL, docs/formats.txt: Revised, formatted.
-
-2005-08-28  George Williams  <gww@silcom.com>
-
-	* src/truetype/ttgload.c [TT_MAX_COMPOSITE_RECURSE]: Removed.
-	(load_truetype_glyph): Limit recursion depth by `maxComponentDepth'.
-
-2005-08-25  J. Ali Harlow  <ali@avrc.city.ac.uk>
-
-	* builds/unix/freetype2.in (CFlags): Add missing directory.
-
-2005-08-24  Werner Lemberg  <wl@gnu.org>
-
-	* docs/CHANGES: Mention gxvalid module.
-
-2005-08-23  Werner Lemberg  <wl@gnu.org>
-
-	* src/autofit/aflatin.c (af_latin_metrics_scale): Initialize
-	render mode properly.  Reported by chris@dokein.co.uk.
-
-2005-08-23  suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
-
-	Add gxvalid module to validate TrueType GX/AAT tables.
-
-	Modifications on existing files:
-
-	* Jamfile: Register gxvalid module.
-	* src/base/Jamfile: Register ftgxval.c.
-	* src/base/rule.mk: Register ftgxval.c.
-	* docs/INSTALL.ANY: Register gxvalid/gxvalid.c.
-
-	* include/freetype/config/ftheader.h (FT_GX_VALIDATE_H): New macro
-	to include gxvalid header file.
-	* include/freetype/config/ftmodule.h: Register gxv_module_class.
-
-	* include/freetype/ftchapters.h: Add comment about gx_validation.
-	* include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX
-	to FT_VALIDATE_OTXXX to co-exist with gxvalid.
-	* include/freetype/tttags.h: Add tags for TrueType GX/AAT tables.
-
-	* include/freetype/internal/ftserv.h (FT_SERVICE_GX_VALIDATE_H): New
-	macro for gxvalid service.
-	* include/freetype/internal/fttrace.h: Add trace facilities for
-	gxvalid.
-
-	New files on existing directories:
-
-	* include/freetype/internal/services/svgxval.h: Registration of
-	validation service for TrueType GX/AAT and classic kern table.
-	* include/freetype/ftgxval.h: Public API definition to use gxvalid.
-	* src/base/ftgxval.c: Public API of gxvalid.
-
-	New files under src/gxvalid/:
-
-	* src/gxvalid/Jamfile src/gxvalid/README src/gxvalid/module.mk
-	src/gxvalid/rules.mk src/gxvalid/gxvalid.c src/gxvalid/gxvalid.h
-	src/gxvalid/gxvbsln.c src/gxvalid/gxvcommn.c src/gxvalid/gxvcommn.h
-	src/gxvalid/gxverror.h src/gxvalid/gxvfeat.c src/gxvalid/gxvfgen.c
-	src/gxvalid/gxvjust.c src/gxvalid/gxvkern.c src/gxvalid/gxvlcar.c
-	src/gxvalid/gxvmod.c src/gxvalid/gxvmod.h src/gxvalid/gxvmort.c
-	src/gxvalid/gxvmort.h src/gxvalid/gxvmort0.c src/gxvalid/gxvmort1.c
-	src/gxvalid/gxvmort2.c src/gxvalid/gxvmort4.c src/gxvalid/gxvmort5.c
-	src/gxvalid/gxvmorx.c src/gxvalid/gxvmorx.h src/gxvalid/gxvmorx0.c
-	src/gxvalid/gxvmorx1.c src/gxvalid/gxvmorx2.c src/gxvalid/gxvmorx4.c
-	src/gxvalid/gxvmorx5.c src/gxvalid/gxvopbd.c src/gxvalid/gxvprop.c
-	src/gxvalid/gxvtrak.c: New files, gxvalid body.
-
-2005-08-21  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgload.c (TT_Load_Glyph): Only translate outline
-	to (0,0) if bit 1 of the `head' table isn't set.  This improves
-	rendering of buggy fonts.
-
-2005-08-20  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* src/truetype/ttdriver.c (Load_Glyph): Don't check the validity of
-	ttmetrics here.  TrueType fonts with only sbits always have
-	ttmetrics.valid set to false.
-
-	* src/truetype/ttgload.c (TT_Load_Glyph): Check that ttmetrics is
-	valid before loading outline glyph.
-
-	* src/cache/ftcimage.c (FTC_INode_New): Fix a memory leak.
-
-2005-08-20  Werner Lemberg  <wl@gnu.org>
-
-	* src/sfnt/ttload.c (tt_face_load_metrics_header): Ignore missing
-	`hhea' table for SFNT Mac fonts.  Change based on a patch by
-	mpsuzuki@hiroshima-u.ac.jp.
-
-2005-08-20  Masatake YAMATO  <jet@gyve.org>
-
-	* src/otvalid/otvmod.c (otv_validate): Use ft_validator_run instead
-	of ft_setjmp.
-
-2005-08-19  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgload.c (load_truetype_glyph): Fix compiler
-	warnings.
-
-2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Update copyright
-	messages.
-
-2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Remove original
-	TT_Done_Context and rename TT_Destroy_Context to TT_Done_Context
-	with slight changes.
-	Update all callers.
-	(TT_New_Context): Now takes TT_Driver argument directly.
-	Update all callers.
-
-	* src/truetype/ttobjs.h (tt_slot_init): New function.
-	* src/truetype/ttobjs.c (tt_driver_init): Initialize execution
-	context here.
-	(tt_slot_init): New function to create extra points for the internal
-	glyph loader.  We then use it directly, instead of face's glyph
-	loader, when loading glyph.
-
-	* src/truetype/ttdriver.c (tt_driver_class): Use tt_slot_init for
-	glyph slot initialization.
-	(Load_Glyph): Load flag dependencies are handled here.  Return error
-	if size is NULL.
-
-	* src/truetype/ttgload.c: Heavy cleanup and refactoring.
-	(org_to_cur): Removed.
-	(TT_Load_Simple_Glyph): Call FT_GlyphLoader_CheckPoints.
-	(TT_Hint_Glyph): New funcion to hint a zone, prepared by caller.
-	(TT_Process_Simple_Glyph): s/load/loader/.
-	Use loader->pp values instead of recalculation.
-	Use TT_Hint_Glyph.
-	No need to save/restore loader->stream before and after
-	TT_Vary_Get_Glyph_Deltas now.
-	(TT_LOADER_SET_PP): New macro to calculate and set the four phantom
-	points.
-	(load_truetype_glyph): Never set exec->glyphSize to 0.  This closes
-	Savannah bug #13107.
-	Forget glyph frame before calling TT_Process_Simple_Glyph.
-	Use TT_LOADER_SET_PP.
-	Scale all four phantom points.
-	Split off some functionality to ...
-	(TT_Process_Composite_Component, TT_Process_Composite_Glyph): These
-	new functions.
-	(TT_Load_Glyph): Set various fields of `glyph' here, not in
-	load_truetype_glyph and compute_glyph_metrics.
-	Split off some functionality to ...
-	(load_sbit_image, tt_loader_init): These new functions.
-	(compute_glyph_metrics): Call FT_Outline_Get_CBox.
-
-2005-08-08  Werner Lemberg  <wl@gnu.org>
-
-	* docs/INSTALL.ANY: Updated.
-
-2005-08-05  Werner Lemberg  <wl@gnu.org>
-
-	* src/cff/cffgload.c (cff_builder_close_contour),
-	src/psaux/psobjs.c (t1_builder_close_contour): Protect against
-	zero `outline' pointer.
-
-	* src/base/ftgloadr.c (FT_GlyphLoader_Add): Protect against zero
-	`loader' address.
-
-2005-08-03  Werner Lemberg  <wl@gnu.org>
-
-	* src/sfnt/sfdriver.c (sfnt_interface) [FT_OPTIMIZE_MEMORY]:
-	Reactivate pointers to tt_find_sbit_image and tt_load_sbit_metrics
-	to make X work again.
-
-2005-08-02  Werner Lemberg  <wl@gnu.org>
-
-	* src/otvalid/otvcommn.h: Remove dead code.
-
-2005-07-31  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* src/truetype/ttobjs.h (tt_size_run_fpgm, tt_size_run_prep): New
-	functions.
-
-	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): New
-	functions.
-	(tt_size_init): Add 4, instead of 2, (phantom) points to twilight
-	zone.
-	Move code that runs fpgm to tt_size_run_fpgm.
-	(Reset_Outline_Size): Move code that runs prep to tt_size_run_prep.
-	(tt_glyphzone_new): Allocate right size of arrays.
-	Set max_points and max_contours properly.
-
-2005-07-26  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* src/truetype/ttdriver.c (Set_Char_Sizes): Avoid unnecessary
-	computations and clean up.
-
-	* src/truetype/ttobjs.h (struct TT_SizeRec_): Comment on the
-	internal copy of metrics.
-
-2005-07-12  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/ftoutln.h (FT_Outline_Embolden): Fix prototype.
-	Reported by Xerxes.
-
-2005-07-04  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/internal/ftmemory.h (FT_REALLOC_ARRAY): Fix typo.
-	Reported by Brett Hutley.
-
-2005-06-30  David Turner  <david@freetype.org>
-
-	* src/sfnt/ftbitmap.c, src/truetype/ttgload.c, src/sfnt/ttcmap.c:
-	Removing compiler warnings (Visual C++ /W4).
-
-
-	Implement a work-around for broken C preprocessor in Visual C++ (it
-	has been confirmed by the MS developers that it is indeed a bug
-	which won't be fixed in the very near future).
-
-	* Jamfile (FT2_COMPONENTS): Include otvalid (again).
-
-	* src/otvalid/otvcommn.h (OTV_NAME, OTV_FUNC): New macros.
-	(OTV_NEST1, OTV_NEST2, OTV_NEST3): Use OTV_NAME and OTV_FUNC to
-	avoid argument expansion by argument prescan.
-	Append `Func' to all affected macros and change them to take just a
-	single argument.  Example: `AttachList' is renamed to
-	`AttachListFunc'.
-
-	* src/otvalid/otvgdef.c, src/otvalid/otvgpos.c,
-	src/otvalid/otvgsub.c, src/otvjstf.c: Append `Func' to macros
-	affected by the changes to OTV_NESTx and modify them to take just a
-	single argument.
-
-2005-06-20  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* include/freetype/internal/ftobjs.h, src/base/ftobjs.c: New function
-	ft_glyphslot_grid_fit_metrics.
-
-	* src/truetype/ttgload.c (compute_glyph_metrics): Use
-	ft_glyphslot_grid_fit_metrics.
-
-	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
-	(cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Use
-	ft_glyphslot_grid_fit_metrics.
-	FT_Outline_Get_CBox is called twice.
-
-	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Modify metrics to more
-	reasonable values when emboldening outline glyphs.  The theoretic
-	ones are unrealistic.
-
-2005-06-16  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* src/base/ftoutln.c (FT_Outline_Embolden): Strength should be
-	halved.
-
-	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Change the default
-	strength.
-	Don't increase slot->advance.y.
-
-2005-06-16  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 2.
-	(FREETYPE_PATCH): Set to 0.
-
-	* builds/unix/configure.ac (version_info): Set to 9:9:3.
-	Currently, we are still binary compatible.
-
-	* builds/win32/visualc/index.html,
-	builds/win32/visualc/freetype.dsp,
-	builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/.
-
-	* builds/freetype.mk (refdoc), README, Jamfile (RefDoc):
-	s/2.1.9/2.1.10/.
-
-	* docs/CHANGES, docs/VERSION.DLL: Updated.
-
-	* ChangeLog: Split off older entries into...
-	* ChangeLog.20, ChangeLog.21: These new files.
-
-2005-06-15  Kirill Smelkov  <kirr@mns.spb.ru>
-
-	The next release will be 2.2.0, so don't worry about source code
-	backwards compatibility.
-
-	* include/freetype/ftimage.h (FT_Outline_MoveToFunc,
-	FT_Outline_LineToFunc, FT_Outline_ConicToFunc,
-	FT_Outline_CubicToFunc, FT_SpanFunc, FT_Raster_RenderFunc),
-	include/freetype/ftrender.h (FT_Glyph_TransformFunc,
-	FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Decorate
-	parameters with `const' where appropriate.
-
-2005-06-15  Chia I Wu  <b90201047@ntu.edu.tw>
-
-	* src/sfnt/ttsbit.c (tt_face_load_sbit_image): Compute vertBearingY
-	to make glyphs centered vertically.
-
-	* src/truetype/ttgload.c (compute_glyph_metrics): Compute
-	vertBearingY to make glyphs centered vertically.
-	Fix some bugs in vertical metrics:
-
-	  . loader->pp3.y and loader->pp4.y are in 26.6 format, not in font
-	    units.
-	  . As we use the glyph's cbox to calculate the top bearing now
-	    there iss no need to adjust `top'.
-
-2005-06-15  Werner Lemberg  <wl@gnu.org>
-
-	* src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE): Use FT_UShort to be
-	in sync with OTV_OPTIONAL_OFFSET.  Reported by YAMATO Masatake.
-
-2005-06-13  Werner Lemberg  <wl@gnu.org>
-
-	* docs/release: Update.
-
-----------------------------------------------------------------------------
-
-Copyright 2005 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.
-
-
-Local Variables:
-version-control: never
-coding: latin-1
-End:
+2005-10-16  David Turner  <david@freetype.org>
+
+  * src/tools/apinames.c: adding new tool to extract public API
+  function names from header files
+
+2005-10-05  Werner Lemberg  <wl@gnu.org>
+
+	Add FT_FACE_FLAG_HINTER to indicate that a specific font driver has
+	a hinting engine of its own.
+
+	* include/freetype/freetype.h (FT_FACE_FLAG_HINTER): New macro.
+
+	* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
+	(cid_face_init), src/truetype/ttobjs.c (tt_face_init)
+	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER], src/type1/t1objs.c
+	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init)
+	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Update face flags.
+
+	* docs/CHANGES: Document it.
+
+2005-09-27  Werner Lemberg  <wl@gnu.org>
+
+	* builds/unix/freetype2.m4: Add license exception so that the file
+	can be used in any other autoconf script.
+
+2005-09-26  David Turner  <david@freetype.org>
+
+	* src/autofit/aflatin.c (af_latin_compute_stem_width): Fix bad
+	computation of the `vertical' flag, causing ugly things in LCD mode
+	and others.
+
+2005-09-23  David Turner  <david@freetype.org>
+
+	* src/autofit/aflatin.c (af_latin_hints_init): Fix a bug that
+	prevented internal hint mode bitflags from being computed correctly.
+
+	* src/base/Jamfile: Adding src/base/ftgxval.c.
+
+	* src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
+	src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c, src/gxvalid/gxvkern.c,
+	src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
+	src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
+	src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
+	src/gxvalid/gxvmort5.c, src/gxvalid/gxvmorx.c,
+	src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
+	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx5.c,
+	src/gxvalid/gxvopbd.c, src/gxvalid/gxvprop.c,
+	src/truetype/ttgload.c: Remove _many_ compiler warnings when
+	compiling with Visual C++ at maximum level (/W4).
+
+	* src/autofit/afangles.c (af_angle_atan): Replaced CORDIC-based
+	implementation with one using lookup tables.  This simple thing
+	speeds up glyph loading by 18%, according to ftbench!
+
+	* src/sfnt/sfdriver.c (sfnt_get_interface): Don't check for
+	`get_sfnt' and `load_sfnt' module interfaces.
+
+2005-09-22  Werner Lemberg  <wl@gnu.org>
+
+	* docs/CHANGES: Mention SING Glyphlet support.
+
+2005-09-22  David Turner  <david@freetype.org>
+
+	* src/base/Jamfile: Disable compilation of ftgxval module
+	temporarily.
+
+2005-09-19  David Somers  <dsomers@omz13.com>
+
+	* freetype2/src/sfnt/ttload.c (sfnt_dir_check): Modified to allow a
+	font to have no `head' table if tables `SING' and `META' are
+	present; this is to support `SING Glyphlet'.
+
+	`SING Glyphlet' is an extension to OpenType developed by Adobe
+	primarily to facilitate adding supplemental glyphs to an OpenType
+	font (with emphasis on, but not necessariy limited to, gaiji to a
+	CJK font).  A SING Glyphlet Font is an OpenType font that contains
+	the outline(s), either in a `glyf' or `CFF' table, for a glyph;
+	`cmap', `BASE', and `GSUB' tables are present with the same format
+	and functionaliy as a regular OpenType font; there are no `name',
+	`head', `OS/2', and `post' tables; there are two new tables, `SING'
+	which contains details about the glyphlet, and `META' which contains
+	metadata.
+
+	Further information on the SING Glyphlet format can be found at:
+
+	  http://www.adobe.com/products/indesign/sing_gaiji.html
+
+	* freetype2/include/freetype/ttags.h (TTAG_SING, TTAG_META): New
+	macros for the OpenType tables `SING' and `META'.  These two tables
+	are used in SING Glyphlet Format fonts.
+
+2005-09-09  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/sfobjs.c (sfnt_load_face): Reactivate code to set
+	FT_FACE_FLAG_KERNING which has been commented out erroneously.
+
+	* docs/CHANGES: Document it.
+
+2005-09-05  Werner Lemberg  <wl@gnu.org>
+
+	Fixes for `make multi' and using C++ compiler.
+
+	* gxvalid/gxvcommn.c (gxv_set_length_by_ushort_offset,
+	gxv_set_length_by_ulong_offset, gxv_array_getlimits_byte,
+	gxv_array_getlimits_ushort): Declare with FT_LOCAL_DEF.
+	(gxv_compare_ranges): Make it static.
+	(gxv_LookupTable_fmt0_validate, gxv_LookupTable_fmt2_validate,
+	gxv_LookupTable_fmt4_validate, gxv_LookupTable_fmt6_validate,
+	gxv_LookupTable_fmt8_validate, gxv_LookupTable_validate): Improve
+	trace messages.
+	(gxv_StateArray_validate, gxv_XStateArray_validate): s/class/clazz/.
+	(GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
+	GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Move to
+	gxvcommn.h.
+
+	* gxvalid/gxvcommn.h: Add prototypes for
+	gxv_StateTable_subtable_setup, gxv_XStateTable_subtable_setup,
+	gxv_XStateTable_validate, gxv_array_getlimits_byte,
+	gxv_array_getlimits_ushort, gxv_set_length_by_ushort_offset,
+	gxv_set_length_by_ulong_offset, gxv_odtect_add_range,
+	gxv_odtect_validate.
+	(GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
+	GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Moved from
+	gxvcommn.c.
+
+	* src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
+	gxv_bsln_parts_fmt1_validate): Improve trace messages.
+
+	* gxvalid/gxvfeat.c: Split off predefined registry stuff to...
+	* gxvalid/gxvfeat.h: New file.
+
+	* gxvalid/gxvjust.c (gxv_just_wdc_entry_validate): Improve trace
+	message.
+
+	* gxvalid/gxvkern.c (GXV_kern_Dialect): Add KERN_DIALECT_UNKNOWN.
+	(gxv_kern_subtable_fmt1_valueTable_load,
+	gxv_kern_subtable_fmt1_subtable_setup,
+	gxv_kern_subtable_fmt1_entry_validate): Fix C++ compiler errors.
+	(gxv_kern_coverage_validate): Use KERN_DIALECT_UNKWOWN.
+	Improve trace message.
+	(gxv_kern_validate_generic): Fix C++ compiler error.
+	Improve trace message.
+	(gxv_kern_validate_classic): Fix C++ compiler error.
+
+	* gxvalid/gxvmort0.c (gxv_mort_subtable_type0_validate): Declare
+	with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmort1.c
+	(gxv_mort_subtable_type1_substitutionTable_load,
+	gxv_mort_subtable_type1_subtable_setup): Fix C++ compiler errors.
+	(gxv_mort_subtable_type1_substTable_validate): Improve trace
+	message.
+	(gxv_mort_subtable_type1_validate): Declare with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmort2.c (gxv_mort_subtable_type2_opttable_load,
+	gxv_mort_subtable_type2_subtable_setup,
+	gxv_mort_subtable_type2_ligActionOffset_validate,
+	gxv_mort_subtable_type2_ligatureTable_validate): Fix C++ compiler
+	errors.
+	(gxv_mort_subtable_type2_validate): Declare with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmort4.c (gxv_mort_subtable_type4_validate): Declare
+	with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup,
+	gxv_mort_subtable_type5_InsertList_validate): Fix C++ compiler
+	errors.
+	(gxv_mort_subtable_type5_validate): Declare with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmort.c: Include gxvfeat.h.
+	(gxv_mort_featurearray_validate, gxv_mort_coverage_validate):
+	Declare with FT_LOCAL_DEF.
+	(gxv_mort_subtables_validate, gxv_mort_validate): Improve trace
+	messages.
+
+	* gxvalid/gxvmort.h (gxv_mort_feature_validate): Remove.
+
+	* gxvalid/gxvmorx0.c (gxv_morx_subtable_type0_validate): Declare
+	with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmorx1.c
+	(gxv_morx_subtable_type1_substitutionTable_load,
+	gxv_morx_subtable_type1_subtable_setup,
+	gxv_morx_subtable_type1_entry_validate,
+	gxv_morx_subtable_type1_substitutionTable_validate): Fix C++
+	compiler errors.
+	(gxv_morx_subtable_type1_validate): Declare with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmorx2.c (gxv_morx_subtable_type2_opttable_load,
+	gxv_morx_subtable_type2_subtable_setup,
+	gxv_morx_subtable_type2_ligActionIndex_validate,
+	gxv_morx_subtable_type2_ligatureTable_validate): Fix C++ compiler
+	errors.
+	(gxv_morx_subtable_type2_validate): Declare with FT_LOCAL_DEF.
+	Fix typo.
+
+	* gxvalid/gxvmorx4.c (gxv_morx_subtable_type4_validate): Declare
+	with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmorx5.c (gxv_morx_subtable_type5_insertionGlyph_load,
+	gxv_morx_subtable_type5_subtable_setup): Fix C++ compiler error.
+	(gxv_morx_subtable_type5_validate): Declare with FT_LOCAL_DEF.
+
+	* gxvalid/gxvmorx.c (gxv_morx_subtables_validate,
+	gxv_morx_validate): Improve trace message.
+
+	* gxvalid/gxvopbd.c (gxv_opbd_LookupFmt4_transit): Fix compiler
+	warnings.
+	(gxv_opbd_validate): Improve trace message.
+
+	* gxvalid/gxvprop.c: Decorate constants with `U' and `L' where
+	appropriate.
+	(gxv_prop_zero_advance_validate, gxv_prop_validate): Improve trace
+	message.
+
+	* gxvalid/gxvtrak.c (gxv_trak_trackTable_validate): Remove unused
+	parameter.  Update all callers.
+	(gxv_trak_validate): Improve trace message.
+
+	* rules.mk (GXV_DRV_H): Add gxvfeat.h.
+
+2005-09-01  Werner Lemberg  <wl@gnu.org>
+
+	* src/gxvalid/gxvbsln.c (GXV_BSLN_VALUE_EMPTY): Add `U'.
+
+	* src/gxvalid/gxmort1.c (GXV_MORT_SUBTABLE_TYPE1_HEADER_SIZE),
+	src/gxvalid/gxmort2.c (GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE): Fix
+	typo.
+
+	* src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
+	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx4.c,
+	src/gxvalid/gxvmorx5.c, src/gxvalid/gxvmort.c: Improve trace
+	messages.
+	Decorate constants with `U' and `L' where appropriate.
+	Fix compiler warnings.
+
+2005-08-31  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgload.c (load_truetype_glyph): Fix typo.
+
+	* src/gxvalid/gxvbsln.c (gxv_bsln_validate): Fix trace message.
+
+	* src/gxvalid/gxvcommn.c (gxv_odtect_add_range): Use `const'.
+
+	* src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c,
+	src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmod.c,
+	src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
+	src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
+	src/gxvalid/gxvmort5.c, src/gxvalid/gxvmort.c: Improve trace
+	messages.
+	Decorate constants with `U' and `L' where appropriate.
+	Fix compiler warnings.
+
+2005-08-30  Werner Lemberg  <wl@gnu.org>
+
+	* src/gxvalid/README: Revised.
+	* src/gxvalid/gxvbsln.c: Fix compiler warnings.
+	* src/gxvalid/gxvcommn.c: Fix compiler warnings.
+	(gxv_XEntryTable_validate, gxv_compare_ranges): Remove unused
+	parameter.  Update all callers.
+	Improve trace messages.
+	Some formatting.
+
+2005-08-29  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/freetype.h, include/freetype/ftchapters.h: Add
+	a preliminary section with some explanations about user allocation.
+
+	* src/tools/docmaker/tohtml.py (HtmlFormatter.section_enter):
+	Don't abort if there are no data types, functions, etc., in a
+	section.
+	Print synopsis only if we have a data type, function, etc.
+
+	* docs/INSTALL.ANY, docs/INSTALL, docs/INSTALL.UNX, docs/CUSTOMIZE,
+	docs/INSTALL.GNU, docs/TRUETYPE, docs/DEBUG, docs/UPGRADE.UNX,
+	docs/VERSION.DLL, docs/formats.txt: Revised, formatted.
+
+2005-08-28  George Williams  <gww@silcom.com>
+
+	* src/truetype/ttgload.c [TT_MAX_COMPOSITE_RECURSE]: Removed.
+	(load_truetype_glyph): Limit recursion depth by `maxComponentDepth'.
+
+2005-08-25  J. Ali Harlow  <ali@avrc.city.ac.uk>
+
+	* builds/unix/freetype2.in (CFlags): Add missing directory.
+
+2005-08-24  Werner Lemberg  <wl@gnu.org>
+
+	* docs/CHANGES: Mention gxvalid module.
+
+2005-08-23  Werner Lemberg  <wl@gnu.org>
+
+	* src/autofit/aflatin.c (af_latin_metrics_scale): Initialize
+	render mode properly.  Reported by chris@dokein.co.uk.
+
+2005-08-23  suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+	Add gxvalid module to validate TrueType GX/AAT tables.
+
+	Modifications on existing files:
+
+	* Jamfile: Register gxvalid module.
+	* src/base/Jamfile: Register ftgxval.c.
+	* src/base/rule.mk: Register ftgxval.c.
+	* docs/INSTALL.ANY: Register gxvalid/gxvalid.c.
+
+	* include/freetype/config/ftheader.h (FT_GX_VALIDATE_H): New macro
+	to include gxvalid header file.
+	* include/freetype/config/ftmodule.h: Register gxv_module_class.
+
+	* include/freetype/ftchapters.h: Add comment about gx_validation.
+	* include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX
+	to FT_VALIDATE_OTXXX to co-exist with gxvalid.
+	* include/freetype/tttags.h: Add tags for TrueType GX/AAT tables.
+
+	* include/freetype/internal/ftserv.h (FT_SERVICE_GX_VALIDATE_H): New
+	macro for gxvalid service.
+	* include/freetype/internal/fttrace.h: Add trace facilities for
+	gxvalid.
+
+	New files on existing directories:
+
+	* include/freetype/internal/services/svgxval.h: Registration of
+	validation service for TrueType GX/AAT and classic kern table.
+	* include/freetype/ftgxval.h: Public API definition to use gxvalid.
+	* src/base/ftgxval.c: Public API of gxvalid.
+
+	New files under src/gxvalid/:
+
+	* src/gxvalid/Jamfile src/gxvalid/README src/gxvalid/module.mk
+	src/gxvalid/rules.mk src/gxvalid/gxvalid.c src/gxvalid/gxvalid.h
+	src/gxvalid/gxvbsln.c src/gxvalid/gxvcommn.c src/gxvalid/gxvcommn.h
+	src/gxvalid/gxverror.h src/gxvalid/gxvfeat.c src/gxvalid/gxvfgen.c
+	src/gxvalid/gxvjust.c src/gxvalid/gxvkern.c src/gxvalid/gxvlcar.c
+	src/gxvalid/gxvmod.c src/gxvalid/gxvmod.h src/gxvalid/gxvmort.c
+	src/gxvalid/gxvmort.h src/gxvalid/gxvmort0.c src/gxvalid/gxvmort1.c
+	src/gxvalid/gxvmort2.c src/gxvalid/gxvmort4.c src/gxvalid/gxvmort5.c
+	src/gxvalid/gxvmorx.c src/gxvalid/gxvmorx.h src/gxvalid/gxvmorx0.c
+	src/gxvalid/gxvmorx1.c src/gxvalid/gxvmorx2.c src/gxvalid/gxvmorx4.c
+	src/gxvalid/gxvmorx5.c src/gxvalid/gxvopbd.c src/gxvalid/gxvprop.c
+	src/gxvalid/gxvtrak.c: New files, gxvalid body.
+
+2005-08-21  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Only translate outline
+	to (0,0) if bit 1 of the `head' table isn't set.  This improves
+	rendering of buggy fonts.
+
+2005-08-20  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* src/truetype/ttdriver.c (Load_Glyph): Don't check the validity of
+	ttmetrics here.  TrueType fonts with only sbits always have
+	ttmetrics.valid set to false.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Check that ttmetrics is
+	valid before loading outline glyph.
+
+	* src/cache/ftcimage.c (FTC_INode_New): Fix a memory leak.
+
+2005-08-20  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/ttload.c (tt_face_load_metrics_header): Ignore missing
+	`hhea' table for SFNT Mac fonts.  Change based on a patch by
+	mpsuzuki@hiroshima-u.ac.jp.
+
+2005-08-20  Masatake YAMATO  <jet@gyve.org>
+
+	* src/otvalid/otvmod.c (otv_validate): Use ft_validator_run instead
+	of ft_setjmp.
+
+2005-08-19  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgload.c (load_truetype_glyph): Fix compiler
+	warnings.
+
+2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Update copyright
+	messages.
+
+2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Remove original
+	TT_Done_Context and rename TT_Destroy_Context to TT_Done_Context
+	with slight changes.
+	Update all callers.
+	(TT_New_Context): Now takes TT_Driver argument directly.
+	Update all callers.
+
+	* src/truetype/ttobjs.h (tt_slot_init): New function.
+	* src/truetype/ttobjs.c (tt_driver_init): Initialize execution
+	context here.
+	(tt_slot_init): New function to create extra points for the internal
+	glyph loader.  We then use it directly, instead of face's glyph
+	loader, when loading glyph.
+
+	* src/truetype/ttdriver.c (tt_driver_class): Use tt_slot_init for
+	glyph slot initialization.
+	(Load_Glyph): Load flag dependencies are handled here.  Return error
+	if size is NULL.
+
+	* src/truetype/ttgload.c: Heavy cleanup and refactoring.
+	(org_to_cur): Removed.
+	(TT_Load_Simple_Glyph): Call FT_GlyphLoader_CheckPoints.
+	(TT_Hint_Glyph): New funcion to hint a zone, prepared by caller.
+	(TT_Process_Simple_Glyph): s/load/loader/.
+	Use loader->pp values instead of recalculation.
+	Use TT_Hint_Glyph.
+	No need to save/restore loader->stream before and after
+	TT_Vary_Get_Glyph_Deltas now.
+	(TT_LOADER_SET_PP): New macro to calculate and set the four phantom
+	points.
+	(load_truetype_glyph): Never set exec->glyphSize to 0.  This closes
+	Savannah bug #13107.
+	Forget glyph frame before calling TT_Process_Simple_Glyph.
+	Use TT_LOADER_SET_PP.
+	Scale all four phantom points.
+	Split off some functionality to ...
+	(TT_Process_Composite_Component, TT_Process_Composite_Glyph): These
+	new functions.
+	(TT_Load_Glyph): Set various fields of `glyph' here, not in
+	load_truetype_glyph and compute_glyph_metrics.
+	Split off some functionality to ...
+	(load_sbit_image, tt_loader_init): These new functions.
+	(compute_glyph_metrics): Call FT_Outline_Get_CBox.
+
+2005-08-08  Werner Lemberg  <wl@gnu.org>
+
+	* docs/INSTALL.ANY: Updated.
+
+2005-08-05  Werner Lemberg  <wl@gnu.org>
+
+	* src/cff/cffgload.c (cff_builder_close_contour),
+	src/psaux/psobjs.c (t1_builder_close_contour): Protect against
+	zero `outline' pointer.
+
+	* src/base/ftgloadr.c (FT_GlyphLoader_Add): Protect against zero
+	`loader' address.
+
+2005-08-03  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/sfdriver.c (sfnt_interface) [FT_OPTIMIZE_MEMORY]:
+	Reactivate pointers to tt_find_sbit_image and tt_load_sbit_metrics
+	to make X work again.
+
+2005-08-02  Werner Lemberg  <wl@gnu.org>
+
+	* src/otvalid/otvcommn.h: Remove dead code.
+
+2005-07-31  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* src/truetype/ttobjs.h (tt_size_run_fpgm, tt_size_run_prep): New
+	functions.
+
+	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): New
+	functions.
+	(tt_size_init): Add 4, instead of 2, (phantom) points to twilight
+	zone.
+	Move code that runs fpgm to tt_size_run_fpgm.
+	(Reset_Outline_Size): Move code that runs prep to tt_size_run_prep.
+	(tt_glyphzone_new): Allocate right size of arrays.
+	Set max_points and max_contours properly.
+
+2005-07-26  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* src/truetype/ttdriver.c (Set_Char_Sizes): Avoid unnecessary
+	computations and clean up.
+
+	* src/truetype/ttobjs.h (struct TT_SizeRec_): Comment on the
+	internal copy of metrics.
+
+2005-07-12  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/ftoutln.h (FT_Outline_Embolden): Fix prototype.
+	Reported by Xerxes.
+
+2005-07-04  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/internal/ftmemory.h (FT_REALLOC_ARRAY): Fix typo.
+	Reported by Brett Hutley.
+
+2005-06-30  David Turner  <david@freetype.org>
+
+	* src/sfnt/ftbitmap.c, src/truetype/ttgload.c, src/sfnt/ttcmap.c:
+	Removing compiler warnings (Visual C++ /W4).
+
+
+	Implement a work-around for broken C preprocessor in Visual C++ (it
+	has been confirmed by the MS developers that it is indeed a bug
+	which won't be fixed in the very near future).
+
+	* Jamfile (FT2_COMPONENTS): Include otvalid (again).
+
+	* src/otvalid/otvcommn.h (OTV_NAME, OTV_FUNC): New macros.
+	(OTV_NEST1, OTV_NEST2, OTV_NEST3): Use OTV_NAME and OTV_FUNC to
+	avoid argument expansion by argument prescan.
+	Append `Func' to all affected macros and change them to take just a
+	single argument.  Example: `AttachList' is renamed to
+	`AttachListFunc'.
+
+	* src/otvalid/otvgdef.c, src/otvalid/otvgpos.c,
+	src/otvalid/otvgsub.c, src/otvjstf.c: Append `Func' to macros
+	affected by the changes to OTV_NESTx and modify them to take just a
+	single argument.
+
+2005-06-20  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* include/freetype/internal/ftobjs.h, src/base/ftobjs.c: New function
+	ft_glyphslot_grid_fit_metrics.
+
+	* src/truetype/ttgload.c (compute_glyph_metrics): Use
+	ft_glyphslot_grid_fit_metrics.
+
+	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
+	(cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Use
+	ft_glyphslot_grid_fit_metrics.
+	FT_Outline_Get_CBox is called twice.
+
+	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Modify metrics to more
+	reasonable values when emboldening outline glyphs.  The theoretic
+	ones are unrealistic.
+
+2005-06-16  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* src/base/ftoutln.c (FT_Outline_Embolden): Strength should be
+	halved.
+
+	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Change the default
+	strength.
+	Don't increase slot->advance.y.
+
+2005-06-16  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 2.
+	(FREETYPE_PATCH): Set to 0.
+
+	* builds/unix/configure.ac (version_info): Set to 9:9:3.
+	Currently, we are still binary compatible.
+
+	* builds/win32/visualc/index.html,
+	builds/win32/visualc/freetype.dsp,
+	builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/.
+
+	* builds/freetype.mk (refdoc), README, Jamfile (RefDoc):
+	s/2.1.9/2.1.10/.
+
+	* docs/CHANGES, docs/VERSION.DLL: Updated.
+
+	* ChangeLog: Split off older entries into...
+	* ChangeLog.20, ChangeLog.21: These new files.
+
+2005-06-15  Kirill Smelkov  <kirr@mns.spb.ru>
+
+	The next release will be 2.2.0, so don't worry about source code
+	backwards compatibility.
+
+	* include/freetype/ftimage.h (FT_Outline_MoveToFunc,
+	FT_Outline_LineToFunc, FT_Outline_ConicToFunc,
+	FT_Outline_CubicToFunc, FT_SpanFunc, FT_Raster_RenderFunc),
+	include/freetype/ftrender.h (FT_Glyph_TransformFunc,
+	FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Decorate
+	parameters with `const' where appropriate.
+
+2005-06-15  Chia I Wu  <b90201047@ntu.edu.tw>
+
+	* src/sfnt/ttsbit.c (tt_face_load_sbit_image): Compute vertBearingY
+	to make glyphs centered vertically.
+
+	* src/truetype/ttgload.c (compute_glyph_metrics): Compute
+	vertBearingY to make glyphs centered vertically.
+	Fix some bugs in vertical metrics:
+
+	  . loader->pp3.y and loader->pp4.y are in 26.6 format, not in font
+	    units.
+	  . As we use the glyph's cbox to calculate the top bearing now
+	    there iss no need to adjust `top'.
+
+2005-06-15  Werner Lemberg  <wl@gnu.org>
+
+	* src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE): Use FT_UShort to be
+	in sync with OTV_OPTIONAL_OFFSET.  Reported by YAMATO Masatake.
+
+2005-06-13  Werner Lemberg  <wl@gnu.org>
+
+	* docs/release: Update.
+
+----------------------------------------------------------------------------
+
+Copyright 2005 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.
+
+
+Local Variables:
+version-control: never
+coding: latin-1
+End:
diff --git a/Jamfile b/Jamfile
index 40622a34f..d0e67f2cd 100644
--- a/Jamfile
+++ b/Jamfile
@@ -148,6 +148,27 @@ HDRMACRO  [ FT2_SubDir  include freetype internal internal.h ] ;
 #
 SubInclude  FT2_TOP $(FT2_SRC_DIR) ;
 
+# handle the generation of the "ftexport.sym" file which contain the list
+# of exported symbols. This can be used on Unix by libtool
+#
+SubInclude FT2_TOP $(FT2_SRC_DIR) tools ;
+
+rule GenExportSymbols
+{
+  local  headers = [ Glob $(2) : *.h ] ;
+
+  APINAMES on $(1) = apinames$(SUFEXE) ;
+
+  Depends            $(1) : $(headers) ;
+  GenExportSymbols1  $(1) : $(headers) ;
+}
+
+actions GenExportSymbols1 bind APINAMES
+{
+  $(APINAMES) $(2) > $(1)
+}
+
+GenExportSymbols  ftexport.sym : include/freetype include/freetype/cache ;
 
 # Test files (hinter debugging).  Only used by FreeType developers.
 #
diff --git a/src/tools/apinames.c b/src/tools/apinames.c
new file mode 100644
index 000000000..e26b6c612
--- /dev/null
+++ b/src/tools/apinames.c
@@ -0,0 +1,319 @@
+/* this little program is used to parse the FreeType headers and
+ * find the declaration of all public API. This is easy, because
+ * they all look like the following:
+ *
+ *   FT_EXPORT( return_type )
+ *   function_name( function arguments );
+ *
+ * you must pass it the list of header files as arguments, wildcards
+ * accepted if you're using GCC on Windows
+ *
+ * Author: David Turner
+ *
+ * This code is explicitely placed in the public domain
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#define  PROGRAM_NAME     "apinames"
+#define  PROGRAM_VERSION  "0.1"
+
+#define  LINEBUFF_SIZE  1024
+
+static void
+panic( const char*  message )
+{
+  fprintf( stderr, "PANIC: %s\n", message );
+  exit(2);
+}
+
+
+typedef struct
+{
+  char*         name;
+  unsigned int  hash;
+
+} NameRec, *Name;
+
+static Name  the_names;
+static int   num_names;
+static int   max_names;
+
+static void
+names_add( const char*  name,
+           const char*  end )
+{
+  int   nn, len, h;
+  Name  nm;
+
+  if ( end <= name )
+    return;
+
+  /* compute hash value */
+  len = (int)(end - name);
+  h   = 0;
+  for ( nn = 0; nn < len; nn++ )
+    h = h*33 + name[nn];
+
+  /* check for an pre-existing name */
+  for ( nn = 0; nn < num_names; nn++ )
+  {
+    nm = the_names + nn;
+
+    if ( nm->hash                      == h &&
+         memcmp( name, nm->name, len ) == 0 &&
+         nm->name[len]                 == 0 )
+      return;
+  }
+
+  /* add new name */
+  if ( num_names >= max_names )
+  {
+    max_names += (max_names >> 1) + 4;
+    the_names  = realloc( the_names, sizeof(the_names[0])*max_names );
+    if ( the_names == NULL )
+      panic( "not enough memory" );
+  }
+  nm = &the_names[num_names++];
+
+  nm->hash = h;
+  nm->name = malloc( len+1 );
+  if ( nm->name == NULL )
+    panic( "not enough memory" );
+
+  memcpy( nm->name, name, len );
+  nm->name[len] = 0;
+}
+
+
+static int
+name_compare( const void*  name1,
+              const void*  name2 )
+{
+  Name  n1 = (Name)name1;
+  Name  n2 = (Name)name2;
+
+  return strcmp( n1->name, n2->name );
+}
+
+static void
+names_sort( void )
+{
+  qsort( the_names, (size_t)num_names, sizeof(the_names[0]), name_compare );
+}
+
+static void
+names_dump( FILE*  out )
+{
+  int  nn;
+
+  for ( nn = 0; nn < num_names; nn++ )
+    fprintf( out, "%s\n", the_names[nn].name );
+}
+
+
+static void
+names_dump_windef( FILE*  out )
+{
+  int  nn;
+
+ /* note that we assume that __cdecl was used when compiling the
+  * DLL object files.
+  */
+  fprintf( out, "DESCRIPTION  FreeType 2 DLL\n" );
+  fprintf( out, "EXPORTS\n" );
+  for ( nn = 0; nn < num_names; nn++ )
+    fprintf( out, "  %s\n", the_names[nn].name );
+}
+
+
+/* states of the line parser */
+
+typedef enum
+{
+  STATE_START = 0,  /* waiting for FT_EXPORT keyword and return type */
+  STATE_TYPE,       /* type was read, waiting for function name      */
+
+} State;
+
+static int
+read_header_file( FILE*  file, int  verbose )
+{
+  static char  buff[ LINEBUFF_SIZE+1 ];
+  State        state = STATE_START;
+
+  while ( !feof( file ) )
+  {
+    char*  p;
+
+    if ( !fgets( buff, LINEBUFF_SIZE, file ) )
+      break;
+
+    p = buff;
+
+    while ( *p && (*p == ' ' || *p == '\\') )  /* skip leading whitespace */
+      p++;
+
+    if ( *p == '\n' || *p == '\r' )  /* skip empty lines */
+      continue;
+
+    switch ( state )
+    {
+      case STATE_START:
+        {
+          if ( memcmp( p, "FT_EXPORT(", 10 ) != 0 )
+            break;
+
+          p += 10;
+          for (;;)
+          {
+            if ( *p == 0 || *p == '\n' || *p == '\r' )
+              goto NextLine;
+
+            if ( *p == ')' )
+            {
+              p++;
+              break;
+            }
+
+            p++;
+          }
+
+          state = STATE_TYPE;
+
+         /* sometimes, the name is just after the FT_EXPORT(...), so
+          * skip whitespace, and fall-through if we find an alphanumeric
+          * character
+          */
+          while ( *p == ' ' || *p == '\t' )
+            p++;
+
+          if ( !isalpha(*p) )
+            break;
+        }
+        /* fall-through */
+
+      case STATE_TYPE:
+        {
+          char*   name = p;
+          size_t  func_len;
+
+          while ( isalpha(*p) || *p == '_' )
+            p++;
+
+          if ( p > name )
+          {
+            if ( verbose )
+              fprintf( stderr, ">>> %.*s\n", p-name, name );
+
+            names_add( name, p );
+          }
+
+          state = STATE_START;
+        }
+        break;
+
+      default:
+        ;
+    }
+
+  NextLine:
+    ;
+  }
+
+  return 0;
+}
+
+
+static void
+usage( void )
+{
+  fprintf( stderr,
+           "%s %s: extract FreeType API names from header files\n\n"
+           "this program is used to extract the list of public FreeType API\n"
+           "functions. It receives the list of header files as argument and\n"
+           "generates a sorted list of unique identifiers\n\n"
+
+           "usage: %s header1 [options] [header2 ...]\n\n"
+
+           "options:   -  : parse the content of stdin, ignore arguments\n"
+           "           -v : verbose mode\n",
+           "           -w : output windows .DEF file\n"
+           ,
+           PROGRAM_NAME,
+           PROGRAM_VERSION,
+           PROGRAM_NAME
+           );
+  exit(1);
+}
+
+
+int  main( int argc, const char* const*  argv )
+{
+  int  from_stdin = 0;
+  int  verbose = 0;
+  int  do_win_def = 0;
+
+  if ( argc < 2 )
+    usage();
+
+  /* '-' used as a single argument means read source file from stdin */
+  while ( argc > 1 && argv[1][0] == '-' )
+  {
+    switch ( argv[1][1] )
+    {
+      case 'v':
+        verbose = 1;
+        break;
+
+      case 'w':
+        do_win_def = 1;
+        break;
+
+      case 0:
+        from_stdin = 1;
+        break;
+
+      default:
+        usage();
+    }
+
+    argc--;
+    argv++;
+  }
+
+  if ( from_stdin )
+  {
+    read_header_file( stdin, verbose );
+  }
+  else
+  {
+    for ( --argc, argv++; argc > 0; argc--, argv++ )
+    {
+      FILE*  file = fopen( argv[0], "rb" );
+
+      if ( file == NULL )
+        fprintf( stderr, "unable to open '%s'\n", argv[0] );
+      else
+      {
+        if ( verbose )
+          fprintf( stderr, "opening '%s'\n", argv[0] );
+
+        read_header_file( file, verbose );
+        fclose( file );
+      }
+    }
+  }
+
+  if ( num_names == 0 )
+    panic( "could not find exported functions !!\n" );
+
+  names_sort();
+
+  if ( do_win_def )
+    names_dump_windef( stdout );
+  else
+    names_dump( stdout );
+
+  return 0;
+}