2005-06-08  Werner Lemberg  <wl@gnu.org>


	* Version 2.1.10 released.
	==========================


	* src/pcf/readme: Renamed to...
	* src/pcf/README: This.

2005-06-07  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/*: Added copyright notes, reworked some comments.

2005-06-05  Werner Lemberg  <wl@gnu.org>

	* Add copyright notices to all files which don't have one.

	* docs/license.txt: Renamed to...
	* docs/LICENSE.TXT: This.
	* docs/FTL.txt: Renamed to...
	* docs/FTL.TXT: This.
	* docs/GPL.txt: Renamed to...
	* docs/GPL.TXT: This.

	* docs/PATENTS: Slightly reworded.  Suggested by Sylvain Beucler
	<beuc@gnu.org>.

2005-06-04  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftimage.h (FT_Outline_MoveToFunc,
	FT_Outline_LineToFunc, FT_Outline_ConicToFunc,
	FT_Outline_CubicToFunc, FT_Raster_RenderFunc),
	include/freetype/ftrender.h (FT_Glyph_TransformFunc,
	FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Don't use
	`const' to stay compatible with FreeType 2.1.9.

2005-06-01  Adam D. Moss  <adam@gimp.org>

	* src/base/ftstroke.c (ft_stroker_inside): Revert `sigma' patch from
	2004-07-11; this gives much better results under normal
	circumstances.

2005-05-30  Chia I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor
	documentation improvements.

	* include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos.

	* src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap
	of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4.
	If xstr is larger than 8 and bitmap is of pixel_mode
	FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error.

2005-05-29  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftbitmap.c (FT_Bitmap_Embolden): Fix emboldening bitmap
	of mode FT_PIXEL_MODE_GRAY.  Also add support for mode
	FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V.
	(ft_bitmap_assure_buffer): FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V
	should have ppb (pixel per byte) 1.
	Zero the padding when there's no need to allocate memory.

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle slot->advance
	too.
	More suited emboldening strength.

2005-05-28  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch.
	Handle FT_PIXEL_MODE_GRAY with num_gray != 256.
	Improve speed for FT_PIXEL_MODE_GRAY.
	(ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and
	FT_PIXEL_MODE_LCD_V.

2005-05-27  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Initialize `error'.

	* src/base/ftobjs.c (ft_cmap_done_internal): New function.
	(FT_CMap_Done): Remove cmap from cmap list.
	(destroy_charmaps, FT_CMap_New): Don't call FT_CMap_Done but
	ft_cmap_done_internal.

2005-05-26  Werner Lemberg  <wl@gnu.org>

	* docs/GPL.txt: Update postal address of FSF.

2005-05-26  Chia I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Improve
	documentation.

	* src/base/ftsynth.c (FT_BOLD_THRESHOLD): Removed.
	(FT_GlyphSlot_Embolden): Check whether slot is bitmap owner.
	Always modify the metrics.

2005-05-24  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2005-05-24  Chia I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/ftbitmap.h (FT_Bitmap_Embolden): New declaration.

	* include/freetype/ftoutln.h (FT_Outline_Embolden): New declaration.

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): New auxiliary
	function.
	(FT_Bitmap_Embolden): New function.

	* src/base/ftoutln.c (FT_Outline_Embolden): New function.

	* src/base/ftsynth.c: Don't include FT_INTERNAL_CALC_H and
	FT_TRIGONOMETRY_H but FT_BITMAP_H.
	(FT_GlyphSlot_Embolden): Use FT_Outline_Embolden or
	FT_Bitmap_Embolden.

2005-05-24  Werner Lemberg  <wl@gnu.org>

	* configure: Always remove config.mk, builds/unix/unix-def.mk, and
	builds/unix/unix-cc.mk.  This fixes repeated calls of the script.
	Reported by Nelson Beebe and Behdad Esfahbod.

	* README.CVS: Mention file permissions.

2005-05-23  Werner Lemberg  <wl@gnu.org>

	* builds/amiga/makefile.os4 (WARNINGS), builds/compiler/gcc-dev.mk
	(CFLAGS), builds/compiler/gcc.mk (CFLAGS): Remove
	-fno-strict-aliasing.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c --
	it is currently loaded from ttsbit.c.

2005-05-23  Behdad Esfahbod  <behdad@cs.toronto.edu>

	Say you have `(Foo*)x' and want to assign, pass, or return it as
	`(Bar*)'.  If you simply say `x' or `(Bar*)x', then the C compiler
	would warn you that type casting incompatible pointer types breaks
	strict-aliasing.  The solution is to cast to `(void*)' instead which
	is the generic pointer type, so the compiler knows that it should
	make no strict-aliasing assumption on `x'.  But the problem with
	`(void*)x' is that seems like in C++, unlike C, `void*' is not a
	generic pointer type and assigning `void*' to `Bar*' without a cast
	causes an error.  The solution is to cast to `Bar*' too, with
	`(Bar*)(void*)x' as the result -- this is what the patch does.

	* include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP),
	include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Remove
	cast on lvalue, use a temporary pointer instead.
	Cast temporarily to (void*) to not break strict aliasing.

	* include/freetype/internal/ftmemory.h (FT_MEM_ALLOC,
	FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC, FT_MEM_FREE),
	src/base/ftglyph.c (FT_Glyph_To_Bitmap): Cast temporarily to (void*)
	to not break strict aliasing.

	* src/base/ftinit.c (FT_USE_MODULE): Fix wrong type information.

	* builds/unix/configure.ac (XX_CFLAGS): Remove -fno-strict-aliasing.

2005-05-23  David Turner  <dturner@freetype.org>

	Fix Savannah bug #12213 (incorrect behaviour of the cache sub-system
	in low-memory conditions).

	* include/freetype/cache/ftccache.h (FTC_CACHE_TRYLOOP,
	FTC_CACHE_TRYLOOP_END): New macros.

	* src/cache/ftccache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c
	(ftc_snode_compare): Use FT_CACHE_TRYLOOP and FTC_CACE_TRYLOOP_END.

2005-05-23  Werner Lemberg  <wl@gnu.org>

	* src/base/rules.mk (BASE_SRC): Don't add ftsynth.c here but...
	(BASE_EXT_SRC): Here.

2005-05-22  Werner Lemberg  <wl@gnu.org>

	* src/base/ftrfork.c (raccess_guess_apple_generic): Mark
	`version_number' and `entry_length' as unused.
	(raccess_guess_linux_double_from_file_name): Remove `memory'.
	(raccess_make_file_name): Mark `error' as unused.

	* src/bdf/bdflib.c (_bdf_parse_properties): Remove `memory'.

	* src/cid/cidobjs.c (cid_face_init): Remove `psnames'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Remove `memory'.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints,
	ft_var_readpackeddeltas, ft_var_load_avar): Mark `error' as unused.

	* src/base/rules.mk (BASE_SRC): Add ftsynth.c.

2005-05-21  David Turner  <david@freetype.org>

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix a bug that
	produced unpleasant artefacts when trying to embolden very sharp
	corners.

2005-05-20  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2005-05-20  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftbitmap.c: Don't include FT_FREETYPE_H and FT_IMAGE_H
	but FT_BITMAP_H.
	(FT_Bitmap_Copy): New function (from ftglyph.c).

	* include/freetype/ftbitmap.h (FT_Bitmap_Copy): New public
	definition.

	* src/base/ftglyph.c: Include FT_BITMAP_H.
	(ft_bitmap_copy): Move to ftbitmap.c.
	(ft_bitmap_glyph_init): Remove `memory' variable.
	Create new bitmap object if FT_GLYPH_OWN_BITMAP isn't set.
	(ft_bitmap_glyph_copy): Use FT_Bitmap_Copy.
	(ft_bitmap_glyph_done): Use FT_Bitmap_Done.
	(ft_outline_glyph_init): Use FT_Outline_Copy.

	* src/base/ftoutln.c (FT_Outline_Copy): Handle source == target.
	(FT_Outline_Done_Internal): Check for valid `memory' pointer.
	(FT_Outline_Translate, FT_Outline_Reverse, FT_Outline_Render,
	FT_Outline_Transform): Check for valid `outline' pointer.

	* src/base/ftobjs.c (FT_New_GlyphSlot): Prepend glyph slot to
	face->glyph, otherwise a new second glyph slot cannot be created.
	(FT_Done_GlyphSlot): Fix memory leak.
	(FT_Open_Face): Updated -- face->glyph is already managed by
	FT_New_GlyphSlot.

	* src/type42/t42objs.c (T42_GlyphSlot_Done): Updated.

2005-05-20  Kirill Smelkov  <kirr@mns.spb.ru>

	* include/freetype/ftimage.h (FT_Raster_Params),
	include/freetype/ftoutln.h (FT_Outline_Translate,
	FT_Outline_Transform), src/base/ftoutln.c (FT_Outline_Translate,
	FT_Outline_Transform): Decorate parameters with `const' where
	appropriate.
	Update all callers.

	* src/raster/ftraster.c (ft_black_reset), src/smooth/ftgrays.c
	(gray_raster_reset): Remove `const' from `pool_base' argument.

2005-05-18  Kirill Smelkov  <kirr@mns.spb.ru>

	* src/raster/ftmisc.h: New file.  Only needed if ftraster.c is
	compiled as stand-alone.

	* src/raster/ftraster.c: Add comment how to compile as stand-alone.
	s/FT_CONFIG_OPTION_STATIC_RASTER/FT_STATIC_RASTER/.
	s/TT_STATIC_RASTER/FT_STATIC_RASTER/.
	[_STANDALONE_]: Include ftimage.h and ftmisc.h.
	(FT_TRACE1, FT_TRACE6, ft_memset, FT_MEM_ZERO): Define
	conditionally.
	(Render_Glyph, Render_Gray_Glyph): Return Raster_Err_None (or
	Raster_Err_Unsupported).
	(ft_black_new) [_STANDALONE_]: Fix type of `the_raster'.
	(ft_black_init, ft_black_reset, ft_black_set_mode, ft_black_render):
	Use `ras', not `raster'.
	(ft_black_done): Use FT_UNUSED_RASTER.
	(Horizontal_Sweep_Init, Horizontal_Sweep_Step,
	Horizontal_Gray_Sweep_Span): Use FT_UNUSED_RASTER.

2005-05-18  Werner Lemberg  <wl@gnu.org>

	* docs/announce: Start updating.

	* docs/CHANGES: Updated.

2005-05-16  Vitaliy Pasternak  <v_a_pasternak@mail.ru>

	* builds/win32/visualc/freetype.vcproj: Updated.
	Exclude debug info for `Release' versions to reduce library size.

2005-05-16  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Open_Face): Make it work as documented, this
	is, ignore `aface' completely if face_index < 0.  Reported by David
	Osborn <spam@habitualhiatus.com>.

2005-05-16  Kirill Smelkov  <kirr@mns.spb.ru>

	* include/freetype/ftimage.h (FT_Outline_MoveToFunc,
	FT_Outline_LineTo_Func, FT_Outline_ConicToFunc,
	FT_Outline_CubicToFunc), src/smooth/ftgrays.c (gray_render_conic,
	gray_render_cubic, gray_move_to, gray_line_to, gray_conic_to,
	gray_cubic_to, gray_render_span, gray_sweep): Decorate parameters
	with `const' where appropriate.

2005-05-11  Kirill Smelkov  <kirr@mns.spb.ru>

	* include/freetype/ftimage.h (FT_Raster_RenderFunc),
	include/freetype/ftrender.h (FT_Glyph_TransformFunc,
	FT_Renderer_Render_Func, FT_Renderer_TransformFunc),
	src/base/ftglyph.c (ft_outline_glyph_transform),
	src/raster/ftrend1.c (ft_raster1_transform, ft_raster1_render),
	src/smooth/ftgrays.c (FT_Outline_Decompose, gray_raster_render),
	src/smooth/ftsmooth.c (ft_smooth_transform,
	ft_smooth_render_generic, ft_smooth_render, ft_smooth_render_lcd,
	ft_smooth_render_lcd_v): Decorate parameters with `const' where
	appropriate.

	* src/raster/ftraster.c (RASTER_RENDER_POOL): Removed.  Obsolete.
	(ft_black_render): Decorate parameters with `const' where
	appropriate.

2005-05-11  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap.c (tt_cmap4_set_range): Fix typo (FT_PEEK_SHORT ->
	FT_PEEK_USHORT) which caused crashes.  Reported by Ismail Donmez
	<ismail@kde.org.tr>.

2005-05-08  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE)
	[__cplusplus]: Fix typo.

2005-05-07  Werner Lemberg  <wl@gnu.org>

	Handle unsorted SFNT type 4 cmaps correctly (reported by Dirck
	Blaskey <listtarget@danbala.com>).

	* src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'.
	* src/sfnt/ttcmac.c: Use SFNT_Err_Ok where appropriate.

	(tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate,
	tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use
	`FT_Error' as return type.
	(tt_cmap4_validate): Use `FT_Error' as return type.
	Return error code for unsorted cmap.
	(tt_cmap4_char_index, tt_cmap4_char_next): Use old code for unsorted
	cmaps.
	(tt_face_build_cmaps): Set `unsorted' variable in cmap.

2005-05-07  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttpload.c (tt_face_get_location): Fix typo.

2005-05-06  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Set ppem value in top
	dictionary for SFNT-based CFF.

2005-05-05  Werner Lemberg  <wl@gnu.org>

	Handle malformed `loca' table entries.

	* docs/TODO: Add some bugs which should be fixed.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add `glyf_len'
	element.

	* src/truetype/ttpload.c (tt_face_load_loca): Get length of `glyf'
	table.
	(tt_face_get_location): Fix computation of `asize' for malformed
	`loca' entries.

2005-05-01  David Turner  <david@freetype.org>

	* Jamfile: Remove `otvalid' from the list of compiled modules.

	* include/freetype/internal/ftserv.h: Add compiler pragmas to get
	rid of annoying warnings with Visual C++ compiler in maximum warning
	mode.

	* src/autofit/afhints.c, src/autofit/aflatin.c, src/base/ftstroke.c,
	src/bdf/bdfdrivr.c, src/cache/ftcbasic.c, src/cache/ftccmap.c,
	src/cache/ftcmanag.c, src/cff/cffload.c, src/cid/cidload.c,
	src/lzw/zopen.c, src/otvalid/otvgdef.c, src/pcf/pcfread.c,
	src/sfnt/sfobjs.c, src/truetype/ttgxvar.c: Remove compiler warnings.

2005-04-28  Werner Lemberg  <wl@gnu.org>

	* docs/TODO: Updated.

2005-04-24  Werner Lemberg  <wl@gnu.org>

	* src/otvalid/otvcommn.c
	(otv_GSUBGPOS_have_MarkAttachmentType_flag): Handle table == 0.

2005-04-16  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Set default upem value in top
	font dict also.
	Handle font matrix settings in subfonts.

	* src/cff/cffgload.c (cff_slot_load): Use the correct font matrix
	for CID-keyed fonts with subfonts.

	* docs/formats.txt: Updated.

2005-04-14  Kirill Smelkov  <kirr@mns.spb.ru>

	* include/freetype/freetype.h (FT_Vector_Transform),
	include/freetype/ftimage.h (FT_Raster_Params),
	include/freetype/ftoutln.h, src/base/ftoutln.c (FT_Outline_Get_CBox,
	FT_Outline_Copy, FT_Outline_Transform, FT_Vector_Transform,
	FT_Outline_Get_Bitmap), src/raster/ftraster.c (ft_black_render),
	src/smooth/ftgrays.c (gray_raster_render): Decorate parameters with
	`const' where appropriate.

2005-04-14  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_charstrings): Catch this non-standard
	beginning of the /CharStrings dictionary:

	  /CharStrings 118 dict def
	  Private begin
	  CharStrings begin

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix arguments
	to call of tt_sbit_decoder_load_bitmap.

2005-04-13  Werner Lemberg  <wl@gnu.org>

	* docs/TODO: Updated.

	* autogen.sh: Use `--force' for all commands.

2005-04-09  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshalgo.c (ps_hints_apply): Change scaling values
	only if `fitted' is not zero.

2005-04-06  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (tt_face_get_metrics) [FT_OPTIMIZE_MEMORY]:
	Fix typo which sometimes causes wrong metrics for the last glyph.

2005-04-04  David Turner  <david@freetype.org>

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(FT_OPTIMIZE_MEMORY): Comment out this macro for the upcoming 2.1.10
	release.
	(*_CHESTER_*): Removed.  No longer used.

	* src/autofit/afhints.c (af_axis_hints_new_segment,
	af_axis_hints_new_edge): Small tweak to use less heap memory.

2005-04-03  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1parse.c (T1_New_Parser): Relax the check for a valid
	first line in the font.

2005-04-03  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES, include/freetype/freetype.h: Improve documentation
	of FT_Set_Pixel_Sizes and FT_Set_Char_Size.

2005-03-26  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/src/base/ftsystem.c (ft_amiga_stream_io): Fix buffer
	offsets after a large read.

2005-03-26  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afglobal.c (af_face_globals_get_metrics):
	s/index/gidx/.

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix compiler
	warnings.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c.

	* src/sfnt/ttsbit0.h: Dummy file for build with `make'.

2005-03-26  Detlef Würkner  <TetiSoft@apg.lahn.de>

	Update of the Amiga port.

	* builds/amiga/makefile, builds/amiga/makefile.os4,
	builds/amiga/smakefile: Included the base extension files
	(ftbitmap.c, ftotval.c, ftpfr.c, ftstroke.c, ftxf86.c).

2005-03-25  Detlef Würkner  <TetiSoft@apg.lahn.de>

	Update of the Amiga port.

	* builds/amiga/makefile, builds/amiga/smakefile: Handle new modules.

	* builds/amiga/makefile.os4: Makefile for AmigaOS4 SDK.

	* builds/amiga/README: Updated.

	* builds/amiga/include/freetype/config/ftconfig.h: Handle gcc for
	AmigaOS4.

	* builds/amiga/include/freetype/config/ftmodule.h: Handle new
	modules.

	* builds/amiga/src/base/ftdebug.c: Updated to current version of
	default ftdebug.c.
	Add various include files and macros to have proper support for
	both AmigaOS4 and older AmigaOS versions.
	Don't declare KVPrintF explicitly.
	Replace getenv with GetVar.
	Actually enable debugging code.

	* builds/amiga/src/base/ftsystem.c: Major rewrite.

2005-03-23  Werner Lemberg  <wl@gnu.org>

	* tests/*: Removed.

2005-03-23  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES, docs/INSTALL.ANY: Updated.

	* include/freetype/ftmoderr.h: Replace `Autohint' with `Autofit'.
	Add `OTvalid'.

	* src/autofit/aferrors.h: New file.

	* src/autofit/afglobal.c, src/autofit/afhints.c,
	src/autofit/aflatin.c, src/autofit/afloader.c: s/FT_Err_/AF_Err_/.
	Include aferrors.h.

	* src/autofit/rules.mk (AUTOF_DRV_H): Include aferrors.h.

	* src/otvalid/otverror.h: s/FT_Mod_Err_OTV/FT_Mod_Err_OTvalid/.

2005-03-22  David Turner  <david@freetype.org>

	* src/autohint/*: Removed.
	* Jamfile: Updated.

2005-03-15  David Turner  <david@freetype.org>

	* src/bdf/bdflib.c: Remove compiler warnings.
	(hash_rehash, hash_init): Don't call FT_MEM_ZERO.
	(_bdf_list_t): Add `memory' field.
	(_bdf_list_init, _bdf_list_done, _bdf_list_ensure): New functions.
	(_bdf_shift, _bdf_join): Rename to...
	(_bdf_list_shift, _bdf_list_join): This.
	(_bdf_split): Renamed to...
	(_bdf_list_split): This.  Use new functions.
	(bdf_internal_readstream): Removed.
	(NO_SKIP): New macro.
	(_bdf_readstream): Rewritten.
	(bdf_create_property, _bdf_add_comment): Improve allocation.
	(_bdf_set_default_spacing, _bdf_parse_glyphs): Updated.  Improve
	allocation.
	(_bdf_parse_properties, _bdf_parse_start): Updated.
	(bdf_load_font): Updated to use new functions.

	* src/type1/t1parse.c (check_type1_format): New function.
	(T1_New_Parser): Use it to check font header before allocating
	anything on the heap.

	* src/type42/t42parse.c	(t42_parser_init): Modify functions to check
	the font header before allocating anything on the heap.

	* include/freetype/internal/ftmemory.h (FT_ARRAY_MAX,
	FT_ARRAY_CHECK): New macros.

	* src/base/ftstream.c (FT_Stream_TryRead): New function.
	* include/freetype/internal/ftstream.h: Updated.

	* src/pcf/pcfread.c (pcf_read_TOC), src/pcf/pcfutil.c
	(BitOrderInvert, TwoByteSwap, FourByteSwap): Minor fixes and
	simplifications.  Try to protect the PCF driver from doing stupid
	things with broken fonts.

	* src/lzw/ftlzw.c (FT_Stream_OpenLZW): Check the LZW header before
	doing anything else.  This avoids unnecessary heap allocations
	(400KByte of heap memory for the LZW decoder).

	* src/gzip/ftgzip.c (FT_Stream_OpenGZip): Ditto for the gzip
	decoder, although the code savings are smaller.

	* docs/CHANGES: Updated.

2005-03-10  David Turner  <david@freetype.org>

	* src/tools/glnames.py: Add comment to explain the compression
	being used for the Adobe Glyph List.

2005-03-10  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttpload.c (tt_face_load_cvt, tt_face_load_fpgm):
	Fix serious typo which prevented correct TT rendering.

	* include/freetype/internal/ftmemory.h: Undo change from 2005-03-03.
	To suppress warnings it is sufficient to use `-fno-strict-aliasing'.

2005-03-10  Werner Lemberg  <wl@gnu.org>

	* src/tools/glnames.py: Formatted.
	Format output to be in sync with other FreeType code.
	Import `re' and `os.path'.
	(StringTable) <__init__>: Add parameter to initialize master table
	name.
	(StringTable) <dump>: Don't pass master table name.
	(StringTable) <dump_sublist>: Emit explanatory comment.
	Simplify and make output more human readable.
	(t1_bias, glyph_list, adobe_glyph_names): Removed.  Unused.
	(main): Use `basename' for file name in header.

	* src/psnames/pstables.h: Regenerated.

2005-03-09  David Turner  <david@freetype.org>

	* src/tools/glnames.py: Rewrite the generator for the `pstables.h'
	header file which contains various constant tables related to glyph
	names.  It now uses a different, more compact storage scheme that
	saves about 20KB.  This also closes Savannah bug #12262.

	* src/psnames/pstables.h: Regenerated.

	* src/psnames/psmodule.c (ps_unicode_value): Use
	`ft_get_adobe_glyph_index', a new function defined in `pstables.h'.
	(ps_get_macintosh_name, ps_get_standard_strings): Updated.

	* src/base/ftobjs.c (FT_Set_Char_Sizes): Handle fractional sizes
	more carefully.  This fixes Savannah bug #12263.

2005-03-06  David Turner  <david@freetype.org>

	* src/otvalid/otvgsub.c, src/otvalid/otvgpos.c: Make static tables
	constant.

	* src/autofit/aflatin.c (af_latin_metrics_init): Fix Savannah bug
	#12212 (auto-hinter refuses to work if no Unicode charmap in font).

2005-03-05  Werner Lemberg  <wl@gnu.org>

	* autogen.sh: New script for bootstrapping.

	* README.CVS: New file which documents bootstrapping.

	* builds/unix/aclocal.m4, builds/unix/config.guess,
	builds/unix/config.sub, builds/unix/configure,
	builds/unix/ltmain.sh: Removed.

2005-03-04  Werner Lemberg  <wl@gnu.org>

	* src/base/ftutil.c: Include FT_INTERNAL_OBJECTS_H.

2005-03-03  Werner Lemberg  <wl@gnu.org>

	Various fixes for C and C++ compiling.

	* src/autofit/*: Add copyright messages.

	* src/autofit/afhints.c (af_glyph_hints_done): Don't use
	`AF_Dimension' but `int' for loop counter.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Don't use
	`AF_Dimension' but `int' for loop counter.
	Use proper enumeration value for `render_mode'.
	(af_latin_metrics_scale_dim): Don't shadow variables.
	(af_latin_hints_compute_segments): Use proper cast for `major_dir'
	and `segment_dir'.
	(af_latin_align_linked_edge, af_latin_hint_edges): Fix arguments of call to
	`af_latin_compute_stem_width'.
	(af_latin_hints_apply): Don't use `AF_Dimension' but `int' for loop
	counter.

	* src/base/ftdbgmem.c (ft_mem_table_get_source, FT_DumpMemory): Use
	proper cast for memory allocation.

	* src/cff/cffdrivr.c (cff_get_kerning): Use proper cast for
	initialization of `sfnt'.

	* src/sfnt/sfdriver.c: Include `ttkern.h'.

	* src/sfnt/ttkern.c (tt_face_get_kerning): Don't shadow variables.

	* src/truetype/ttgload.c: Include `ttpload.h'.

2005-03-03  David Turner  <david@freetype.org>

	* include/freetype/internal/ftmemory.h (FT_ALLOC, FT_REALLOC,
	FT_QALLOC, FT_QREALLOC) [gcc >= 3.3]: Provide macro versions which
	avoid compiler warnings.
	(FT_NEW, FT_NEW_ARRAY, FT_RENEW_ARRAY, FT_QNEW, FT_QNEW_ARRAY,
	FT_QRENEW_ARRAY, FT_ALLOC_ARRAY, FT_REALLOC_ARRAY): Updated.

	* include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE,
	FT_FACE_FIND_GLOBAL_SERVICE, FT_FACE_LOOKUP_SERVICE) [__cplusplus]:
	Provide macro versions which avoid compiler warnings.

	* src/base/ftutil.c (ft_highpow2): New utility function.

	* include/freetype/internal/ftobjs.h: Updated.

	* src/pfr/pfrload.c (pfr_get_gindex, pfr_compare_kern_pairs,
	pfr_sort_kerning_pairs): Don't define if FT_OPTIMIZE_MEMORY is set.
	(pfr_phy_font_done): Don't handle `kern_pairs' if FT_OPTIMIZE_MEMORY
	is set.
	(pfr_phy_font_load): Don't call `pfr_sort_kerning_pairs' if
	FT_OPTIMIZE_MEMORY is set.

	* src/pfr/pfrobjs.c (pfr_slot_load): Comment out some code which
	doesn't work with broken fonts.
	(pfr_face_get_kerning) [FT_OPTIMIZE_MEMORY]: Implement.

	* src/pfr/pfrtypes.h (PFR_KernItemRec): Optimize member types.
	(PFR_NEXT_KPAIR): New macro.
	(PFR_PhyFontRec): Don't define `kern_pairs' if FT_OPTIMIZE_MEMORY is
	set.

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Introduce
	temporary variable to avoid gcc warning.
	(tt_face_load_sbit_image): Mark unused variables with FT_UNUSED.

	* src/truetype/ttpload.c (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]:
	Remove redundant variable.

	* include/freetype/config/ftmodule.h: Moving the order of drivers to
	speed up font loading.  The PCF and BDF loaders are still slow and
	consume far too much memory.

2005-03-03  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h: Updated to recent changes.

2005-03-02  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afdummy.c, src/autofit/afdummy.h
	(af_dummy_script_class): Fix type.

	* src/autofit/aflatin.c, src/autofit/aflatin.h
	(af_latin_script_class): Fix type.

	* src/autofit/rules.mk (AUTOF_DRV_SRC): Fix typo.

2005-03-01  David Turner  <david@freetype.org>

	* src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning),
	src/sfnt/ttsbit0.c (tt_face_load_sbit_strikes,
	tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_compound,
	tt_sbit_decoder_load_image), src/sfnt/ttload.c
	(tt_face_load_metrics): Remove compiler warnings
	-- redundant variables, missing initializations, etc.

	* src/sfnt/ttsbit.h: Handle FT_OPTIMIZE_MEMORY.

	* src/autofit/rules.mk, src/autofit/module.mk,
	src/autofit/afangles.h: New files.

	* src/autofit/afhints.c (af_axis_hints_new_segment,
	af_axis_hints_new_edge): New functions.
	(af_glyph_hints_done): Do proper deallocation.
	(af_glyph_hints_reload): Only reallocate points array.  This
	drastically reduces heap usage.

	* src/autofit/afhints.h (AF_PointRec, AF_SegmentRec): Optimize
	member types and positions.
	(AF_AxisHintsRec): Add `max_segments' and `max_edges'.
	(af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes.

	* src/autofit/aflatin.c (af_latin_metricsc_scale): Don't call
	AF_SCALER_EQUAL_SCALES.
	(af_latin_hints_compute_segments): Change return type to FT_Error.
	Update all callers.
	Improve segment allocation.
	(af_latin_hints_compute_edges): Change return type to FT_Error.
	Update all callers.
	Improve edge allocation and link handling.
	(af_latin_hints_detect_features): Change return type to FT_Error.
	Update all callers.

	* src/autofit/aflatin.h: Updated.

	* src/autofit/afloader.c (af_loader_load_g)
	<FT_GLYPH_FORMAT_OUTLINE>: Assure axis->num_edges > 1.  This fixes
	a bug with certain fonts.

	* include/freetype/config/ftmodule.h: The auto-fitter is now the
	only supported auto-hinting module.

	* include/freetype/config/ftstdlib.h (FT_INT_MAX): New macro.

2005-02-28  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttpload.c (tt_face_load_loca): Fix typo.

	* src/sfnt/ttkern.c: Include `ttkern.h'.
	(FT_COMPONENT): Updated.

	* include/freetype/internal/fttrace.h: Add entry for `ttkern'.

	* src/sfnt/ttsbit0.c: s/FT_Err_/SFNT_Err_/.
	Decorate constants with `U' and `L' where necessary.

	* src/sfnt/ttcmap.c (tt_cmap4_next): Remove unused variable.

2005-02-28  David Turner  <david@freetype.org>

	* src/base/ftdbgmem.c (FT_DumpMemory): Added sorting of memory
	sources according to decreasing maximum cumulative allocations.
	(ft_mem_source_compare): New auxiliary function.

	* src/sfnt/ttsbit0.c: New file, implementing a heap-optimized
	embedded bitmap loader.

	* src/sfnt/ttsbit.c: Include `ft2build.h', FT_INTERNAL_DEBUG_H,
	FT_INTERNAL_STREAM_H, FT_TRUETYPE_TAGS_H.
	Load `ttsbit0.c' if FT_OPTIMIZE_MEMORY is set, otherwise use
	file contents.
	(tt_face_load_sbit_strikes): Set up root fields to indicate the
	strikes.  This fixes Savannah bug #12107.
	Use `static' keyword for `sbit_line_metrics_field',
	`strike_start_fields', `strike_end_fields'.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Define
	`sbit_table', `sbit_table_size', `sbit_num_strikes' if
	FT_OPTIMIZE_MEMORY is set.
	Don't define `num_sbit_strikes' and `sbit_strikes' if
	FT_OPTIMIZE_MEMORY is set.

	* src/cff/cffobjs.c (sbit_size_reset): Handle FT_OPTIMIZE_MEMORY.

	* src/sfnt/sfobjs.c (sfnt_load_face): Fixed bug that prevented
	loading SFNT fonts without a `kern' table.
	Properly pass root->face_flags.
	Remove code for TT_CONFIG_OPTION_EMBEDDED_BITMAPS.

	* src/sfnt/sfdriver.c (sfnt_interface)
	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Don't use `tt_find_sbit_image'
	and `tt_load_sbit_metrics'.

	* src/sfnt/ttcmap.c: Optimize linear charmap scanning for Format 4.
	(OPT_CMAP4): New macro.
	(TT_CMap4Rec) [OPT_CMAP4]: New structure.
	(tt_cmap4_init, tt_cmap4_set_range, tt_cmap4_next, tt_cmap4_reset)
	[OPT_CMAP4]: New functions.
	(tt_cmap4_char_next) [OPT_CMAP4]: Use `tt_cmap4_next' and
	`tt_cmap4_reset'.
	(tt_cmap4_class_rec) [OPT_CMAP4]: Use `TT_CMap4Rec' and
	`tt_cmap4_init'.

	* src/truetype/ttobjs.c (Reset_SBit_Size): Handle
	FT_OPTIMIZE_MEMORY.

	* src/autofit/afhints.h (AF_PointRec, AF_SegmentRec, AF_EdgeRec):
	Optimize member types.

	* src/autofit/afloader.c (af_loader_done): Call
	`af_glyph_hints_done'.

2005-02-27  David Turner  <david@freetype.org>

	* src/sfnt/ttkern.c (tt_face_load_kern): Fix a small bug which
	caused invalid (random) return values for the horizontal kerning.

2005-02-25  David Turner  <david@freetype.org>

	Implement several memory optimizations to drastically reduce the
	heap usage of FreeType, especially in the case of memory-mapped
	files.  The idea is to avoid loading and decoding tables in the
	heap, and instead access the raw data whenever possible (i.e., when
	it doesn't compromise performance).

	This has several benefits: For example, opening vera.ttf now uses
	just a small amount of memory (even when the FT_Library footprint is
	accounted for), until you start loading glyphs.  Even then, you save
	at least 20KB compared to the non-optimized case.  Performance of
	various operations, including open and close, has also been
	dramatically improved.

	More optimizations to come, especially for the auto-hinter.

	* include/freetype/internal/sfnt.h (TT_Face_GetKerningFunc): New
	function type.
	(SFNT_Interface): Add it.

	* include/freetype/internal/tttypes.h (TT_HdmxEntryRec, TT_HdmxRec,
	TT_Kern0_PairRec): Don't define if FT_OPTIMIZE_MEMORY is set.
	(TT_FaceRec): Define `horz_metrics', `horz_metrics_size',
	`vert_metrics', `vert_metrics_size', `hdmx_table',
	`hdmx_table_size', `hdmx_record_count', `hdmx_record_size',
	`hdmx_record_sizes', `kern_table', `kern_table_size,
	`num_kern_tables', `kern_avail_bits', `kern_order_bits' if
	FT_OPTIMIZE_MEMORY is set.
	Don't define `hdmx', `num_kern_pairs', `kern_table_index',
	`kern_pairs' if FT_OPTIMIZE_MEMORY is set.

	* src/base/ftdbgmem.c (ft_mem_table_set): Don't shadow variable.
	Fix compiler warning.

	* src/cff/cffdrivr.c (Get_Kerning): Renamed to...
	(cff_get_kerning): This.  Simplify.
	(cff_driver_class): Updated.

	* src/sfnt/Jamfile (_sources): Add `ttkern'.
	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttkern.c'.

	* src/sfnt/sfdriver.c (sfnt_interface): Add `tt_face_get_kerning'.

	* src/sfnt/sfnt.c: Include `ttkern.c'.

	* src/sfnt/sfobjs.c: Include `ttkern.h'.
	(sfnt_load_face): Consider the `kern' and `gasp' table as optional.
	(sfnt_done_face): Call `tt_face_done_kern'.
	Handle horizontal metrics for FT_OPTIMIZE_MEMORY.

	* src/sfnt/ttkern.c, src/sfnt/ttkern.h: New files.  Code has been
	taken from `ttload.c' and `ttload.h'.
	Provide special versions of `tt_face_load_kern',
	`tt_face_get_kerning', and `tt_face_done_kern' for
	FT_OPTIMIZE_MEMORY.

	* src/sfnt/ttload.c (tt_face_load_metrics, tt_face_load_hdmx,
	tt_face_free_hdmx): Provide version for FT_OPTIMIZE_MEMORY.
	(tt_face_load_kern, tt_kern_pair_compare, TT_KERN_INDEX): Moved to
	`ttkern.c'.

	* src/sfnt/ttload.h: Updated.

	* src/sfnt/ttsbit.c (sbit_metrics_field): Add `static' keyword.

	* src/truetype/ttdriver.c (Get_Kerning): Renamed to...
	(tt_get_kerning): This.  Simplify.
	(tt_driver_class): Updated.

	* src/truetype/ttgload.c (TT_Get_Metrics): Renamed to...
	(tt_face_get_metrics): This. Provide version for FT_OPTIMIZE_MEMORY.
	Update all callers.
	(Get_Advance_Widths): Replaced with...
	(Get_Advance_WidthPtr): This.  Provide version for
	FT_OPTIMIZE_MEMORY.
	Update all callers.

	* src/truetype/ttgload.h: Updated.

2005-02-22  David Turner  <david@freetype.org>

	* src/base/ftdbgmem.c: Partly rewritten.  Added the ability to list
	all allocation sites in the memory debugger.  Also a new function
	FT_DumpMemory() was added.  It is only available in builds with
	FT_DEBUG_MEMORY defined, and you must declare it in your own code to
	use it, i.e., with something like:

	  extern void FT_DumpMemory( FT_Memory );

	  ...

	  FT_DumpMemory( memory );

	* include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Comment out definition --
	again.
	(FT_OPTIMIZE_MEMORY): New configuration macro to control various
	optimizations for reducing the heap footprint of memory-mapped
	TrueType files.

	* include/freetype/internal/ftmemory.h (FT_ARRAY_ZERO): New
	convenience macro.

	* include/freetype/internal/tttypes.h (TT_FaceRec)
	[FT_OPTIMIZE_MEMORY]: Use optimized types for `num_locations' and
	`glyph_locations'.

	* src/truetype/ttgload.c (load_truetype_glyph): Call
	`tt_face_get_location'.

	* src/truetype/ttobjs.c (tt_face_init)
	[FT_CONFIG_OPTION_INCREMENTAL]: Improve error handling.
	(tt_face_done): Call `tt_face_done_loca'.

	* src/truetype/ttpload.c (tt_face_get_location, tt_face_done_loca):
	New functions.  If FT_OPTIMIZE_MEMORY is set, the locations table is
	read directly from memory-mapped streams, instead of being decoded
	into the heap.
	(tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: New implementation.
	(tt_face_load_cvt, tt_face_load_fpgm): Only load table if the
	bytecode interpreter is compiled in.

	* src/truetype/ttpload.h: Updated.

	* src/autohint/ahglyph.c (ah_outline_load): Improve allocation
	logic.

2005-02-20  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ltmain.sh: Regenerated with `libtoolize --force
	--copy' from libtool 1.5.14.
	* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
	automake 1.9.4.

	* builds/unix/config.guess, builds/unix/config.sub: Updated from
	`config' CVS module at subversions.gnu.org.

	* builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
	`texinfo' CVS module at subversions.gnu.org.

2005-02-14  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffcmap.c (cff_cmap_unicode_init): Don't try to build
	a cmap for a CID-keyed font which doesn't have SIDs.

2005-02-13  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (read_binary_data): Return more meaningful
	value.
	(parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check
	parser error value after call to T1_Skip_PS_Token (where necessary).

	* src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error
	value after call to T1_Skip_PS_Token.

	* src/cid/cidparse.c (cid_parser_new): Check parser error value
	after call to cid_parser_skip_PS_token.

	* src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts,
	t42_parse_charstrings, t42_parse_dict): Check parser error value
	after call to T1_Skip_PS_Token (where necessary).

	* src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token,
	ps_tobytes): Add error messages.

2005-02-12  Werner Lemberg  <wl@gnu.org>

	* configure: Output more variables to the created Makefile so that
	it can be used for ft2demos also (if the FT2DEMOS variable is
	defined).

2005-02-10  David Turner  <david@freetype.org>

	* src/pfr/pfrgload.c (pfr_glyph_load): Fix an unbounded growing
	dynamic array when loading a glyph from a PFR font (Savannah bug
	#11921).

	* src/base/ftbitmap.c (FT_Bitmap_Convert): Small improvements to the
	conversion function (mainly stupid optimization).

	* src/base/Jamfile: Adding ftbitmap.c to the list of compiled files.

2005-02-10  Werner Lemberg  <wl@gnu.org>

	* builds/unix/freetype-config.in: Add new flag `--ftversion' to
	return the FreeType version.  Suggested by George Williams
	<gww@silcom.com>.

	* docs/CHANGES: Updated.

2005-02-09  Werner Lemberg  <wl@gnu.org>

	* src/otvalid/otvmod.c (otv_validate): Deallocate arrays in case
	of error.  Reported by YAMANO-UCHI Hidetoshi <mer@din.or.jp>.

2005-02-08  Werner Lemberg  <wl@gnu.org>

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<op_closepath>: Accept `T1_Parse_Have_Moveto' state also which can
	happen in empty glyphs.  Reported by Ian Brown
	<ian.brown@printsoft.de> (Savannah bug #11856).

2005-02-04  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/*: Removed.  Obsolete.

2004-12-28  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ltmain.sh: Regenerated with `libtoolize --force
	--copy' from libtool 1.5.10.
	* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
	automake 1.9.4.
	* builds/unix/configure: Regenerated with autoconf 2.59b.

	* builds/unix/config.guess, builds/unix/config.sub: Updated from
	`config' CVS module at subversions.gnu.org.

	* builds/unix/install-sh: Updated from
	`texinfo' CVS module at subversions.gnu.org.

	* builds/unix/ftsystem.c (FT_Stream_Open): Add proper cast for
	ft_alloc.
	Fix compiler warning.

2004-12-27  Dirck Blaskey  <listtarget@danbala.com>

	* src/cff/cffobjs.c (cff_face_init): Improve computation of
	FT_STYLE_BOLD_FLAG.

2004-12-27  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have
	only a single font.  This is undocumented but has been verified on
	the opentype list.

2004-12-26  Werner Lemberg  <wl@gnu.org>

	* Jamfile (FT2_COMPONENTS): Add `otvalid'.

2004-12-25  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Convert): Fix compiler warning.

2004-12-15  Werner Lemberg  <wl@gnu.org>

	* vms_make.com: Add ftbitmap.obj.

2004-12-14  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c, include/freetype/ftbitmap.h: New files for
	handling various bitmap formats.

	* include/freetype/config/ftheader.h (FT_BITMAP_H): New macro.

	* src/base/rules.mk (BASE_EXT_SRC): Add ftbitmap.c.

	* src/bdf/bdfdrivr.c (BDF_Glyph_Load): Don't convert bitmaps to 8bpp
	but return them as-is.

	* docs/CHANGES: Mention new bitmap API.
	* include/freetype/ftchapter.s: Updated.

2004-12-11  Robert Clark  <freetype@ratty.org.uk>

	* src/base/ftobjs.c (FT_Get_Kerning): Make kerning amount
	dependent on ppem by scaling down for ppem < 25, then do normal
	rounding.  This gives slightly better results than rounding towards
	zero.

2004-12-09  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Get_Kerning): Always round towards zero
	for FT_KERNING_DEFAULT.  This greatly enhances the kerning for
	small ppem values.

2004-12-08  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (ft_glyphslot_clear): Reset `lsb_delta' and
	`rsb_delta'.

2004-12-05  Werner Lemberg  <wl@gnu.org>

	* builds/unix/install.mk (install): Use $(OBJ_BUILD) for ftconfig.h.

2004-12-03  Antoine Leca  <Antoine-Freetype@Leca-Marti.org>

	* include/freetype/ttnameid.h: Updated to latest
	specifications from Microsoft.

2004-11-26  Jouk Jansen  <joukj@hrem.stm.tudelft.nl>

	* vms_make.com: Include ftbbox.c.
	Fix `ccopt'.
	Handle `otvalid' module.
	Update `vmslib.dat' default values.
	Fixes to `libs.opt'.

2004-11-23  Anders Kaseorg  <anders@kaseorg.com>

	* src/base/ftoutln.c (FT_OrientationExtremumRec,
	ft_orientation_extremum_compute): Removed.
	(FT_Outline_Get_Orientation): Rewritten, simplified.

	* src/autohint/ahglyph.c: Include FT_OUTLINE_H.
	(ah_test_extremum, ah_get_orientation): Removed.
	(ah_outline_load): Use FT_Outline_Get_Orientation.

	* src/base/ftsynth.c (ft_test_extrama, ft_get_orientation): Removed.
	(FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation.

2004-11-23  Fernando Papa  <fpapa@netgate.com.uy>

	* src/truetype/ttinterp.h: Fix typo.

2004-11-22  Antoine Leca  <Antoine-Freetype@Leca-Marti.org>

	* builds/win32/detect.mk: Corrected logic that detects Windows NT to
	use the previous change even if win32 is forced.  Corrected
	detection of win32 on Win9X.

	* builds/dos/detect.mk: Added same correction as for win32 about
	COPY on Windows NT.  Detection of plain DOS 7.x.

2004-11-22  Werner Lemberg  <wl@gnu.org>

	* builds/detect.mk: Undo change from 2004-11-20.
	* builds/win32/detect.mk: If the `OS' environment variable contains
	`Windows_NT', use `cmd.exe /c copy' for copying files.

2004-11-20  Werner Lemberg  <wl@gnu.org>

	* builds/detect.mk (dos_setup): Use `cmd.exe' for copying
	$(CONFIG_MK) to force lowercase file name under Windows.

2004-11-19  Werner Lemberg  <wl@gnu.org>

	Fix a serious bug in the TT hinter.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Don't shift
	points vertically before hinting.

	* docs/CHANGES: Updated.

	* src/cache/ftcglyph.c (FTC_GNode_UnselectFamily,
	FTC_GCache_Lookup): A new try to fix comparison with zero.

2004-11-16  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.ac: Add `-fno-strict-aliasing' if gcc is
	used.
	* builds/unix/configure: Regenerated.
	* builds/unix/config.guess, builds/unix/config.sub: Updated from
	`config' CVS module at subversions.gnu.org.

2004-11-16  Dr. Martin P.J. Zinser  <zinser@decus.de>

	* src/cache/ftcglyph.c (FTC_GNode_UnselectFamily,
	FTC_GCache_Lookup): Fix comparison with zero.

	* docs/INSTALL.VMS: Updated.

	* vms_make.com: Updated.  All `descrip.mms' files are now created
	automatically.

	* src/*/descrip.mms: Removed.

2004-11-16  Owen Taylor  <otaylor@redhat.com>

	* builds/unix/freetype-config.in: Suppress -L$libdir for
	/usr/lib64 as well as /usr/lib. (Reported by Dan Winship -
	https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139199)

2004-11-11  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffdrivr.c (cff_service_ps_info): Updated.
	* src/cid/cidriver.c (cid_service_ps_info): Updated.
	* src/type42/t42drivr.c (t42_ps_get_font_private): New function.
	(t42_service_ps_info): Updated.

	* src/type42/t42parse.c (t42_parse_dict): Remove compiler warning.

2004-11-11  David Bevan  <dbevan@emtex.com>

	Add new function FT_Get_PS_Font_Private().

	* include/freetype/internal/services/svpsinfo.h
	(PS_GetFontPrivateFunc): New service function.

	* include/freetype/t1tables.h, src/base/fttype1.c
	(FT_Get_PS_Font_Private): New function.

	* src/type1/t1driver.c (t1_ps_get_font_private): New function.
	(t1_service_ps_info): Updated.

2004-10-13  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftstdlib.h: Include `stddef.h'.
	(ft_ptrdiff_t): Define.

	* include/freetype/fttypes.h (FT_PtrDist): Use `ft_ptrdiff_t'.

	* src/cid/cidload.c (cid_parse_dict), src/type1/t1load.c
	(parse_dict): Fix compiler warning.

2004-10-11  Joshua Neal  <jneal@csdaily.com>

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Check for pointer
	overflow.

	* src/sfnt/ttload.c (tt_face_load_hdmx): Protect against bad input.
	Don't use FT_QNEW_ARRAY but FT_NEW_ARRAY to make deallocation work
	in case of failure.

	* src/sfnt/ttsbit.c (Load_SBit_Range): Check range intervals.
	(tt_face_load_sbit_strikes): Allocate `strike_sbit_ranges' after
	frame test.

	* src/truetype/ttgload.c (TTLoad_Simple_Glyph): Add assertion for
	`flag'.

2004-10-09  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2004-10-09  Boris Letocha  <b.letocha@cz.gmc.net>

	Fix handling of NPUSHW if skipped in data stream.

	* src/truetype/ttinterp.c (opcode_length): Set value for NPUSHW
	to -2.
	(SkipCode, TT_RunIns): Use opcode_length value for computation of
	bytes to be skipped.

2004-09-10  Jouk Jansen  <joukj@hrem.stm.tudelft.nl>

	* vms_make.com: Updated.

2004-09-09  Werner Lemberg  <wl@gnu.org>

	Adding OpenType validation module.  The code is based on the
	(unfinished) `otlayout' module but has been heavily modified to make
	it much more compact.

	* src/otvalid/*: New module.

	* include/freetype/ftotval.h, src/base/ftotval.c,
	include/freetype/internal/services/svotval.h: New files.

	* include/freetype/config/ftmodule.h: Add otv_module_class.
	* include/freetype/config/ftheader.h (FT_OPENTYPE_VALIDATE_H): New
	macro.
	* include/freetype/internal/ftserv.h
	(FT_SERVICE_OPENTYPE_VALIDATE_H): New macro.
	* include/freetype/internal/fttrace.h (otvmodule, otvcommon,
	otvbase, otvgdef, otvgpos, otvgsub, otvjstf): New trace components.

	* include/freetype/ftchapters.h: Updated.

	* src/base/Jamfile (Library), src/base/descrip.mms (OBJS),
	src/base/rules.mk (BASE_EXT_SRC): Updated.

	* docs/CHANGES: Updated.

2004-09-08  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/sources.py (re_source_block_format2) <column>:
	Use lookahead assertion to not match `*/'.  This removes spurious
	insertions of `/' in the HTML output.

2004-09-07  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Fix call to
	FT_NEW_ARRAY.

2004-09-04  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftobjs.h: Don't include
	FT_CONFIG_STANDARD_LIBRARY_H.
	(FT_Validator, FT_ValidationLevel, FT_ValidatorRec, FT_VALIDATOR,
	ft_validator_init, ft_validator_run, ft_validator_error, FT_INVALID,
	FT_INVALID_TOO_SHORT, FT_INVALID_OFFSET, FT_INVALID_FORMAT,
	FT_INVALID_GLYPH_ID, FT_INVALID_DATA): Move to...

	* include/freetype/internal/ftvalid.h: New file.
	Make FT_INVALID return module-specific error codes.

	* include/freetype/internal/internal.h (FT_INTERNAL_VALIDATE_H): New
	macro.

	* include/freetype/fterrors.h: Undefine FT_ERR_PREFIX only if
	FT_KEEP_ERR_PREFIX isn't defined.

	* src/base/ftobjs.c: Include FT_INTERNAL_VALIDATE_H.

	* src/sfnt/ttcmap.h: Don't include FT_INTERNAL_OBJECTS_H but
	FT_INTERNAL_VALIDATE_H.

	* src/sfnt/ttcmap.c: Don't include FT_INTERNAL_OBJECTS_H but
	FT_INTERNAL_VALIDATE_H.
	Include sferrors.h before FT_INTERNAL_VALIDATE_H.
	s/FT_Err_Ok/SFNT_Err_Ok/.

	* src/sfnt/sferrors.h: Define FT_KEEP_ERR_PREFIX.

	* src/type1/t1afm.c: Include t1errors.h.

2004-09-03  Werner Lemberg  <wl@gnu.org>

	* src/base/ftdebug.c (ft_debug_init): Highest debug level is 7,
	not 6.
	* docs/DEBUG: Updated.

2004-08-30  Werner Lemberg  <wl@gnu.org>

	* include/freetype/tttags.h (TTAG_BASE, TTAG_GDEF, TTAG_GPOS,
	TTAG_JSTF): New tags.

	* include/freetype/fttypes.h (FT_Bytes, FT_Tag): New typedefs.
	(FT_Int): Add `signed'.

2004-08-29  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otlgpos.c (otl_gpos_subtable_validate): Add argument
	to pass number of lookups.
	Update all callers.
	Don't call otl_lookup_list_validate but otl_lookup_validate.
	(otl_gpos_validate): Call otl_lookup_list_validate instead of
	otl_gpos_subtable_validate.

	* src/otlayout/otlgpos.h: Updated.

	* src/otlayout/otljstf.c (otl_jstf_max_validate): Add argument to
	pass number of lookups.
	Update all callers.


	* src/cff/cffparse.c (cff_parse_real): s/exp/exponent/ to avoid
	compiler warning.


	* src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Renamed to...
	* src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: This.
	* src/sfnt/Jamfile, src/sfnt/rules.mk, src/sfnt/sfdriver.c,
	src/sfnt/sfnt.c, src/sfnt/sfobjs.c: Updated.


	* builds/compiler/gcc-dev.mk (CFLAGS): Don't add `-Wnested-externs'
	if compiler is g++ (v3.3.3 emits a warning otherwise).

2004-08-28  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otlgpos.c (otl_value_length): Return number of bytes,
	not number of 16bit entities.
	(otl_gpos_lookup2_validate): Check class definition tables for
	format 2.
	Fix loop for format 2.
	(otl_liga_mark2_validate): Fix offset for otl_anchor_validate.

2004-08-27  Werner Lemberg  <wl@gnu.org>

	* src/base/ftmac.c: Don't include truetype/ttobjs.h.
	Don't include type1/t1objs.h.
	(FT_New_Face_From_FSSpec) [!__MWERKS__]: Remove compiler warnings.

2004-08-27  Mathieu Malaterre  <mathieu@malaterre.com>

	* src/base/ftmac.c: Handle OS_INLINE for xlc compiler also.

2004-08-27  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otlayout.h: Add copyright.
	(OTL_INVALID_OFFSET): Removed.

	* src/otlayout/otlgdef.h: Include otlayout.h.
	Comment out inclusion of otltable.h.

	* src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call
	to otl_base_array_validate.
	(otl_liga_mark2_validate): Fix `for' loop.

	* src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id',
	not components array.

	* src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count):
	Comment out.
	(otl_lookup_list_get_count, otl_feature_list_get_count): Activate.
	(otl_feature_list_validate, otl_gsubgpos_get_lookup_count):
	s/otl_lookup_get_count/otl_lookup_list_get_count/.
	(otl_script_list_validate):
	s/otl_feature_get_count/otl_feature_list_get_count/.
	(otl_script_validate): Call otl_lang_validate for default language.

	* src/otlayout/otlcommn.h: Updated.

2004-08-16  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otlgpos.c (otl_gpos_lookup1_validate,
	otl_gpos_lookup2_validate, otl_gpos_lookup3_validate,
	otl_gpos_lookup4_validate, otl_gpos_lookup5_validate,
	otl_gpos_lookup6_validate, otl_gpos_lookup9_validate,
	otl_gpos_validate): Update
	function arguments.
	(otl_gpos_lookup7_validate, otl_gpos_lookup8_validate): Update
	function arguments.
	Handle NULL offsets correctly.
	Check sequence and lookup indices for format 3.
	(otl_pos_rule_validate, otl_chain_pos_rule_validate): Add argument
	to pass lookup count.
	Check sequence and glyph indices.
	(otl_gpos_subtable_validate): Update function arguments.
	Update callers.

	* src/otlayout/otlgpos.h: Updated.

	* src/otlayout/otlgsub.c (otl_gsub_lookup1_validate,
	otl_gsub_lookup3_validate, otl_gsub_lookup8_validate): Update
	function arguments.
	Add glyph index checks.
	(otl_sequence_validate, otl_alternate_set_validate,
	otl_ligature_validate): Add argument to pass glyph count.
	Update callers.
	Add glyph index check.
	(otl_gsub_lookup2_validate, otl_gsub_lookup4_validate): Update
	function arguments.
	(otl_ligature_set_validate): Add argument to pass glyph count.
	Update caller.
	(otl_sub_class_rule_validate,
	otl_sub_class_rule_set_validate): Removed.
	(otl_sub_rule_validate, otl_chain_sub_rule_validate): Add argument
	to pass lookup count.
	Update callers.
	Add lookup index check.
	(otl_sub_rule_set_validate, otl_chain_sub_rule_set_validate): Add
	argument to pass lookup count.
	Update callers.
	(otl_gsub_lookup5_validate): Update function arguments.
	Handle NULL offsets correctly.
	Don't call otl_sub_class_rule_set_validate but
	otl_sub_rule_set_validate.
	Check sequence and lookup indices for format 3.
	(otl_gsub_lookup6_validate): Update function arguments.
	Handle NULL offsets correctly.
	Check sequence and lookup indices for format 3.
	(otl_gsub_lookup7_validate, otl_gsub_validate): Update function
	arguments.

	* src/otlayout/otlgsub.h: Updated.

	* src/otlayout/otlbase.c (otl_base_validate): Handle NULL offsets
	correctly.

	* src/otlayout/otlcommn.c (otl_class_definition_validate): Fix
	compiler warning.
	(otl_coverage_get_first, otl_coverage_get_last): New functions.
	(otl_lookup_validate): Add arguments to pass lookup and glyph
	counts.
	Update callers.
	(otl_lookup_list_validate): Add argument to pass glyph count.
	Update callers.

	* src/otlayout/otlcommn.h: Updated.

	* src/otlayout/otljstf.c (otl_jstf_extender_validate,
	otl_jstf_max_validate, otl_jstf_script_validate,
	otl_jstf_priority_validate, otl_jstf_lang_validate): Add parameter
	to validate glyph indices.
	Update callers.
	(otl_jstf_validate): Add parameter which specifies number of glyphs
	in font.

	* src/otlayout/otljstf.h: Updated.

2004-08-15  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter
	to handle possible NULL values properly.
	Update all callers.

2004-08-15  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/gpos.c: Rename counting variables to be more
	meaningful.
	Add copyright.
	(otl_liga_attach_validate): Renamed to...
	(otl_liga_mark2_validate): This.
	Update all callers.
	(otl_mark2_array_validate): Removed.
	(otl_gpos_lookup6_validate): Call otl_liga_mark2_validate, not
	otl_mark2_array_validate.
	(otl_pos_class_set_validate, otl_pos_class_rule_validate): Removed.
	(otl_gpos_lookup7_validate): Complete code for format 2.
	(otl_chain_pos_class_rule_validate,
	otl_chain_pos_class_set_validate): Removed.
	(otl_gpos_lookup8_validate): Don't call
	otl_chain_pos_class_set_validate but
	otl_chain_pos_rule_set_validate.
	Simplify some code.

	* src/otlayout/otlgpos.h: Add copyright.

2004-08-14  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otljstf.c (otl_jstf_gsub_mods_validate): Removed.
	(otl_jstf_gpos_mods_validate): Renamed to...
	(otl_jstf_gsubgpos_mods_validate): This.
	Test whether lookup_count is zero.
	(otl_jstf_priority_validate): Use otl_jstf_gsubgpos_mods_validate.
	(otl_jstf_validate): Initialize gsub_lookup_count and
	gpos_lookup_count if gsub or gpos is zero.

	* src/otlayout/otlgsub.c: Rename counting variables to be more
	meaningful.
	Add copyright.
	(otl_gsub_lookup1_validate): Simplify code.
	(otl_gsub_lookup2_validate, otl_gsub_lookup3_validate,
	otl_gsub_lookup4_validate, otl_gsub_lookup7_validate): Remove unused
	variables.
	(otl_gsub_lookup5_validate): Remove unused variable.
	Fix call to otl_sub_rule_set_validate and
	otl_sub_class_rule_set_validate.
	(otl_chain_sub_class_rule_validate,
	otl_chain_sub_class_set_validate): Removed.
	(otl_gsub_lookup6_validate): Remove unused variable.
	Fix call to otl_chain_sub_rule_set_validate.
	(otl_gsub_lookup7_validate): Handle lookup type 8 also.
	(otl_gsub_lookup8_validate: New function.
	(otl_gsub_lookup1_apply, otl_gsub_lookup2_apply,
	otl_gsub_lookup3_apply): Commented out.
	(otl_gsub_validate_funcs): Add otl_gsub_lookup7_validate and
	otl_gsub_lookup8_validate.
	(otl_gsub_validate): Updated.

	* src/otlayout/otlgsub.h: Add copyright.

	* src/otlayout/otlcommn.c, src/otlayout/otlcommn.h
	(otl_coverage_get_index): Comment out.

2004-08-13  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otlcommn.c (otl_gsubgpos_get_lookup_count): New
	function.
	* src/otlayout/otlcommn.h: Updated.

	* src/otlayout/otlbase.c: Rename counting variables to be more
	meaningful.
	Add copyright message.
	* src/otlayout/otlbase.h: Add copyright message.

	* src/otlayout/otlgdef.c: Rename counting variables to be more
	meaningful.
	Add copyright message.
	Use OTL_CHECK everywhere.
	(otl_caret_value_validate): Remove unused variable.
	(otl_gdef_validate): All tables are optional.
	* src/otlayout/otlgdef.h: Add copyright message.

	* src/otlayout/otljstf.c: Rename counting variables to be more
	meaningful.
	Add copyright message.
	(otl_jstf_gsub_mods_validate, otl_jstf_gpos_mods_validate): Add
	parameter to pass lookup count.
	Update all callers.
	Check lookup array.
	(otl_jstf_max_validate):
	s/otl_gpos_subtable_check/otl_gpos_subtable_validate/.
	(otl_jstf_priority_validate, otl_jstf_lang_validate,
	otl_jstf_script_validate): Add two parameters to pass lookup counts.
	Update all callers.
	(otl_jstf_validate): Add two parameters to pass GPOS and GSUB
	table offsets; use otl_gsubgpos_get_lookup_count to convert extract
	lookup counts.
	Fix typo.
	* src/otlayout/otljstf.h: Updated.
	Add copyright message.

	* src/otlayout/otlgpos.c (otl_gpos_subtable_validate): New function.
	(otl_gpos_validate): Use it.
	* src/otlayout/otlgpos.h: Updated.

2004-08-13  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otcommn.c: Use OTL_CHECK everywhere.
	(otl_coverage_validate): Initialize `p',
	s/count/num_glyphs/.
	s/start_cover/start_coverage/.
	(otl_coverage_get_index): Return OTL_Long, not OTL_Int.
	Remove unused variables.
	(otl_class_definition_validate): s/count/num_glyphs/.
	Remove unused variables.
	(otl_class_definition_get_value, otl_device_table_get_start,
	otl_device_table_get_end, otl_device_table_get_delta,
	otl_lookup_get_table, otl_lookup_list_get_count,
	otl_lookup_list_get_lookup, otl_lookup_list_get_table,
	otl_feature_get_lookups, otl_feature_list_get_count,
	otl_feature_list_get_feature, otl_lang_get_count,
	otl_lang_get_req_feature, otl_lang_get_features): Commented out
	temporarily until we really need it.
	(otl_lookup_validate): Removed.
	(otl_lookup_table_validate): Renamed to ...
	(otl_lookup_validate): This.  Update callers.
	(otl_lookup_list_validate): Remove already commented out definition
	and move the other definition up.
	(otl_feature_validate): Add parameter to pass number of lookups.
	Update callers.
	Check lookup indices.
	(otl_feature_list_validate): Add parameter to pass lookup table.
	Update callers.
	(otl_lang_validate): Add parameter to pass number of features.
	Update callers.
	Handle req_feature and check feature indices.
	(otl_script_validate): Add parameter to pass number of features.
	Update callers.
	(otl_script_list_validate): Add parameter to pass feature table.
	Update callers.

	* src/otlayout/otcommn.h: s/LOCALDEF/LOCAL/.
	Comment out the same functions as in otcommn.c.
	(otl_script_list_get_script): Removed.

	* src/otlayout/otlgsub.c (otl_gsub_lookup1_apply): Change `index' to
	type OTL_Long.
	(otl_gsub_lookup2_apply, otl_gsub_lookup3_apply): Change `index' to
	type OTL_Long.
	Fix test.
	(otl_gsub_validate): Fix order of validation.

	* src/otlayout/otlgpos.c (otl_gpos_validate): Fix order of
	validation.

2004-08-12  Werner Lemberg  <wl@gnu.org>

	Make otlayout module compile (without actually working).

	* src/otlayout/*: s/OTL_Valid/OTL_Validator/.
	s/NULL/0/.

	* src/otlayout/otlayout.h: Fix various typos.
	(OTL_Bool): New typedef.
	(OTL_Int, OTL_Long, OTL_Int16, OTL_Int32): Use `signed' keyword.
	(OTL_Err_InvalidArgument): Removed.
	(OTL_Err_InvalidData, OTL_Err_InvalidSize): New enum values.
	(OTL_MAKE_TAG): Add missing parenthesis.
	(OTL_INVALID_DATA): Use OTL_Err_InvalidData.
	(OTL_INVALID_TOO_SHORT): Use OTL_Err_InvalidSize.
	(OTL_INVALID_FORMAT, OTL_INVALID_OFFSET): New macros.

	* src/otlayout/otlgpos.c: s/FT_/OTL_/.
	s/OTL_Short/OTL_Int16/.
	(otl_gpos_pairset_validate): Add return type.
	(otl_base_array_validate): Fix call to otl_anchor_validate.
	(otl_liga_array_validate): Fix call to otl_liga_attach_validate.
	(otl_gpos_lookup5_validate): Fix typos.
	(otl_gpos_lookup6_validate): Fix call to otl_mark2_array_validate.
	(otl_gpos_lookup7_validate): Comment out unfinished code.
	Fix typos.

	* src/otlayout/otlgsub.c: Add forward declaration for
	otl_gsub_validate_funcs.
	(otl_gsub_lookup1_apply, otl_gsub_lookup2_apply,
	otl_gsub_lookup3_apply): Fix call to otl_parser_check_property.
	s/otl_coverage_lookup/otl_coverage_get_index/.
	(otl_ligature_validate): Add missing variable declaration.
	(otl_sub_rule_validate): Fix typo.
	(otl_sub_class_rule_validate): Add missing variable declaration.
	Fix typo.
	(otl_gsub_lookup5_validate): Fix typo.
	(otl_gsub_lookup6_validate): Fix call to
	otl_chain_sub_class_set_validate.
	(otl_gsub_validate_funcs): Don't use `const'.

	* src/otlayout/otlcommn.c (otl_class_definition_get_value,
	otl_device_table_validate, otl_device_table_get_delta,
	otl_lookup_validate, otl_script_validate): Add missing
	variable declarations.
	(otl_lookup_list_validate): Comment out first definition.
	(otl_lookup_list_foreach, otl_feature_list_foreach): Comment out.
	(otl_feature_list_validate):
	s/otl_feature_table_validate/otl_feature_validate/.
	(otl_script_list_validate):
	s/otl_script_table_validate/otl_script_validate/.

	* src/otlayout/otlcommn.h: Comment out first declaration.
	(otl_lookup_list_foreach, otl_feature_list_foreach): Comment out.

	* src/otlayout/otlbase.c (otl_base_coord_validate): Fix call to
	otl_device_table_validate.
	(otl_base_script_validate): Add missing variable declarations.
	(otl_base_script_list_validate): Fix call to
	otl_base_script_validate.
	(otl_axis_table_validate): Fix calls to otl_base_tag_list_validate
	and otl_base_script_list_validate.
	(otl_base_validate): Fix calls to otl_axis_table_validate.

	* src/otlayout/otlgdef.c (otl_attach_list_validate): Fix call to
	otl_attach_point_validate.
	(otl_caret_value_validate): Add missing variable declaration.
	Fix call to otl_device_table_validate.
	(otl_ligature_glyph_validate): Fix call to otl_caret_value_validate.
	(otl_ligature_caret_list_validate): Fix call to
	otl_ligature_glyph_validate.
	(otl_gdef_validate): Fix calls to otl_class_definition_validate,
	otl_attach_list_validate, otl_ligature_caret_list_validate, and
	otl_class_definition_validate.

	* src/otlayout/otltable.h (otl_table_validate, otl_table_init,
	otl_table_set_script): Comment out.

	* src/otlayout/otlparse.h (OTL_ParserRec):
	s/OTL_Alternate/OTL_GSUB_Alternate/.
	(OTL_ParseError): Add OTL_Err_Parser_Memory and
	OTL_Err_Parser_Internal.
	(otl_parser_error): Fix typo.
	(otl_parser_check_property): Remove third argument.

	* src/otlayout/otlparse.c (otl_string_ensure):
	s/OTL_Parse_Err_Memory/OTL_Err_Parser_Memory/.
	(OTL_STRING_ENSURE, otl_parser_error, otl_parser_get_index,
	otl_parser_replace_1, otl_parser_replace_n): Fix typos.
	(OTL_PARSER_UNCOVERED): Removed.
	(otl_parser_check_property): Remove third argument.

	* src/otlayout/otljstf.c (otl_jstf_priority_validate): Add missing
	variable declaration.

	* src/otlayout/otlutils.h (OTL_MEM_REALLOC): Fix typo.

2004-08-11  Danny  <dannyboynow@yahoo.com>

	* src/base/ftstream.c (FT_Stream_Close): Don't reset stream->close
	to NULL.  This allows custom close functions to delete the FT_STREAM
	object.

2004-08-11  Werner Lemberg  <wl@gnu.org>

	Add API to get information about SFNT tables.

	* include/freetype/internal/services/svsfnt.h
	(FT_SFNT_Table_Info_Func): New typedef.
	(SFNT_Table): Add it.

	* src/base/ftobjs (FT_Sfnt_Table_Info): New function.

	* include/freetype/tttables.h: Updated.

	* src/sfnt/sfdriver.c (sfnt_table_info): New function.
	(sfnt_service_sfnt_table): Add it.

	* docs/CHANGES: Updated.


	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.

	* builds/unix/configure.ac (version_info): Set to 9:8:3.
	* builds/unix/configure: Updated.

	* 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.

2004-08-11  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/base/ftrfork.c (FT_Raccess_Guess)
	[!FT_CONFIG_OPTION_GUESSING_EMBEDDED_FORK]: Remove compiler
	warnings.

2004-08-06  Adam Piotrowski  <st_intel@poczta.onet.pl>

	* src/pfr/pfrload.c (pfr_sort_kerning_pairs): Single-byte
	adjustments are unsigned, not signed.

2004-08-05  David Turner  <david@freetype.org>

	`Activate' gray-scale specifing hinting within the TrueType
	bytecode interpreter.  This is an experimental feature which
	should probably be made optional.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
	load_truetype_glyph): Move the code to set the pedantic_hinting flag
	to...
	(TT_Load_Glyph): Here.
	Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'.

	* src/truetyep/ttinterp.c (Ins_GETINFO): Return MS rasterizer
	version 1.7.
	Return rotation and stretching info only if glyph is rotated or
	stretched, respectively.
	Handle grayscale info.

	* src/truetype/ttinterp.h (TT_ExecContextRec): Add `grayscale'
	member.

2004-08-02  George Williams  <gww@silcom.com>

	* src/base/ftobjs.c (FT_Attach_File): Initialize `open.stream'.

2004-08-01  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2004-08-01  George Williams  <gww@silcom.com>

	FreeType now can read kerning values from PFM files.

	* src/type1/t1afm.c (T1_Done_AFM): Renamed to...
	(T1_Done_Metrics): This.
	Update all callers.
	(T1_Read_AFM): Make it static.
	Don't enter and leave a frame.
	(LITTLE_ENDIAN_USHORT, LITTLE_ENDIAN_UINT): New macros.
	(T1_Read_PFM): New function.
	(T1_Read_Metrics): New higher-level function to be used instead of
	T1Read_AFM.
	Update all callers.

2004-07-31  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread (pcf_load_font), src/bdf/bdfdrivr.c
	(BDF_Face_Init), src/truetype/ttgxvar (TT_Get_MM_Var,
	tt_face_vary_cvt): Fix compiler warnings.

2004-07-26  Søren Sandmann  <sandmann@daimi.au.dk>

	* src/pcf/pcfread.c (pcf_interpret_style): Always allocate memory for
	face->style_name.
	* src/pcf/pcfdrivr.c (PCF_Face_Done): Free `style_name'.

2004-07-26  Darren J Longhorn  <darren.longhorn@redcom.co.uk>

	* include/freetype/config/ftconfig.h (FT_SIZEOF_LONG): Recognize
	five-byte `long' (which is avoided then).

2004-07-25  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/pcf/pcfdrivr.c (PCF_Set_Pixel_Size): Compare heights, not
	ppem values.
	(PCF_Set_Point_Size): Don't call PCF_Set_Pixel_Size but provide own
	code to compare ppem values.
	* src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Compare heights, not
	ppem values.
	(BDF_Set_Point_Size): Don't call BDF_Set_Pixel_Size but provide own
	code to compare ppem values.

2004-07-25  Kornfeld Eliyahu Peter  <peter@e-kadmon.net>

	* src/sfnt/sfobjs.c (sfnt_load_face): Handle
	TT_NAME_ID_PREFERRED_FAMILY and TT_NAME_ID_PREFERRED_SUBFAMILY.

2004-07-24  Derek B. Noonburg  <derekn@foolabs.com>

	* src/cff/cffload.c (cff_font_load): Always create inverse mapping.
	Even if the charstring count is the same as the CID count, it is
	still possible that the font uses a different CID -> GID mapping.

2004-07-23  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.c (tt_face_init): Accept 0x00020000 format tag
	found in some Arphic fonts made for Chinese version of Windows 3.1.

2004-07-17  David Turner  <david@freetype.org>

	Fixed a dangling pointer bug in the cache code that happened in very
	rare cases, i.e., when a new family object was destroyed by an
	out-of-memory condition during a glyph node initialization.  The
	function FTC_Cache_Lookup would flush the cache and restart the
	lookup with a bad pointer.

	* include/freetype/cache/ftcglyph.h (FTC_FAMILY_TREE): New macro.
	(FTC_GCACHE_LOOKUP_CMP): Use it.
	Handle reference count in `num_nodes' correctly.

	* src/cache/ftcglyph.c (FTC_GNode_UnselectFamily): Use
	FTC_FAMILY_FREE.
	(FTC_GCache_Lookup): Handle reference count in `num_nodes' correctly.

	* src/cache/ftcmanag.c (FTC_Manager_FlushN): Fixed a cache flushing
	bug.

	* src/truetype/ttinterp.c (Normalize): Fixed a bug that caused
	long and unnecessary delays while normalizing huge vectors.

2004-07-15  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

	* src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix compiler
	warning.

2004-07-15  David Turner  <david@freetype.org>

	* src/base/ftstroke.c (FT_Stroker_ParseOutline): Single points
	are not stroked, preventing a bug with pala.ttf and other
	fonts.

	* include/freetype/ftstroke.h: Updating documentation comments.

2004-07-13  Werner Lemberg  <wl@gnu.org>

	* src/base/ftstroke.c (ft_stroke_border_reverse): Removed.  Unused.

2004-07-12  David Turner  <david@freetype.org>

	* src/base/ftstroke.c (ft_stroke_border_close): Add second parameter
	to indicate reversion of points.
	Update all callers.
	(ft_stroke_border_reverse): Fix initialization of `point1' and
	`tag1'.

	* src/cache/ftcsbits.c (ftc_snode_load): Fixing advance computation
	for transformed glyphs.

2004-07-11  David Turner  <david@freetype.org>

	Fix bugs that prevented the stroker to correctly generate stroked
	paths from closed paths, i.e., nearly all glyphs in vectorial fonts.

	The code is still _very_ buggy though; treat with special care.

	* src/base/ftstroke.c (FT_STROKE_TAG_BEGIN_END): New macro.
	(ft_stroke_border_reverse): New function.
	(ft_stroker_inside): Remove local variable `sigma'; use different
	threshold.
	(ft_stroker_add_reverse_left): Switch begin/end tags if necessary.
	(FT_Stroker_EndSubPath): Call ft_stroker_inside and
	ft_stroke_border_reverse.

2004-06-26  Peter Kovar  <peter.kovar@r3.roburnet.sk>

	* src/truetype/ttgload.c (load_truetype_glyph): Fix typo.

2004-06-25  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1afm.c (afm_atoindex): Fix boundary test.  Reported
	by Dirck Blaskey.

2004-06-24  David Turner  <david@freetype.org>


	* Version 2.1.9 released.
	=========================


	* src/truetype/ttgload.c, src/truetype/ttxgvar.c: Removing
	compiler warnings.

2004-06-23  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftmemory.h [FT_DEBUG_MEMORY]: Declare
	FT_QAlloc_Debug and FT_QRealloc_Debug.

	* src/base/ftutil.c (FT_QAlloc): Fix error and debug messages.
	(FT_QRealloc): Call FT_QAlloc if original pointer is NULL.
	Fix error message.

2004-06-23  David Turner  <david@freetype.org>

	* include/freetype/internal/ftmemory.h, src/base/ftutil.c
	(FT_QAlloc, FT_QRealloc), src/base/ftdbgmem.c (FT_QAlloc_Debug,
	FT_QRealloc_Debug): New functions that perform allocation without
	zero-ing out the corresponding blocks.

	* include/freetype/internal/ftmemory.h (FT_MEM_QALLOC,
	FT_MEM_QREALLOC, FT_MEM_QNEW, FT_MEM_QNEW_ARRAY,
	FT_MEM_QRENEW_ARRAY, FT_QALLOC, FT_QREALLOC, FT_QNEW, FT_QNEW_ARRAY,
	FT_QRENEW_ARRAY): New macros.

	* src/base/ftstream.c (FT_Stream_EnterFrame): Use FT_QALLOC.
	* src/gzip/ftgzip.c (FT_Stream_OpenGzip):  Use FT_QNEW_ARRAY.
	* src/sfnt/sfobjs.c (tt_face_get_name): Use FT_QNEW_ARRAY.

	* src/sfnt/ttload.c (tt_face_load_directory, tt_face_load_metrics,
	tt_face_load_gasp): Use FT_QNEW_ARRAY.
	(tt_face_load_kern): Use FT_QNEW_ARRAY.
	Small optimization in the kerning table verifier; this speeds up
	TrueType face opening by about 7%.
	(tt_face_load_hdmx): Use FT_QNEW_ARRAY and FT_QALLOC.

	* include/freetype/config/ftmodule.h: Changed the order of modules,
	putting TrueType and Type 1 first.  This dramatically improves the
	performance of face open/close operations.  For example, putting the
	TrueType driver first in the list results in a 5x speedup when
	opening `Vera.ttf'.

	The very problem is that both the PCF and BDF drivers do a lot more
	than necessary to detect that they cannot handle a font file.

2004-06-22  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties,
	pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve
	debugging messages.

	* src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up.
	(PCF_Face_Init): Simplify code.

	* src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'.

	* src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_start),
	src/bdf/bdf.h (bdf_font_t): s/default_glyph/default_char/.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Fix number of glyphs.
	Set `default_glyph'.
	(BDF_Glyph_Load): Use `default_glyph' for undefined glyph.

	* docs/CHANGES: Updated.

2004-06-21  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2004-06-21  David Turner  <david@freetype.org>

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
	load_truetype_glyph): Don't access (unrounded)
	`TT_Size.root.metrics' but (rounded) `TT_Size.metrics'.  This fixes
	a scaling bug that caused incorrect rendering when the bytecode
	interpreter was enabled.

2004-06-14  Huw D M Davies  <h.davies1@physics.ox.ac.uk>

	* src/winfonts/winfnt.c (FNT_Face_Init): Set x_ppem and y_ppem
	based on pixel_width and pixel_height.
	(FNT_Size_Set_Pixels): Updated.

2004-06-14  Werner Lemberg  <wl@gnu.org>

	* src/lzw/zopen.c: Comment out inclusion of signal.h and unistd.h.
	Reported by Hyvärinen Jyrki Juhani.

2004-06-11  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2004-06-10  David Turner  <david@freetype.org>

	* src/base/ftobject.c, src/base/fthash.c, src/base/ftexcept.c,
	src/base/ftsysio.c, src/base/ftsysmem.c, src/base/ftlist.c: Removed.
	Obsolete.

	* src/raster/ftraster.c (Alignment, PAlignment): New union to fix
	problems with 64bit systems.
	(AlignProfileSize): Use it.

2004-06-08  David Turner  <david@freetype.org>

	* include/freetype/freetype.h (FT_GlyphMetrics): Move `lsb_delta'
	and `rsb_delta' elements to...
	(FT_GlyphSlotRec): Here to retain binary compatibility with older
	FreeType versions.
	Update all users.

	* src/sfnt/sfobjs.c (tt_face_get_name): Remove compiler warning.

	* src/winfonts/winfnt.c (FNT_Load_Glyph): Add missing initialization
	of slot->metrics.width and slot->metrics.height when loading a
	Windows FNT glyph.  Thanks to Huw Davies.

	* include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change
	return type to FT_Bool.

	* src/cache/ftbasic.c (ftc_basic_family_compare): Change return
	type to FT_Bool.

	* src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make
	the former call the latter, not vice versa.
	(FTC_Cache_Done, ftc_cache_done): Ditto.

	* src/cache/ftcglyph.c (FTC_GNode_Compare, ftc_gnode_compare): Make
	the former call the latter, not vice versa.
	(FTC_GCache_Init, ftc_gcache_init): Ditto.
	(FTC_GCache_Done, ftc_gcache_done): Ditto.

	* src/cache/ftcimage.c (FTC_INode_Free, ftc_inode_free): Make the
	former call the latter, not vice versa.
	(FTC_INode_Weight, ftc_inode_weight): Ditto.

	* src/cache/ftcmanag.c (ftc_size_node_compare,
	ftc_size_node_compare_faceid, ftc_face_node_compare): Change return
	type to FT_Bool.

	* src/cache/ftcsbits.c (FTC_SNode_Free, ftc_snode_free): Make the
	former call the latter, not vice versa.
	(FTC_SNode_Weight, ftc_snode_weight): Ditto.
	(FTC_SNode_Compare, ftc_snode_compare): Ditto.

	* src/cache/ftcsbits.c: Fix some bugs and inefficiencies in the cache
	sub-system.

2004-06-05  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afloader.c (af_loader_load_g): Set `lsb_delta' and
	`rsb_delta' in slot->metrics and tune side bearings slightly.

2004-06-04  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2004-06-04  David Chester  <davidchester@gmx.net>

	Improve inter-letter spacing for autohinted glyphs.

	* include/freetype/freetype.h (FT_Glyph_Metrics): Add elements
	`lsb_delta' and `rsb_delta'.

	* src/autohint/ahhint.c (ah_hinter_load): Set `lsb_delta' and
	`rsb_delta' in slot->metrics and tune side bearings slightly.

2004-06-04  David Turner  <david@freetype.org>

	* src/autofit/*: Important fixes to the auto-fitter.  The output
	now seems to be 100% equivalent to the auto-hinter, while being
	about 2% faster (which proves that script-specific algorithm
	selection isn't a performance problem).

	To test it, change `autohint' to `autofit' in
	<freetype/config/ftmodule.h> and recompile.

	A few more testing is needed before making this the official
	auto-hinting module.

2004-06-02  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (compute_glyph_metrics): Fix compiler
	warnings.

2004-06-01  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (tt_face_get_name): Make sure that an English
	name record for the Apple platform is preferred to a non-English
	entry for the Microsoft platform.  Problem reported by HANDA
	Ken'ichi.

2004-05-19  George Williams  <gww@silcom.com>

	* src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): New
	auxiliary functions.
	(T1_Get_MM_Var): Provide axis tags.
	Use mm_axis_unmap and mm_weights_unmap to provide default values
	for design and normalized axis coordinates.

	* include/freetype/t1tables.h (PS_DesignMapRec): Change type of
	`design_points' to FT_Long.
	Update all users.

2004-05-17  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbbox.c (BBox_Conic_Check): Fix boundary cases.
	Reported by Mikey Anbary <manbary@vizrt.com>.

2004-05-15  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_done_face): Free face->postscript_name.

2004-05-15  George Williams  <gww@silcom.com>

	* src/sfnt/ttload.c (tt_face_load_max_profile): Always set
	face->root.num_glyphs.

2004-05-14  Masatake YAMATO  <jet@gyve.org>
	    George Williams  <gww@silcom.com>

	* src/sfnt/ttload.c (sfnt_dir_check): Handle `bhed' properly.

2004-05-14  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftcbasic.c (ftc_basic_family_compare,
	ftc_basic_family_init, ftc_basic_family_get_count,
	ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph,
	ftc_basic_gnode_compare_faceid): Adjust parameters and return types
	to prototypes given in header files from include/freetype/cache.
	Use casts to proper types locally.
	(ftc_basic_image_family_class, ftc_basic_image_cache_class,
	ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): Remove
	casts.

	* src/cache/ftccback.h: Adjust parameters and return types to
	prototypes given in header files from include/freetype/cache.

	* src/cache/ftcimage.c (ftc_inode_free, ftc_inode_new,
	ftc_inode_weight): Adjust parameters and return types to prototypes
	given in header files from include/freetype/cache.  Use casts to
	proper types locally.

	* src/cache/ftcsbits.c (ftc_snode_free, ftc_snode_new,
	ftc_snode_weight, ftc_snode_compare): Adjust parameters and return
	types to prototypes given in header files from
	include/freetype/cache.  Use casts to proper types locally.

	* src/cache/ftccmap.c (ftc_cmap_node_free, ftc_cmap_node_new,
	ftc_cmap_node_weight, ftc_cmap_node_compare,
	ftc_cmap_node_remove_faceid): Adjust parameters and return types to
	prototypes given in header files from include/freetype/cache.  Use
	casts to proper types locally.
	(ftc_cmap_cache_class): Remove casts.

	* src/cache/ftcglyph.c (ftc_gnode_compare, ftc_gcache_init,
	ftc_gcache_done): Adjust parameters and return types to prototypes
	given in header files from include/freetype/cache.  Use casts to
	proper types locally.

	* src/cache/ftcmanag.c (ftc_size_node_done, ftc_size_node_compare,
	ftc_size_node_init, ftc_size_node_reset,
	ftc_size_node_compare_faceid, ftc_face_node_init,
	ftc_face_node_done, ftc_face_node_compare: Adjust parameters and
	return types to prototypes given in header files from
	include/freetype/cache.  Use casts to proper types locally.

	(ftc_size_list_class, ftc_face_list_class): Remove casts.

2004-05-13  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahmodule.c (ft_autohinter_init, ft_autohinter_done):
	Use FT_Module as parameter and do a cast to FT_AutoHinter locally.
	(autohint_module_class): Remove casts.

	* src/base/ftglyph.c (ft_bitmap_glyph_init, ft_bitmap_glyph_copy,
	ft_bitmap_glyph_done, ft_bitmap_glyph_bbox, ft_outline_glyph_init,
	ft_outline_glyph_done, ft_outline_glyph_copy,
	ft_outline_glyph_transform, ft_outline_glyph_bbox,
	ft_outline_glyph_prepare): Use FT_Glyph as parameter and do a cast
	to FT_XXXGlyph locally.
	Use FT_CALLBACK_DEF throughout.
	(ft_bitmap_glyph_class, ft_outline_glyph_class): Remove casts.

	* src/bdf/bdfdrivr.c (bdf_cmap_init, bdf_cmap_done,
	bdf_cmap_char_index, bdf_cmap_char_next): Use FT_CMap as parameter
	and do a cast to BDF_CMap locally.
	(bdf_cmap_class): Remove casts.

2004-05-12  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.h (CFF_Builder): Remove `error'.
	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace
	`Memory_Error' with `Fail' und update all users.

2004-05-11  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/psaux.h (T1_ParseState): New
	enumeration.
	(T1_BuilderRec): Replace `path_begun' with `parse_state'.
	Remove `error'.
	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Replace
	`Memory_Error' with `Fail' and update all users.
	Don't use `builder->error'.
	Replace `path_begun' with `parse_state' and check parsing states.

	* src/psaux/psobjs.c (t1_builder_init, t1_builder_start_point):
	Replace `path_begun' with `parse_state' and check parsing states.

2004-05-10  George Williams  <gww@silcom.com>

	* src/truetype/ttxgvar.c (ft_var_load_avar): Do free arrays in case
	of error -- `avar' is optional so we can't rely on tt_done_blend
	being called automatically.

2004-05-09  George Williams  <gww@silcom.com>

	* src/truetype/ttxgvar.c (ft_var_load_avar, ft_var_load_gvar): Fix
	error handling.

2004-05-07  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrobjs.c, src/pfr/pfrobjs.h (pfr_face_init,
	pfr_face_done, pfr_face_get_kerning, pfr_slot_init, pfr_slot_done,
	pfr_slot_load): Don't use PFR_XXX but FT_XXX arguments which are
	typecast to the proper PFR_XXX types within the function.
	Update code accordingly.

	* src/pfr/pfrdrivr.c (pfr_get_kerning, pfr_get_advance,
	pfr_get_metrics, pfr_get_service): Don't use PFR_XXX but FT_XXX
	arguments which are typecast to the proper PFR_XXX types within the
	function.
	Update code accordingly.
	Use FT_CALLBACK_DEF throughout.
	(pfr_metrics_service_rec, pfr_driver_class): Remove casts.

2004-05-06  Masatake YAMATO  <jet@gyve.org>

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Use FT_FACE_STREAM.
	(*): Rename local variable OffsetToData to offsetToData.

2004-05-06  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset,
	cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access
	root fields directly.
	* src/cff/cffdrivr.c (Load_Glyph): Access root fields directly.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current
	frame before calling TT_Vary_Get_Glyph_Deltas.

	* src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for
	consistency.
	(pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index,
	pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which
	are typecast to the proper PCF_XXX types within the function.
	Update code accordingly.
	(pcf_cmap_class): Remove casts.
	(PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use
	PCF_XXX but FT_XXX arguments which are typecast to the proper
	PCF_XXX types within the function.
	Update code accordingly.
	Use FT_CALLBACK_DEF throughout.
	(PCF_Set_Point_Size): New wrapper function.
	(PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF.
	(pcf_driver_class): Remove casts.

2004-05-04  Steve Hartwell  <shspamsink@comcast.net>

	* src/truetype/ttobjs.c (tt_driver_done): Fix typo.

2004-05-04  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdfdrivr.c (BDF_Face_Done, BDF_Face_Init,
	BDF_Set_Pixel_Size): Don't use BDF_XXX but FT_XXX arguments which
	are typecast to the proper BDF_XXX types within the function.
	Update code accordingly.
	Use FT_CALLBACK_DEF throughout.
	(BDF_Set_Point_Size): New wrapper function.
	(bdf_driver_class): Remove casts.

	* src/cff/cffdrivr.c (Get_Kerning, Load_Glyph, cff_get_interface):
	Don't use CFF_XXX but FT_XXX arguments which are typecast to the
	proper CFF_XXX types within the function.
	Update code accordingly.
	Use FT_CALLBACK_DEF throughout.
	(cff_driver_class): Remove casts.

	* src/cff/cffobjs.h, src/cff/cffobjs.c (cff_size_done,
	cff_size_init, cff_size_reset, cff_slot_done, cff_slot_init,
	cff_face_init, cff_face_done, cff_driver_init, cff_driver_done):
	Don't use CFF_XXX but FT_XXX arguments which are typecast to the
	proper CFF_XXX types within the function.
	Update code accordingly.
	(cff_point_size_reset): New wrapper function.

	* src/cid/cidobjs.h, src/cid/cidobjs.c (cid_slot_done,
	cid_slot_init, cid_size_done, cid_size_init, cid_size_reset,
	cid_face_done, cid_face_init, cid_driver_init, cid_driver_done):
	Don't use CID_XXX but FT_XXX arguments which are typecast to the
	proper CID_XXX types within the function.
	Update code accordingly.
	(cid_point_size_reset): New wrapper function.

	* src/cid/cidgload.c, src/cid/cidgload.h (cid_slot_load_glyph):
	Don't use CID_XXX but FT_XXX arguments which are typecast to the
	proper CID_XXX types within the function.
	Update code accordingly.

	* src/cid/cidriver.c (cid_get_interface):
	Don't use CID_XXX but FT_XXX arguments which are typecast to the
	proper CID_XXX types within the function.
	Update code accordingly.
	Use FT_CALLBACK_DEF.
	(t1cid_driver_class): Remove casts.

	* src/truetype/ttdriver.c (tt_get_interface): Use FT_CALLBACK_DEF.
	* src/truetype/ttgxvar.c (ft_var_load_avar): Don't free non-local
	variables (this is done later).
	(ft_var_load_avar): Fix call to FT_FRAME_ENTER.
	(TT_Get_MM_Var): Fix size for `fvar_fields'.
	(TT_Vary_Get_Glyph_Deltas): Handle deallocation of local variables
	correctly.

	* src/base/ftdbgmem.c (ft_mem_debug_realloc): Don't abort if
	current size is zero.

2004-05-03  Steve Hartwell  <shspamsink@comcast.net>

	* src/truetype/ttobjs.h, src/truetype/ttobjs.c (tt_face_init,
	tt_face_done, tt_size_init, tt_size_done, tt_driver_init,
	tt_driver_done): Don't use TT_XXX but FT_XXX arguments which are
	typecast to the proper TT_XXX types within the function.
	Update code accordingly.

	* src/truetype/ttdriver.c (Get_Kerning, Set_Char_Sizes,
	Set_Pixel_Sizes, Load_Glyph, tt_get_interface): Don't use TT_XXX but
	FT_XXX arguments which are typecast to the proper TT_XXX types
	within the function.
	Update code accordingly.
	(tt_driver_class): Remove casts.

2004-05-02  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttload.c (tt_face_free_names): Check that `table->names'
	is not NULL.  Reported by Gordon Childs <gchilds@quickcut.com.au>.

2004-04-29  Werner Lemberg  <wl@gnu.org>

	* docs/formats.txt: Add more information on PFR format.

2004-04-28  Werner Lemberg  <wl@gnu.org>

	* docs/formats.txt: New file.
	* docs/CHANGES: Updated.

2004-04-28  Masatake YAMATO  <jet@gyve.org>

	* include/freetype/internal/tttypes.h (GX_BlendRec_)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix a typo.

	* src/truetype/ttgxvar.h (GX_BlendRec_): Fix a typo.

2004-04-27  Masatake YAMATO  <jet@gyve.org>

	* src/truetype/ttgxvar.h: Use FT_LOCAL instead of FT_LOCAL_DEF
	for function declarations.

2004-04-25  George Williams  <gww@silcom.com>

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix typo.

2004-04-25  Werner Lemberg  <wl@gnu.org>

	* src/truetype/Jamfile, docs/CHANGES: Updated.

2004-04-24  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
	* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
	* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
	Use FT_BEGIN_HEADER and FT_END_HEADER.
	Use FT_LOCAL.

2004-04-24  George Williams  <gww@silcom.com>

	Add support for Apple's distortable font technology (in GX fonts).

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.

	* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
	FT_MM_Var): New structures.
	(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
	FT_Set_Var_Blend_Coordinates): New function declarations.

	* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
	FT_Set_Var_Design_Func): New typedefs.
	Update MultiMasters service.

	* include/freetype/internal/tttypes.h
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
	(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
	(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
	and `blend'.

	* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
	macros.

	* include/freetype/internal/fttrace.h: Add `ttgxvar'.

	* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
	FT_Set_Var_Blend_Coordinates): New functions.

	* src/sfnt/sfobjs.c (sfnt_load_face)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
	flag for GX var fonts.

	* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.

	* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
	ttgxvar.c.

	* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
	FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
	(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
	New service.
	(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.

	* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
	ttgxvar.h.
	(TT_Process_Simple_Glyph, load_truetype_glyph)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.

	* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
	ttgxvar.h.
	(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
	tt_done_blend.

	* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
	ttgxvar.h.
	(tt_face_load_cvt)  [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
	tt_face_vary_cvt.

	* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.

	* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
	and T1_Set_Var_Design.

	* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
	(T1_Get_MM_Var, T1_Set_Var_Design): New functions.

	* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
	function declarations.

2004-04-23  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftcache.h (FT_Get_CharMap_Index): Rename
	declaration and move to...
	* include/freetype/freetype.h (FT_Get_Charmap_Index): Here.
	(FREETYPE_PATCH): Set to 9.

	* src/base/ftobjs.c (FT_Get_Charmap_Index): New function.

	* builds/unix/configure.ac (version_info): Set to 9:7:3.
	* builds/unix/configure: Updated.

	* builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj: s/218/219/.

	* builds/freetype.mk (refdoc), README, Jamfile (RefDoc):
	s/2.1.8/2.1.9/.

	* docs/CHANGES, docs/VERSION.DLL: Updated.

2004-04-21  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffparse.c (cff_parser_run), src/psaux/psobjs.c
	(ps_parser_load_field): Use FT_CHAR_BIT.

2004-04-21  David Turner  <david@freetype.org>


	* Version 2.1.8 released.
	=========================


	* src/cff/cffobjs.c (cff_face_init): Fix a small memory leak.

	* src/autofit/afloader.c (af_loader_load_g), src/autofit/afmodule.c
	(af_autofitter_load_glyph), src/base/ftdebug.c (FT_Trace_Get_Name):
	Remove compiler warnings.

	* src/autofit/aftypes.h: Undefine AF_DEBUG.

	* src/lzw/zopen.c (rmask), src/pcf/pcfdrivr.c (pcf_service_bdf,
	pcf_services), src/pcf/pcfread.c (tableNames), src/psaux/psobjs.c
	(ft_char_table), src/type42/t42drivr.c (t42_service_glyph_dict,
	t42_service_ps_font_name): Decorate data arrays with `const' to
	avoid populating the `.data' segment.

	* src/lzw/Jamfile: New file.

2004-04-20  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psobjs.c (T1Radix): Renamed to...
	(ps_radix): This.
	Update current cursor position.

	* docs/CHANGES: Updated.

2004-04-18  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph),
	src/ttdriver.c (Load_Glyph): Change type of `glyph_index' to
	FT_UInt.  From Lex Warners.

2004-04-17  Chisato Yamauchi  <cyamauch@a.phys.nagoya-u.ac.jp>

	* src/sfnt/ttload.c (tt_face_load_sfnt_header): Really fix change
	from 2004-03-19.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use `ft_strlen'.

	* src/pcf/pcfutil.c, src/pcf/pcfutil.h: Decorate functions with
	`static'.
	Remove unused function `RepadBitmap'.
	* src/pcf/pcfdrivr.c: Don't include pcfutil.h.

2004-04-16  Werner Lemberg  <wl@gnu.org>

	* builds/unix/freetype-config.in (usage): Fix and improve usage
	information.

2004-04-15  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define
	FT_CHAR_BIT.

	* src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if
	glyph is vertically distorted or mirrored.

	* src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly
	for embedded bitmaps.

	* docs/CHANGES: Updated.

2004-04-15  bytesoftware  <bytesoftware@btinternet.com>

	* include/freetype/config/ftconfig.h, src/base/ftstream.c
	(FT_Stream_ReadFields): More fixes using FT_CHAR_BIT.

2004-04-14  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftconfig.h (FT_CHAR_BIT): New macro.

2004-04-14  Alex Strelnikov  <ptktyrf@mail.ru>

	* src/cache/ftcsbits.c (ftc_snode_load): Initialize `*asize' in case
	of error.

2004-04-14  Werner Lemberg  <wl@gnu.org>

	* src/base/ftmac.c [__GNUC__]: Define OS_INLINE.
	* builds/unix/configure.ac: Don't try to remove `-ansi' compilation
	switch on the Mac.

	* builds/unix/ltmain.sh: Regenerated with `libtoolize --force
	--copy' from libtool 1.5.6.
	* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
	automake 1.8a.
	* builds/unix/configure: Regenerated with autoconf 2.59a.

2004-04-13  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftconfig.h: Use CHAR_BIT to define
	size of FT_SIZEOF_xxx.

2004-04-12  Chisato Yamauchi  <cyamauch@a.phys.nagoya-u.ac.jp>

	* include/freetype/internal/sfnt.h (TT_Find_SBit_Image_Func,
	TT_Load_SBit_Metrics_Func): New typedefs.
	(SFNT_Interface): Add find_sbit_image and load_sbit_metrics.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.
	* src/sfnt/ttsbit.h (tt_find_sbit_image, tt_load_sbit_metrics): New
	declarations.
	* src/sfnt/ttsbit.c (find_sbit_image): Renamed to...
	(tt_find_sbit_image): This.
	Updated all callers.
	(load_sbit_metrics): Renamed to...
	(tt_load_sbit_metrics): This.
	Updated all callers.

2004-04-12  Werner Lemberg  <wl@gnu.org>

	* configure: Accept makepp also.

	* builds/unix/detect.mk: Use proper path to unix-def.mk.
	* builds/unix/unix-def.in (BUILD_DIR, PLATFORM): Remove.
	* builds/unix/unix.mk (BUILD_DIR, PLATFORM): Define.
	Use BUILD_DIR.

	* docs/INSTALL, docs/INSTALL.GNU, docs/INSTALL.UNX: Update
	documentation on makepp.

2004-04-11  Werner Lemberg  <wl@gnu.org>

	* src/lzw/zopen.c: Don't include sys/param.h and sys/stat.h.

2004-04-10  Werner Lemberg  <wl@gnu.org>

	* src/lzw/ftlzw.c: Include zopen.h dependent on
	FT_CONFIG_OPTION_USE_LZW.

	* src/base/ftdebug.c: s/index/idx/ to avoid compiler warnings.

2004-04-02  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ltmain.sh: Regenerated with `libtoolize --force
	--copy' from libtool 1.5.2.
	* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
	automake 1.8a.
	* builds/unix/configure: Regenerated with autoconf 2.59a.

2004-04-01  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ft-munmap.m4 (FT_MUNMAP_PARAM): Fix arguments of
	AC_COMPILE_IFELSE.
	* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
	automake 1.8a.
	* builds/unix/configure: Regenerated with autoconf 2.59a.
	* builds/unix/config.guess, builds/unix/config.sub: Updated from
	`config' CVS module at subversions.gnu.org.
	* builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
	`texinfo' CVS module at subversions.gnu.org.
	* builds/freetype.mk (refdoc): Updated.

2004-03-31  Werner Lemberg  <wl@gnu.org>

	Handle broken FNT files which don't have a trailing NULL byte
	in the face name string.

	* src/winfonts/winfnt.h (FNT_FontRec): New member `family_name'.
	* src/winfonts/winfnt.c (fnt_font_done): Free font->family_name.
	(FNT_Face_Init): Append a final zero byte to the font face name.

2004-03-30  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttload.c (tt_face_load_sfnt_header): Fix change from
	2004-03-19.

2004-03-27  Werner Lemberg  <wl@gnu.org>

	* src/base/descrip.mms (OBJS): Add ftbbox.obj.

2004-03-26  George Williams  <gww@silcom.com>

	Add vertical phantom points.

	* include/freetype/internal/tttypes.h (TT_LoaderRec): Add
	`top_bearing', `vadvance', `pp3', and `pp4'.

	* src/autofit/afloader.c (af_loader_load_g): Handle two more points.

	* src/autohint/ahhint.c (ah_hinter_load): Handle two more points.
	* src/truetype/ttgload.c (Get_VMetrics): New function.
	(TT_Load_Simple_Glyph, TT_Process_Simple_Glyph): Handle two more
	points.
	(load_truetype_glyph): Use Get_VMetrics.
	Handle two more points.
	(compute_glyph_metrics): Thanks to vertical phantom points we now
	can always compute `advance_height' and `top_bearing'.
	* src/truetype/ttobjs.h (TT_SubglyphRec): Add vertical phantom
	points.


	* src/autohint/ahglyph.c (ah_outline_load): Fix allocation of
	`news'.

2004-03-21  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdfdrivr.c (BDF_Glyph_Load): Fix left side bearing.

2004-03-20  Steve Hartwell  <shspamsink@comcast.net>

	* src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Handle a NULL
	value for `selection' as `select all'.

2004-03-19  Steve Hartwell  <shspamsink@comcast.net>

	* src/sfnt/ttload.c (tt_face_load_sfnt_header): Reject face_index
	values > 0 if loading non-TTC fonts.

	* src/base/ftmac.c (open_face_from_buffer): Set positive face_index
	to zero before calling FT_Open_Face.

	* docs/CHANGES: Updated.

2004-03-04  Werner Lemberg  <wl@gnu.org>

	* Jamfile, vms_make.com, builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype/vcproj, include/freetype/ftmoderr.h:
	Add LZW module.

	* Jamfile.in: Removed.

	* docs/CHANGES: Updated.

	* include/freetype/internal/ftobjs.h: s/MIN/FT_MIN/, s/MAX/FT_MAX/,
	s/ABS/FT_ABS/.  Updated all callers.

	* src/type1/t1load.c (parse_dict), src/pcf/pcfdrivr.c
	(PCF_Face_Init): Use FT_ERROR_BASE.

2004-03-04  Albert Chin  <china@thewrittenword.com>

	Add support for PCF fonts compressed with LZW (extension .pcf.Z,
	created with `compress').

	* include/freetype/config/ftoption.h, devel/ftoption.h
	(FT_CONFIG_OPTION_USE_LZW): New macro.

	* include/freetype/ftlzw.h: New file.
	* include/freetype/config/ftheader.h (FT_LZW_H): New macro for
	ftlzw.h.

	* src/lzw/*: New files.

	* src/pcf/pcfdrivr.c: Include FT_LZW_H.
	(PCF_Face_Init): Try LZW also.

	* src/gzip/ftgzip.c: s/0/Gzip_Err_Ok/ where appropriate.
	Beautify.

2004-03-03  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshalgo.c (psh_hint_table_init): Simplify code.

2004-03-02  Werner Lemberg  <wl@gnu.org>

	Add embedded bitmap support to CFF driver.

	* src/cff/cffobjs.h (CFF_SizeRec): New structure.

	* src/cff/cffgload.c (cff_builder_init): Updated.
	(cff_slot_load): Updated.
	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Load sbit.

	* src/cff/cffobjs.c (sbit_size_reset)
	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New function.
	(cff_size_get_globals_funcs, cff_size_done, cff_size_init): Updated.
	(cff_size_reset): Updated.
	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Call sbit_size_reset.

	* src/cff/cffdrivr.c (Load_Glyph): Updated.
	(cff_driver_class): Use CFF_SizeRec.

	* docs/CHANGES: Updated.

2004-03-01  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshglob.c (psh_globals_scale_widths): Don't use
	FT_RoundFix but FT_PIX_ROUND.
	(psh_blues_snap_stem): Don't use blue_shift but blue_threshold.

	* src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD_MAXIMUM): New macro.
	(psh_glyph_find_string_points): Use PSH_STRONG_THRESHOLD_MAXIMUM.
	(psh_glyph_find_blue_points): New function.  Needed for fonts like
	p052003l.pfb (URW Palladio L Roman) which have flex curves at the
	base line within blue zones, but the flex curves aren't covered by
	hints.
	(ps_hints_apply): Use psh_glyph_find_blue_points.

2004-02-27  Garrick Meeker  <garrick@digitalanarchy.com>

	* builds/unix/configure.ac: Fix compiler flags for
	`--with-old-mac-fonts'.
	* builds/unix/configure: Regenerated.

	* src/base/ftmac.c: s/TARGET_API_MAC_CARBON/!TARGET_API_MAC_OS8/.
	(FT_New_Face_From_Resource): New function.
	(FT_New_Face): Use FT_New_Face_From_Resource.
	(FT_New_Face_From_FSSpec): Use FT_New_Face_From_Resource.
	[__MWERKS__]: Don't include FSp_fopen.h.

2004-02-26  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshglob.c (psh_globals_new): Fix value of
	`dim->stdw.count'.
	Don't assign default values to blue scale and blue shift.

2004-02-25  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2004-02-25  Garrick Meeker  <garrick@digitalanarchy.com>
	    Steve Hartwell  <shspamsink@comcast.net>

	Improve MacOS fond support.  Provide a new API
	`FT_New_Face_From_FSSpec' similar to `FT_New_Face'.

	* src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h.
	STREAM_FILE [__MWERKS__]: New macro.
	(ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions.
	(file_spec_from_path) [__MWERKS__]: Updated #if statement.
	(get_file_type, make_lwfn_spec): Use `const' for argument.
	(is_dfont) [TARGET_API_MAC_CARBON]: Removed.
	(count_face_sfnt, count_faces): New functions.
	(parse_fond): Do some range checking.
	(read_lwfn): Change type of second argument.
	No longer call FSpOpenResFile.
	(OpenFileAsResource): New function.
	(FT_New_Face_From_LWFN): Use `const' for second argument.
	Use OpenFileAsResource.
	(FT_New_Face_From_Suitcase): Change type of second argument.
	No longer call FSpOpenResFile.
	Loop over all resource indices.
	(FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Removed.
	(FT_GetFile_From_Mac_Name): Use `const' for first argument.
	(ResourceForkSize): Removed.
	(FT_New_Face): Updated to use new functions.
	(FT_New_Face_From_FSSpec): New function.

	* include/freetype/ftmac.h: Updated.

2004-02-24  Malcolm Taylor  <mtaylor@clear.net.nz>

	* src/autohint/ahhint.c (ah_hinter_load) <FT_GLYPH_FORMAT_OUTLINE>:
	Handle case where outline->num_vedges is zero while computing hinted
	metrics.

2004-02-24  Gordon Childs  <gchilds@quickcut.com.au>

	* src/cff/cffcmap.c (cff_cmap_unicode_init): Provide correct value
	for `count'.

2004-02-24  Werner Lemberg  <wl@gnu.org>

	* include/freetype/t1tables.h (PS_PrivateRec): Add
	`expansion_factor'.

	* src/pshinter/pshglob (psh_blues_scale_zones): Fix computation
	of blues->no_overshoots -- `blues_scale' is stored with a
	magnification of 1000, and `scale' returns fractional pixels.

	* src/type1/t1load.c (T1_Open_Face): Initialize `blue_shift',
	`blue_fuzz', `expansion_factor', and `blue_scale' according to the
	Type 1 specification.

	* src/type1/t1tokens.h: Handle `ExpansionFactor'.

	* docs/CHANGES: Updated.

2004-02-24  Masatake YAMATO  <jet@gyve.org>

	Provide generic access to MacOS resource forks.

	* src/base/ftrfork.c, include/freetype/internal/ftrfork.h: New
	files.

	* src/base/ftobjs.c: Include FT_INTERNAL_RFORK_H.
	(Mac_Read_POST_Resource, Mac_Read_sfnt_Resource): Remove arguments
	`resource_listoffset' and `resource_data' and adapt code
	accordingly.  These values are calculated outside of the function
	now.
	Add new argument `offsets'.
	(IsMacResource): Use `FT_Raccess_Get_HeaderInfo' and
	`FT_Raccess_Get_DataOffsets'.
	(load_face_in_embedded_rfork): New function.
	(load_mac_face): Use load_face_in_embedded_rfork.
	(ft_input_stream_new): Renamed to...
	(FT_Stream_New): This.  Use FT_BASE_DEF.  Updated all callers.
	(ft_input_stream_free): Renamed to...
	(FT_Stream_Free): This.  Use FT_BASE_DEF.  Updated all callers.

	* src/base/ftbase.c: Include ftrfork.c.

	* src/base/rules.mk (BASE_SRC), src/base/Jamfile: Updated.

	* include/freetype/internal/internal.h (FT_INTERNAL_RFORK_H):
	New macro.

	* include/freetype/internal/fttrace.h: Added `rfork' as a new
	trace definition.

	* include/freetype/internal/ftstream.h: Declare FT_Stream_New and
	FT_Stream_Free.

	* include/freetype/config/ftoption.h, devel/ftoption.h
	(FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK): New option.

	* include/freetype/config/ftstdlib.h (ft_strrchr): New macro.

2004-02-23  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

	* include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H.

2004-02-23  Masatake YAMATO  <jet@gyve.org>

	Provide a simple API to control FreeType's tracing levels.

	* include/freetype/internal/ftdebug.h (FT_Trace_Get_Count,
	FT_Trace_Get_Name): New declarations.

	* src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New
	functions.

2004-02-23  David Turner  <david@freetype.org>

	* src/autofit/afhints.c, src/autofit/afhints.h,
	src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave
	bugs have been fixed.  The auto-fitter works, doesn't crash, but
	still produces unexpected results...

2004-02-21  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD): Changed to hold
	the accepted shift for strong points in fractional pixels (which
	is a heuristic value).
	(psh_glyph_find_strong_points): Compute threshold for
	psh_hint_table_find_strong_points.
	(psh_hint_table_find_strong_point): Add parameter to pass threshold.

2004-02-20  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call
	ps_mask_table_alloc but ps_mask_table_last.
	(ps_hints_t2mask): Use correct position and number for vertical
	and horizontal hinter mask bits.

	* docs/CHANGES: Updated.

2004-02-19  Werner Lemberg  <wl@gnu.org>

	* src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling.
	* src/cff/cffdrivr.c (cff_get_cmap_info): Remove compiler warning.

2004-02-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly.

	* src/base/ftglyph.c (ft_bitmap_glyph_class,
	ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF.

	* src/smooth/ftsmooth.c (ft_smooth_render): Handle
	FT_RENDER_MODE_LIGHT.

2004-02-17  Werner Lemberg  <wl@gnu.org>

	Fix callback functions in cache module.

	* src/cache/ftccback.h: New file for callback declarations.

	* src/cache/ftcbasic.c (ftc_basic_family_compare,
	ftc_basic_family_init, ftc_basic_family_get_count,
	ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph,
	ftc_basic_gnode_compare_faceid): Use FT_CALLBACK_DEF.
	(ftc_basic_image_family_class, ftc_basic_image_cache_class,
	ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class):
	Use FT_CALLBACK_TABLE_DEF and local wrapper functions.

	* src/cache/ftccache.c: Include ftccback.h.
	(ftc_cache_init, ftc_cache_done): New wrapper functions which use
	FT_LOCAL_DEF.

	* src/cache/ftccmap.c: Include ftccback.h.
	(ftc_cmap_cache_class): Use local wrapper functions.

	* src/cache/ftcglyph.c: Include ftccback.h.
	(ftc_gnode_compare, ftc_gcache_init, ftc_gcache_done): New wrapper
	functions which use FT_LOCAL_DEF.

	* src/cache/ftcimage.c: Include ftccback.h.
	(ftc_inode_free, ftc_inode_new, ftc_inode_weight): New wrapper
	functions which use FT_LOCAL_DEF.

	* src/cache/ftcmanag.c (ftc_size_list_class, ftc_face_list_class):
	Use FT_CALLBACK_TABLE_DEF.

	* src/cache;/ftcsbits.c: Include ftccback.h.
	(ftc_snode_free, ftc_snode_new, ftc_snode_weight,
	ftc_snode_compare): New wrapper functions which use FT_LOCAL_DEF.

	* src/cache/rules.mk (CACHE_DRV_H): Add ftccback.h.

2004-02-17  Masatake YAMATO  <jet@gyve.org>

	* include/freetype/ftmac.h (FT_GetFile_From_Mac_Name): Fix a typo
	(FT_EXPORT_DEF -> FT_EXPORT).

	* include/freetype/ftxf86.h (FT_Get_X11_Font_Format): Ditto.

2004-02-15  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Set_Char_Size): Fix typo.

2004-02-14  Masatake YAMATO  <jet@gyve.org>

	* builds/unix/ftsystem.c: Include errno.h.
	(ft_close_stream): Renamed to...
	(ft_close_stream_by_munmap): This.
	(ft_close_stream_by_free): New function.
	(FT_Stream_Open): Use fallback method if mmap fails.
	Use proper function for closing the stream.

2004-02-14  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_dict): Initialize `start_binary'.

2004-02-13  Robert Etheridge  <roberte@stcc.cc.tx.us>

	* src/type42/t42objs.c (T42_Face_Init), src/type1/t1objs.c
	(T1_Face_Init), src/cid/cidobjs.c (cid_face_init): Fix computation
	of underline_position and underline_thickness.

2004-02-12  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if
	ppem values don't change.  Suggested by Graham Asher.

2004-02-11  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidload.c (cid_face_open): Always allocate
	face->cid_stream so that we can deallocate it safely.

2004-02-10  Werner Lemberg  <wl@gnu.org>

	Make the PS parser more tolerant w.r.t. non-standard font data.  In
	general, an error is only reported in case of a syntax error; a
	wrong type is now simply ignored (if possible).  To be independent
	of the order of various MM-specific keywords, the parse_shared_dict
	routine has been removed -- the PS parser is now capable to skip
	this data.  It no longer fails on parsing e.g.

	  dup /WeightVector exch def

	Since the token following /WeightVector isn't `[' (starting an
	array) it is simply ignored.

	* include/freetype/fterrdef.h: Define `FT_Err_Ignore' (0xA2) as a
	new internal error value.

	* src/type1/t1load.c (parse_blend_axis_types,
	parse_blend_design_positions, parse_blend_design_map): Return
	T1_Err_Ignore if no proper array is following the keyword.
	(parse_weight_vector): Use T1_ToTokenArray, initializing `blend'
	structure, if necessary.
	Return T1_Err_Ignore if no proper array is following the keyword.
	(parse_shared_dict): Removed.
	(parse_encoding): Set parser->root.error to return T1_Err_Ignore
	if no result can be obtained.
	Check for errors before accessing `elements' array.
	(t1_keywords): Remove /shareddict.
	(parse_dict): Reset error if t1_load_keyword returns T1_Err_Ignore.
	Set keyword_flag only in case of success.
	Check error code if skipping an unrecognized token.
	(T1_Open_Face) [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: Call T1_Done_Blend
	if blend commands haven't set up a proper MM font.

	* src/psaux/psobjs.c (ps_parser_load_field_table): Remove special
	code for synthetic fonts.
	Return PSaux_Err_Ignore if no proper value has been found.

2004-02-09  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_endchar>: Preserve glyph width before calling
	cff_operator_seac.

2004-02-09  Martin Muskens  <mmuskens@aurelon.com>

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Handle special
	first argument for `hintmask' and `cntrmask' operators also.

2004-02-08  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.in: Call AC_SUBST for `enable_shared',
	`hardcode_libdir_flag_spec', and `wl'.
	* builds/unix/configure: Regenerated.

	* builds/unix/freetype-config.in: Make --prefix and --exec-prefix
	actually work.
	Report a proper --rpath (or -R) value for --libs argument if a
	shared library has been built.

	* docs/CHANGES: Updated.

2004-02-07  Keith Packard  <keithp@keithp.com>

	* src/bdf/bdfdrivr.c (BDF_Face_Init, BDF_Set_Pixel_Size): Fix
	computation of various vertical and horizontal metric values.

	* src/pcfdrivr.c (PCF_Set_Pixel_Size), src/pcfread (pcf_load_font):
	Ditto.

2004-02-07  Werner Lemberg  <wl@gnu.org>

	* builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.dsw, docs/CHANGES: Updated.

2004-02-07  Vitaliy Pasternak  <v_a_pasternak@mail.ru>

	* builds/win32/visualc/freetype.sln,
	builds/win32/visualc/freetype.vcproj: New files for VS.NET 2003.

2004-02-03  Werner Lemberg  <wl@gnu.org>

	* include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP):
	Initialize `node'.
	* src/type1/t1load.c (parse_dict): Initialize `have_integer'.

2004-02-02  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_dict): Handle `RD' and `-|' commands
	outside of /Subrs or /CharStrings.  This can happen if there is
	additional code manipulating those two arrays so that FreeType
	doesn't recognize them properly.
	(T1_Open_Face): Improve an error message.

2004-02-01  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_charstrings): Exit immediately if
	there are no elements in /CharStrings.  This is needed for fonts
	like Optima-Oblique which not only define /CharStrings but access it
	also.

2004-02-01  David Turner  <david@freetype.org>

	* src/sfnt/Jamfile: Removing `ttcmap' from the list of sources.

	* include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP)
	<FTC_INLINE>: Provide macro version which doesn't use inline code.
	* include/freetype/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP)
	<FTC_INLINE>: Ditto.
	Use FTC_MRULIST_LOOKUP_CMP.
	* include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): New
	macro.
	(FTC_MRULIST_LOOKUP): Use it.

	* src/cache/Jamfile (_sources), src/cache/descrip.mms: Updated.
	* src/cache/ftcbasic.c: Fix compiler warnings.
	* src/cache/ftcmanag.c (FTC_Manager_LookupSize,
	FTC_Manager_LookupFace) <FTC_INLINE>: Use FTC_MRULIST_LOOKUP_CMP.
	* src/cache/ftcmru.c (FTC_MruList_Find): Fix a bug (found after
	heavy testing).

	* Jamfile: Updating `refdoc' target, and adding `autohint' to the
	list of modules to build.  Both the autohinter and autofitter will
	be built by default.  But which one will be used is determined by
	the content of `ftmodule.h'.

	* src/autofit/*: Many updates, but the code is still buggy...

2004-01-31  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_operator_seac): Fix magnitude of
	accent offset.
	Update code similarly to the seac support for Type 1 fonts.
	(cff_decoder_parse_charstrings) <cff_op_endchar>: Fix magnitude
	of accent offset.
	Don't hint glyphs twice if seac is emulated.
	<cff_op_flex>: Assign correct point tags.
	* docs/CHANGES: Updated.

2004-01-30  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1parse.c (T1_Get_Private_Dict): Use FT_MEM_MOVE, not
	FT_MEM_COPY, for copying the private dict.

	* src/type1/t1load.c (parse_subrs): Assign number of subrs only
	in first run.
	(parse_charstrings): Parse /CharStrings in second run without
	assigning values.
	(parse_dict): Skip all /CharStrings arrays but the first.  We need
	this for non-standard fonts like `Optima' which have different
	outlines depending on the resolution.  Note that there is no
	guarantee that we get fitting /Subrs and /CharStrings arrays; this
	can only be done by a real PS interpreter.

2004-01-29  Antoine Leca  <Antoine-Freetype@Leca-Marti.org>

	* builds/win32/visualc/index.html: New file, giving detailed
	explanations about forcing CR+LF line endings for the VC++ project
	files.

2004-01-22  Garrick Meeker  <garrick@digitalanarchy.com>

	* src/cff/cffload.c (cff_subfont_load): Initialize `dict'.

2004-01-22  Werner Lemberg  <wl@gnu.org>

	Add support for the hexadecimal representation of binary data
	started with `StartData' in CID-keyed Type 1 fonts.

	* include/freetype/internal/t1types.h (CID_FaceRec): Add new
	members `binary_data' and `cid_stream'.

	* src/cid/cidload.c (cid_read_subrs): Use `face->cid_stream'.
	(cid_hex_to_binary): New auxiliary function.
	(cid_face_open): Add new argument `face_index' to return quickly
	if less than zero.  Updated all callers.
	Call `cid_hex_to_binary', then open and assign memory stream to
	`face->cid_stream' if `parser->binary_length' is non-zero.
	* src/cid/cidload.h: Updated.

	* src/cid/cidobjs.c (cid_face_done): Free `binary_data' and
	`cid_stream'.

	* src/cid/cidparse.c (cid_parser_new): Check arguments to
	`StartData' and set parser->binary_length accordingly.
	* src/cid/cidparse.h (CID_Parser): New member `binary_length'.

	* src/cid/cidgload.c (cid_load_glyph): Use `face->cid_stream'.

	* docs/CHANGES: Updated.

2004-01-21  Werner Lemberg  <wl@gnu.org>

	include/freetype/config/ftstdlib.h (ft_atoi): Replaced with...
	(ft_atol): This.
	* src/base/ftdbgmem.c: s/atol/ft_atol/.
	* src/type42/t42drivr.c: s/ft_atoi/ft_atol/.

2004-01-20  Masatake YAMATO  <jet@gyve.org>

	* include/freetype/ftcache.h: Delete duplicated definition of
	FTC_FaceID.

	* src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap
	Info service function if the cmap comes from sfnt.  Return 0 if the
	cmap is sythesized in cff module.

2004-01-20  David Turner  <david@freetype.org>

	* src/cache/ftcmanag.c (ftc_size_node_compare): Call
	FT_Activate_Size.

2004-01-20  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1parse.c (T1_Get_Private_Dict): Skip exactly one
	CR, LF, or CR/LF after `eexec'.

2004-01-18  David Turner  <david@freetype.org>

	* src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Remove compiler
	warning.

	* src/tools/docmaker/*: Updating beautifier tool.

2004-01-15  David Turner  <david@freetype.org>

	* src/base/ftoutln.c (ft_orientation_extremum_compute): Fix
	infinite loop bug.

	* include/freetype/ftstroke.h: Include FT_GLYPH_H.
	(FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New
	declarations.

	* src/base/ftstroke.c: Include FT_INTERNAL_OBJECTS_H.
	(FT_Outline_GetOutsideBorder): Inverse result.
	(FT_Stroker_Rewind, FT_Glyph_Stroke, FT_GlyphStrokeBorder): New
	functions.
	(FT_Stroker_EndSubPath): Close path if needed.
	(FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind.

	* include/freetype/cache/ftcmanag.h (FTC_ScalerRec,
	FTC_Manager_LookupSize): Moved to...
	* include/freetype/ftcache.h (FTC_ScalerRec,
	FTC_Manager_LookupSize): Here.

	* src/tools/docmaker/docbeauty.py: New file to beautify the
	documentation comments (e.g., to convert them to single block border
	mode).
	* src/tools/docmaker/docmaker.py (file_exists, make_file_list):
	Moved to...
	* src/tools/docmaker/utils.py (file_exists, make_file_list): Here.

2004-01-14  David Turner  <david@freetype.org>

	* include/freetype/internal/ftmemory.h (FT_ARRAY_COPY,
	FT_ARRAY_MOVE): New macros to make copying arrays easier.
	Updated all relevant code to use them.

2004-01-14  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffload.c (cff_font_load): Load charstrings_index earlier.
	Use number of charstrings as argument to CFF_Load_FD_Select (as
	documented in the CFF specs).

2004-01-13  Graham Asher  <graham.asher@btinternet.com>

	* src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of
	`glyph->memory' up to free arrays properly in case of failure.

2004-01-10  Masatake YAMATO  <jet@gyve.org>

	Make `FT_Get_CMap_Language_ID' work with CFF.  Bug reported by
	Steve Hartwell <shspamsink@comcast.net>.

	* src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H.
	(cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP.
	(cff_get_cmap_info): New function.
	(cff_service_get_cmap_info) New entry for cff_services.

	* src/sfnt/ttcmap0.c: Exit loop after a format match has been found.
	Suggested by Steve Hartwell <shspamsink@comcast.net>.

2004-01-03  Masatake YAMATO  <jet@gyve.org>

	* src/base/ftobjs.c (destroy_charmaps): New function.
	(destroy_face, open_face): Use `destroy_charmaps'.

2004-01-01  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2004-01-01  Michael Jansson  <mjan@em2-solutions.com>

	* src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of
	size->metrics.descender.

2003-12-31  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	[FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4.
	<cff_op_flex1>: Change type of dx and dy to FT_Pos and remove
	cast for accessing arguments.

2003-12-31  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous
	change.  It's not necessary.

2003-12-29  Smith Charles  <smith.charles@free.fr>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated
	flags set' correctly.

2003-12-29  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating
	`full' and `weight' properly.
	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_hintmask> [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for
	tracing output.

2003-12-26  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func):
	Use FT_UInt for ppem values.
	* src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for
	ppem values.
	* src/sfnt/ttsbit.h: Updated.

	* src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values
	larger than -0FFFF.

2003-12-25  Werner Lemberg  <wl@gnu.org>

	* 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  <wl@gnu.org>

	* src/cache/ftcsbits.c (FTC_SNode_Weight):
	s/FTC_SBIT_ITEM_PER_NODE/FTC_SBIT_ITEMS_PER_NODE/.

2003-12-24  David Turner  <david@freetype.org>

	* Fixed compilation problems in the cache sub-system.

	* Partial updates to src/autofit.

	* Jamfile (FT2_COMPONENTS): Add autofit module.

2003-12-23  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_lookup_glyph_by_stdcharcode): Handle
	CID-keyed fonts.

2003-12-23  David Turner  <david@freetype.org>

	* include/freetype/internal/ftobjs.h (FT_PAD_FLOOR, FT_PAD_ROUND,
	FT_PAD_CEIL, FT_PIX_FLOOR, FT_PIX_ROUND, FT_CEIL): New macros.  They
	are used to avoid compiler warnings with very pedantic compilers.
	Note that `(x) & -64' causes a warning if (x) is not signed.  Use
	`(x) & ~63' instead!
	Updated all related code.

	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  <wl@gnu.org>

	* include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions
	to describe the `charset' field in FT_WinFNT_HeaderRec.
	* src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to
	FT_ENCODING_NONE except for FT_WinFNT_ID_MAC.

	* include/freetype/freetype.h (FT_Encoding): Improve comment,
	based on work by Detlef Würkner <TetiSoft@apg.lahn.de>.

	* docs/CHANGES: Updated.

2003-12-22  David Turner  <david@freetype.org>

	* include/freetype/ftcache.h,
	include/freetype/cache/ftcmanag.h,
	include/freetype/cache/ftccache.h,
	include/freetype/cache/ftcmanag.h,
	include/freetype/cache/ftcmru.h (added),
	include/freetype/cache/ftlru.h (removed),
	include/freetype/cache/ftcsbits.h,
	include/freetype/cache/ftcimage.h,
	include/freetype/cache/ftcglyph.h,
	src/cache/ftcmru.c,
	src/cache/ftcmanag.c,
	src/cache/ftccache.c,
	src/cache/ftcglyph.c,
	src/cache/ftcimage.c,
	src/cache/ftcsbits.c,
	src/cache/ftccmap.c,
	src/cache/ftcbasic.c (added),
	src/cache/ftclru.c (removed):

	  *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
	      applications that want to implement their own caches

	    - a new function named FTC_Manager_RemoveFaceID to deal
	      with the uninstallation of FaceIDs

	    - the image and sbit cache are now abstract classes, that
	      can be extended much more easily by client applications

	    - better performance in certain areas. Further optimizations
	      to come shortly anyway...

	    - the FTC_CMapCache_Lookup function has changed its signature,
	      charmaps can now only be retrieved by index

	    - FTC_Manager_Lookup_Face => FTC_Manager_LookupFace
	      FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in
	      private header for the moment)

2003-12-21  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword
	is encountered.

2003-12-19  Werner Lemberg  <wl@gnu.org>

	* src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 32.  For
	example, the Japanese Hiragino font already contains 15 subfonts.

	* src/cff/cffload.c (cff_font_load): Deallocate `sids' array for
	CID-keyed fonts.

	* devel/ftoption.h: Define FT_DEBUG_MEMORY.

2003-12-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ttnameid.h (TT_ADOBE_ID_LATIN_1): New macro.
	* src/type1/t1objs.c (T1_Face_Init): Use TT_ADOBE_ID* values.

2003-12-18  Werner Lemberg  <wl@gnu.org>

	* src/cff/cfftypes.h (CFF_FontRecDictRec): Change type of
	`cid_count' to `FT_ULong'.

	* src/cff/cffgload.c (cff_slot_load): Take care of empty `cids'
	array.

	* src/cff/cffload.c (cff_charset_done): Free `cids' array.
	(cff_font_load): Create cids array only for CID-keyed fonts which
	are subsetted.

	* src/cff/cffobjs.c (cff_face_init): Check the availability of
	the PSNames modules for non-pure CFFs also.
	Set FT_FACE_FLAG_GLYPH_NAMES for a non-pure CFF also if it isn't
	CID-keyed.

	* src/cff/rules.mk (CFF_DRV_H): Add cfftypes.h.

2003-12-17  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_init_face): Don't set
	FT_FACE_FLAG_GLYPH_NAMES if the font contains a version 3.0 `post'
	table.

	* docs/CHANGES: Updated.

2003-12-17  Masatake YAMATO  <jet@gyve.org>

	Add new function FT_Get_CMap_Language_ID to extract the language ID
	for TrueType/sfnt fonts.

	* include/freetype/internal/services/svttcmap.h: New file.
	* include/freetype/internal/ftserv.h (FT_SERVICE_TT_CMAP_H): Add
	svttcmap.h.

	* src/sfnt/sfdriver.c: Include ttcmap0.h.
	(tt_service_get_cmap_info): New service.
	(sfnt_services): Updated.

	* src/sfnt/ttcmap0.c (tt_cmap*_get_info): New functions.
	(tt_cmap*_class_rec): Add tt_cmap*_get_info members.
	(tt_get_cmap_info): New function.
	* src/sfnt/ttcmap0.h: Include FT_SERVICE_TT_CMAP_H.
	(TT_CMap_ClassRec): New field `get_cmap_info'.
	(tt_get_cmap_info): New declaration.

	* src/base/ftobjs.c: Include FT_SERVICE_TT_CMAP_H.
	(FT_Get_CMap_Language_ID): New function implementation.
	* include/freetype/tttables.h (FT_Get_CMap_Language_ID): New
	function declaration.

2003-12-16  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: Removed.  Obsolete.

	* include/freetype/internal/sfnt.h (SFNT_Interface): Remove
	obsolete fields `load_charmap' and `free_charmap'.
	(TT_CharMap_Load_Func, TT_CharMap_Free_Func): Removed.
	* src/sfnt/sfnt.c: Don't include ttcmap.c.
	* src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttcmap.c.
	* src/sfnt/ttload.c: Don't include ttcmap.h.
	* src/sfnt/sfdriver.c: Don't include ttcmap.h.
	(sfnt_interface): Updated.

	* include/freetype/internal/tttypes.h (TT_TableDirRec,
	TT_CMapDirRec, TT_CMapDirEntryRec, TT_CMap0, TT_CMap2SubHeaderRec,
	TT_CMap2Rec, TT_CMap4Segment, TT_CMap4Rec, TT_CMap6,
	TT_CMapGroupRec, TT_CMap8_12Rec, TT_CMap10Rec, TT_CharMap_Func,
	TT_CharNext_Func, TT_CMapTableRec, TT_CharMapRec): Removed.
	Obsolete.
	* src/cff/cffobjs.h (CFF_CharMapRec): Removed.  Obsolete.

2003-12-15  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2003-12-15  Wolfgang Domröse  <porthos.domroese@harz.de>

	* builds/atari/*: New directory for building FreeType 2 on Atari
	with the PureC compiler.

2003-12-12  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add
	cast.
	* src/cff/cffdrivr.c (cff_ps_has_glyph_names): Assure that return
	value is either 0 or 1.

2003-12-12  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffdrivr.c (cff_get_glyph_name): Improve error message.
	(cff_get_name_index): Return if no PSNames service is available.
	(cff_ps_has_glyph_names): Handle CID-keyed fonts correctly.
	* src/cff/cfftypes.h (CFF_CharsetRec): New field `cids', used for
	CID-keyed fonts.  This is the inverse mapping of `sids'.
	* src/cff/cffload.c (cff_charset_load): New argument `invert'.
	Initialize charset->cids if `invert' is set.
	(cff_font_load): In call to cff_charset_load, set `invert' to true
	for CID-keyed fonts.
	* src/cff/cffgload.c (cff_slot_load): Handle glyph index as CID
	and map it to the real glyph index.

	* docs/CHANGES: Updated.

2003-12-11  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Don't set
	FT_FACE_FLAG_GLYPH_NAMES for CID-keyed fonts.
	Don't construct a cmap for CID-keyed fonts.

2003-12-10  Werner Lemberg  <wl@gnu.org>

	Use implementation specific SID value 0xFFFF to indicate that
	a dictionary element is missing.

	* src/cff/cffload.c (cff_subfont_load): Initialize all fields
	which hold SIDs to 0xFFFF.
	(cff_index_get_sid_string): Handle SID value 0xFFFF.
	Handle case where `psnames' is zero.
	(cff_font_load): Updated.
	Don't load encoding for CID-keyed CFFs.

	* src/cff/cffobjs.c (cff_face_init): Updated.
	Don't check for PSNames module if font is CID-keyed.
	Compute style name properly (using the same algorithm as in the
	CID driver).
	Fix computation of style flags.

	* src/cff/cfftoken.h: Comment out handling of base_font_name.
	Rename `postscript' field to `embedded_postscript'
	* src/cff/cfftypes.h (CFF_FontRecDictRec): Remove `base_font_name'
	and `postscript'.

2003-12-10  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/pcf/pcfdrivr.c (pcf_get_charset_id): New function (a clone
	of the similar BDF function).
	(pcf_service_bdf): Use it.

2003-12-09  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_load_face): Set FT_FACE_FLAG_GLYPH_NAMES
	only if a `post' table is present.

2003-12-09  George Williams  <gww@silcom.com>

	* src/base/ftobjs.c (load_mac_face): Recent versions of Linux
	support Mac's HFS+ file system, thus enable code to read /rsrc on
	non-Macintosh platforms also.

2003-12-08  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/psaux.h (PS_TableRec): Change type
	of `lengths' to FT_PtrDist.
	(T1_DecoderRec): Change type of `subrs_len' to FT_PtrDist.
	* include/freetype/internal/t1types.h (T1_FontRec): Change type
	of `subrs_len' and `charstrings_len' to FT_PtrDist.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Replace `junk'
	variable with better solution.
	(IsMacResource): Remove unused variable `map_len'.
	Replace `junk' variable with better solution.
	(FT_Open_Face) [!FT_MACINTOSH]: Add conditional
	FT_CONFIG_OPTION_MAC_FONTS.

2003-12-08  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/autohint/ahhint.c (ah_hinter_hint_edges,
	ah_hinter_align_strong_points): Add some casts.

	* src/base/ftoutln.c (FT_OrientationExtremumRec): Change type
	of `pos' to FT_Long.

	* src/base/ftobjs.c (Mac_Read_POST_Resource,
	Mac_Read_sfnt_Resource): Change type of `len' to FT_Long.

	* src/type42/t42parse.c (t42_parse_dict): Add cast for `n_keywords'.

2003-12-07  Werner Lemberg  <wl@gnu.org>

	* docs/raster.txt: New file, taken from FreeType 1 and completely
	revised.

2003-12-04  Masatake YAMATO  <jet@gyve.org>

	* src/type1/t1driver.c (Get_Interface): Remove FT_UNUSED for
	t1_interface.  t1_interface is used.

2003-11-27  David Turner  <david@freetype.org>

	* src/pfr/pfrdrivr.c (pfr_get_metrics): Revert incorrect change of
	2003-11-23: For PFR fonts, metrics->x_scale and metrics->y_scale are
	the scaling values for outline units, not for metric units.

2003-11-25  Werner Lemberg  <wl@gnu.org>

	* src/base/ftcalc.c, include/freetype/internal/ftcalc.h
	(FT_MulDiv_No_Round): Surround code with `#ifdef
	TT_CONFIG_OPTION_BYTECODE_INTERPRETER ... #endif'.

2003-11-23  Werner Lemberg  <wl@gnu.org>

	* src/base/ftcalc.c (FT_MulDiv_No_Round): New function (32 and
	64 bit version).
	* include/freetype/internal/ftcalc.h: Updated.

	* src/truetype/ttinterp.c (TT_MULDIV_NO_ROUND): New macro.
	(TT_INT64): Removed.
	(DO_DIV): Use TT_MULDIV_NO_ROUND.

	* src/pfr/pfrdrivr.c (pfr_get_metrics): Directly use
	metrics->x_scale and metrics->y_scale.

2003-11-22  Rogier van Dalen  <R.C.van.Dalen@umail.leidenuniv.nl>

	* src/truetype/ttinterp.c (CUR_Func_move_orig): New macro.
	(Direct_Move_Orig, Direct_Move_Orig_X, Direct_Move_Orig_Y): New
	functions.  Similar to Direct_Move, Direct_Move_X, and
	Direct_Move_Y but without touching.
	(Compute_Funcs): Use new functions.

	(Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
	Round_Up_To_Grid, Round_To_Double_Grid, Round_Super,
	Round_Super_45): Fix rounding of value zero.

	(DO_DIV): Don't use TT_MULDIV.

	(Ins_SHC): This instruction actually touches the points.
	(Ins_MSIRP): Fix undocumented behaviour.

	* src/truetype/ttinterp.h (TT_ExecContextRec): Updated.

2003-11-22  Werner Lemberg  <wl@gnu.org>

	* docs/VERSION.DLL, docs/CHANGES: Updated.

	* src/base/ftobjs.c (FT_Set_Char_Size): Make metrics->x_scale and
	metrics->y_scale really precise.

	(FT_Load_Glyph): Update computation of linearHoriAdvance and
	linearVertAdvance.

	* src/truetype/ttinterp.c (Update_Max): Use FT_REALLOC.

2003-11-22  David Turner  <david@freetype.org>

	* src/autofit/*: More updates.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.
	* builds/unix/configure.ac (version_info): Set to 9:6:3.
	* README: Updated.

2003-11-13  John A. Boyd Jr.  <jaboydjr@netwalk.com>

	* src/bdf/bdfdrivr.c (bdf_interpret_style), src/pcf/pcfread.c
	(pcf_interpret_style): Replace spaces with dashes in properties
	SETWIDTH_NAME and ADD_STYLE_NAME to simplify parsing.

2003-11-11  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2003-11-11  John A. Boyd Jr.  <jaboydjr@netwalk.com>

	Handle SETWIDTH_NAME and ADD_STYLE_NAME properties for BDF and PCF
	fonts.

	* src/bdf/bdfdrivr.c (bdf_interpret_style): New auxiliary function.
	(BDF_Face_Init): Don't handle style properties but call
	bdf_interpret_style.

	* src/pcf/pcfread.c (pcf_interpret_style): New auxiliary function.
	(pcf_load_font): Don't handle style properties but call
	pcf_interpret_style.

2003-11-07  Werner Lemberg  <wl@gnu.org>


	* Version 2.1.7 released.
	=========================


	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.

	* builds/unix/ft2unix.h: Fix comments.

	* builds/unix/ftconfig.in: Synchronized with ANSI version.
	Use `#undef' in templates as recommended in the autoconf
	documentation.
	Since real `#undef' lines don't survive during configuration, use
	`/undef' instead; the postprocessing facility of the
	AC_CONFIG_HEADERS autoconf macro converts them to `#undef'.

	* builds/unix/install.mk (install): Install Unix version of
	`ftconfig.h'.

	* builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro
	to include the correct `ftconfig.h' file.

	* builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed.
	(FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59.

	* builds/unix/freetype2.m4: Updated syntax to autoconf 2.59.

	* builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of
	AC_CONFIG_HEADER to create ftconfig.h, and use second argument
	to replace `/undef' with `#undef'.
	Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap.
	Use AS_HELP_STRING in AC_ARG_WITH.
	Update syntax to autoconf 2.59.

	* builds/unix/ltmain.sh: Regenerated with `libtoolize --force
	--copy' from libtool 1.5.
	* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
	automake 1.7.8.
	* builds/unix/configure: Regenerated with autoconf 2.59.
	* builds/unix/config.guess, builds/unix/config.sub: Updated from
	`config' CVS module at subversions.gnu.org
	* builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
	`texinfo' CVS module at subversions.gnu.org.

	* builds/vms/ftconfig.h: Synchronized with ANSI version.

	* docs/CUSTOMIZE: Fix documentation error.
	* docs/CHANGES, docs/VERSION.DLL, docs/release: Updated.

	* builds/freetype.mk (refdoc): Updated --title.

2003-11-07  David Turner  <david@freetype.org>


	* Version 2.1.6 released.
	=========================


	* install: Removed.  Obsolete.

2003-11-04  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfdriver.c: Include FT_SERVICE_SFNT_H.
	(sfnt_service_sfnt_table): New service.
	(sfnt_services): Updated.

	* docs/license.txt: Reworded.

2003-11-03  Werner Lemberg  <wl@gnu.org>

	* include/freetype/*: Add a guard to all public header files which
	load FT_FREETYPE_H to reject freetype.h from FreeType 1.

2003-11-02  Patrick Welche  <prlw1@newn.cam.ac.uk>

	* builds/unix/freetype2.m4, builds/unix/ft-munmap.m4: Protect
	first argument of AC_DEFUN with brackets to avoid possible
	expansion.

2003-11-02  Werner Lemberg  <wl@gnu.org>

	* include/freetype/cache/ftcglyph.h: Don't include stddef.h.

	* include/freetype/freetype.h: Fix check for ft2build.h.

2003-11-01  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h: Check that ft2build.h has been
	loaded first.

	* src/base/fttype1.c (FT_Get_PS_Font_Info): Fix incorrectly applied
	patch.

2003-10-31  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/base/fttype1.c (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names):
	Fix parameter order in calls to FT_FACE_FIND_SERVICE.

2003-10-31  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftserv.h
	(FT_SERVICE_POSTSCRIPT_NAMES_H): Removed.  Unused.

	* src/type42/t42drivr.c (t42_services): Updated.

2003-10-29  David Turner  <david@freetype.org>

	* include/freetype/internal/bdftypes.h: Removed.  Obsolete.
	* src/base/ftbdf.c: Updated.

	* include/freetype/internal/cfftypes.h: Moved to...
	* src/cff/cfftypes.h: This place since no other module needs to
	know about those types.

	* include/freetype/internal/t42types.h: Moved to...
	* src/type42/t42types.h: This place since no other module needs to
	know about those types.

	* include/freetype/internal/services/svbdf.h: Include FT_BDF_H.

	* include/freetype/internal/services/svpsname.h: Renamed to...
	* include/freetype/internal/services/svpscmap.h: This.
	Updated `FT_Service_PsNames' -> `FT_Service_PsCMaps' and
	`POSTSCRIPT_NAMES' -> `POSTSCRIPT_CMAPS' everywhere.

	* include/freetype/internal/services/svpsinfo.h: New file, providing
	PostScript info service.

	* include/freetype/internal/ftserv.h (FT_SERVICE_POSTSCRIPT_CMAPS_H,
	FT_SERVICE_POSTSCRIPT_INFO_H): New macros for svpscmap.h and
	svpsinfo.h.
	* include/freetype/internal/internal.h (FT_INTERNAL_TYPE42_TYPES_H,
	FT_INTERNAL_CFF_TYPES_H, FT_INTERNAL_BDF_TYPES_H): Removed.

	* src/base/fttype1.c: Don't include FT_INTERNAL_TYPE1_TYPES_H and
	FT_INTERNAL_TYPE42_TYPES_H but FT_INTERNAL_SERVICE_H and
	FT_SERVICE_POSTSCRIPT_INFO_H.
	(FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): Use new
	POSTSCRIPT_INFO service.

	* src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H.
	(cff_ps_has_glyph_names): New function.
	(cff_service_ps_info): New service.
	(cff_services): Updated.

	* src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't
	include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly.

	* src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H.
	(cid_ps_get_font_info): New function.
	(cid_service_ps_info): New service.
	(cid_services): Updated.

	* src/type1/t1driver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H.
	(t1_ps_get_font_info, t1_ps_has_glyph_names): New functions.
	(t1_service_ps_info): New service.
	(t1_services): Updated.

	* src/type42/t42drivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H.
	(t42_ps_get_font_info, t42_ps_has_glyph_names): New functions.
	(t42_service_ps_info): New service.

	* src/type42/t42objs.h: Don't include FT_INTERNAL_TYPE42_TYPES_H
	but t42types.h directly.

	* src/psnames/psmodule.c (psnames_interface, psnames_services):
	Renamed to...
	(pscmaps_interface, pscmaps_services): This.
	Updated all users.


	* src/gzip/infblock.c (inflate_blocks): Remove compiler warning.

2003-10-22  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_encoding): Handle `/Encoding [ ... ]'.

	* src/type1/t1parse.c (T1_Get_Private_Dict): Test whether `eexec'
	is real.

	* src/type42/t42parse.c (t42_parse_encoding): Improve boundary
	checking while parsing.

	* docs/CHANGES: Updated.

2003-10-21  Josselin Mouette  <joss@debian.org>

	* include/freetype/internal/t1types.h (T1_FontRec): `paint_type'
	and `stroke_width' aren't pointers.

	* src/type42/t42objs.c (T42_Face_Done), src/type1/t1objs.c
	(T1_Face_Done): Don't free `paint_type' and `stroke_width'.

2003-10-20  Graham Asher  <graham.asher@btinternet.com>

	* src/winfonts/winfnt.c (fnt_cmap_class): Fix position of `const'.

2003-10-19  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahhint.c (ah_hinter_load_glyph): Patch from
	2003-08-18 introduced a severe bug (FT_Render_Glyph was called
	twice under some circumstances, causing strange results).  This
	is fixed now by clearing the FT_LOAD_RENDER bit of `load_flags'.

	* src/base/ftpfr.c (FT_Get_PFR_Metrics): Initialize `error'.
	* src/psaux/psobjs.c (ps_tobytes): Initialize `n'.
	* src/type42/t42parse.c (t42_parse_sfnts): Initialize `string_size'.

2003-10-16  Werner Lemberg  <wl@gnu.org>

	Completely revised Type 42 parser.  It now handles both fonts
	produced with ttftot42 (tested version 0.3.1) and
	TrueTypeToType42.ps (tested version May 2001; it is necessary to
	fix the broken header comment to be `%!PS-TrueTypeFont...').

	* src/type42/t42objs.c (T42_GlyphSlot_Load): Change fourth
	parameter to `FT_UInt'.
	* src/type42/t42objs.h: Updated.

	* src/type42/t42parse.h (T42_ParserRec): Change type of `in_memory'
	to FT_Bool.
	(T42_Loader): Change type of `num_chars' and `num_glyphs' to
	FT_UInt.
	Add `swap_table' element.
	* src/type42/t42parse.c (T42_KEYWORD_COUNT, T1_ToFixed,
	T1_ToCoordArray, T1_ToTokenArray): Removed.
	(T1_ToBytes): New macro.
	(t42_is_alpha, t42_hexval): Removed.
	(t42_is_space): Handle `\0'.
	(t42_parse_encoding): Updated to use new PostScript parser routines
	from psaux.
	Handle `/Encoding [ ... ]' also.
	(T42_Load_Status): New enumeration.
	(t42_parse_sfnts): Updated to use new PostScript parser routines
	from psaux.
	(t42_parse_charstrings): Updated to use new PostScript parser
	routines from psaux.
	Handle `/CharStrings << ... >>' also.
	Don't expect that /.notdef is the first element in dictionary.  Copy
	code from type1 module to handle this.
	(t42_parse_dict): Updated to use new PostScript parser routines
	from psaux.
	Remove code for synthetic fonts (which can't occur in Type 42
	fonts).
	(t42_loader_done): Release `swap_table'.

	* src/psaux/psobjs.c (skip_string): Increase `cur' properly.

	* src/type1/t1load.c (parse_charstrings): Make test for `.notdef'
	faster.

2003-10-15  Graham Asher  <graham.asher@btinternet.com>

	* src/autohint/ahglobal.c (blue_chars), src/winfonts/winfnt.c
	(fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty,
	_num_bdf_properties), src/gzip/infutil.c (inflate_mask),
	src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td),
	src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c
	(inflate_trees_fixed): Decorate with more `const' to avoid
	writable global variables which are disallowed on ARM.

2003-10-08  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_font_matrix, parse_charstrings): Remove
	code specially for synthetic fonts; this is handled elsewhere.
	(parse_encoding): Remove code specially for synthetic fonts; this is
	handled elsewhere.
	Improve boundary checking while parsing.
	(parse_dict): Improve boundary checking while parsing.
	Use ft_memcmp to simplify code.

2003-10-07  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic
	fonts properly.
	(parse_charstrings): Copy correct number of characters into
	`name_table'.

2003-10-06  Werner Lemberg  <wl@gnu.org>

	Heavy modification of the PS parser to handle comments and strings
	correctly.  This doesn't slow down the loading of PS fonts
	significantly since charstrings aren't affected.

	* include/freetype/config/ftstdlib.h (ft_xdigit): Renamed to...
	(ft_isxdigit): This.  Updated all callers.
	(ft_isdigit): New alias to `isdigit'.

	* include/freetype/internal/psaux.h (PS_Parser_FuncsRec): Renamed
	`skip_alpha' to `skip_PS_token'.
	Add parameter to `to_bytes' and change some argument types.

	* src/psaux/psauxmod.c (ps_parser_funcs): Updated.
	* src/psaux/psobjs.c (ft_char_table): New array to map character
	codes (ASCII and EBCDIC) of digits to numbers.
	(OP): New auxiliary macro holding either `>=' or `<' depending on
	the character encoding.
	(skip_comment): New function.
	(skip_spaces): Use it.
	(skip_alpha): Removed.
	(skip_literal_string, skip_string): New functions.
	(ps_parser_skip_PS_token): New function.  This is a better
	replacement of...
	(ps_parser_skip_alpha): Removed.
	(ps_parser_to_token, ps_parser_to_token_array): Updated.
	(T1Radix): Rewritten, using `ft_char_table'.
	(t1_toint): Renamed to...
	(ps_toint): This.  Update all callers.
	Use `ft_char_table'.
	(ps_tobytes): Add parameter to handle delimiters and change some
	argument types.
	Use `ft_char_table'.
	(t1_tofixed): Renamed to...
	(ps_tofixed): This.  Update all callers.
	Use `ft_char_table'.
	(t1_tocoordarray): Renamed and updated to...
	(ps_tocoordarray): This.  Update all callers.
	(t1_tofixedarray): Renamed and updated to...
	(ps_tofixedarray): This.  Update all callers.
	(t1_tobool): Renamed to...
	(ps_tobool): This.  Update all callers.
	(ps_parser_load_field): Updated.
	(ps_parser_load_field_table): Use `T1_MAX_TABLE_ELEMENTS'
	everywhere.
	(ps_parser_to_int, ps_parser_to_fixed, ps_parser_to_coord_array,
	ps_parser_to_fixed_array): Skip spaces.  Updated.
	(ps_parser_to_bytes): Add parameter to handle delimiters and change
	some argument types.  Updated.
	* src/psaux/psobjs.h: Updated.

	* src/cid/cidload.c (cid_parse_dict): Updated.
	* src/cid/cidparse.c (cid_parser_new): Check whether the `StartData'
	token was really found.
	* src/cid/cidparse.h (cid_parser_skip_alpha): Updated and renamed
	to...
	(cid_parser_skip_PS_token): This.

	* src/type1/t1parse.h (T1_ParserRec): Use `FT_Bool' for boolean
	fields.
	(T1_Skip_Alpha): Replaced with...
	(T1_Skip_PS_Token): This new macro.
	* src/type1/t1parse.c (hexa_value): Removed.
	(T1_Get_Private_Dict): Use `ft_isxdigit' and
	`psaux->ps_parser_funcs_to_bytes' for handling ASCII hexadecimal
	encoding.
	After decrypting, replace the four random bytes at the beginning
	with whitespace.
	* src/type1/t1load.c (t1_allocate_blend): Use proper error values.
	(parser_blend_design_positions, parse_blend_design_map,
	parse_weight_vector): Updated.
	(is_space): Handle `\f' also.
	(is_name_char): Removed.
	(read_binary_data): Updated.
	(parse_encoding): Use `ft_isdigit'.
	Updated.
	(parse_subrs): Updated.
	(TABLE_EXTEND): New macro.
	(parse_charstrings): Updated.
	Provide a workaround for buggy fonts which have more entries in the
	/CharStrings dictionary then expected; the function now adds some
	slots and skips entries which still exceed the new limit.
	(parse_dict): Updated.
	Terminate on the token `closefile'.

	* src/type42/t42parse.c (T1_Skip_Alpha): Replaced with...
	(T1_Skip_PS_Token): This new macro.  Updated all callers.
	(t42_parse_encoding): Use `ft_isdigit'.


	* src/base/ftmm.c (ft_face_get_mm_service): Return FT_Err_OK if
	success.

2003-10-05  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftmodule.h: Renamed to...
	* include/freetype/ftmodapi.h: This to avoid duplicate file names.
	* include/freetype/config/ftheader.h (FT_MODULE_H): Updated.

2003-10-04  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_OrientationExtremumRec,
	FT_Outline_Get_Orientation): Trivial typo fixes to make it compile.

2003-10-02  Markus F.X.J. Oberhumer  <markus@oberhumer.com>

	* src/winfonts/winfnt.c (FT_WinFNT_HeaderRec): `color_table_offset'
	has four bytes, not two.
	Fix all users.
	(fnt_font_load, FNT_Load_Glyph): Add more font validity tests.

2003-10-01  David Turner  <david@freetype.org>

	* src/autofit/*: Adding first source files of the new multi-script
	`auto-fitter'.

	* include/freetype/ftoutln.h (FT_Orientation): New enumeration.
	(FT_Outline_Get_Orientation): New declaration.

	* src/base/ftoutln.c (FT_OrientationExtremumRec): New structure.
	(ft_orientation_extremum_compute): New auxiliary function.
	(FT_Outline_Get_Orientation): New function to compute the fill
	orientation of a given glyph outline.

	* include/freetype/internal/ftserv.h (FT_FACE_LOOKUP_SERVICE): Fixed
	trivial bug which could crash the font engine when a cached service
	pointer was retrieved.

2003-09-30  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidload.c (cid_parse_dict): Skip token if no keyword is
	found.

	* src/type1/t1parse.c (IS_T1_WHITESPACE, IS_T1_LINESPACE,
	IS_T1_SPACE): Removed.
	(PFB_Tag): Removed.
	(read_pfb_tag): Don't use PFB_Tag.

	* src/type42/t42parse.c (t42_is_space): Handle `\f' also.
	(t42_parse_encoding): Handle synthetic fonts.

2003-09-29  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/t1types.h: Don't include
	FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H.
	* src/truetype/ttobjs.c: Don't include
	FT_SERVICE_POSTSCRIPT_NAMES_H.

2003-09-29  David Turner  <david@freetype.org>

	Added new service to handle glyph name dictionaries, replacing the
	old internal header named `psnames.h' by `services/svpsname.h'.
	Note that this is different from `services/svpostnm.h' which only
	handles the retrieval of PostScript font names for a given face.
	(Should we merge these two services into a single header?)

	* include/freetype/internal/psnames.h: Removed.  Most of its
	contents is moved to...
	* include/freetype/internal/services/svpsname.h: New file.

	* include/freetype/internal/services/svpostnm.h
	(FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with...
	(FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro.
	(PsName): Service named changed to...
	(PsFontName): This.
	Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and
	`POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere.

	* include/freetype/internal/internal.h
	(FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed.
	* include/freetype/internal/psaux.h: Include
	FT_SERVICE_POSTSCRIPT_NAMES_H.
	(T1_DecoderRec): Updated type of `psnames'.
	* include/freetype/internal/t1types.h: Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
	Include FT_INTERNAL_OBJECTS_H.
	* include/freetype/internal/t42types.h: Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H.
	* include/freetype/internal/tttypes.h (TT_FaceRec): Updated.

	* include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed
	order of parameters.  All callers updated.
	(FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service
	globally, checking all modules.
	(FT_ServiceCacheRec): Updated.
	(FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing
	`svpsname.h'.

	* include/freetype/internal/ftobjs.h, src/base/ftobjs.c
	(ft_module_get_service): New function.

	* src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
	but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES
	service.
	* src/cff/cffcmap.c (cff_cmap_unicode_init): Updated.
	* src/cff/cffload.c, src/cff/cffload.h:  Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(cff_index_get_sid_string): Updated.
	* src/cff/cffobjs.c:  Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
	but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(cff_face_init): Use new POSTSCRIPT_NAMES service.
	* src/cff/cffobjs.h:  Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
	but FT_SERVICE_POSTSCRIPT_NAMES_H.

	* src/cid/cidobjs.c:  Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
	but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(cid_face_init): Use new POSTSCRIPT_NAMES service.
	* src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H.

	* src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use
	new POSTSCRIPT_NAMES service.
	* src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode,
	t1_decode_init): Use new POSTSCRIPT_NAMES service.
	* src/psaux/t1cmap.h, src/psaux/t1decode.h: Dont' include
	FT_INTERNAL_POSTSCRIPT_NAMES_H.

	* src/psnames/psmodule.c:  Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(ps_build_unicode_table): Renamed to...
	(ps_unicodes_init): This.
	(ps_lookup_unicode): Renamed to...
	(ps_unicodes_char_index): This.
	(ps_next_unicode): Renamed to...
	(ps_unicodes_char_next): This.
	(psnames_interface): Updated.
	(psnames_services): New services list.
	(psnames_get_service): New function.
	(psnames_module_class): Updated.

	* src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
	but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(sfnt_init_face): Use new POSTSCRIPT_NAMES service.
	* src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H
	but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(tt_face_get_ps_name): Updated.

	* src/truetype/ttobjs.c:  Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.

	* src/type1/t1driver.c:  Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
	* src/type1/t1objs.c:  Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.
	(T1_Face_Init): Use new POSTSCRIPT_NAMES service.

	* src/type42/t42drivr.c (t42_get_ps_name): Renamed to...
	(t42_get_ps_font_name): This.
	(t42_service_ps_name): Renamed to...
	(t42_service_ps_font_name): This.
	(t42_services): Updated.
	* src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES
	service.
	* src/type42/t42objs.h:  Don't include
	FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H.


	* src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before
	testing its validity.  Reported by Henry Maddocks
	<maddocks@metservice.com>.

2003-09-21  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE):
	Fix compilation warning (s/pptr/Pptr/).

	* include/freetype/internal/internal.h (FT_INTERNAL_PFR_H,
	FT_INTERNAL_FNT_TYPES_H): Removed.

2003-09-21  David Turner  <david@freetype.org>

	Migrating the PFR and WINFNT drivers to the new service-based
	internal API.

	* include/freetype/internal/fnttypes.h: Removed.  Most of its data
	are moved to winfnt.h and...
	* include/freetype/internal/services/svwinfnt.h: New file.

	* include/freetype/internal/pfr.h: Removed.  Most of its data are
	moved to...
	* include/freetype/internal/services/svpfr.h: New file.

	* include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE,
	FT_FACE_LOOKUP_SERVICE): Simplify fix of 2003-09-16 by removing
	pointer type argument.
	Updated all callers.
	Update macro names of services header files.

	* src/base/ftobjs.c (FT_Get_Name_Index): Simplified code.

	* src/base/ftpfr.c: Include FT_SERVICE_PFR_H instead of
	FT_INTERNAL_PFR_H.
	(ft_pfr_check, FT_Get_PFR_Metrics, FT_Get_PFR_Kerning,
	FT_Get_PFR_Advance): Use services provided in `PFR_METRICS'.

	* src/base/ftwinfnt.c: Include FT_SERVICE_WINFNT_H instead of
	FT_INTERNAL_FNT_TYPES_H.
	(FT_Get_WinFNT_Header): Use service provided in `WINFNT'.

	* src/pfr/pfrdrivr.c: Include FT_SERVICE_PFR_H and
	FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_PFR_H.
	(pfr_service_bdf): Updated.
	(pfr_services): New services list.
	(pfr_get_service): New function.
	(pfr_driver_class): Updated.

	* src/winfonts/winfnt.c: Include FT_SERVICE_WINFNT_H and
	FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_FNT_TYPES_H.
	(winfnt_get_header, winfnt_get_service): New functions.
	(winfnt_service_rec): New structure providing WINFNT services.
	(winfnt_services): New services list.
	(winfnt_driver_class): Updated.
	* src/winfonts/winfnt.h: Add most of the removed fnttypes.h data.

	* src/sfnt/sfdriver.c (sfnt_service_ps_name): Fix typo.

	* src/type1/t1driver.c (t1_service_ps_name): Fix typo.

	* src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c,
	src/psaux/psobjs.c, src/sfnt/sfobjs.c, src/truetype/ttobjs.c,
	src/type1/t1objs.c, src/type42/t42objs.c: Removing various compiler
	warnings.

2003-09-19  David Bevan  <dbevan@emtex.com>

	* src/type1/t1parse.c (pfb_tag_fields): Removed.
	(read_pfb_tag): Fix code so that it doesn't fail on end-of-file
	indicator (0x8003).
	* docs/CHANGES: Updated.

2003-09-16  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE,
	FT_FACE_LOOKUP_SERVICE): Add parameter to pass pointer type.
	Ugly, I know, but this is needed for compilation with C++ --
	maybe someone knows a better solution?
	Updated all callers.

	* src/base/ftobjs.c (FT_Get_Name_Index, FT_Get_Glyph_Name): Remove
	C++ compiler warnings.

	* src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property):
	Fix order of arguments passed to FT_FACE_FIND_SERVICE.

2003-09-15  Werner Lemberg  <wl@gnu.org>

	Avoid header files with identical names.

	* include/freetype/internal/services/bdf.h: Renamed to...
	* include/freetype/internal/services/svbdf.h: This.
	Add copyright notice.
	* include/freetype/internal/services/glyfdict.h: Renamed to...
	* include/freetype/internal/services/svgldict.h: This.
	Add copyright notice.
	* include/freetype/internal/services/multmast.h: Renamed to...
	* include/freetype/internal/services/svmm.h: This.
	Add copyright notice.
	Add FT_BEGIN_HEADER and FT_END_HEADER.
	* include/freetype/internal/services/sfnt.h: Renamed to...
	* include/freetype/internal/services/svsfnt.h: This.
	Add copyright notice.
	* include/freetype/internal/services/postname.h: Renamed to...
	* include/freetype/internal/services/svpostnm.h: This.
	Add copyright notice.
	* include/freetype/internal/services/xf86name.h: Renamed to...
	* include/freetype/internal/services/svxf86nm.h: This.
	Add copyright notice.

	* include/freetype/internal/ftserv.h: Add FT_BEGIN_HEADER and
	FT_END_HEADER.
	Add copyright notice.
	Update macro names of services header files.

	* builds/freetype.mk (SERVICES_DIR): New variable.
	(BASE_H): Add services header files.

2003-09-11  Werner Lemberg  <wl@gnu.org>

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

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

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

	* src/cff/cffcmap.c: Include `cfferrs.h'.
	* src/pfr/pfrdrivr.c: Include `pfrerror.h'.
	* src/sfnt/sfdriver.c: Include `sferrors.h'.
	* src/psaux/psobjs.h: Add declaration for `ps_parser_to_bytes'.

2003-09-11  David Turner  <david@freetype.org>

	Introducing the concept of `module services'.  This is the first
	step towards a massive simplification of the engine's internals, in
	order to get rid of various numbers of hacks.

	Note that these changes will break source & binary compatibility for
	authors of external font drivers.

	* include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT,
	FT_DUMMY_STMNT): New macros.

	* include/freetype/internal/ftserv.h: New file, containing the new
	structures and macros to provide `services'.

	* include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H,
	FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H):
	Removed, obsolete.
	(FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'.

	* include/freetype/internal/services/bdf.h,
	include/freetype/internal/services/glyfdict.h,
	include/freetype/internal/services/postname.h,
	include/freetype/internal/services/xf86name.h: New files.

	* include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func,
	FT_Set_MM_Blend_Func): Function pointers moved (in modified form)
	to...
	* include/freetype/internal/services/multmast.h: New file.

	* include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface'
	is now of type `FT_Module_Requester'.
	(SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers
	moved (in modified form) to...
	* include/freetype/internal/services/sfnt.h: New file.

	* include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function
	pointer moved (in modified form) to `services/sfnt.h'.

	* include/freetype/ftmodule.h (FT_Module_Interface): Make it a
	a typedef to `FT_Pointer'.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
	`postscript_name'.
	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
	`postscript_name'.
	Add `services' element.
	(FT_LibraryRec): Remove `meta_class'.

	* src/base/ftbdf.c: Include FT_SERVICE_BDF_H.
	(test_font_type): Removed.
	(FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services
	provided in `FT_SERVICE_ID_BDF'.

	* src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
	(ft_face_get_mm_service): New auxiliary function to get services
	from `FT_SERVICE_ID_MULTI_MASTERS'.
	(FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates,
	FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'.

	* src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and
	FT_SERVICE_GLYPH_DICT_H.
	(ft_service_list_lookup): New function to get a specific service.
	(destroy_face): Updated.
	(Mac_Read_POST_Resource): Simplify some code.
	(IsMacResource): Fix warnings.
	(FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in
	`FT_SERVICE_ID_GLYPH_DICT'.
	(FT_Get_Postscript_Name): Use service provided in
	`FT_SERVICE_ID_POSTSCRIPT_NAME'.
	(FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in
	`FT_SERVICE_ID_SFNT_TABLE'.

	* src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H.
	(FT_Get_X11_Font_Format): Use service provided in
	`FT_SERVICE_ID_XF86_NAME'.

	* src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and
	FT_SERVICE_XFREE86_NAME_H.
	(bdf_get_charset_id): New function.
	(bdf_service_bdf): New structure providing BDF services.
	(bdf_services): New services list.
	(bdf_driver_requester): Use `ft_service_list_lookup'.

	* src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and
	FT_SERVICE_GLYPH_DICT_H.
	(cff_service_glyph_dict): New structure providing CFF services.
	(cff_services): New services list.
	(cff_get_interface): Use `ft_service_list_lookup'.

	* src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and
	FT_SERVICE_XFREE86_NAME_H.
	(cid_service_ps_name): New structure providing CID services.
	(cid_services): New services list.
	(cid_get_interface): Use `ft_service_list_lookup'.

	* src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and
	FT_SERVICE_XFREE86_NAME_H.
	(pcf_service_bdf): New structure providing PCF services.
	(pcf_services): New services list.
	(pcf_driver_requester): Use `ft_service_list_lookup'.

	* src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and
	FT_SERVICE_POSTSCRIPT_NAME_H.
	(get_sfnt_glyph_name): Renamed to...
	(sfnt_get_glyph_name): This.
	(get_sfnt_postscript_name): Renamed to...
	(sfnt_get_ps_name): This.
	Updated.
	(sfnt_service_glyph_dict, sfnt_service_ps_name): New structures
	providing services.
	(sfnt_services): New services list.
	(sfnt_get_interface): Use `ft_service_list_lookup'.

	* src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H.
	(tt_services): New services list.
	(tt_get_interface): Use `ft_service_list_lookup'.

	* src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H,
	FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and
	FT_SERVICE_POSTSCRIPT_NAME_H.
	(t1_service_glyph_dict, t1_service_ps_name,
	t1_service_multi_masters): New structures providing Type 1 services.
	(t1_services): New services list.
	(Get_Interface): Use `ft_service_list_lookup'.

	* src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H,
	FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H.
	(t42_service_glyph_dict, t42_service_ps_name): New strucures
	providing Type 42 services.
	(t42_services): New services list.
	(T42_Get_Interface): Use `ft_service_list_lookup'.


	* README, docs/CHANGES: Updating version numbers for 2.1.6, and
	removing obsolete warnings in the documentation.
	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
	* builds/unix/configure.ac (version_info): Set to 9:5:3.
	* builds/unix/configure: Regenerated.

	* include/freetype/internal/ftcore.h,
	include/freetype/internal/ftexcept.h,
	include/freetype/internal/fthash.h,
	include/freetype/internal/ftobject.h: Removed.  Obsolete.

2003-09-09  David Turner  <david@freetype.org>

	Fixing PFR kerning support.  The tables within the font file contain
	(charcode,charcode) kerning pairs, we need to convert them to
	(gindex,gindex).

	* src/base/ftpfr.c (ft_pfr_check): Fix serious typo.
	* src/pfr/prfload.c: Remove dead code.
	(pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs):
	New functions.
	(pfr_phy_font_done): Free `kern_pairs'.
	(pfr_phy_font_load): Call `pfr_sort_kerning_pairs'.
	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction.
	* src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro.
	(PFR_KernPairRec): Make `kerning' an FT_Int.
	(PFR_PhyFontRec): New element `kern_pairs'.
	(PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and
	PFR_KERN_2BYTE_ADJ were erroneously reversed.

	* include/freetype/ftoption.h: Commenting out the macro
	TT_CONFIG_OPTION_BYTECODE_INTERPRETER.

2003-09-02  David Turner  <david@freetype.org>


	* Version 2.1.5 released.
	=========================


2003-08-31  Manish Singh  <yosh@gimp.org>

	* src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but
	FT_MEM_MOVE.

2003-08-30  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h (FT_ENCODING_SJIS, FT_ENCODING_GB2312,
	FT_ENCODING_BIG5, FT_ENCODING_WANSUNG, FT_ENCODING_JOHAB): New
	enumerations of FT_Encoding.  The FT_ENCODING_MS_* variants except
	FT_ENCODING_MS_SYMBOL are now deprecated.
	Updated all users.
	* docs/CHANGES: Document it.

2003-08-27  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Accept lowercase characters
	for spacing.

2003-08-27  Mike FABIAN  <mfabian@suse.de>

	* src/pcf/pcfread.c (pcf_load_font), src/bdf/bdfdrivr.c
	(BDF_Face_Init): Accept lowercase characters for slant and weight.

2003-08-18  David Turner  <david@freetype.org>

	* include/freetype/config/ftoption.h: Disabling TrueType bytecode
	interpreter until the UNPATENTED_HINTING works as advertised.

	* src/autohint/ahhint.c (ah_hinter_load_glyph): Use `|' for
	setting `load_flags'.

	* Jamfile: Adding the `refdoc' target to the Jamfile in order to
	build the API Reference in `docs/reference' automatically.

	* include/freetype/t1tables.h (PS_FontInfoRec), src/cid/cidtoken.h,
	src/type1/t1tokens.h, src/type42/t42parse.c: Resetting the types of
	`italic_angle', `underline_position', and `underline_thickness' to
	their previous values (i.e., long, short, and ushort) in order to
	avoid breaking binary compatibility.

	* include/freetype/ttunpat.h: Fixing documentation comment.

	* include/freetype/config/ftoption.h, devel/ftoption.h
	(TT_CONFIG_OPTION_OPTION_COMPILE_UNPATENTED_HINTING): Replaced
	with...
	(TT_CONFIG_OPTION_UNPATENTED_HINTING): This.  Updated all users.
	(TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): Removed.

	* include/freetype/internal/ftobjs.h (FT_DEBUG_HOOK_TYPE1): Removed.
	(FT_DEBUG_HOOK_UNPATENTED_HINTING): New macro.  Use this with
	`FT_Set_Debug_Hook' to get the same effect as the removed
	TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING.

	* src/truetype/ttobjs.c (tt_face_init): Use
	`FT_DEBUG_HOOK_UNPATENTED_HINTING'.

2003-08-06  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c
	(cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Fix
	previous change.

2003-08-05  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c
	(cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Apply
	font matrix to advance width also.
	* docs/CHANGES: Updated.

2003-07-26  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.ac (version_info): Set to 9:4:3.
	* builds/unix/configure: Updated.
	* docs/CHANGES, docs/VERSION.DLL: Updated.

	* include/freetype/freetype.h (FT_GlyphSlot): Change 2003-06-16
	also breaks binary compatibility.  Reintroduce an unsigned integer
	at the old position of `flags' called `reserved'.

2003-07-25  Werner Lemberg  <wl@gnu.org>

	Make API reference valid HTML 4.01 transitional.

	* src/tools/docmaker/tohtml.py (html_header_1): Add doctype
	and charset.
	(html_header_2): Fix style elements and add some more.
	Fix syntax.
	(block_header, block_footer, description_header, description_footer,
	marker_header, marker_footer, source_header, source_footer,
	chapter_header): Don't use <center>...</center> but `align=center'
	table attribute.
	(chapter_inter, chapter_footer): Add <li> and use special <ul>
	class.
	Use double quotes around table widths given in percent.
	(keyword_prefix, keyword_suffix): Don't change font colour directly
	but use a new <span> class.
	(section_synopsis_header, section_synopsis_footer): Don't change
	colour.
	(code_header, code_footer): Don't change font colour directly but
	use a special <pre> class.
	(print_html_field): <tr> gets the `valign' attribute, not <table>.
	(print_html_field_list): Ditto.
	(index_exit): Don't use <center>...</center> but `align=center'
	table attribute.
	(section_enter): Ditto.
	(toc_exit): Don't emit </table>.
	(block_enter): Use <h4><a>, not <a><h4>.
	(__init__): Fix tag order in self.html_footer.

2003-07-25  David Turner  <david@freetype.org>

	This change reimplements fix from 2003-05-30 without breaking
	binary compatibility.

	* include/freetype/t1tables.h (PS_FontInfoRec): `italic_angle',
	`is_fixed_pitch', `underline_position', `underline_thickness' are
	reverted to be normal values.

	* include/freetype/internal/psaux.h (T1_FieldType): Remove
	`T1_FIELD_TYPE_BOOL_P', `T1_FIELD_TYPE_INTEGER_P',
	`T1_FIELD_TYPE_FIXED_P', `T1_FIELD_TYPE_FIXED_1000_P'.
	(T1_FIELD_TYPE_BOOL_P, T1_FIELD_NUM_P, T1_FIELD_FIXED_P,
	T1_FIELD_FIXED_1000_P): Removed.
	(T1_FIELD_TYPE_BOOL): Renamed to...
	(T1_FIELD_BOOL): New macro.  Updated all callers.

	* src/type42/t42parse.c: `italic_angle', `is_fixed_pitch',
	`underline_position', `underline_thickness', `paint_type',
	`stroke_width' are reverted to be normal values.
	(T42_KEYWORD_COUNT): New macro.
	(t42_parse_dict): New array `keyword_flags' to mark that a value has
	already been assigned to a dictionary entry.
	* src/type42/t42objs.c (T42_Face_Init, T42_Face_Done): Updated.

	* src/cid/cidtoken.h: `italic_angle', `is_fixed_pitch',
	`underline_position', `underline_thickness' are reverted to be
	normal values.
	* src/cid/cidobjs.c (cid_face_done, cid_face_init): Updated.

	* src/psaux/psobjs.c (ps_parser_load_field): Updated.

	* src/type1/t1tokens.h: `italic_angle', `is_fixed_pitch',
	`underline_position', `underline_thickness', `paint_type',
	`stroke_width' are reverted to be normal values.
	* src/type1/t1objs.c (T1_Face_Done, T1_Face_Init): Updated.
	* src/type1/t1load.c (T1_FIELD_COUNT): New macro.
	(parse_dict): Add parameter for keyword flags.
	Record only first instance of a field.
	(T1_Open_Face): New array `keyword_flags'.

2003-07-24  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
	* builds/unix/configure.ac (version_info): Set to 10:0:3.
	* builds/unix/configure: Updated.
	* builds/freetype.mk (refdoc): Fix --title.

	* docs/CHANGES, docs/VERSION.DLL, README: Updated.

	* src/tools/docmaker/sources.py (re_crossref): Fix regular
	expression to handle trailing punctuation characters.
	* src/tools/docmaker/tohtml.py (make_html_word): Updated.

	* docs/release: New file.

2003-07-23  YAMANO-UCHI Hidetoshi  <mer@din.or.jp>

	* include/freetype/internal/psaux.h (PS_Parser_FuncsRec): New
	member function `to_bytes'.

	* src/psaux/psauxmod.c (ps_parser_funcs): New member
	`ps_parser_to_bytes'.
	(psaux_module_class): Increase version to 0x20000L.

	* src/psaux/psobjs.c (IS_T1_LINESPACE): Add \f.
	(IS_T1_NULLSPACE): New macro.
	(IS_T1_SPACE): Add it.
	(skip_spaces, skip_alpha): New functions.
	(ps_parser_skip_spaces, ps_parser_skip_alpha): Use them.
	(ps_tobytes, ps_parser_to_bytes): New functions.

2003-07-07  Werner Lemberg  <wl@gnu.org>

	* builds/freetype.mk (DOC_DIR): New variable.
	(refdoc): Use *_DIR variables.
	(distclean): Remove documentation files.

	* builds/detect.mk (std_setup, dos_setup): Mention `make refdoc'.

	* configure: Set DOC_DIR variable.

2003-07-07  Patrik Hägglund  <patrik.hagglund@bredband.net>

	* builds/freetype.mk (refdoc): New target to build the
	documentation.
	(.PHONY): Updated.

	* include/freetype/freetype.h: Improve documentation of FT_CharMap.
	* include/freetype/ftimage,h: Fix documentation of FT_OUTLINE_FLAGS.
	* include/freetype/tttables.h: Document FT_Sfnt_Tag.

2003-07-06  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfread.c
	(pcf_load_font): Fix computation of height if PIXEL_SIZE property is
	missing.

2003-07-01  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftcsbits.c (ftc_sbit_node_compare): Only add `size' if
	there is no error.  Reported by Knut St. Osmundsen
	<bird-freetype@anduin.net>.

2003-06-30  Werner Lemberg  <wl@gnu.org>

	A new try to synchronize bitmap font access.

	* include/freetype/freetype.h (FT_Bitmap_Size): `height' is now
	defined to return the baseline-to-baseline distance.  This was
	already the value returned by the BDF and PCF drivers.

	The `width' field now gives the average width.  I wasn't able to
	find something better.  It should be taken as informative only.

	New fields `size', `x_ppem', and `y_ppem'.

	* src/pcf/pcfread.c (pcf_load_font): Updated to properly fill
	FT_Bitmap_Size.
	Do proper rounding and conversion from 72.27 to 72 points.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Updated to properly fill
	FT_Bitmap_Size.
	Do proper rounding and conversion from 72.27 to 72 points.

	* src/sfnt/sfobjs.c (sfnt_load_face): Updated to properly fill
	FT_Bitmap_Size.

	* src/winfonts/winfnt.c (FNT_Face_Init): Updated to properly fill
	FT_Bitmap_Size.

2003-06-29  Werner Lemberg  <wl@gnu.org>

	Redesigning the FNT driver to return multiple faces, not multiple
	strikes.  At least one font (app850.fon from WinME) contains
	different FNT charmaps for its subfonts.  Consequently, the previous
	design of having multiple bitmap strikes in a single font face fails
	since we have only one charmap per face.

	* include/freetype/internal/fnttypes.h (FNT_Size_Rec): Removed.
	(FNT_FaceRec): Remove `num_fonts' field and replace `fonts' with
	`font'.

	* src/base/ftwinfnt.c (FT_Get_WinFNT_Header): Updated.

	* src/winfonts/winfnt.c (fnt_font_load): Don't set pixel_width equal
	to pixel_height.
	(fnt_face_done_fonts): Removed.
	(fnt_face_get_dll_fonts): Renamed to...
	(fnt_face_get_dll_font): This.  Add second function argument to
	select face index.
	Updated to load just one subfont.
	(fnt_font_done, FNT_Face_Done): Updated.
	(FNT_Face_Init): Handle `face_index'.
	Updated.
	(FNT_Size_Set_Pixels): Simplified; similar to BDF and PCF, the
	bitmap width is now ignored.
	(FNT_Load_Glyph): Updated.
	Fix glyph index computation.
	(winfnt_driver_class): Updated.

2003-06-25  Owen Taylor  <otaylor@redhat.com>

	* src/sfnt/ttload.c (tt_face_load_hdmx): Don't assign
	num_records until we actually decide to load the table,
	otherwise, we'll segfault in tt_face_free_hdmx.

2003-06-24  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffdrivr.c (cff_get_glyph_name): Protect against zero
	glyph name pointer.  Reported by Mikey Anbary <manbary@vizrt.com>.

2003-06-23  Werner Lemberg  <wl@gnu.org>

	* src/tools/glnames.py: Updated to AGL 2.0.
	* src/psnames/pstables.h: Regenerated.

2003-06-22  Werner Lemberg  <wl@gnu.org>

	* include/freetype/cache/ftcglyph.h, include/freetype/ttnameid.h,
	src/base/ftcalc.c, src/base/fttrigon.c, src/cff/cffgload.c,
	src/otlayout/otlgsub.c, src/pshinter/pshrec.c,
	src/psnames/psmodule.c, src/sfnt/sfobjs.c, src/truetype/ttdriver.c:
	Decorate constants with `U' and `L' if appropriate.

	* include/freetype/ftmoderr.h: Updated to include recent module
	additions.

	* src/pshinter/pshnterr.h (FT_ERR_BASE): Define as
	`FT_Mod_Err_PShinter'.
	* src/type42/t42error.h (FT_ERR_BASE): Define as
	`FT_Mod_Err_Type42'.

	* src/pshinter/pshrec.h (PS_HINTS_MAGIC): Removed.  Not used.

	* include/freetype/config/ftconfig.h [__MWERKS__]: Define FT_LONG64
	and FT_INT64.

2003-06-21  Werner Lemberg  <wl@gnu.org>

	* src/winfonts/winfnt.c (FNT_Load_Glyph): Use first_char in
	computation of glyph_index.
	(FNT_Size_Set_Pixels): To find a strike, first check pixel_height
	only, then try to find a better hit by comparing pixel_width also.
	Without this fix it isn't possible to access all strikes.
	Also compute metrics.max_advance to be in sync with other bitmap
	drivers.

	* src/base/ftobjs.c (FT_Set_Char_Size): Remove redundant code.
	(FT_Set_Pixel_Size): Assign value to `metrics' after validation of
	arguments.

2003-06-20  Werner Lemberg  <wl@gnu.org>

	Synchronize computation of height and width for bitmap strikes.  The
	`width' field in the FT_Bitmap_Size structure is now only useful to
	enumerate different strikes.  The `max_advance' field of the
	FT_Size_Metrics structure should be used to get the (maximum) width
	of a strike.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Don't use AVERAGE_WIDTH for
	computing `available_sizes->width' but make it always equal to
	`available_sizes->height'.

	* src/pcf/pcfread.c (pcf_load_font): Don't use RESOLUTION_X for
	computing `available_sizes->width' but make it always equal to
	`available_sizes->height'.

	* src/truetype/ttdriver.c (Set_Pixel_Sizes): Pass only single
	argument to function.

	* src/psnames/psmodule.c (ps_unicode_value): Handle `.' after
	`uniXXXX' and `uXXXX[X[X]]'.

2003-06-19  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdfdrivr.c: s/FT_Err_/BDF_Err/.
	* src/cache/ftccache.c, src/cache/ftcsbits.c, src/cache/ftlru.c:
	s/FT_Err_/FTC_Err_/.
	* src/cff/cffcmap.c: s/FT_Err_/CFF_Err_/.
	* src/pcf/pcfdrivr.c: s/FT_Err_/PCF_Err_/.
	* src/psaux/t1cmap.c: Include psauxerr.h.
	s/FT_Err_/PSaux_Err_/.
	* src/pshinter/pshnterr.h: New file.
	* src/pshinter/rules.mk: Updated.
	* src/pshinter/pshalgo.c, src/pshinter/pshrec.c: Include pshnterr.h.
	s/FT_Err_/PSH_Err_/.
	* src/pfr/pfrdrivr.c, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c:
	s/FT_Err_/PFR_Err_/.
	* src/sfnt/sfdriver.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c,
	src/sfnt/ttload.c: s/FT_Err_/SFNT_Err_/.
	* src/truetype/ttgload.c: s/FT_Err_/TT_Err_/.
	* src/gzip/ftgzip.c: Load FT_MODULE_ERRORS_H and define
	FT_ERR_PREFIX and FT_ERR_BASE.
	s/FT_Err_/Gzip_Err_/.

2003-06-19  Dirck Blaskey  <listtarget@danbala.com>

	* src/cff/cffload (cff_encoding_load): `nleft' must be FT_UInt,
	otherwise adding 1 might wrap the result.

2003-06-18  Werner Lemberg  <wl@gnu.org>

	* src/psnames/psmodule.c (ps_unicode_value): Add support to
	recognize `uXXXX[X[X]]' glyph names.
	Don't handle glyph names starting with `uni' which have more than
	four digits.

2003-06-16  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h (FT_Open_Flags): Replaced with
	#defines for the constants.
	(FT_Open_Args): Change type of `flags' to FT_UInt.
	(FT_GlyphSlot): Move `flags' to FT_Slot_Internal.

	* include/freetype/ftimage.h (FT_Outline_Flags, FT_Raster_Flag):
	Replaced with #defines for the constants.

	* include/freetype/internal/ftobjs.h (FT_Slot_Internal): New
	field `flags' (from FT_GlyphSlot).
	Updated all affected source files.
	(FT_GLYPH_OWN_BITMAP): New macro (from ftgloadr.h).

	* include/freetype/internal/ftgloadr.h (FT_GLYPH_OWN_BITMAP): Moved
	to ftobjs.h.

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Use dummy
	FT_GlyphSlot_Internal object.

2003-06-15  Werner Lemberg  <wl@gnu.org>

	* builds/compiler/gcc.mk, builds/compiler/gcc-dev.mk (CFLAGS):
	Add -fno-strict-aliasing to get rid of zillion warnings from gcc
	version 3.3.

2003-06-14  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftglyph.h (ft_glyph_bbox_unscaled,
	ft_glyph_bbox_subpixels, ft_glyph_bbox_gridfit,
	ft_glyph_bbox_truncate, ft_glyph_bbox_pixels): Replaced with
	FT_GLYPH_BBOX_UNSCALED, FT_GLYPH_BBOX_SUBPIXELS,
	FT_GLYPH_BBIX_GRIDFIT, FT_GLYPH_BBOX_TRUNCATE, FT_GLYPH_BBOX_PIXELS.
	The lowercase variants are now (deprecated aliases) to the uppercase
	versions.
	Updated all other files.

	* include/freetype/ftmodule.h (ft_module_font_driver,
	ft_module_renderer, ft_module_hinter, ft_module_styler,
	ft_module_driver_scalable, ft_module_driver_no_outlines,
	ft_module_driver_has_hinter): Replaced with FT_MODULE_FONT_DRIVER,
	FT_MODULE_RENDERER, FT_MODULE_HINTER, FT_MODULE_STYLER,
	FT_MODULE_DRIVER_SCALABLE, FT_MODULE_DRIVER_NO_OUTLINES,
	FT_MODULE_DRIVER_HAS_HINTER.
	The lowercase variants are now (deprecated aliases) to the uppercase
	versions.
	Updated all other files.

	* src/base/ftglyph.c (FT_Glyph_Get_CBox): Handle bbox_mode better
	as enumeration.

	* src/pcf/pcfdrivr.c (pcf_driver_class), src/winfonts/winfnt.c
	(winfnt_driver_class), src/bdf/bdfdrivr.c (bdf_driver_class): Add
	the FT_MODULE_DRIVER_NO_OUTLINES flag.

2003-06-13  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/pfr/pfrobjs.c (pfr_slot_load): Apply font matrix.

2003-06-13  Werner Lemberg  <wl@gnu.org>

	* builds/dos/detect.mk: Test not only for `Dos' but for `DOS' also.

	* builds/dos/dos-emx.mk, builds/compiler/emx.mk: New files for
	EMX gcc compiler.
	* builds/dos/detect.mk: Add target `emx'.

	* builds/compiler/watcom.mk (LINK_LIBRARY): GNU Make for DOS doesn't
	like a trailing semicolon; add a dummy command.

	* src/cid/cidload.c: Remove parse_font_bbox code (already enclosed
	with #if 0 ... #endif).

	* src/type1/t1tokens.h: Handle /FontName.
	* src/type1/t1load.c (parse_font_name): Removed.
	Remove parse_font_bbox code (already enclosed with #if 0 ...
	#endif).

	* src/type42/t42parse.c (t42_parse_font_name): Removed.
	Remove t42_parse_font_bbox code (already enclosed with #if 0 ...
	#endif).
	(t42_keywords): Handle /FontName with T1_FIELD_KEY.

2003-06-12  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/psaux.h (T1_FieldType): Add
	T1_FIELD_TYPE_KEY.
	(T1_FIELD_KEY): New macro.
	* src/psaux/psobjs.c (ps_parser_load_field): Handle
	T1_FIELD_TYPE_KEY.

	* src/cid/cidtoken.h: Use T1_FIELD_KEY for /CIDFontName.

2003-06-11  Alexander Malmberg  <alexander@malmberg.org>

	* src/cache/ftlru.c (FT_LruList_Remove_Selection): Decrease
	number of nodes.
	(FT_LruList_Lookup): Fix assertion for out-of-memory case.

2003-06-11  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidload.c (cid_decrypt): Removed.
	(cid_read_subrs): Use t1_decrypt from psaux module.
	* src/cid/cidload.h: Updated.
	* src/cid/cidgload.c (cid_load_glyph): Use t1_decrypt from psaux
	module.

2003-06-10  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidobjs.c: Apply change 2003-05-31 from <Ron.Dev@gmx.de>.
	Compute style flags.
	Fix computation of root->height.
	* src/cid/cidtoken.h: Handle FontBBox.
	* src/cid/cidload.c (cid_load_keyword): Handle
	T1_FIELD_LOCATION_BBOX.
	(parse_font_bbox): Commented out.
	(cid_field_record): Comment out element for parsing FontBBox.

	* src/type42/t42parse.c (t42_parse_font_bbox): Commented out.
	(t42_keywords): Handle FontBBox with T1_FIELD_BBOX, not with
	T1_FIELD_CALLBACK.
	(t42_parse_font_bbox): Commented out.
	(t42_load_keyword): Handle T1_FIELD_LOCATION_BBOX.
	* src/type42/t42objs.c (T42_Face_Init): Apply change 2003-05-31
	from <Ron.Dev@gmx.de>.

2003-06-09  George Williams  <gww@silcom.com>

	* src/truetype/ttinterp.c (SetSuperRound) <0x30>: Follow Apple's
	TrueType specification.
	(Ins_MDRP, Ins_MIRP): Fix single width cut-in test.

2003-06-09  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/gzip/ftgzip.c: (inflate_mask): Replaced with...
	(NO_INFLATE_MASK): This.
	* src/gzip/infutil.h: Declare `inflate_mask' conditionally by
	NO_INFLATE_MASK.

2003-06-09  Alexis S. L. Carvalho  <alexis@cecm.usp.br>

	* src/gzip/ftgzip.c (ft_gzip_file_fill_output): Handle Z_STREAM_END
	correctly.

2003-06-09  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/pshinter/pshglob.c (psh_globals_new): Change calculation of
	dim->stdw.count to avoid compiler problem.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Move the block
	variables to the beginning of the function to avoid compiler
	problems.
	Add casts necessary for 16bit compilers.

2003-06-09  Werner Lemberg  <wl@gnu.org>

	* src/pfr/rules.mk (PFR_DRV_SRC): Add pfrsbit.c.
	(PFR_DRV_H): Add pfrtypes.h.

	* include/freetype/config/ftconfig.h: s/__MWKS__/__MWERKS__/.

2003-06-08  Karl Schultz  <kschultz@rsinc.com>

	* src/pfr/pfrsbit.c (pfr_bitwriter_init): Change type of third
	argument to FT_Bool.
	(pfr_lookup_bitmap_data): Change type of third and fourth argument
	to FT_UInt.  Updated caller.
	(pfr_load_bitmap_bits): Change type of fourth argument to FT_Bool.

2003-06-08  Werner Lemberg  <wl@gnu.org>

	Completely revised FreeType's make management.

	. In all makefiles `/' is used as the path separator.  The
	  conversion to the real path separators is done as late as
	  possible using $(subst ...).

	. $(HOSTSEP) no longer exists.  Now, $(SEP) gives the path separator
	  for the operating system, and the new $(COMPILER_SEP) the path
	  separator for the compiler tools.

	. $(BUILD) has been renamed to $(BUILD_DIR).  In general, all
	  directory variables end with `_DIR'.  The variants ending in `_'
	  (like `BASE_' have been removed).

	The following ChangeLog entries only describe changes which are
	not related to the redesign.

	* builds/beos/beos-def.mk (BUILD_DIR): Fix typo.
	* builds/compiler/watcom.mk (LINK_LIBRARY): Fix linker call to avoid
	overlong arguments as suggested by J. Ali Harlow
	<ali@avrc.city.ac.uk>.
	* builds/dos/dos-wat.mk: New file.
	* builds/freetype.mk (FREETYPE_H): Include header files from the
	`devel' subdirectory.

	* builds/os2/os2-dev.mk, builds/unix/unixddef.mk,
	builds/unix/unixddef.mk, builds/win32/w32-bccd.mk,
	builds/win32/w32-dev.mk (BUILD_DIR): Fix path.

	* builds/unix/configure.ac, builds/unix/configure: Updated.
	* builds/unix/unix-def.in (DISTCLEAN): Add `freetype2.pc'.

2003-06-07  Werner Lemberg  <wl@gnu.org>

	* src/base/ftmac.c (FT_New_Face_From_SFNT): s/rlen/sfnt_size/ to
	make it compile.

	* devel/ftoption.h: Updated.

2003-06-07  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* include/freetype/internal/psaux.h, src/truetype/ttgload.h:
	s/index/idx/ to fix compiler warnings.

	* src/sfnt/ttcmap0.c (tt_face_build_cmaps): Use more `volatile' to
	fix compiler warning.

	* src/gzip/ftgzip.c (BUILDFIXED): Removed.
	* src/gzip/inftrees.c (inflate_trees_fixed) [!BUILDFIXED]: Use
	FT_UNUSED to remove compiler warning.

2003-06-06  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftstroker.h: Renamed to...
	* include/freetype/ftstroke.h: This.

	* src/base/ftstroker.c: Renamed to...
	* src/base/ftstroke.c: This.

	* include/freetype/config/ftheader.h (FT_STROKER_H): Updated.

	* src/base/descrip.mms, src/base/Jamfile, src/base/rules.mk:
	Updated.

	* src/pcf/pcfdriver.c: Renamed to...
	* src/pcf/pcfdrivr.c: This.
	* src/pcf/pcfdriver.h: Renamed to...
	* src/pcf/pcfdrivr.h: This.

	* src/pcf/Jamfile, src/pcf/rules.mk: Updated.

2003-06-05  Wenlin Institute (Tom Bishop)  <wenlin@wenlin.com>

	* src/base/ftmac.c (file_spec_from_path) [TARGET_API_MAC_CARBON]:
	Add `#if !defined(__MWERKS__)'.

2003-06-05  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/psaux.h (T1_FieldType): Add
	T1_FIELD_TYPE_FIXED_1000 and T1_FIELD_TYPE_FIXED_1000_P.
	(T1_FIELD_FIXED_1000, T1_FIELD_FIXED_1000_P): New macros.
	* src/psaux/psobjs.c (ps_parser_load_field): Handle
	T1_FIELD_TYPE_FIXED_1000 and T1_FIELD_TYPE_FIXED_1000_P.

	* src/cff/cffparse.c (cff_kind_fixed_thousand): New enumeration.
	(CFF_FIELD_FIXED_1000): New macro.
	(cff_parser_run): Handle cff_kind_fixed_thousand.
	* src/cff/cfftoken.h: Use CFF_FIELD_FIXED_1000 for blue_scale.
	* src/cff/cffload (cff_subfont_load): Fix default values of
	expansion_factor and blue_scale.

	* src/cif/cidtoken.h, src/type1/t1tokens.h: Use T1_FIELD_FIXED_1000
	for blue_scale.

	* src/pshinter/pshglob.c (psh_globals_new): Fix default value of
	blue_scale.

2003-06-04  Wolfgang Domröse  <porthos.domroese@harz.de>

	* include/freetype/internal/ftdriver.h,
	include/freetype/internal/ftobjs.h,
	include/freetype/internal/psaux.h, src/cid/cidgload.c,
	src/psaux/psobjs.c, src/psaux/t1decode.c, src/psaux/psobjs.h,
	src/pshinter/pshrec.c, src/pshinter/pshalgo.c,
	src/psnames/psmodule.c, src/raster/ftraster.c, src/sfnt/sfobjs.c,
	src/smooth/ftgrays.c, src/smooth/ftsmooth.c, src/truetype/ttobjs.c,
	src/truetype/ttdriver.c, src/truetype/ttgload.c, src/type1/t1afm.c,
	src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1load.c,
	src/type1/t1objs.c, src/type42/t42parse.c, src/type42/t42parse.h:
	Many casts and slight argument type changes to make it work with
	a 16bit compiler.

2003-06-04  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftoption.h: Defining
	TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING by default is a bad idea
	since some fonts (e.g. Arial) produce worse results than without
	hinting.  Reverted.

2003-06-04  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph)
	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Call
	FT_GlyphLoader_CheckPoints before adding phantom points.  This fixes
	a segfault bug with fonts (e.g. htst3.ttf) which have nested
	subglyphs more than one level deep.  Reported by Anthony Fok.

	* include/freetype/config/ftoption.h: Define
	TT_CONFIG_OPTION_BYTECODE_INTERPRETER,
	TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING, and
	TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING to make it the new
	default.

2003-06-03  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahhint.c (ah_hinter_hint_edges): Removed.  Just a
	wrapper for ah_hint_edges.
	(ah_hint_edges): Renamed to...
	(ah_hinter_hint_edges): This.

	* src/base/ftobjs.c (FT_Set_Hint_Flags): Removed.  Unused.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec),
	include/freetype/internal/psaux.h (T1_DecoderRec),
	src/cff/cffgload.h (CFF_Builder): Remove `hint_flags' field.
	Unused.

	* src/cff/cffgload.c (cff_builder_init): Updated.
	(cff_decoder_parse_charstrings) <cff_op_endchar>: Call hinter->apply
	with decoder->hint_mode instead of builder->hint_flags.
	* src/psaux/t1decode.c (t1_decoder_init): Updated.

	* src/base/ftstroker.c (ft_stroke_border_export): s/index/idx/.

	* src/sfnt/sfobjs.c (sfnt_load_face): Commented out code which
	increased root->height by 15% if the line gap was zero.  There exist
	fonts (containing e.g. form drawing characters) which intentionally
	have a zero line gap value.

	* src/truetype/ttinterp.c (Free_Project, CUR_Func_freeProj):
	Removed.  Unused.
	Updated all callers.

2003-06-02  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Use symbolic names for
	Adobe specific encoding IDs (there was a wrong EID value for custom
	encoding).

	* src/cff/cffcmap.h (CFF_CMapStdRec): Remove `count'.
	* src/cff/cffcmap.c (cff_cmap_encoding_init,
	cff_cmap_encoding_done): Updated.
	(cff_cmap_encoding_char_index, cff_cmap_encoding_char_next): Use
	256 as limit for character code.

2003-06-01  Werner Lemberg  <wl@gnu.org>

	* src/winfonts/winfnt.c (FNT_Load_Glyph): Revert change from
	2003-03-20.

2003-05-31  Werner Lemberg  <wl@gnu.org>

	* include/freetype/fttrigon.h (FT_Vector_Normalize): Removed.

2003-05-31    <Ron.Dev@gmx.de>

	* src/type1/t1objs.c (T1_Face_Init): Improve algorithm for guessing
	the font style by ignoring spaces and hyphens.

	* builds/unix/freetype2.in: Fix `Version' field.

2003-05-30  Werner Lemberg  <wl@gnu.org>

	Avoid overwriting of numeric font dictionary entries for synthetic
	fonts.  Additionally, some entries were handled as `integer' instead
	of `number'.

	* include/freetype/internal/psaux.h (T1_FieldType): Add
	T1_FIELD_TYPE_BOOL_P, T1_FIELD_TYPE_INTEGER_P, and
	T1_FIELD_TYPE_FIXED_P.
	(T1_FIELD_BOOL_P, T1_FIELD_NUM_P, T1_FIELD_FIXED_P): New macros.
	* src/psaux/psobjs.c (ps_parser_load_field): Handle new field types.

	* include/freetype/internal/cfftypes.h (CFF_FontRecDict),
	src/cff/cfftoken.h: Change type of underline_position and
	underline_thickness to FT_Fixed.
	* src/cff/cffload.c (cff_subfont_load): Fix default values of
	underline_position and underline_thickness.
	* src/cff/cffobjs.c (cff_face_init): Set underline_position
	and underline_thickness in `root'.

	* include/freetype/internal/t1types.h (T1_Font): Change point_type
	and stroke_width to pointers.
	* include/freetype/t1tables.h (PS_FontInfo): Change italic_angle,
	is_fixed_pitch, underline_position, and underline_thickness to
	pointers.
	* src/type1/t1tokens.h: Change italic_angle, is_fixed_pitch,
	underline_position, and underline_thickness to pointers.  Change
	the type of the latter two to `fixed'.
	Change type of stroke_width to `fixed' and make it a pointer.
	Change paint_type to pointer.
	* src/type1/t1objs.c (T1_Face_Done): Updated.
	(T1_Face_Init): Updated.
	Fix assignment of underline_position and underline_thickness.

	* src/cid/cidtoken.h: Change italic_angle, is_fixed_pitch,
	underline_position, and underline_thickness to pointers.  Change
	the type of the latter two to `fixed'.
	Change type of stroke_width to `fixed'.
	* src/cid/cidobjs.c (cid_face_done): Updated.
	(cid_face_init): Updated.
	Fix assignment of underline_position and underline_thickness.

	* src/type42/t42parse.c: Change italic_angle, is_fixed_pitch,
	underline_position, and underline_thickness to pointers.  Change the
	type of the latter two to `fixed'.
	Change type of stroke_width to `fixed' and make it a pointer.
	Change paint_type to pointer.
	* src/type42/t42objs.c (T42_Face_Init): Updated.
	Fix assignment of underline_position and underline_thickness.
	(T42_Face_Done): Updated.

	* src/base/ftobjs.c (open_face_from_buffer): Fix compiler warning.
	* src/pshinter/pshglob.c, src/pshinter/pshglob.h
	(psh_globals_set_scale): Make it a local function.

	* test/gview.c: Fix renaming ps3->ps typo.
	Formatting.

2003-05-29  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshalgo1.[ch], src/pshinter/pshalgo2.[ch]: Removed.
	* src/pshinter/pshalgo.h: Removed.

	* src/pshinter/pshalgo3.[ch]: Renamed to...
	* src/pshinter/pshalgo.[ch]: New files.
	s/PSH3/PSH/.
	s/psh3/psh/.
	s/ps3/ps/.

	* src/pshinter/pshrec.c, src/pshinter/pshinter.c: Updated.
	* src/pshinter/rules.mk, src/pshinter/Jamfile: Updated.

	* src/pshinter/pshglob.[ch] (psh_dimension_snap_width): Commented
	out.

	* tests/gview.c: Remove code for pshalgo1 and pshalgo2.
	Updated.

2003-05-28  Martin Zinser  <zinser@decus.de>

	* vms_make.com: Reworked support for shareable images on VMS.  The
	first version was kind of a hack; the current implementation of the
	procedure to extract the required symbols is much cleaner.

	Reworked creation of MMS files, avoiding a number of temporary files
	which were created in the previous version.

	Further work on creating descrip.mms files on the fly.

	* builds/vms/descrip.mms, src/autohint/descrip.mms,
	src/type1/descrip.mms: Removed.

2003-05-28  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshalgo3.c (psh3_glyph_compute_extrema): Skip
	contours with only a single point to avoid segfault.

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Activate code for
	handling `origin'.

2003-05-24  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahtypes.h (AH_OPTION_NO_STRONG_INTERPOLATION):
	Removed since unused.

2003-05-21  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftstdlib.h (ft_strcat): New wrapper macro
	for strcat.

	* src/base/ftmac.c (create_lwfn_name): s/isupper/ft_isupper/.
	(parse_font): s/memcpy/ft_memcpy/.
	(is_dfont) [TARGET_API_MAC_CARBON]: s/memcmp/ft_memcmp/.
	* src/base/ftobjs.c (load_mac_face) [FT_MACINTOSH]:
	s/strlen/ft_strlen/.
	s/strcat/ft_strcat/.
	s/strcpy/ft_strcpy/.
	* src/gzip/zutil.h: s/memset/ft_memset/.
	s/memcmp/ft_memcmp/.

	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdriver.c
	(PCF_Face_Init): Test for charset registry case-insensitively.

	* src/gzip/ftgzip.c (ft_gzip_fil_io): Revert change from yesterday;
	it has already been fixed differently.

	* src/truetype/ttinterp.c (DO_SFVTL): Add missing braces around
	if-clause.

2003-05-21  Martin Zinser  <zinser@decus.de>

	* t1load.c (parse_blend_axis_types): Fix compiler warning.

	* descrip.mms: Removed.  Now created by...

	* vms_make.com: New file.

2003-05-21  Weiqi Gao  <weiqigao@networkusa.net>

	* src/gzip/ftgzip.c (ft_gzip_file_io): Avoid zero value of `delta'
	to prevent infinite loop.

2003-05-21  Lars Clausen  <lrclause@cs.uiuc.edu>

	* docs/VERSION.DLL: Provide better autoconf snippet to check
	FreeType version.

2003-05-21  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (open_face): Free `internal' not
	`face->internal' in case of error to avoid possible segfault.

	* src/pshinter/pshalgo3.c (ps3_hints_apply): Check whether we
	actually have an outline.

2003-05-20  David Chester  <davidchester@qmx.net>

	* src/pshinter/pshalgo3.c (ps3_hints_apply): Try to optimize
	y_scale so that the top of non-capital letters is aligned on a pixel
	boundary whenever possible.

	* src/autohint/ahhint.c (ah_hint_edges): Make sure that lowercase
	m's maintain their symmetry.

2003-05-20  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahhint.c (ah_hinter_load_glyph): Oops!  David's
	patch from yesterday has been resolved already in a different
	way.  Reverted.

2003-05-19  David Chester  <davidchester@qmx.net>

	* src/autohint/ahhint.c (ah_hinter_load_glyph): Don't scale
	y_scale locally but face->size->metrics.y_scale.

2003-05-19  David Turner  <david@freetype.org>

	* src/sfnt/ttcmap0.c (tt_cmap4_char_next): Select proper start
	value for `hi' to avoid infinite loop.

2003-05-18  Yong Sun  <sunyong@njstar.com>

	* src/raster/ftraster.c (Insert_Y_Turn): Fix overflow test.

2003-05-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftoption.h [FT_CONFIG_OPTION_MAC_FONTS]:
	New macro.
	* src/base/ftobjs.c: Use it to control mac font support on non-mac
	platforms.

2003-05-17  George Williams  <gww@silcom.com>

	Implement partial support of Mac fonts on non-Mac platforms.

	* src/base/ftobjs.c (memory_stream_close, new_memory_stream,
	open_face_from_buffer, Mac_Read_POST_Resource,
	Mac_Read_sfnt_Resource, IsMacResource, IsMacBinary, load_mac_face)
	[!FT_MACINTOSH]: New functions.
	(FT_Open_Face) [!FT_MACINTOSH]: Use load_mac_face.

2003-05-17  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Scale linear advance width only
	if FT_FACE_FLAG_SCALABLE is set (otherwise we have a division by
	zero since FNT and friends don't define `face->units_per_EM').

2003-05-15  David Turner  <david@freetype.org>

	* src/base/fttrigon.c (FT_Vector_Rotate): Avoid rounding errors
	for small values.

2003-05-15  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahtypes.h (AH_PointRec): Remove unused `in_angle'
	and `out_angle' fields.

2003-05-14  George Williams  <gww@silcom.com>

	* src/base/ftmac.c (FT_New_Face_From_SFNT): Handle CFF files also.

2003-05-14  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h: Fix typo in comment
	(FT_HAS_FIXED_SIZES).

2003-05-10  Dan Williams  <dan@bigw.org>

	* builds/unix/aclocal.m4: Comment out definition of
	`allow_undefined_flag' for Darwin 1.3.
	* builds/unix/configure.ac: Add option --with-old-mac-fonts.
	* builds/unix/ltmain.sh: Fix version numbering for Darwin 1.3.
	* builds/unix/configure: Regenerated.

	* include/freetype/config/ftconfig.h: Fix conditions for defining
	`FT_MACINTOSH'.
	* src/base/ftbase.c: Include `ftmac.c' conditionally.
	* src/base/ftmac.c: Handle __GNUC__.

2003-05-07  YAMANO-UCHI Hidetoshi  <mer@din.or.jp>

	* src/cid/cidload.c (is_alpha): Removed.
	(cid_parse_dict): Use `cid_parser_skip_alpha' instead of `is_alpha'.

2003-05-07  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahoptim.c, src/autohint/ahoptim.h: Obsolete, removed.

2003-05-07  David Turner  <david@freetype.org>

	* src/autohint/ahglyph.c (ah_setup_uv): Exchange `for' loop and
	`switch' statement to make it run faster.
	(ah_outline_compute_segments): Reset `segment->score' and
	`segment->link'.
	(ah_outline_link_segments): Provide alternative code which does
	the same but runs much faster.
	Handle major direction also.
	(ah_outline_compute_edges): Scale `edge_distance_threshold' down
	after rounding instead of scaling comparison value in loop.

	* src/autohint/ahhint.c (ah_hinter_align_stong_points): Provide
	alternative code which runs faster.
	Handle `before->scale == 0'.

	* src/autohint/ahtypes.h (AH_SegmentRec): Move some fields down.
	(AH_EdgeRec): Move some fields in structure.
	New field `scale'.

	* src/sfnt/ttcmap0.c (tt_cmap4_char_next): Use binary search.

2003-05-02  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahoptim.c (LOG): Renamed to...
	(AH_OPTIM_LOG): This.
	(AH_Dump_Springs): Fix log message format.

	* src/autohint/ahhint.c (ah_hint_edges_3): Renamed to...
	(ah_hint_edges): This.

2002-05-02  Keith Packard  <keithp@keithp.com>

	* src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Initialize `max_advance'.

2003-05-01  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahglyph.c (ah_test_extrema): Renamed to...
	(ah_test_extremum): This.

2003-04-28  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.ac: Generate `freetype.pc' from
	`freetype.in'.
	* builds/unix/configure: Regenerated.
	* builds/unix/install.mk (install, uninstall): Handle `freetype.pc'.

2003-04-28  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>

	* builds/unix/freetype2.in: New file.  Contains building information
	for the `pkg-config' package.

2003-04-28  David Turner  <david@freetype.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Fix boundary check for
	`glyph_index'.

2003-04-25:  Graham Asher  <graham.asher@btinternet.com>

	Added the optional unpatented hinting system for TrueType.  It
	allows typefaces which need hinting to produce correct glyph forms
	(e.g., Chinese typefaces from Dynalab) to work acceptably without
	infringing Apple patents.  This system is compiled only if
	TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
	ftoption.h.

	* include/freetype/ttunpat.h: New file.  Defines
	FT_PARAM_TAG_UNPATENTED_HINTING.

	* include/freetype/config/ftheader.h (FT_TRUETYPE_UNPATENTED_H): New
	macro to use when including ttunpat.h.

	* include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING,
	TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): New configuration macros
	(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'.

	* src/truetype/ttinterp.c (NO_APPLE_PATENT, APPLE_THRESHOLD):
	Removed.
	(GUESS_VECTOR): New macro.
	(TT_Run_Context) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]:
	Set `both_x_axis'.
	(tt_default_graphics_state)
	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Updated.
	(Current_Ratio) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]:
	Handle `unpatented_hinting'.
	(Direct_Move) [NO_APPLE_PATENT]: Removed.
	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Insert assertion.
	(Project, FreeProject)
	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Insert assertion.
	(Compute_Funcs) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]:
	Implement unpatented hinting.
	(DO_SPVTCA, DO_SFVTCA, DO_SPVTL, DO_SFVTL, DO_SPVFS, DO_SFVFS,
	Ins_SDPVTL): Call `GUESS_VECTOR'.
	(DO_GPV, DO_GFV) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]:
	Handle `unpatented_hinting'.
	(Compute_Point_Displacement) [NO_APPLE_PATENT]: Removed.
	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Implement unpatented
	hinting.
	(Move_Zp2_Point, Ins_SHPIX, Ins_DELTAP, Ins_DELTAC)
	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Implement unpatented
	hinting.
	(TT_RunIns): Updated.

	* src/truetype/ttobjs.c
	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Include
	FT_TRUETYPE_UNPATENTED_H.
	(tt_face_init) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING,
	TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING]: Check
	FT_PARAM_TAG_UNPATENTED_HINTING.

	* src/truetype/ttobjs.h (TT_GraphicsState)
	[TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Add `both_x_axis'.

2003-04-25  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c (hash_bucket, hash_lookup): Use `const' for first
	argument.
	(bdf_get_font_property): Use `const' for third argument.
	Updated all callers.
	* src/bdf/bdfdrivr.c (BDF_Face_Init): Set pixel width and height
	similar to the PCF driver.
	* src/bdf/bdf.h (_hashnode): Use `const' for `key'.
	Updated.

	* src/gzip/ftgzip.c: C++ doesn't like that the array `inflate_mask'
	is declared twice.  It is perhaps better to modify the zlib source
	files directly instead of this hack.
	(zcalloc, zfree, ft_gzip_stream_close, ft_gzip_stream_io): Add casts
	to make build with g++ successful.

2003-04-24  Manish Singh  <yosh@gimp.org>

	* src/cid/cidobjs.c (cid_face_init), src/type1/t1objs.c
	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Split on `-'
	also for searching the style name.

2003-04-24  David Turner  <david@freetype.org>

	* 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'.

2003-04-24  Werner Lemberg  <wl@gnu.org>

	* builds/unix/unix-cc.in (CFLAGS): Add @CPPFLAGS@.

2003-04-24  Dieter Baron  <dillo@netbsd.org>

	* builds/unix/freetype-config.in (cflags): Emit FreeType 2's include
	files first.  Otherwise there are conflicts with FreeType 1
	installed simultaneously.

2003-04-23  Werner Lemberg  <wl@gnu.org>

	Fixing bugs reported by Nelson Beebe.

	* src/base/ftstroker.c (FT_Stroker_ParseOutline): Remove unused
	variable `in_path'.

	* src/base/ftobjs (ft_glyphslot_set_bitmap): Change type of
	second argument to `FT_Byte*'.
	* include/freetype/internal/ftobjs.h: Updated.

	* src/bdf/bdflib.c (_bdf_readstream): Remove unused variable `res'.
	(_bdf_parse_glyphs): Remove unused variable `next'.
	Mark `call_data' as unused.

	* src/cache/ftlru.c (FT_LruList_Lookup): Remove unused variable
	`plast'.

	* src/pcf/pcfread.c (pcf_seek_to_table_type): Slight recoding to
	actually use `error'.
	(pcf_load_font): Remove unused variable `avgw'.

	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Change return type
	to `void'.
	Mark `error' as unused.
	* src/pfr/pfrobjs.h: Updated.
	* src/pfr/pfrdrivr.c (pfr_get_kerning): Updated.

	* src/sfnt/ttload.c (sfnt_dir_check): Remove unused variable
	`format_tag'.

	* src/sfnt/ttcmap0.c (tt_cmap6_validate, tt_cmap10_validate): Remove
	unused variable `start'.
	(tt_cmap10_char_next): Remove unused variable `result'

	* src/sfnt/sfobjs.c (tt_face_get_name): Mark `error' as unused.

	* src/sfnt/sfdriver.c (get_sfnt_postscript_name): Mark `error' as
	unused.

	* src/type1/t1objs.c (T1_Face_Init): Remove unused variable
	`pshinter'.

	* src/type1/t1gload.c (T1_Load_Glyph): Use `glyph_data_loaded'
	only for FT_CONFIG_OPTION_INCREMENTAL.

2003-04-23  Akito Hirai  <akito@kde.gr.jp>

	* src/sfnt/ttcmap0.c (tt_cmap4_validate): Provide a weak variant
	of the glyph ID bounding check if FT_VALIDATE_TIGHT is not active.
	Without this change, many CJK fonts from Dynalab are rejected.

2003-04-23  Joe Marcus Clarke  <marcus@FreeBSD.org>

	* src/base/ftbdf.c (FT_Get_BDF_Property): Check for valid
	`get_interface'.

2003-04-23  Paul Miller  <paulm@profoundeffects.com>

	* src/base/ftmac.c (parse_fond): Fix handling of style names.

2003-04-23  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrload.c (pfr_extra_item_load_font_id): Use FT_PtrDist
	instead of FT_Uint for `len'.

2003-04-22  Werner Lemberg  <wl@gnu.org>

	* src/gzip/ftgzip.c (zcalloc) [!FT_CONFIG_OPTION_SYSTEM_ZLIB]:
	Convert K&R format to modern C usage.
	(FT_Stream_OpenGzip): Use long constant.

2003-04-21  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftccache.c (ftc_cache_lookup): Remove shadow declaration
	of `manager'.

2003-04-20  Werner Lemberg  <wl@gnu.org>

	* doc/INSTALL.UNX: Cleaned up.

2003-04-09  Torrey Lyons  <torrey@mrcla.com>

	* src/base/ftmac.c (open_face_from_buffer): Removed a double-free
	bug that had nasty consequences when trying to open an `invalid'
	font on a Mac.

2003-04-09  Mike Fabian  <mfabian@suse.de>

	* src/bdf/bdfdrivr.h (BDF_encoding_el), src/pcf/pcf.h
	(PCF_EncodingRec): Changed FT_Short to FT_UShort in order to be able
	to access more than 32768 glyphs in fonts.

2003-04-08  David Turner  <david@freetype.org>


	* Version 2.1.4 released.
	=========================


2003-04-03  Martin Muskens  <mmuskens@aurelon.com>

	* src/type1/t1load.c (T1_Open_Face): Fixed the code to make it
	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  <david@freetype.org>

	* README: Udpated.

	* README.UNX: Removed (now replaced by docs/INSTALL.UNX).

	* src/pshinter/pshalgo3.c: The hinter now performs as in 2.1.3 and
	will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is
	used.
	(psh3_dimension_quantize_len): Enabled.
	(psh3_hint_align): Enable commented code.
	(psh3_hint_align_light): Commented out.

	* src/base/ftobjs.c (FT_Set_Char_Size): Changed the default
	computations to include rounding in all cases; this is required to
	provide accurate kerning data when native TrueType hinting is
	enabled.

	* src/type1/t1load.c (is_name_char): The Type 1 loader now accepts
	more general names according to the PostScript specification (the
	previous one was too restrictive).
	(parse_font_name, parse_encoding, parse_charstrings, parse_dict):
	Use `is_name_char'.
	(parse_subrs): Handle empty arrays.

2003-03-20  David Turner  <david@freetype.org>

	Serious rewriting of the documentation.

	* docs/BUGS, docs/BUILD: Removed.
	* docs/DEBUG.TXT: Renamed to...
	* docs/DEBUG: This.
	* docs/CUSTOMIZE, docs/TRUETYPE, docs/UPGRADE.UNX: New files.
	* docs/INSTALL.ANY, docs/INSTALL.UNX, docs/INSTALL.GNU New files,
	containing platform specific information previously in INSTALL.
	* docs/readme.vms: Renamed to...
	* docs/INSTALL.VMS: This.

	* docs/*: Updated.

	Introduced three new functions to deal with glyph bitmaps within
	FT_GlyphSlot objects:

	  ft_glyphslot_free_bitmap
	  ft_glyphslot_alloc_bitmap
	  ft_glyphslot_set_bitmap

	These functions are much more convenient to use than managing the
	FT_GLYPH_OWN_BITMAP flag manually.

	* include/freetype/internal/ftobjs.h (ft_glyphslot_free_bitmap,
	ft_glyphslot_alloc_bitmap, ft_glyphslot_set_bitmap): New functions.
	* src/base/ftobjs.c: Implement them.
	(ft_glyphslot_done): Use ft_glyphslot_free_bitmap.

	* src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/pcf/pcfdriver.c
	(PCF_Glyph_Load): Remove unused variable `memory'.
	Use `ft_glyphslot_*' functions.
	Don't set `FT_GLYPH_OWN_BITMAP'.

	* src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Use
	`ft_glyphslot_alloc_bitmap'.

	* src/sfnt/ttsbit.c (Load_SBit_Image): Change 5th argument to type
	`FT_GlyphSlot'.
	Adding argument `depth' to handle recursive calls.
	Use `ft_glyphslot_alloc_bitmap'.
	(tt_face_load_sbit_image): Remove unused variable `memory'.
	Don't handle `FT_GLYPH_OWN_BITMAP'.
	Update call to Load_SBit_Image.

	* src/type42/t42objs.c (ft_glyphslot_clear): Renamed to...
	(t42_glyphslot_clear): This.  Updated caller.
	Call `ft_glyphslot_free_bitmap'.

	* src/winfonts/winfnt.c (FNT_Load_Glyph): Use
	`ft_glyphslot_set_bitmap'.
	Don't handle `FT_GLYPH_OWN_BITMAP'.

	* src/cache/ftlru.c (FT_LruList_Lookup): Fixed an invalid assertion
	check.

	* src/autohint/ahglyph.c (ah_outline_load): Add two scaling
	arguments.
	* src/autohint/ahglyph.h: Updated.
	* src/autohint/ahhint.c (ah_hinter_load): Updated.
	* src/autohint/ahglobal.c (ah_hinter_compute_widths): Updated.

	* src/cache/ftccache.c (ftc_family_done): Fixed small bug that could
	crash the cache in rare circumstances (mostly with broken fonts).

2003-03-15  David Turner  <david@freetype.org>

	* src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a small rounding
	bug.  Actually, it seems that previous versions of FreeType didn't
	perform TrueType rounding exactly as appropriate.

2003-03-14  David Turner  <david@freetype.org>

	* src/truetype/ttdriver.c (Set_Char_Sizes): Fixing the small
	TrueType native rendering glitches; they came from a small rounding
	error.

2003-03-13  David Turner  <david@freetype.org>

	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.

	* src/base/ftdbgmem.c (FT_MemTableRec): Add `alloc_count',
	`bound_total', `alloc_total_max', `bound_count', `alloc_count_max'.
	(ft_mem_debug_alloc): Handle new variables.
	(ft_mem_debug_init): s/FT_DEBUG_MEMORY/FT2_DEBUG_MEMORY/.
	Handle new environment variables.
	* docs/DEBUG.TXT: Updated.

	Fixed the cache sub-system to correctly deal with out-of-memory
	conditions.

	* src/cache/ftccache.c (ftc_node_destroy): Comment out generic
	check.
	(ftc_cache_lookup): Implement loop.
	* src/cache/ftccmap.c: Define FT_COMPONENT.
	* src/cache/ftcsbits.c (ftc_sbit_node_load): Handle
	FT_Err_Out_Of_Memory.
	* src/cache/ftlru.c: Include FT_INTERNAL_DEBUG_H.
	(FT_LruList_Lookup): Implement loop.

	* src/pfr/pfrobjs.c (pfr_face_done): Fix memory leak.
	(pfr_face_init): Fixing compiler warnings.

	* src/psaux/psobjs.c (reallocate_t1_table): Fixed a bug (memory
	leak) that only happened when a try to resize an array would end in
	an out-of-memory condition.

	* src/smooth/ftgrays.c (gray_convert_glyph): Removed compiler
	warnings / volatile bug.

	* src/truetype/ttobjs.c (tt_glyphzone_done): Removed segmentation
	fault that happened in tight memory environments.

2003-02-28  Pixel  <pixel@mandrakesoft.com>

	* src/gzip/ftgzip.c (ft_gzip_file_done): Fixed memory leak: The ZLib
	stream was not properly finalized.

2003-02-25  Anthony Fok  <anthony@thizlinux.com>

	* src/cache/ftccmap.c: Include FT_TRUETYPE_IDS_H.
	(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'
	in comments.

2003-02-25  David Turner  <david@freetype.org>

	* src/gzip/ftgzip.c (ft_gzip_file_fill_output): Fixed a bug that
	caused FreeType to loop endlessly when trying to read certain
	compressed gzip files.  The following test reveals the bug:

	  touch 0123456789 ; gzip 0123456789 ; ftdump 0123456789.gz

	Several fixes to the PFR font driver:

	- The list of available embedded bitmaps was not correctly set in
	  the root FT_FaceRec structure describing the face.

	- The glyph loader always tried to load the outlines when
	  FT_LOAD_SBITS_ONLY was specified.

	- 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.

	NOTE THAT THESE CHANGES THE FAMILY NAME OF MANY PFR FONTS!

	* src/pfr/pfrload.c (pfr_aux_name_load): New function.
	(pfr_phy_font_done): Free `family_name' and `style_name' also.
	Remove unused variables.
	(pfr_phy_font_load): Extract useful information from the auxiliary
	bytes.

	* src/pfr/pfrobjs.c (pfr_face_done): Set pointers to NULL.
	(pfr_face_init): Provide fallback values for `family_name' and
	`style_name'.
	Handle strikes.
	(pfr_slot_load): Handle FT_LOAD_SBITS_ONLY.
	* src/pfr/pfrtypes.h (PFR_PhyFontRec): Add fields `ascent',
	`descent', `leading', `family_name', and `style_name'.

	* src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a rounding bug
	when computing the scale factors for a given character size in
	points with resolution.

	* devel/ft2build.h, devel/ftoption.h: New files (in a new directory)
	which are special development versions of include/ft2build.h and
	include/freetype/config/ftoption.h, respectively.

2003-02-18  David Turner  <david@freetype.org>

	Fixing the slight distortion problem that occurred due to the latest
	auto-hinter changes.

	* src/base/ftobjs.c (ft_recompute_scaled_metrics): Fix rounding.

	* src/truetype/ttdriver.c (Set_Char_Sizes): New variable `metrics2'.
	[!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Removed.

	* src/truetype/ttobjs.h (TT_SizeRec): New field `metrics'.
	* src/truetype/ttobjs.c (Reset_Outline_Size): Fix initialization of
	`metrics'.
	[FT_CONFIG_CHESTER_ASCENDER]: Code removed.
	(Reset_SBit_Size): Fix initialization of `metrics'.

	* src/truetype/ttinterp.c (TT_Load_Context): Fix initialization of
	`exec->metrics'.

	* src/autohint/ahhint.c (ah_hinter_load): Disabled the advance width
	`correction' which seemed to provide more trouble than benefits.

2003-02-13  Graham Asher  <graham.asher@btinternet.com>

	Changed the incremental loading interface in a way that makes it
	simpler and allows glyph metrics to be changed (e.g., by adding a
	constant, as required by CFF fonts) rather than just overridden.
	This was required to make the GhostScript-to-FreeType bridge work.

	* src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_INCREMENTAL]:
	Allow metrics to be overridden.
	* src/cid/cidgload.c (cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL]:
	Ditto.

	* src/truetype/ttgload.c (load_truetype_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Simplify.
	(compute_glyph_metrics) [FT_CONFIG_OPTION_INCREMENTAL]: Code block
	moved down.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.

	* include/freetype/ftincrem.h: Updated.

2003-01-31  David Turner  <david@freetype.org>

	* docs/CHANGES, docs/VERSION.DLL, docs/TODO: Updating documentation
	for the 2.1.4 release.

	* builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/index.html: Updating the project file for
	2.1.4.

	* src/gzip/adler32.c, src/gzip/ftgzip.c, src/gzip/infblock.c,
	src/gzip/infcodes.c, src/gzip/inflate.c, src/gzip/inftrees.c,
	src/gzip/infutil.c: Removed old-style (K&R)function definitions.
	This avoids warnings with Visual C++ at its most pedantic mode.

	* 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
	much junk when trying to display a waterfall with a font without a
	Unicode charmap (e.g.  SYMBOL.TTF).

	Implemented FT_CONFIG_CHESTER_BLUE_SCALE, corresponding to the last
	patch from David Chester, but with a much simpler (and saner)
	implementation.

	* src/autohint/ahhint.c (ah_hinter_load_glyph)
	[FT_CONFIG_CHESTER_BLUE_SCALE]: Try to optimize the y_scale so that
	the top of non-capital letters is aligned on a pixel boundary
	whenever possible.

	* src/base/ftobjs.c (FT_Set_Char_Size)
	[FT_CONFIG_CHESTER_BLUE_SCALE]: Round differently.
	* src/truetype/ttdriver.c (Set_Char_Sizes)
	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Do some rounding only
	if this macro is defined.

	* src/truetype/ttobjs.c (Reset_Outline_Size)
	[FT_CONFIG_CHESTER_ASCENDER]: Round differently.

	* src/pshinter/pshalgo3.c: Improved the Postscript hinter.  Getting
	rid of stem snapping seems to work well here (though the stems are
	still slightly moved to increase contrast).
	(psh3_dimension_quantize_len): Commented out.
	(psh3_hint_align_light): New function.
	(psh3_hint_align): Comment out some code.

	THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES
	STILL SUCK.

2003-01-22  David Chester  <davidchester@qmx.net>

	* src/autohint/ahhint.c (ah_compute_stem_width): Small fix to the
	stem width optimization.

2003-01-22  David Turner  <david@freetype.org>

	Adding a new API `FT_Get_BDF_Property' to retrieve the BDF
	properties of a given PCF or BDF font.

	* include/freetype/ftbdf.h (FT_PropertyType): New enumeration.
	(BDF_Property, BDF_PropertyRec): New structure.
	FT_Get_BDF_Property): New function.
	* include/freetype/internal/bdftypes.h: Include FT_BDF_H.
	(BDF_GetPropertyFunc): New function pointer.

	* src/base/ftbdf.c (test_font_type): New helper function.
	(FT_Get_BDF_Charset_ID): Use `test_font_type'.
	(FT_Get_BDF_Property): New function.

	* src/bdf/bdfdrivr.c: Include FT_BDF_H.
	(bdf_get_bdf_property, bdf_driver_requester): New functions.
	(bdf_driver_class): Use `bdf_driver_requester'.

	* src/pcf/pcfdrivr.c: Include FT_BDF_H.
	(pcf_get_bdf_property, pdc_driver_requester): New functions
	(pcf_driver_class): Use `pcf_driver_requester'.

	* src/pcf/pcfread.c: Include `pcfread.h'.
	(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
	verification to accept a few broken fonts who pad the size
	incorrectly (the table should be padded, but its `size' field
	shouldn't according to the specification).

2003-01-18  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ltmain.sh: Regenerated with `libtoolize --force
	--copy' from libtool 1.4.3.
	* builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from
	automake 1.7.1.
	* builds/unix/configure: Regenerated with autoconf 2.54.
	* builds/unix/config.guess, builds/unix/config.sub: Updated from
	`config' CVS module at subversions.gnu.org.
	* builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
	`automake' CVS module at subversions.gnu.org.

2003-01-15  David Turner  <david@freetype.org>

	* include/freetype/freetype.h: Fixed documentation for
	FT_Size_Metrics.

2003-01-15  James Su  <suzhe@turbolinux.com.cn>

	* src/gzip/ftgzip.c (ft_gzip_check_header): Bugfix: couldn't read
	certain gzip-ed font files (typo: `&&' -> `&').

2003-01-15  Huw D M Davies  <h.davies1@physics.ox.ac.uk>

	Added a Windows .FNT specific API (mostly for Wine).  Also fixed a
	nasty bug in the header loader which would cause invalid memory
	overwrites.

	* include/freetype/config/ftheader.h (FT_WINFONTS_H): New macro
	for ftwinfnt.h.
	* include/freetype/internal/fnttypes.h: Include FT_WINFONTS_H.
	(FNT_FontRec): Updated.
	Move Windows FNT definition to...
	* include/freetype/ftwinfnt.h: This new file.
	(FT_WinFNT_HeaderRec): Rename `reserved2' to `reserved1'.
	* src/base/ftwinfnt.c: New file, providing `FT_Get_WinFNT_Header'.
	* src/winfonts/winfnt.c (winfnt_header_fields): Updated.
	Rename `reserved2' to `reserved1'.
	(fnt_font_load): Updated.

	* src/base/Jamfile, src/base/descrip.mms, src/base/rules.mk:
	Updated.

2003-01-14  Graham Asher  <graham.asher@btinternet.com>

	* include/freetype/ftglyph.h, src/base/ftglyph.c: Added `const' to
	the type of the first argument to FT_Matrix_Multiply, which isn't
	changed -- this adds documentation and convenience.

2003-01-13  Graham Asher  <graham.asher@btinternet.com>

	* src/sfnt/ttload.c (tt_face_load_metrics)
	[FT_CONFIG_OPTION_INCREMENTAL]: TrueType typefaces without
	horizontal metrics (without the `hmtx' table) are now tolerated if
	an incremental interface has been specified that has a
	get_glyph_metrics function, implying that metrics will be supplied
	from outside.  This happens for certain Type 42 fonts passed from
	GhostScript.

2003-01-11  David Chester  <davidchester@qmx.net>

	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
	also individual FT_CONFIG_CHESTER_XXX macros to control individual
	`features'.

	Note that all improvements are enabled by default, but can be
	tweaked for optimization and testing purposes.  The configuration
	macros will most likely disappear in the short future.

	* include/freetype/config/ftoption.h
	(FT_CONFIG_OPTION_CHESTER_HINTS): New macro.
	(FT_CONFIG_CHESTER_{SMALL_F,ASCENDER,SERIF,STEM,BLUE_SCALE})
	[FT_CONFIG_OPTION_CHESTER_HINTS]: New macros to control individual
	features.

	* src/autohint/ahglobal.c (blue_chars) [FT_CONFIG_CHESTER_SMALL_F]:
	Add blue zone for `fijkdbh'.
	* src/autohint/ahglobal.h (AH_IS_TOP_BLUE)
	[FT_CONFIG_CHESTER_SMALL_F]: Use `AH_BLUE_SMALL_F_TOP'.
	* src/autohint/ahglyph.c (ah_outline_compute_edges)
	[FT_CONFIG_CHESTER_SERIF]: Use `AH_EDGE_SERIF'.
	(ah_outline_compute_blue_edges) [FT_CONFIG_CHESTER_SMALL_F]:
	Increase threshold for `best_dist'.
	* src/autohint/ahhint.c (ah_compute_stem_width)
	[FT_CONFIG_CHESTER_SERIF]: Provide new version for improved serif
	handling.
	(ah_align_linked_edge) [FT_CONFIG_CHESTER_SERIF]: Use special
	version of `ah_compute_stem_width'.
	(ah_hint_edges_3) [FT_CONFIG_CHESTER_STEM]: A new algorithm for stem
	alignment when stem widths are less than 1.5 pixels wide centers the
	stem slightly off-center of the center of a pixel (this increases
	sharpness and consistency).
	[FT_CONFIG_CHESTER_SERIF]: Use special version of
	`ah_compute_stem_width'.
	* src/autohint/ahtypes.h [FT_CONFIG_CHESTER_SMALL_F]: Add
	`AH_BLUE_SMALL_F_TOP'.

2003-01-11  David Turner  <david@freetype.org>

	* include/freetype/internal/fnttypes.h (WinFNT_HeaderRec): Increase
	size of `reserved2' to avoid memory overwrites.

2003-01-08  Huw Davies  <huw@codeweavers.com>

	* src/winfonts/winfnt.c (winfnt_header_fields): Read 16 bytes into
	`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
	last release.
	(open_face): Fix return value.

2003-01-08  Owen Taylor  <owen@redhat.com>

	Implemented the FT_RENDER_MODE_LIGHT hinting mode in the auto and
	postscript hinters.

	* src/autohint/ahtypes.h (AH_HinterRec): Add `do_stem_adjust'.
	* src/autohint/ahhint.c (ah_compute_stem_width): Handle
	hinter->do_stem_adjust.
	(ah_hinter_load_glyph): Set hinter->do_stem_adjust.

	* src/pshinter/pshalgo3.h (PSH3_GlyphRec): Add `do_stem_adjust'.
	* src/pshinter/pshalgo3.c (psh3_hint_align): Use `do_stem_adjust'.
	(ps3_hints_apply): Handle FT_RENDER_MODE_LIGHT.

	* include/freetype/freetype.h (FT_Render_Mode): Add
	FT_RENDER_MODE_LIGHT.

	* src/truetype/ttgload.c: Fixing the TrueType loader to handle
	invalid composites correctly by limiting the recursion depth.
	(TT_MAX_COMPOSITE_RECURSE): New macro.
	(load_truetype_glyph): Add argument `recurse_count'.
	Load a composite only if the numbers of contours is -1, emit error
	otherwise.
	(TT_Load_Glyph): Updated.

2003-01-08  David Turner  <david@freetype.org>

	* Jamrules, Jamfile, Jamfile.in, src/*/Jamfile: Small changes to
	support the compilation of FreeType 2 as part of larger projects
	with their own configuration options (only with Jam).

2003-01-07  David Turner  <david@freetype.org>

	* src/base/ftstroker.c: Probably the last bug-fixes to the stroker;
	the API is likely to change, however.
	(ft_stroke_border_close): Don't record empty paths.
	(ft_stroke_border_get_counts): Increase `num_points' also in for loop.
	(ft_stroke_border_export): Don't increase `write' twice in for loops.
	(ft_stroker_outside): Handle `phi' together with `theta'.
	(FT_Stroker_ParseOutline): New function.

	* src/base/fttrigon.c (FT_Angle_Diff): Fixing function: It returned
	invalid values for large negative angle differences (resulting in
	incorrect stroker computations, among other things).

	* src/cache/ftccache.c (ftc_node_hash_unlink): Removing incorrect
	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.

2002-12-26  David Turner  <david@freetype.org>

	* src/gzip/adler32.c, src/gzip/infblock.c, src/gzip/inflate.c,
	src/gzip/inftrees.c, src/gzip/zconf.h, src/gzip/zlib.h,
	src/gzip/zutil.h: Updates to allow compilation without compiler
	warnings with LCC-Win32.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
	* builds/unix/configure.ac (version_info): Increased to 9:3:3.
	* builds/unix/configure: Regenerated.
	* docs/VERSION.DLL: Updated.

2002-12-23  Anthony Fok  <anthony@thizlinux.com>

	* builds/unix/configure.ac, builds/unix/unix-cc.in (LINK_LIBRARY),
	builds/unix/unix-def.in (SYSTEM_ZLIB): Small fix to configure
	sub-system on Unix to allow other programs to correctly link with
	zlib when needed.

2002-12-19  David Turner  <david@freetype.org>

	* include/freetype/internal/sfnt.h (SFNT_Load_Table_Func): New
	function pointer.

	* include/freetype/tttables.h (FT_Load_Sfnt_Table): New function.
	* src/base/ftobjs.c: Implement it.

	* src/sfnt/sfdriver.c (sfnt_get_interface): Handle `load_sfnt'
	module request.

2002-12-17  David Turner  <david@freetype.org>

	* src/base/ftobjs.c (find_unicode_charmap): Added some comments to
	better explain what's happening there.
	(open_face): Included Graham Asher's fix to prevent faces without
	Unicode charmaps from loading.

	* src/winfonts/winfnt.c: Included George Williams's fix to support
	version 2 fonts correctly.
	(winfnt_header_fields): Updated.
	(fnt_font_load): Handle version 2 fonts.
	(FNT_Load_Glyph): Updated.

2002-12-16  David Turner  <david@freetype.org>

	* docs/VERSION.DLL: Updating document to better explain the
	differences between the three version numbers being used on Unix, as
	well as providing an autoconf fragment provided by Lars Clausen.

	* src/smooth/ftgrays.c (gray_render_conic): Fixed small bug that
	prevented Bézier arcs with negative vertical coordinates to be
	rendered appropriately.

2002-12-02  Antoine Leca  <Antoine-Freetype@Leca-Marti.org>

	* src/base/ftobjs.c: Modified the logic to get Unicode charmaps.
	Now it loads UCS-4 charmaps when there is one.
	(find_unicode_charmap): New function.
	(open_face): Refer to the above one.
	(FT_Select_Charmap): Idem.

2002-11-29  Antoine Leca  <Antoine-Freetype@Leca-Marti.org>

	* include/freetype/ftgzip.h: Correct the name of the controlling
	macro (was __FTXF86_H__ ...).

2002-11-27  Vincent Caron  <v.caron@zerodeux.net>

	* builds/unix/unix-def.in, builds/unix/freetype-config.in,
	builds/unix/configure.ac, src/gzip/rules.mk, src/gzip/ftgzip.c
	[FT_CONFIG_OPTION_SYSTEM_ZLIB]: Adding support for system zlib
	installations if available on the target platform (Unix only).

2002-11-23  David Turner  <david@freetype.org>

	* src/cff/cffload.c (cff_charset_load, cff_encoding_load): Modified
	charset loader to accept pre-defined charsets, even when the font
	contains fewer glyphs.  Also enforced more checks to ensure that we
	never overflow the character codes array in the encoding.

2002-11-22  Antoine Leca  <Antoine-Freetype@Leca-Marti.org>

	* include/freetype/ttnameid.h: Updated to latest OpenType
	specification.

2002-11-18  David Turner  <david@freetype.org>


	* Version 2.1.3 released.
	=========================


2002-11-07  David Turner  <david@freetype.org>

	* src/cache/ftcsbit.c (ftc_sbit_node_load): Fixed a small bug that
	caused problems with embedded bitmaps.

	* src/otlayout/otlayout.h, src/otlyaout/otlconf.h,
	src/otlayout/otlgsub.c, src/otlayout/otlgsub.h,
	src/otlayout/otlparse.c, src/otlayout/otlparse.h,
	src/otlayout/otlutils.h: Updating the OpenType Layout code, adding
	support for the first GSUB lookups.  Nothing that really compiles
	for now though.

	* src/autohint/ahhint.c (ah_align_serif_edge): Disabled serif stem
	width quantization.  It produces slightly better shapes though this
	is not distinguishable with many fonts.
	Remove other dead code.

	* src/Jamfile, src/*/Jamfile: Simplified.
	Use $(FT2_SRC_DIR).

2002-11-06  David Turner  <david@freetype.org>

	* include/freetype/freetype.h (FT_LOAD_TARGET_LIGHT): New macro.
	(FT_LOAD_TARGET, FT_LOAD_TARGET_MODE): Use `& 15' instead of `& 7'.

2002-11-05  David Turner  <david@freetype.org>

	* include/freetype/config/ftoption.h, src/gzip/ftgzip.c: Added
	support for the FT_CONFIG_OPTION_SYSTEM_ZLIB option, used to specify
	the use of system-wide zlib.

	Note that this macro, as well as
	TT_CONFIG_OPTION_BYTECODE_INTERPRETER, is not #undef-ed anymore.
	This allows the build system to define them depending on the
	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
	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 :-)

	The fix was to change
	  `volatile FT_Byte* p'
	into
	  `FT_Byte* volatile p'.

	* src/pfr/pfrload.c (pfr_phy_font_load), src/pfr/pfrdrivr.c
	(pfr_get_metrics), src/gzip/inftrees.c: Removed compiler warnings in
	optimized modes.

	* src/gzip/*.[hc]: Modified our zlib copy in order to prevent
	exporting any zlib function names outside of the component.  This
	prevents linking problems on some platforms, when applications want
	to link FreeType _and_ zlib together.

2002-11-05  Juliusz  <jch@pps.jussieu.fr>

	* src/psaux/psobjs.c (ps_table_add): Modified increment loop in
	order to implement exponential behaviour.

2002-11-01  David Turner  <david@freetype.org>

	Added PFR-specific public API.  Fixed the kerning retrievel routine
	(it returned invalid values when the outline and metrics resolution
	differ).

	* include/freetype/ftpfr.h, include/freetype/internal/pfr.h: New
	files.

	* include/freetype/internal/internal.h (FT_INTERNAL_PFR_H): New
	macro for pfr.h.

	* src/base/ftpfr.c: New file.
	* src/base/Jamfile, src/base/descrip.mms: Updated.

	* src/pfr/pfrdrivr.c: Include FT_INTERNAL_PFR_H.
	(pfr_get_kerning, pfr_get_advance, pfr_get_metrics): New functions.
	(pfr_service_rec): New format interface.
	(pfr_driver_class): Use `pfr_service_rec'.
	Replace `pfr_face_get_kerning' with `pfr_get_kerning'.
	* src/pfr/pfrobjs.c: Remove dead code.

	* src/base/ftobjs.c (ft_glyphslot_clear): Small internal fix to
	better support bitmap-based font formats.

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix handling of
	`scale'.
	Fix arguments to `FT_Vector_From_Polar'.

2002-10-31  David Turner  <david@freetype.org>

	Add support for automatic handling of gzip-compressed PCF files.

	* src/gzip/*: New files, taken from the zlib package (except
	ftgzip.c).

	* include/freetype/ftgzip.h, src/gzip/ftgzip.c: New files.
	* include/freetype/config/ftheader.h (FT_GZIP_H): New macro for
	`ftgzip.h'.

	* src/pcf/pcfdriver.c: Include FT_GZIP_H and FT_ERRORS_H.
	(PCF_Face_Init): If normal open fails, try to open gzip stream.
	(PCF_Face_Done): Close gzip stream.

	* include/freetype/internal/pcftypes.h (PCF_Public_FaceRec),
	src/pcf/pcf.h (PCF_FaceRec): Add `gzip_stream' and `gzip_source'.

	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_USE_ZLIB):
	New macro.
	(T1_CONFIG_OPTION_DISABLE_HINTER, FT_CONFIG_OPTION_USE_CMAPS
	FT_CONFIG_OPTION_NO_CONVENIENCE_FUNCS,
	FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS): Removed.

	(FT_EXPORT, FT_EXPORT_DEF, FT_DEBUG_LEVEL_ERROR,
	FT_DEBUG_LEVEL_TRACE, FT_DEBUG_MEMORY): Comment out definitions so
	that platform specific configuration file can override.

	* include/freetype/internal/ftstream.h: Include FT_SYSTEM_H.

2002-10-30  David Turner  <david@freetype.org>

	* FreeType 2.1.3rc3 released.

2002-10-25  David Turner  <david@freetype.org>

	* include/freetype/ftcache.h (FT_POINTER_TO_ULONG): New macro.
	(FTC_FACE_ID_HASH): Rewritten, using FT_POINTER_TO_ULONG.

2002-10-22  Giuseppe Ghibò  <ghibo@mandrakesoft.com>

	* include/freetype/freetype.h (FT_Encoding): Fix entry for latin-2.

2002-10-07  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h (FT_Open_Face): Use `const' for `args'
	(suggested by Graham).
	* src/base/ftobjs.c (FT_Open_Face): Updated.
	(ft_input_stream_new): Ditto.

2002-10-05  David Turner  <david@freetype.org>

	Adding support for embedded bitmaps to the PFR driver, and rewriting
	its kerning loader/handler to use all kerning pairs in a physical
	font (and not just the first item).

	* src/pfr/pfr.c: Include `pfrsbit.c'.
	* src/pfr/pfrgload.c: Include `pfrsbit.h'.
	* src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): Rewritten.
	(pfr_phy_font_done, pfr_phy_font_load): Updated.
	* src/pfr/pfrobks.c: Include `pfrsbit.h'.
	(pfr_face_init): Handle kerning and embedded bitmaps.
	(pfr_slot_load): Load embedded bitmaps.
	(PFR_KERN_INDEX): Removed.
	(pfr_face_get_kerning): Rewritten.
	* src/pfr/pfrsbit.c, src/pfr/pfrsbit.h: New files.
	* src/pfr/pfrtypes.h (PFR_KernItemRec): New structure.
	(PFR_KERN_INDEX): New macro.
	(PFR_PhyFontRec): Add items for kerning and embedded bitmaps.
	* src/pfr/Jamfile (_sources) [FT2_MULTI]: Add `pfrsbit'.

	* src/base/ftobjs.c (FT_Load_Glyph): Don't load bitmap fonts if
	FT_LOAD_NO_RECURSE is set.
	Load embedded bitmaps only if FT_LOAD_NO_BITMAP isn't set.

	* src/tools/docmaker/content.py, src/tools/docmaker/sources.py,
	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'
	(i.e.  Marriage) to return accurate charmaps.

	* docs/CHANGES: Updated.

2002-10-05  Werner Lemberg  <wl@gnu.org>

	* src/smooth/ftgrays.c (SUBPIXELS): Add cast to `TPos'.
	Update all callers.
	(TRUNC): Add cast to `TCoord'.
	Update all callers.
	(TRaster): Use `TPos' for min_ex, max_ex, min_ey, max_ey, and
	last_ey.
	Update all casts.
	(gray_render_line): Fix casts for `p' and `first'.

2002-10-02  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/bdf/bdflib.c (bdf_load_font): Allocate the _bdf_parse_t
	structure with FT_ALLOC instead of using the stack.

2002-09-27  Werner Lemberg  <wl@gnu.org>

	* src/include/freetype/internal/tttypes.h (num_sbit_strikes,
	num_sbit_scales): Use `FT_ULong'.
	* src/sfnt/sfobjs.c (sfnt_load_face): Updated accordingly.
	* src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Ditto.
	(find_sbit_image): Remove cast.
	* src/raster/ftrend1.c (ft_raster1_render): Fix cast.

2002-09-27  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/sfnt/ttload.c (tt_face_load_names): Use cast.
	* src/sfnt/ttcmap.c (code_to_next2): Use long constant.
	(code_to_index4): Use cast.
	(code_to_index8_12): Fix cast.
	* src/sfnt/ttcmap0.c (tt_cmap4_char_next, tt_cmap8_char_index,
	tt_cmap12_char_index): Use cast for `result'.
	(tt_face_build_cmaps): Use cast.
	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_ucs4): Use cast for
	`code'.
	(sfnt_load_face): Use FT_Int32 for `flags'.

	* src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
	gray_compute_cbox, gray_convert_glyph, gray_raster_reset): Add casts
	to `TCoord' and `int'.
	More 16bit fixes.
	s/FT_Pos/TPos/.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Add casts.

2002-09-26  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttpost.c (load_post_names, tt_face_free_ps_names,
	tt_face_get_ps_name): Replace switch statement with if clauses to
	make it more portable.

	* src/cff/cffobjs.c (cff_face_init): Ditto.

	* include/freetype/ftmodule.h (FT_Module_Class): Use `FT_Long' for
	`module_size'.
	* include/freetype/ftrender.h (FT_Glyph_Class_): Use `FT_Long' for
	`glyph_size'.

	* src/base/ftobjs.c (FT_Render_Glyph): Change second parameter to
	`FT_Render_Mode'.
	(FT_Render_Glyph_Internal): Change third parameter to
	`FT_Render_Mode'.
	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Change second parameter
	to `FT_Render_Mode'.

	* src/raster/ftrend1.c (ft_raster1_render): Change third parameter
	to `FT_Render_Mode'.
	* src/smooth/ftsmooth.c (ft_smooth_render, ft_smooth_render_lcd,
	ft_smooth_render_lcd_v): Ditto.
	(ft_smooth_render_generic): Change third and fifth parameter to
	`FT_Render_Mode'.

	* include/freetype/freetype.h, include/freetype/internal/ftobjs.h,
	include/freetype/ftglyph.h: Updated.

	* src/cff/cffdrivr.c (Load_Glyph), src/pcf/pcfdriver.c
	(PCF_Glyph_Load), src/pfr/pfrobjs.c (pfr_slot_load),
	src/winfonts/winfnt.c (FNT_Load_Glyph), src/t42/t42objs.c
	(T42_GlyphSlot_Load), src/bdf/bdfdrivr.c (BDF_Glyph_Load): Change
	fourth parameter to `FT_Int32'.

	* src/pfr/pfrobjs.c (pfr_face_init): Add two missing parameters
	and declare them as unused.

	* src/cid/cidparse.h (CID_Parser): Use FT_Long for `postscript_len'.

	* src/psnames/psnames.h (PS_Unicode_Value_Func): Change return
	value to FT_UInt32.
	* src/psnames/psmodule.c (ps_unicode_value, ps_build_unicode_table):
	Updated accordingly.

2002-09-26  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/cff/cffdrivr.c (Get_Kerning): Use FT_Long for `middle'.
	(cff_get_glyph_name): Use cast for result of ft_strlen.
	* src/cff/cffparse.c (cff_parse_real): User cast for assigning
	`exp'.
	* src/cff/cffload.c (cff_index_get_pointers): Use FT_ULong for
	some local variables.
	(cff_charset_load, cff_encoding_load): Use casts to FT_UInt for some
	switch statements.
	(cff_font_load): Use cast in call to CFF_Load_FD_Select.
	* src/cff/cffobjs.c (cff_size_init): Use more casts.
	(cff_face_init): Use FT_Int32 for `flags'.
	* src/cff/cffgload.c (cff_operator_seac): Use cast for assigning
	`adx' and `ady'.
	(cff_decoder_parse_charstrings): Use FT_ULong for third parameter.
	Use more casts.
	* src/cff/cffcmap.c (cff_cmap_unicode_init): Use cast for `count'.

	* src/cid/cidload.c (cid_read_subrs): Use FT_ULong for `len'.
	* src/cid/cidgload.c (cid_load_glyph): Add missing cast for
	`cid_get_offset'.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings) <18>: Use
	cast for `num_points'.
	(t1_decoder_init): Use cast for assigning `decoder->num_glyphs'.

	* src/base/ftdebug.c (ft_debug_init): Use FT_Int.
	* include/freetype/internal/ftdriver.h (FT_Slot_LoadFunc): Use
	`FT_Int32' for fourth parameter.
	* src/base/ftobjs.c (open_face): Use cast for calling
	clazz->init_face.

	* src/raster/ftraster.c (Set_High_Precision): Use `1' instead of
	`1L'.
	(Finalize_Profile_Table, Line_Up, ft_black_init): Use casts.
	* src/raster/ftrend1.c (ft_raster1_render): Ditto.

	* src/sfnt/sfnt_dir_check: Compare `magic' with unsigned long
	constant.

2002-09-26  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/include/freetype/config/ftmodule.h: Updated.

2002-09-25  David Turner  <david@freetype.org>

	* src/autohint/ahtypes.h (AH_HINT_METRICS): Disabling metrics
	hinting in the auto-hinter.  This produces much better anti-aliased
	text.

	* docs/CHANGES: Updating the changes documentation.

2002-09-25  Anthony Fok  <anthony@thizlinux.com>

	* src/sfnt/ttcmap0.c (tt_cmap4_validate, tt_cmap4_char_index,
	tt_cmap4_char_next): Added support for opens___.ttf (it contains a
	charmap that uses offset=0xFFFFU instead of 0x0000 to indicate a
	missing glyph).

2002-09-21  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/truetype/ttdriver.c (Load_Glyph): Fourth parameter must be
	FT_Int32.
	* src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph):
	Ditto.

2002-09-19  Wolfgang Domröse  <porthos.domroese@harz.de>

	More 16bit fixes.

	* src/autohint/ahglobal.c (sort_values): Use FT_Pos for `swap'.
	(ah_hinter_compute_widths): Use FT_Pos for `dist'.
	Use AH_MAX_WIDTHS.
	* src/autohint/ahglyph.c (ah_outline_scale_blue_edges): Use FT_Pos
	for `delta'.
	(ah_outline_compute_edges): Replace some ints with FT_Int and
	FT_Pos.
	(ah_test_extrema): Clean up code.
	(ah_get_orientation): Use 4 FT_Int variables instead of FT_BBox to
	hold indices.
	* src/autohint/ahtypes.h (AH_SegmentRec): Change type of `score'
	to FT_Pos.

2002-09-19  Werner Lemberg  <wl@gnu.org>

	* builds/unix/config.guess, builds/unix/config.sub: Updated to
	recent versions.

2002-09-18  David Turner  <david@freetype.org>

	* src/base/ftobjs.c (FT_Library_Version): Bugfix.

	* FreeType 2.1.3rc2 (release candidate 2) is released!

2002-09-17  David Turner  <david@freetype.org>

	* include/freetype/freetype.h, include/freetype/ftimage.h,
	include/freetype/ftstroker.h, include/freetype/ftsysio.h,
	include/freetype/ftsysmem.h, include/freetype/ttnameid.h: Updating
	the in-source documentation.

	* src/tools/docmaker/tohtml.py: Updating the HTML formatter in the
	DocMaker tool.

	* src/tools/docmaker.py: Removed.

2002-09-17  Werner Lemberg  <wl@gnu.org>

	More 16bit fixes.

	* src/psaux/psobjs.c (reallocate_t1_table): Use FT_Long for
	second parameter.

2002-09-16  Werner Lemberg  <wl@gnu.org>

	16bit fixes from Wolfgang Domröse.

	* src/type1/t1parse.h (T1_ParserRec): Change type of `base_len'
	and `private_len' to FT_Long.
	* src/type1/t1parse.c (T1_Get_Private_Dict): Remove cast for
	`private_len'.
	* src/type1/t1load.c: Use FT_Int cast for most calls of T1_ToInt.
	Use FT_PtrDist where appropriate.
	(parse_encoding): Use FT_Long for `count' and `n'.
	(read_binary_data): Use FT_Long* for second parameter.
	* src/type1/t1afm.c (afm_atoindex): Use FT_PtrDist.

	* src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused label.
	* src/pshinter/pshalgo3.c (psh3_hint_align): Remove unused variable.

2002-09-14  Werner Lemberg  <wl@gnu.org>

	Making ftgrays.c compile stand-alone again.

	* include/freetype/ftimage.h: Include ft2build.h only if _STANDALONE_
	isn't defined.
	* src/smooth/ftgrays.c [_STANDALONE_]: Define ft_memset,
	FT_BEGIN_HEADER, FT_END_HEADER.
	(FT_MEM_ZERO): Define.
	(TRaster) [GRAYS_USE_GAMMA]: Use `unsigned char' instead of FT_Byte.
	(gray_render_span, gray_init_gamma): Don't use `FT_UInt'.
	Don't cast with `FT_Byte'.
	(grays_init_gamma): Don't use `FT_UInt'.

2002-09-14  Werner Lemberg  <wl@gnu.org>

	* src/base/ftinit.c (FT_Add_Default_Modules): Improve error message.
	* src/pcf/pcfdriver.c (PCF_Face_Done): Improve tracing message.
	* include/freetype/config/ftoption.h (FT_MAX_MODULES): Increased
	to 32.

2002-09-10  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.ac (version_info): Set to 9:2:3.
	* builds/unix/configure: Regenerated.
	* docs/VERSION.DLL: Updated.

2002-09-09  David Turner  <david@freetype.org>

	* src/pshinter/pshalgo2.c (psh2_glyph_find_strong_points),
	src/pshinter/pshalgo3.c (psh3_glyph_find_strong_points): Adding fix
	to prevent seg fault when hints are provided in an empty glyph.

	* src/cache/ftccache.i (GEN_CACHE_LOOKUP) [FT_DEBUG_LEVEL_ERROR]:
	Removed conditional code.  This fixes a bug that prevented
	compilation in debug mode of template instantiation.

	* 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.
	It didn't accept empty arrays, and this prevented the loading of
	certain fonts.

	* include/freetype/freetype.h (FT_FaceRec): Updating documentation
	comment.  The `descender' value is always *negative*, not positive.

2002-09-09  Owen Taylor  <owen@redhat.com>

	* src/pcf/pcfdriver.c (PCF_Glyph_Load): Fixing incorrect computation
	of bitmap metrics.

2002-09-08  David Turner  <david@freetype.org>

	Various updates to correctly support sub-pixel rendering.

	* include/freetype/config/ftmodule.h: Add two renderers for LCD.

	* src/base/ftobjs.c (FT_Load_Glyph): Updated.

	* src/smooth/ftsmooth.c (ft_smooth_render_lcd,
	ft_smooth_render_lcd_v): Set FT_PIXEL_MODE_LCD and
	FT_PIXEL_MODE_LCD_V, respectively.

	* include/freetype/cache/ftcimage.h (FTC_ImageTypeRec): New
	structure.
	Updated all users.
	(FTC_ImageDesc): Removed.
	(FTC_ImageCache_Lookup): Second parameter is now of type
	`FTC_ImageType'.
	Updated all users.
	(FTC_IMAGE_DESC_COMPARE): Updated and renamed to...
	(FTC_IMAGE_TYPE_COMPARE): This.
	(FTC_IMAGE_DESC_HASH): Updated and renamed to...
	(FTC_IMAGE_TYPE_HASH): This.

	* include/freetype/cache/ftcsbits.h (FTC_SBitRec): Field `num_grays'
	replaced with `max_grays'.
	`pitch' is now FT_Short.
	(FTC_SBitCache_Lookup): Second parameter is now of type
	`FTC_ImageType'.
	Updated all users.

	* src/cache/ftcimage.c (FTC_ImageQueryRec, FTC_ImageFamilyRec):
	Updated.
	(ftc_image_node_init): Updated.
	Moved code to convert type flags to load flags to...
	(FTC_Image_Cache_Lookup): This function.
	(ftc_image_family_init): Updated.

	* src/cache/ftcsbit.c (FTC_SBitQueryRec, FTC_SBitFamilyRec):
	Updated.
	(ftc_sbit_node_load): Updated.
	Moved code to convert type flags to load flags to...
	(FTC_SBitCache_Lookup): This function.

	* src/autohint/ahtypes.h (AH_HinterRec): Replace `no_*_hints' with
	`do_*_snapping'.
	Update all users (with negation).
	* src/autohint/ahhint.c (ah_compute_stem_width): Fix threshold for
	`dist' for `delta' < 40.

	* src/pshinter/pshalgo3.h (PSH3_GlyphRec): Replace `no_*_hints' with
	`do_*_snapping'.
	Update all users (with negation).
	* src/pshinter/pshalgo3.c (psh3_dimension_quantize_len): New
	function.
	(psh3_hint_align): Use it.
	Improve hinting code.
	[STRONGER]: Removed.
	(STRONGER): Removed.

	* include/freetype/freetype.h (FT_Set_Hint_Flags, FT_HINT_*):
	Removed.

2002-09-05  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidobjs.c (CID_Size_Init): Renamed to...
	(cid_size_init): This.
	* src/psaux/psobjs.c (T1_Builder_Add_Point1): Renamed to...
	(t1_builder_add_point1): This.

	Updated all affected code.

	* src/pshinter/pshalgo3.c (psh3_hint_align): Fix compiler warnings.
	* src/type1/t1gload.c (T1_Compute_Max_Advance): Ditto.

2002-09-04  David Turner  <david@freetype.org>

	* include/freetype/freetype.h: Corrected the definition of
	ft_encoding_symbol to be FT_ENCODING_MS_SYMBOL (instead of
	the erroneous FT_ENCODING_SYMBOL).

	* builds/unix/unix-def.in (datadir): Initialize it (thanks to
	Anthony Fok).

2002-08-29  David Turner  <david@freetype.org>

	Slight modification to the Postscript hinter to slightly increase
	the contrast of smooth hinting.  This is very similar to what the
	auto-hinter does when it comes to stem width computations.  However,
	it produces better results with well-hinted fonts.

	* include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Add hint
	mode to `init' member function.
	(T1_DecoderRec): Add hint mode.
	* include/freetype/internal/pshints (T1_Hints_ApplyFunc,
	T2_Hints_ApplyFunc): Pass `hint_mode', not `hint_flags'.
	* src/psaux/t1decode.c (t1_decoder_init): Add hint mode argument.
	* src/pshinter/pshalgo1.c (ps1_hints_apply): Pass hint mode, not
	hint flags.
	* src/pshinter/pshalgo2.c (ps2_hints_apply): Ditto.
	* src/pshinter/pshalgo3.c (ps3_hints_apply): Ditto.
	(STRONGER): New macro.
	(psh3_hint_align, psh3_hint_table_align_hints): Pass `glyph' instead
	of `hint_flags'.
	Implement announced changes.
	* src/pshinter/pshalgo3.h (PSH3_GlyphRec): Add flags to control
	vertical and horizontal hints and snapping.

	* README, docs/CHANGES: Updating for the 2.1.3 release.

2002-08-27  David Turner  <david@freetype.org>

	* Massive re-formatting changes to many, many source files.  I don't
	want to list them all here.  The operations performed were all
	logical transformations of the sources:

	- trying to convert all enums and constants to CAPITALIZED_STYLE,
	  #with define definitions like

	    #define my_old_constants   MY_NEW_CONSTANT

	- big, big update of the documentation comments

	* include/freetype/freetype.h, src/base/ftobjs.c,
	src/smooth/ftsmooth.c, include/freetype/ftimage.h: Adding support
	for LCD-optimized rendering though the new constants/enums:

	  FT_RENDER_MODE_LCD, FT_RENDER_MODE_LCD_V
	  FT_PIXEL_MODE_LCD,  FT_PIXEL_MODE_LCD_V

	This is still work in progress, don't expect everything to work
	correctly though most of the features have been implemented.

	* Adding new FT_LOAD_XXX flags, used to specify both hinting and
	rendering targets:

	  FT_LOAD_TARGET_NORMAL :: anti-aliased hinting & rendering
	  FT_LOAD_TARGET_MONO   :: monochrome bitmaps
	  FT_LOAD_TARGET_LCD    :: horizontal RGB/BGR decimated
	                           hinting & rendering
	  FT_LOAD_TARGET_LCD_V  :: vertical RGB/BGR decimated
	                           hinting & rendering

	Note that FT_LOAD_TARGET_NORMAL is 0, which means that the default
	behaviour of the font engine is _unchanged_.

	* include/freetype/ftimage.h
	(FT_Outline_{Move,Line,Conic,Cubic}To_Func): Renamed to...
	(FT_Outline_{Move,Line,Conic,Cubic}ToFunc): This.
	(FT_Raster_Span_Func): Renamed to ...
	(FT_SpanFunc): This.
	(FT_Raster_{New,Done,Reset,Set_Mode,Render}_Func): Renamed to ...
	(FT_Raster_{New,Done,Reset,SetMode,Render}Func}: This.

	Updated all affected code.

	* include/freetype/ftrender.h
	(FT_Glyph_{Init,Done,Transform,BBox,Copy,Prepare}_Func): Renamed
	to ...
	(FT_Glyph_{Init,Done,Transform,GetBBox,Copy,Prepare}Func): This.
	(FTRenderer_{render,transform,getCBox,setMode}): Renamed to ...
	(FT_Renderer_{RenderFunc,TransformFunc,GetCBoxFunc,SeteModeFunc}):
	This.

	Updated all affected code.

	* src/autohint/ahtypes.h (AH_Point, AH_Segment, AH_Edge, AH_Globals,
	AH_Face_Globals, AH_Outline, AH_Hinter): These typedefs are now
	pointers to the corresponding `*Rec' structures.  All source files
	have been updated accordingly.

	* src/cff/cffgload.c (cff_decoder_init): Add hint mode as parameter.
	* src/cff/cffgload.h (CFF_Decoder): Add `hint_mode' element.

	* src/cid/cidgload.c (CID_Compute_Max_Advance): Renamed to...
	(cid_face_compute_max_advance): This.
	(CID_Load_Glyph): Renamed to...
	(cid_slot_load_glyph): This.
	* src/cid/cidload.c (CID_Open_Face): Renamed to...
	(cid_face_open): This.
	* src/cid/cidobjs.c (CID_GlyphSlot_{Done,Init}): Renamed to...
	(cid_slot_{done,init}): This.
	(CID_Size_{Get_Globals_Funcs,Done,Reset): Renamed to...
	(cid_size_{get_globals_funcs,done,reset): This.
	(CID_Face_{Done,Init}): Renamed to...
	(cid_face_{done,init}): This.
	(CID_Driver_{Done,Init}: Renamed to...
	(cid_driver_{done,init}: This.
	* src/cid/cidparse.c (CID_{New,Done}_Parser): Renamed to...
	(cid_parser_{new,done}): This.
	* src/cid/cidparse.h (CID_Skip_{Spaces,Alpha}): Renamed to...
	(cid_parser_skip_{spaces,alpha}): This.
	(CID_To{Int,Fixed,CoordArray,FixedArray,Token,TokenArray}): Renamed
	to...
	(cid_parser_to_{int,fixed,coord_array,fixed_array,token,token_array}):
	This.
	(CID_Load_{Field,Field_Table): Renamed to...
	(cid_parser_load_{field,field_table}): This.
	* src/cid/cidriver.c (CID_Get_Interface): Renamed to...
	(cid_get_interface): This.

	Updated all affected code.

	* src/psaux/psobjs.c (PS_Table_*): Renamed to...
	(ps_table_*): This.
	(T1_Builder_*): Renamed to...
	(t1_builder_*): This.
	* src/psaux/t1decode.c (T1_Decoder_*): Renamed to...
	(t1_decoder_*): This.

	* src/psnames/psmodule.c (PS_*): Renamed to...
	(ps_*): This.

	Updated all affected code.

	* src/sfnt/sfdriver (SFNT_Get_Interface): Renamed to...
	(sfnt_get_interface): This.
	* src/sfnt/sfobjs.c (SFNT_*): Renamed to...
	(sfnt_*): This.
	* src/sfnt/ttcmap.c (TT_CharMap_{Load,Free}): Renamed to...
	(tt_face_{load,free}_charmap): This.
	* src/sfnt/ttcmap0.c (TT_Build_CMaps): Renamed to...
	(tt_face_build_cmaps): This.
	* src/sfnt/ttload.c (TT_*): Renamed to...
	(tt_face_*): This.
	* src/sfnt/ttpost.c (TT_Post_Default_Names): Renamed to...
	(tt_post_default_names): This.
	(Load_*): Renamed to...
	(load_*): This.
	(TT_*): Renamed to...
	(tt_face_*): This.
	* src/sfnt/ttsbit.c (TT_*): Renamed to...
	(tt_face_*): This.
	({Find,Load,Crop}_*): Renamed to...
	({find,load,crop}_*): This.

	Updated all affected code.

	* src/smooth/ftsmooth.c (ft_smooth_render): Renamed to...
	(ft_smooth_render_generic): This.
	Make function more generic by adding vertical and horizontal scaling
	factors.
	(ft_smooth_render, ft_smooth_render_lcd, ft_smooth_render_lcd_v):
	New functions.

	(ft_smooth_locd_renderer_class, ft_smooth_lcdv_renderer_class): New
	classes.

	* src/truetype/ttobjs.c (TT_{Done,New}_GlyphZone): Renamed to...
	(tt_glyphzone_{done,new}): This.
	(TT_{Face,Size,Driver}_*): Renamed to...
	(tt_{face,size,driver}_*): This.
	* src/truetype/ttpload.c (TT_Load_Locations): Renamed to...
	(tt_face_load_loca): This.
	(TT_Load_Programs): Renamed to...
	(tt_face_load_fpgm): This.
	(TT_*): Renamed to...
	(tt_face_*): This.

2002-08-27  Werner Lemberg  <wl@gnu.org>

	* docs/VERSION.DLL: New file.

2002-08-23  Graham Asher  <graham.asher@btinternet.com>

	* src/cff/cffgload.c (cff_operator_seac)
	[FT_CONFIG_OPTION_INCREMENTAL]: Incremental fonts (actually not
	incremental in the case of CFF but just using callbacks to get glyph
	recipes) pass the character code, not the glyph index, to the
	get_glyph_data function; they have no valid charset table.

	* src/cff/cffload.c (cff_font_load): Removed special cases for
	FT_CONFIG_OPTION_INCREMENTAL, which are no longer necessary; CFF
	fonts provided via the incremental interface now have to conform
	more closely to the CFF font format.

	* src/cff/cffload.h (cff_font_load): Removed argument now unneeded.

	* src/cff/cffobjs.c (cff_face_init): Changed call to cff_font_load
	to conform with new signature.

2002-08-22  David Turner  <david@freetype.org>

	* src/base/ftobject.c, src/base/ftsynth.c, src/base/ftstroker.c,
	src/bdf/bdfdrivr.c: Removed compiler warnings.

2002-08-21  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshalgo3.c (psh3_glyph_compute_inflections,
	psh3_glyph_compute_extrema, psh3_hint_table_find_strong_point): Fix
	compiler warnings and resolve shadowing of local variables.

2002-08-21  David Turner  <david@freetype.org>

	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.

	* src/autohint/ahtypes.h (ah_flag_inflection): New macro.
	* src/autohint/ahangles.c (ah_angle_diff): New function.
	* src/autohint/ahangles.h: Updated.
	* src/autohint/ahglyph.c (ah_outline_compute_inflections): New
	function.
	(ah_outline_detect_features): Use it.
	* src/autohint/ahhint.c (ah_hinter_align_strong_points)
	[!AH_OPTION_NO_WEAK_INTERPOLATION]: Handle inflection.

	* 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
	options.  This should only break binary and/or source compatibility
	on 16-bit platforms (Atari?).
	(FT_LOAD_NO_AUTOHINT): New macro.

	* src/base/ftobjs.c (FT_Load_Glyph): Updated.
	Handle FT_LOAD_NO_AUTOHINT.
	(FT_Load_Char): Updated.

	* src/pshinter/pshalgo3.c, src/base/ftobjs.c, src/base/ftobject.c,
	src/autohint/ahglyph.c, include/freetype/freetype.h: Fixing typos
	and removing compiler warnings.

2002-08-20  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Get_Metrics): Add guard for k = 0.

2002-08-20  David Turner  <david@freetype.org>

	* src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.c,
	src/pshinter/pshglob.c, src/pshinter/pshrec.c,
	src/autohint/ahmodule.c [DEBUG_HINTER]: Removing compiler warnings
	(only used in development builds anyway).

	Improve support of local extrema and stem edge points.

	* src/pshinter/pshalgo3.h (PSH3_Hint_TableRec): Use PSH3_ZoneRec
	for `zones'.
	(PSH3_DIR_UP, PSH3_DIR_DOWN): Exchange values.
	(PSH3_DIR_HORIZONTAL, PSH3_DIR_VERTICAL): New macros.
	(PSH3_DIR_COMPARE, PSH3_DIR_IS_HORIZONTAL, PSH3_IS_VERTICAL): New
	macros.
	(PSH3_POINT_INFLEX): New enum.
	(psh3_point_{is,set}_{off,inflex}): New macros.
	(PSH3_POINT_{EXTREMUM,POSITIVE,NEGATIVE,EDGE_MIN,EDGE_MAX): New
	enum values.
	(psh3_point_{is,set}_{extremum,positive,negative,edge_min,edge_max}):
	New macros.
	(PSH3_PointRec): New members `flags2' and `org_v'.
	(PSH3_POINT_EQUAL_ARG, PSH3_POINT_ANGLE): New macros.

	* src/pshinter/pshalgo3.c [DEBUG_HINTER]: Removing compiler
	warnings.
	(COMPUTE_INFLEXS): New macro.
	(psh3_hint_align): Simplify some basic arithmetic computations.
	(psh3_point_is_extremum): Removed.
	(psh3_glyph_compute_inflections) [COMPUTE_INFLEXS]: New function.
	(psh3_glyph_init) [COMPUTE_INFLEXS]: Use it.
	(psh3_glyph_compute_extrema): New function.
	(PSH3_STRONG_THRESHOLD): Increased to 30.
	(psh3_hint_table_find_strong_point): Improved.
	(psh3_glyph_find_strong_points,
	psh3_glyph_interpolate_strong_points): Updated.
	(psh3_hints_apply): Use psh3_glyph_compute_extrema.

	* test/gview.c (draw_ps3_hint, ps3_draw_control_points): New
	functions.
	Other small updates.

	* Jamfile: Small updates.

2002-08-18  Arkadiusz Miskiewicz  <misiek@pld.ORG.PL>

	* builds/unix/install.mk (install, uninstall): Add $(DESTDIR) to
	make life easier for package maintainers.

2002-08-18  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfdriver.c (PCF_Glyph_Load): Fix computation of
	horiBearingX.
	* src/bdf/bdfdrivr.c (BDF_GlyphLoad): Fix computation of
	horiBearingY.

2002-08-16  George Williams  <gww@silcom.com>

	Add support for Apple composite glyphs.

	* include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED): New macro.

	* src/truetype/ttgload.c (OVERLAP_COMPOUND, SCALED_COMPONENT_OFFSET,
	UNSCALED_COMPONENT_OFFSET): New macros for additional OpenType
	glyph loading flags.
	(load_truetype_glyph): Implement it.

2002-08-16  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_free_glyph_data),
	src/cff/cffload.c (cff_font_load): Use FT_UNUSED.

2002-08-15  Werner Lemberg  <wl@gnu.org>

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Initialize `error'.
	* src/sfnt/sfobjs.c (SFNT_Load_Face): Fix compiler warning.

2002-08-15  Graham Asher  <graham.asher@btinternet.com>

	Implemented the incremental font loading system for the CFF driver.
	Tested using the GhostScript-to-FreeType bridge (under development).

	* src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data): New
	functions.
	(cff_operator_seac, cff_compute_max_advance, cff_slot_load): Use
	them.
	* src/cff/cffload.c (cff_font_load): Add `face' parameter.
	Load charset and encoding only if there are glyphs.
	[FT_CONFIG_OPTION_INCREMENTAL]: Incremental fonts don't need
	character recipes.
	* src/cff/cffload.h, src/cff/cffobjs.c: Updated.

	* src/cid/cidgload.c (cid_load_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Corrected the incremental font
	loading implementation to use the new system introduced on
	2002-08-01.

2002-08-06  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffcmap.c: Remove compiler warnings.
	* src/cache/ftccache.c, src/cache/ftccache.i,
	src/pfr/pfrload.c, src/pfr/pfrgload.c: s/index/idx/.
	* src/cff/cffload.c: s/select/fdselect/.
	* src/raster/ftraster.c: s/wait/waiting/.

2002-08-01  Graham Asher  <graham.asher@btinternet.com>

	* src/type1/t1load.c (T1_Open_Face): Tolerate a face with no
	charstrings if there is an incremental loading interface.  Type 1
	faces supplied by PostScript interpreters like GhostScript will
	typically not provide any charstrings at load time, so this is
	essential if they are to work.

2002-08-01  Graham Asher  <graham.asher@btinternet.com>

	Modified incremental loading interface to be closer to David's
	preferences.  The header freetype.h is not now affected, the
	interface is specified via an FT_Parameter, the pointer to the
	interface is hidden in an internal part of the face record, and all
	the definitions are in ftincrem.h.

	* include/freetype/freetype.h [FT_CONFIG_OPTION_INCREMENTAL]:
	Removed.
	* include/freetype/internal/ftobjs.h [FT_CONFIG_OPTION_INCREMENTAL]:
	Include FT_INCREMENTAL_H.
	(FT_Face_InternalRec) [FT_CONFIG_OPTION_INCREMENTAL]: Add
	`incremental_interface'.

	* src/base/ftobjs.c (open_face, FT_Open_Face)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	* src/sfnt/sfobjs.c (SFNT_Load_Face) [FT_CONFIG_OPTION_INCREMENTAL]:
	Updated.

	* src/truetype/ttgload.c (load_truetype_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	Free loaded glyph data properly.
	(compute_glyph_metrics, TT_Load_Glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	* src/truetype/ttobjs.c (TT_Face_Init)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	(T1_Parse_Glyph) [FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	Free loaded glyph data properly.
	(T1_Load_Glyph): Updated.
	[FT_CONFIG_OPTION_INCREMENTAL]: Free loaded glyph data properly.

2002-07-30  David Turner  <david@freetype.org>

	* include/freetype/ftincrem.h: Adding new experimental header file
	to demonstrate a `cleaner' API to support incremental font loading.

	* include/freetype/config/ftheader.h (FT_INCREMENTAL_H): New macro.

	* src/tools/docmaker/*: Adding new (more advanced) version of
	the DocMaker tool, using Python's sophisticated regexps.

2002-07-28  Werner Lemberg  <wl@gnu.org>

	s/ft_memset/FT_MEM_SET/.
	s/FT_MEM_SET/FT_MEM_ZERO/ where appropriate.

2002-07-27  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttload.c (sfnt_dir_check): Make it work with TTCs.

2002-07-26  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: s/memset/ft_memset/.

	* src/autohint/ahhint.c (ah_hint_edges_3): Fix compiler warning.
	* src/cff/cffload.c (cff_encoding_load): Remove `memory' variable.
	* src/cff/cffcmap.c (cff_cmap_encoding_init): Remove `psnames'
	variable.
	* src/truetype/ttgload.c (load_truetype_glyph): Remove statement
	without effect.
	* src/truetype/ttdriver (Get_Char_Index, Get_Next_Char): Removed.

	* src/pshinter/pshalgo3.c (psh3_hint_table_record,
	psh3_hint_table_init, psh3_hint_table_activate_mask): Fix error
	message.

2002-07-24  Graham Asher  <graham.asher@btinternet.com>

	* src/truetype/ttobjs.c: Fix for bug reported by Sven Neumann
	[sven@gimp.org] 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.'

2002-07-18  Graham Asher  <graham.asher@btinternet.com>

	Added types and structures to support incremental typeface loading.
	The FT_Incremental_Interface structure, defined in freetype.h, is
	designed to be passed to FT_Open_Face to provide callback functions
	to obtain glyph recipes and metrics, for fonts like those passed
	from PostScript that do not necessarily provide all, or any, glyph
	information, when first opened.

	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_INCREMENTAL):
	New configuration macro to enable incremental face loading.  By
	default it is not defined.

	* include/freetype/freetype.h (FT_Basic_Glyph_Metrics,
	FT_Get_Glyph_Data_Func, FT_Get_Glyph_Metrics_Func,
	FT_Incremental_Interface_Funcs, FT_Incremental_Interface)
	[FT_CONFIG_OPTION_INCREMENTAL]: New.
	(FT_Open_Args, FT_FaceRec) [FT_CONFIG_OPTION_INCREMENTAL]: New field
	`incremental_interface'.
	(FT_Open_Flags) [FT_CONFIG_OPTION_INCREMENTAL]: New enum
	`ft_open_incremental'.

	* include/freetype/fttypes.h: Include FT_CONFIG_CONFIG_H.
	(FT_Data): New structure to represent binary data.

	* src/base/ftobjs.c (open_face) [FT_CONFIG_OPTION_INCREMENTAL]:
	Add parameter for incremental loading.
	(FT_Open_Face) [FT_CONFIG_OPTION_INCREMENTAL]: Use incremental
	interface.

	* src/truetype/ttgload.c (load_truetype_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Added the incremental loading system
	for the TrueType driver.
	(compute_glyph_metrics): Return FT_Error.
	[FT_CONFIG_OPTION_INCREMENTAL]: Check for overriding metrics.
	(TT_Load_Glyph) [FT_CONFIG_OPTION_INCREMENTAL]: Don't look for
	the glyph table while handling an incremental font.
	Get glyph offset.

	* src/truetype/ttobjs.c (TT_Face_Init)
	[FT_CONFIG_OPTION_INCOREMENTAL]: Added the incremental loading
	system for the TrueType driver.

	* src/cid/cidgload.c (cid_load_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Added the incremental loading system
	for the CID driver.

	* src/sfnt/sfobjs.c (SFNT_Load_Face) [FT_CONFIG_OPTION_INCREMENTAL]:
	Changes to support incremental Type 42 fonts: Assume a font has
	glyphs if it has an incremental interface object.

	* src/type1/t1gload.c (T1_Parse_Glyph): Renamed to...
	(T1_Parse_Glyph_And_Get_Char_String): This.
	[FT_CONFIG_OPTION_INCREMENTAL]: Added support for incrementally
	loaded Type 1 faces.
	(T1_Parse_Glyph): New function.
	(T1_Load_Glyph): Updated.

2002-07-17  David Turner  <david@freetype.org>

	Cleaning up the cache sub-system code; linear hashing is now the
	default.

	* include/freetype/cache/ftccache.h, src/cache/ftccache.i,
	src/cache/ftccache.c [!FTC_CACHE_USE_LINEAR_HASHING]: Removed.
	(FTC_CACHE_USE_LINEAR_HASHING: Removed also.

	FT_CONFIG_OPTION_USE_CMAPS is now the default.

	* include/freetype/internal/ftdriver.h (FT_Driver_ClassRec): Remove
	`get_char_index' and `get_next_char'.

	* include/freetype/config/ftoption.h,
	include/freetype/internal/tttypes.h, src/base/ftobjs.c,
	src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/pcf/pcfdrivr.c,
	src/pfr/pfrdrivr.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c,
	src/sfnt/ttcmap0.h, src/sfnt/ttload.c, src/type1/t1objs.c,
	src/type42/t42objs.c, src/winfonts/winfnt.c
	[!FT_CONFIG_OPTION_USE_CMAPS]: Removed.  The new cmap code is now
	the default.

	* src/type42/t42objs.c (T42_CMap_CharIndex, T42_CMap_CharNext):
	Removed.
	* src/type42/t42objs.h: Updated.

	* src/cid/cidriver.c (Cid_Get_Char_Index, Cid_Get_Next_Char):
	Removed.
	(t1_cid_driver_class): Updated.
	* src/truetype/ttdriver.c (tt_driver_class): Updated.
	* src/type1/t1driver.c (Get_Char_Index, Get_Next_Char): Removed
	(t1_driver_class): Updated.
	* src/type42/t42drivr.c (t42_driver_class): Updated.

	* src/base/ftobjs.c (open_face): Select Unicode cmap by default.

	* src/sfnt/ttload.c (TT_Load_SFNT_Header): Fixed a recent bug that
	prevented OpenType fonts to be recognized by FreeType.

2002-07-11  David Turner  <david@freetype.org>

	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.

	* include/freetype/internal/tttypes.h (SFNT_HeaderRec): Add `offset'
	field.

	* src/sfnt/ttload.c (sfnt_dir_check): New function.
	(TT_Load_SFNT_HeaderRec): Renamed to...
	(TT_Load_SFNT_Header): This.
	Implement new functionality.
	* src/sfnt/ttload.h: Updated.
	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/base/ftobject.c, src/base/fthash.c: Updated object sub-system
	and dynamic hash table implementation (still experimental, don't
	use).
	* include/freetype/internal/fthash.h: Updated.
	* include/freetype/internal/ftobjs.h (FT_LibraryRec): New member
	`meta_class'.

	Fixing a bug in the Type 1 loader that prevented valid font bounding
	boxes to be loaded from multiple master fonts.

	* include/freetype/t1tables.h (PS_BlendRec): Add `bboxes' field.

	* include/freetype/internal/psaux.h (T1_FieldType): Add
	`T1_FIELD_TYPE_BBOX'.
	(T1_FieldLocation): Add `T1_FIELD_LOCATION_BBOX'.
	(T1_FIELD_BBOX): New macro.

	* src/psaux/psobjs.c (PS_Parser_LoadField): Handle T1_FIELD_TYPE_BBOX.
	* src/type1/t1load.c (t1_allocate_blend): Create blend->bboxes.
	(T1_Done_Blend): Free blend->bboxes.
	(t1_load_keyword): Handle T1_FIELD_LOCATION_BBOX.
	(parse_font_bbox): Commented out.
	(t1_keywords): Comment out `parse_font_bbox'.
	* src/type1/t1tokens.h: Define `FontBBox' field.

2002-07-10  David Turner  <david@freetype.org>

	* src/cff/cffobjs.c: Small fix to select the Unicode charmap by
	default when needed.
	Small fix to allow OpenType fonts to support Adobe charmaps when
	needed.

	* src/cff/cffcmap.c, src/cff/cffcmap.h: New files to support
	charmaps for CFF fonts.

	* src/cff/cff.c, src/cff/Jamfile, src/cff/rules.mk: Updated.

	* include/freetype/internal/cfftypes.h (CFF_EncodingRec): Use
	fixed-length arrays for `sids' and `codes'.  Add `count' member.
	(CFF_FontRec): Add `psnames' member.

	* src/cff/cffdrivr.c, src/cff/cffload.c, src/cff/cffload.h,
	src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c,
	src/cffparse.h, src/cff/cffgload.c, src/cff/cffgload.h: Adding
	support for CFF charmaps, reformatting the sources, and removing
	some bugs in the Encoding and Charset loaders.
	Many fonts renamed to use lowercase only:

	  CFF_Builder_Init -> cff_builder_init
	  CFF_Builder_Done -> cff_builder_done
	  CFF_Init_Decoder -> cff_decoder_init
	  CFF_Parse_CharStrings -> cff_decoder_parse_charstrings
	  CFF_Load_Glyph -> cff_slot_load
	  CFF_Init_Decoder -> cff_decoder_init
	  CFF_Prepare_Decoder -> cff_decoder_prepare
	  CFF_Get_Standard_Encoding -> cff_get_standard_encoding
	  CFF_Access_Element -> cff_index_access_element
	  CFF_Forget_Element -> cff_index_forget_element
	  CFF_Get_Name -> cff_index_get_name
	  CFF_Get_String -> cff_index_get_sid_string
	  CFF_Get_FD -> cff_fd_select_get
	  CFF_Done_Charset -> cff_charset_done
	  CFF_Load_Charset -> cff_charset_load
	  CFF_Done_Encoding -> cff_encoding_done
	  CFF_Load_Encoding -> cff_encoding_load
	  CFF_Done_SubFont -> cff_subfont_done
	  CFF_Load_Font -> cff_font_load
	  CFF_Done_Font -> cff_font_done
	  CFF_Size_Get_Global_Funcs -> cff_size_get_global_funcs
	  CFF_Size_Done -> cff_size_done
	  CFF_Size_Init -> cff_size_init
	  CFF_Size_Reset -> cff_size_reset
	  CFF_GlyphSlot_Done -> cff_slot_done
	  CFF_GlyphSlot_Init -> cff_slot_init
	  CFF_StrCopy -> cff_strcpy
	  CFF_Face_Init -> cff_face_init
	  CFF_Face_Done -> cff_face_done
	  CFF_Driver_Init -> cff_driver_init
	  CFF_Driver_Done -> cff_driver_done
	  CFF_Parser_Init -> cff_parser_init
	  CFF_Parser_Run -> cff_parser_run

	  add_point -> cff_builder_add_point
	  add_point1 -> cff_builder_add_point1
	  add_contour -> cff_builder_add_contour
	  close_contour -> cff_builder_close_contour
	  cff_explicit_index -> cff_index_get_pointers

2002-07-09  Owen Taylor  <owen@redhat.com>

	* src/pshinter/pshglob.c (psh_globals_new): Fixed a bug that
	prevented the hinter from using correct standard width and height
	values, resulting in hinting bugs with certain fonts (e.g. Utopia).

2002-07-07  David Turner  <david@freetype.org>

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Added code to return
	successfully when the function is called with a bitmap glyph (the
	previous code simply returned with an error).

	* docs/DEBUG.TXT: Adding debugging support documentation.

	* src/base/ftdebug.c (ft_debug_init), builds/win32/ftdebug.c
	(ft_debug_init), builds/amiga/src/ftdebug.c (ft_debug_init): Changed
	the syntax of the FT2_DEBUG environment variable used to control
	debugging output (i.e. logging and error messages).  It must now
	look like:

	  any:6 memory:4 io:3   or
	  any:6,memory:4,io:3   or
	  any:6;memory:4;io:3

2002-07-07  Owen Taylor  <owen@redhat.com>

	* src/pshinter/pshglob.c (psh_blues_snap_stem): Adding support for
	blue fuzz.
	* src/pshinter/pshglob.h (PSH_BluesRec): Add `blue_fuzz' field.
	* src/type1/t1load.c (T1_Open_Face): Initialize `blue_fuzz'.

	Adding support for hinter-specific bit flags, and the new
	FT_Set_Hint_Flags high-level API.

	* include/freetype/freetype.h (FT_Set_Hint_Flags): New function.
	(FT_HINT_NO_INTEGER_STEM, FT_HINT_NO_HSTEM_ALIGN,
	FT_HINT_NO_VSTEM_ALIGN): New macros.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
	`hint_flags' member.

	* src/base/ftobjs.c (FT_Set_Hint_Flags): New function.

	* include/freetype/internal/psaux.h (T1_DecoderRec): Add `hint_flags'
	member.

	* include/freetype/internal/pshints.h (T1_Hints_ApplyFunc,
	T2_Hints_ApplyFunc): Add parameter to pass hint flags.

	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings,
	T1_Decoder_Init): Use decoder->hint_flags.
	* src/cff/cffgload.h (CFF_Builder): Add `hint_flags' field.
	* src/cff/cffgload.c (CFF_Builder_Init): Set builder->hint_flags.
	(CFF_Parse_CharStrings): Updated.
	* src/pshinter/pshalgo1.c (ps1_hints_apply): Add parameter to handle
	hint flags (unused).
	* src/pshinter/pshalgo1.h: Updated.
	* src/pshinter/pshalgo2.c (ps2_hints_apply): Add parameter to handle
	hint flags (unused).
	* src/pshinter/pshalgo2.h: Updated.
	* src/pshinter/pshalgo3.c (ps3_hints_apply): Add parameter to handle
	hint flags.
	* src/pshinter/pshalgo3.h: Updated.

2002-07-04  David Turner  <david@freetype.org>

	* src/pfr/pfrobjs.c (pfr_slot_load): Fixed a small bug that returned
	incorrect advances when the outline resolution was different from
	the metrics resolution.

	* src/autohint/ahhint.c: Removing compiler warnings.

	* src/autohint/ahglyph.c: s/FT_MEM_SET/FT_ZERO/ where appropriate.
	(ah_outline_link_segments): Slight improvements to the serif
	detection code.  More work is needed though.

2002-07-03  David Turner  <david@freetype.org>

	Small improvements to the automatic hinter.  Uneven stem-widths have
	now disappeared and everything looks much better, even if there are
	still issues with serifed fonts.

	* src/autohint/ahtypes.h (AH_Globals): Added `stds' array.
	* src/autohint/ahhint.c (OPTIM_STEM_SNAP): New #define.
	(ah_snap_width): Commented out.
	(ah_align_linked_edge): Renamed to...
	(ah_compute_stem_width): This.
	Don't allow uneven stem-widths.
	(ah_align_linked_edge): New function.
	(ah_align_serifed_edge): Don't strengthen serifs.
	(ah_hint_edges_3, ah_hinter_scale_globals): Updated.

2002-07-03  Owen Taylor  <owen@redhat.com>

	Adding new algorithm based on Owen Taylor's recent work.

	* src/pshinter/pshalgo3.c, src/pshinter/pshalgo3.h: New files.
	* src/pshinter/pshalgo.h: Updated.
	Use pshalgo3 by default.
	* src/pshinter/pshinter.c: Include pshalgo3.c.

	* src/pshinter/Jamfile, src/pshinter/rules.mk: Updated.

2002-07-01  Owen Taylor  <owen@redhat.com>

	* src/pshinter/pshalgo2.c (psh2_glyph_find_strong_points): Fix a bug
	where, if a glyph has more than hint mask, the second mask gets
	applied to points that should have been covered by the first mask.

2002-07-01  Keith Packard  <keithp@keithp.com>

	* src/sfnt/ttcmap0.c (tt_cmap8_char_next, tt_cmap12_char_next):
	Fixing the cmap 8 and 12 parsing routines.

2002-07-01  David Turner  <david@freetype.org>

	* src/base/ftsynth.c: Include FT_TRIGONOMETRY_H.
	(FT_Outline_Embolden): Renamed to...
	(FT_GlyphSlot_Embolden): This.
	Updated to new trigonometric functions.
	(FT_Outline_Oblique): Renamed to...
	(FT_GlyphSlot_Oblique): This.
	(ft_norm): Removed.
	* include/freetype/ftsynth.h: Updated.

2002-06-26  David Turner  <david@freetype.org>

	* include/freetype/internal/ftobject.h: Updating the object
	sub-system definitions (still experimental).

	* src/base/fthash.c (ft_hash_remove): Fixing a small reallocation
	bug.

	* src/base/fttrigon.c (FT_Vector_From_Polar, FT_Angle_Diff): New
	functions.
	* include/freetype/fttrigon.h: Updated.


	Adding path stroker component (work in progress).

	* include/freetype/ftstroker.h, src/base/ftstroker.c: New files.
	* src/base/Jamfile: Updated.

	* include/freetype/config/ftheader.h (FT_STROKER_H): New macro.


	* src/truetype/ttgload.c (TT_Load_Composite_Glyph),
	src/base/ftoutln.c (FT_Vector_Transform): Fixed Werner's latest fix.
	FT_Vector_Transform wasn't buggy, the TrueType composite loader was.

2002-06-24  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.

2002-06-21  David Turner  <david@freetype.org>


	* Version 2.1.2 released.
	=========================


2002-06-21  Roberto Alameda  <ojancano@geekmail.de>.

	* include/freetype/internal/t42types.h (T42_Font): Removed since
	it is already in t42objs.h.
	(T42_Face): Use T1_FontRec.

	* src/base/fttype1.c (FT_Get_PS_Font_Info): Updated.
	(FT_Has_PS_Glyph_Names): Check for type42 driver name also.
	* src/type42/t42objs.h: Include FT_INTERNAL_TYPE42_TYPES_H.
	(T42_Face): Removed since it is already in t42types.h.

2002-06-21  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/pfrgload.c (pfr_glyph_load_compound): Fix loading of composite
	glyphs.

2002-06-21  Sven Neumann  <sven@convergence.de>

	* src/prf/pfrtypes.h (PFR_KernPair): New structure.
	(PFR_PhyFont): Use it.
	(PFR_KernFlags): New enumeration.
	* src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): New
	function.
	(pfr_phy_font_extra_items): Use it.
	(pfr_phy_font_done): Updated.
	* src/pfr/pfrobjs.c (pfr_face_init): Set kerning flag conditionally.
	(pfr_face_get_kerning): New function.
	* src/pfr/pfrobjs.h: Updated.
	* src/pfr/pfrdrivr.c (pfr_driver_class): Updated.

2002-06-21  David Turner  <david@freetype.org>

	* README, docs/CHANGES: Preparing the 2.1.2 release.

2002-06-19  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/base/fttype1.c: Include FT_INTERNAL_TYPE42_TYPES_H.
	(t1_face_check_cast): Removed.
	(FT_Get_PS_Font_Info): Make it work with CID and Type 42 drivers
	also.

2002-06-19  Sebastien BARRE  <http://barre.nom.fr/contact.html#email>

	* src/type42/t42parse.c (t42_parse_sfnts): Fix compiler warning.

2002-06-19  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Vector_Transform): Fix serious typo
	(xy <-> yx).
	* src/truetype/ttgload.c (load_truetype_glyph): Replace `|' with
	`||' to make code easier to read.

2002-06-18  Roberto Alameda  <ojancano@geekmail.de>.

	* src/type42/t42objs.c (t42_check_size_change): Removed.
	(T42_Size_SetChars, T42_Size_SetPixels): Use FT_Activate_Size
	instead.
	(T42_GlyphSlot_Load): Remove call to t42_check_size_change.

2002-06-18  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/psaux/t1cmap.c (t1_cmap_custom_char_index,
	t1_cmap_custom_char_next): Fix index computation -- indices start
	with 0 and not with cmap->first.

	Provide default charmaps.

	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdriver.c
	(PCF_Face_Init), src/pfr/pfrobjs.c (pfr_face_init),
	src/type1/t1objs (T1_Face_Init), src/winfonts/winfnt.c
	(FNT_Face_Init): Implement it.

2002-06-17  Sven Neumann  <sven@gimp.org>

	* src/pfr/pfrobjs.c (pfr_face_init): Fix typo.

2002-06-16  Leonard Rosenthol  <leonardr@lazerware.com>

	Updated Win32/VC++ projects to include the new PFR driver.

	* builds/win32/visualc/freetype.dsp: Updated.

2002-06-16  Anthony Fok  <fok@debian.org>

	Install freetype2.m4.

	* builds/unix/install.mk (install, uninstall): Handle it.

2002-06-16  Detlef Würkner  <TetiSoft@apg.lahn.de>

	Same fix for PFR driver.

	* src/pfr/pfrcmap.c (pfr_cmap_char_index, pfr_cmap_char_next):
	Increase return value by 1.
	* src/pfr/pfrobjs.c (pfr_slot_load): Decrease index by 1.

2002-06-15  Detlef Würkner  <TetiSoft@apg.lahn.de>

	Fix glyph indices to make index zero always the undefined glyph.

	* src/bdf/bdfdrivr.c (bdf_cmap_init): Don't decrease
	cmap->num_encodings.
	(bdf_cmap_char_index, bdf_cmap_char_next, BDF_Get_Char_Index):
	Increase result by 1 for normal cases.
	(BDF_Glyph_Load): Decrease index by 1.

	* src/pcf/pcfdriver.c (pcf_cmap_char_index, pcf_cmap_char_next,
	PCF_Char_Get_Index): Increase result by 1 for normal cases.
	(PCF_Glyph_Load): Decrease index by 1.
	* src/pcf/pcfread.c (pcf_get_encodings): Don't decrease j for
	allocating `encoding'.

	* src/base/ftobjs.c (FT_Load_Glyph, FT_Get_Glyph_Name): Fix
	bounding tests.

2002-06-14  Detlef Würkner  <TetiSoft@apg.lahn.de>

	Add new cmap support to BDF driver.

	* src/bdf/bdfdrivr.c (BDF_CMapRec) [FT_CONFIG_OPTION_USE_CMAPS]:
	New structure.
	(bdf_cmap_init, bdf_cmap_done, bdf_cmap_char_index,
	bdf_cmap_char_next) [FT_CONFIG_OPTION_USE_CMAPS]: New functions.
	(BDF_Get_Char_Index) [!FT_CONFIG_OPTION_USE_CMAPS]: Use only
	conditionally.
	(BDF_Face_Init): Handle `AVERAGE_WIDTH' and `POINT_SIZE' keywords.
	Implement new cmap handling.
	(bdf_driver_class): Updated.

2002-06-14  Werner Lemberg  <wl@gnu.org>

	* Makefile, configure, */*.mk, builds/unix/unix-def.in,
	docs/CHANGES, docs/INSTALL: s/TOP/TOP_DIR/.

2002-06-12  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c: s/FT_Short/short/ for consistency.

2002-06-11  David Turner  <david@freetype.org>

	* builds/win32/ftdebug.c: Added a missing #endif.

	* src/sfnt/ttload.c, src/bdf/bdflib.c: Removing compiler warnings.

	Removed the bug in Type 42 driver that prevented un-hinted outlines
	to be loaded.

	* src/type42/t42objs.c (T42_Face_Init): Call FT_Done_Size.
	(T42_Size_Init): Call FT_Activate_Size.
	(t42_check_size_change): New function.
	(T42_Size_SetChars, T42_Size_SetPixels): Use it.
	(ft_glyphslot_clear): Replace FT_MEM_SET with FT_ZERO.
	(T42_GlyphSlot_Load): Use t42_check_size_change.
	Initialize more fields of `glyph'.

	* builds/win32/visualc/freetype.dsp: Updated.

2002-06-09  David Turner  <david@freetype.org>


	* Version 2.1.1 released.
	=========================


2002-06-08  Juliusz Chroboczek  <jch@pps.jussieu.fr>

	* include/freetype/internal/ftobjs.h, src/autohint/ahglyph.c,
	src/base/ftobjs.c, src/sfnt/ttcmap0.c, src/smooth/ftgrays.c: Don't
	use `setjmp', `longjmp', and `jmp_buf' but `ft_setjmp', `ft_longjmp',
	and `ft_jmp_buf'.
	Removed direct references to <stdio.h> and <setjmp.h> when
	appropriate, to eventually replace them with a
	FT_CONFIG_STANDARD_LIBRARY_H.  Useful for the XFree86 Font Server
	backend based on FT2.

	* src/base/fttype1.c (FT_Has_PS_Glyph_Names): Fix return value.

2002-06-08  David Turner  <david@freetype.org>

	* src/pcf/pcfdriver.c (pcf_cmap_char_next): Fixed a bug that caused
	the function to return invalid values.

	* src/cache/ftccache.i: Removing a typo that prevented
	the source's compilation.

	* src/cache/ftccache.c (ftc_node_hash_unlink): Fixed a
	bug that caused nasty memory overwrites.  The hash table's
	buckets array wasn't correctly resized when shrunk.

2002-06-08  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/smakefile, builds/amiga/makefile: Updated.

2002-06-08  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftccache.c (ftc_node_hash_unlink, ftc_node_hash_link)
	[FTC_CACHE_USE_LINEAR_HASHING]: Fix returned error code.
	Fix debugging messages.
	* src/cache/ftccache.i (GEN_CACHE_LOOKUP): Move declaration of
	`family' and `hash' up to make it compilable with g++.

	* src/type42/t42error.h: New file.
	* src/type42/t42drivr.c, src/type42/t42objs.c,
	src/type42/t42parse.c: Use t42 error codes.
	* src/type42/rules.mk: Updated.

	* src/base/ftnames.c: Include FT_INTERNAL_STREAM_H.

2002-06-08  David Turner  <david@freetype.org>

	* src/cache/ftccmap.c: GEN_CACHE_FAMILY_COMPARE,
	GEN_CACHE_NODE_COMPARE, GEN_CACHE_LOOKUP) [FTC_CACHE_USE_INLINE]:
	New macros.
	(ftc_cmap_cache_lookup) [!FTC_CACHE_USE_INLINE]: Typedef to
	ftc_cache_lookup.
	(FTC_CMapCache_Lookup): Updated.

	Adding various experimental optimizations to the cache manager.

	* include/freetype/cache/ftccache.h (FTC_CACHE_USE_INLINE,
	FTC_CACHE_USE_LINEAR_HASHING): New options.
	(FTC_CacheRec) [FTC_CACHE_USE_LINEAR_HASHING]: New elements `p',
	`mask', and `slack'.

	* src/cache/ftccache.c (FTC_HASH_MAX_LOAD, FTC_HASH_MIN_LOAD,
	FTC_HASH_SUB_LOAD) [FTC_CACHE_USE_LINEAR_HASHING,
	FTC_HASH_INITIAL_SIZE]: New macros.
	(ftc_node_mru_link, ftc_node_mru_up): Optimized.
	(ftc_node_hash_unlink, ftc_node_hash_link)
	[FTC_CACHE_USE_LINEAR_HASHING]: New variants.
	(FTC_PRIMES_MIN, FTC_PRIMES_MAX, ftc_primes, ftc_prime_closest,
	FTC_CACHE_RESIZE_TEST, ftc_cache_resize)
	[!FTC_CACHE_USE_LINEAR_HASHING]: Define it conditionally.
	(ftc_cache_init, ftc_cache_clear) [FTC_CACHE_USE_LINEAR_HASHING]:
	Updated.
	(ftc_cache_lookup) [FTC_CACHE_USE_LINEAR_HASHING]: Implement it.

	* src/cache/ftccache.i: New file.

	* src/cache/ftcsbits.c (GEN_CACHE_FAMILY_COMPARE,
	GEN_CACHE_NODE_COMPARE, GEN_CACHE_LOOKUP) [FTC_CACHE_USE_INLINE]:
	New macros.
	(ftc_sbit_cache_lookup) [!FTC_CACHE_USE_INLINE]: Typedef to
	ftc_cache_lookup.
	(FTC_SBitCache_Lookup): Updated.

	* src/type42/t42parse.c: Removing duplicate function.

2002-06-07  Graham Asher  <graham.asher@btinternet.com>

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Changed definition
	from FT_EXPORT_DEF to FT_BASE_DEF.

2002-06-07  David Turner  <david@freetype.org>

	Fixed the bug that prevented the correct display of fonts with
	`ftview'.

	* src/type42/t42drivr.c: Split into...
	* src/type42/t42drivr.h, src/type42/t42parse.c,
	src/type42/t42parse.h, src/type42/t42objs.h, src/type42/t42objs.c,
	src/type42/type42.c: New files.

	(t42_get_glyph_name, t42_get_ps_name, t42_get_name_index): Use
	`face->type1'.

	(Get_Interface): Renamed to...
	(T42_Get_Interface): This.
	Updated.
	(T42_Open_Face, T42_Face_Done): Updated.
	(T42_Face_Init): Add new cmap support.
	Updated.
	(T42_Driver_Init, T42_Driver_Done, T42_Size_Init, T42_Size_Done,
	T42_GlyphSlot_Init, T42_GlyphSlot_Done): Updated.
	(Get_Char_Index, Get_Next_Char): Renamed to...
	(T42_CMap_CharIndex, T42_CMap_CharNext): This.
	Updated.
	(T42_Char_Size, T42_Pixel_Size): Renamed to...
	(T42_Size_SetChars, T42_Size_SetPixels): This.
	(T42_Load_Glyph): Renamed to...
	(T42_GlyphSlot_Load): This.

	(t42_init_loader, t42_done_loader): Renamed to...
	(t42_loader_init, t42_loader_done): This.
	(T42_New_Parser, T42_Finalize_Parser): Renamed to...
	(t42_parser_init, t42_parser_done): This.
	(parse_dict): Renamed to...
	(t42_parse_dict): This.
	(is_alpha, is_space, hexval): Renamed to...
	(t42_is_alpha, t42_is_space, t42_hexval): This.
	(parse_font_name, parse_font_bbox, parse_font_matrix,
	parse_encoding, parse_sfnts, parse_charstrings, parse_dict):
	Renamed to...
	(t42_parse_font_name, t42_parse_font_bbox, t42_parse_font_matrix,
	t42_parse_encoding, t42_parse_sfnts, t42_parse_charstrings,
	t42_parse_dict): This.
	Updated.

	(t42_keywords): Updated.

	* src/type42/Jamfile, src/type42/descrip.mms: Updated.

2002-06-03  Werner Lemberg  <wl@gnu.org>

	Add 8bpp support to BDF driver.

	* src/bdf/bdflib.c (_bdf_parse_start): Handle 8bpp.
	* src/bdf/bdfdrivr.c (BDF_Glyph_Load): Ditto.
	* src/bdf/README: Updated.

2002-06-02  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/pfr/pfrload.c (pfr_phy_font_done): Free `blue_values' array.

2002-05-29  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/bdf/bdflib.c (_bdf_readstream): Allocate `buf' dynamically.
	(_bdf_parse_glyphs): Use correct size for allocating
	`font->unencoded'.
	(bdf_load_font): Free array conditionally.
	Return proper error code in case of failure.
	* src/bdf/bdfdrivr.c (BDF_Face_Init): Make it more robust against
	unusual fonts.

2002-05-29  Werner Lemberg  <wl@gnu.org>

	* src/bdf/descrip.mms, src/type42/descrip.mms: New files.
	* descrip.mms (all): Updated.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Fix typo which prevented
	compilation.
	* src/pshglob.c (psh_blues_scale_zones): Fix compiler warning.

2002-05-28  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/makefile, builds/amiga/smakefile,
	amiga/include/freetype/config/ftmodule.h: Updated to include
	support for BDF and Type42 drivers.

	* docs/modules.txt: Updated.

2005-05-28  David Turner  <david@freetype.org>

	* docs/CHANGES: Updating file for next release (2.1.1).

	* src/bdf/bdflib.c: Removing compiler warnings.

	* include/freetype/ftxf86.h, src/base/ftxf86.c: New files.
	They provide a new API (FT_Get_X11_Font_Format) to retrieve an
	X11-compatible string describing the font format of a given face.
	This was put in a new optional base source file, corresponding to a
	new public header (named FT_XFREE86_H since this function should
	only be used within the XFree86 font server IMO).

	* include/freetype/config/ftheader.h (FT_XFREE86_H): New macro (not
	documented yet).

	* src/base/fttype1.c: New file, providing two new API functions
	(FT_Get_PS_Font_Info and FT_Has_PS_Glyph_Names).
	* 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.

	* src/pshinter/pshglob.c (psh_blues_scale_zones): Fixed a bug that
	prevented family blue zones substitution from hapenning correctly.

	* include/freetype/ftbdf.h FT_Get_BDF_Charset_ID): Adding
	documentation comment.

2002-05-28  Werner Lemberg  <wl@gnu.org>

	* src/base/ftnames.c (FT_Get_Sfnt_Name): Don't use FT_STREAM_READ_AT
	but FT_STREAM_READ.
	Declare `stream' variable.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Replace floating point math
	with calls to `FT_MulDiv'.

2002-05-28  David Turner  <david@freetype.org>

	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.

	Name strings are now loaded on demand, which reduces the memory
	requirements for a given FT_Face tremendously (for example, the name
	table of Arial.ttf is about 10Kb and contains 70 names).

	This is a temporary fix.  The whole name table loader and interface
	will be rewritten in a much more cleanly way shortly, once CSEH have
	been introduced in the sources.

	* include/freetype/internal/tttypes.h (TT_NameEntryRec): Change
	type of `stringOffset' to FT_ULong.
	(TT_NameTableRec): Change type of `numNameRecords' and
	`storageOffset' to FT_UInt.
	Replace `storage' with `stream'.
	* src/base/ftnames.c (FT_Get_Sfnt_Name): Load name on demand.
	* src/sfnt/sfdriver.c (get_sfnt_postscript_name): Ditto.
	Make code more robust.
	* src/sfnt/sfobjs.c (TT_NameEntry_ConvertFunc): New typedef.
	(tt_face_get_name): Use it.
	Make code more robust.
	* src/sfnt/ttload.c (TT_Load_Names): Use `static' for arrays.
	Handle invalid `storageOffset' data better.
	Set length fields to zero for invalid or ignored data.
	Remove code within FT_DEBUG_LEVEL_TRACE.
	(TT_Free_Names): Updated.

2002-05-24  Tim Mooney  <enchanter@users.sourceforge.net>

	* builds/unix/ft-munmap.m4: New file, extracted FT_MUNMAP_DECL and
	FT_MUNMAP_PARAM from aclocal.m4 into here, so aclocal.m4 can be
	rebuilt from sources.  Set macro serial to 1, and use third argument
	to AC_DEFINE for our two custom symbols, so ftconfig.in could one day
	be rebuilt with autoheader (not recommended now, ftconfig.in is a
	custom source file)

2002-05-22  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftheader.h (FT_BEZIER_H): Removed.
	(FT_BDF_H): New macro for accessing `ftbdf.h'.

	* src/type42/t42drivr.c (hexval): Fix typo.

2002-05-21  Martin Muskens  <mmuskens@aurelon.com>

	* src/psaux/psobjs.c (T1Radix): New function.
	(t1_toint): Use it to handle numbers in radix format.

	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Add dummy
	for undocumented, obsolete opcode 15.

2002-05-21  David Turner  <david@freetype.org>

	* src/bdf/bdflib.c: Removed compiler warning, and changed all tables
	to the `static const' storage specifier (instead of simply
	`static').

	* src/type42/t42drivr.c (hexval): Use more efficient code.
	Removing compiler warnings.
	* src/bdf/bdfdrivr.c: Removing compiler warnings.

	* include/freetype/internal/ftbdf.h, src/base/ftbdf.c,
	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.

2002-05-21  Werner Lemberg  <wl@gnu.org>

	* src/bdf/README: Mention Microsoft's SBIT tool.

	* src/cff/cffdrivr.c, src/cid/cidriver.c, src/pcf/pcfdriver.c,
	src/truetype/ttdriver.c, src/type1/t1driver.c,
	src/winfonts/winfnt.c, src/type42/t42drivr.c, src/bdf/bdfdrivr.c
	[FT_CONFIG_OPTION_DYNAMIC_DRIVERS]: Completely removed.  It has
	been never used.

2002-05-21  Roberto Alameda  <ojancano@geekmail.de>.

	* src/type42/t42drivr.c: s/T42_ENCODING_TYPE_/T1_ENCODING_TYPE_/.
	(parse_font_matrix): Remove unnecessary code.
	(parse_sfnts): Initialize some variables.
	(t42_driver_class) [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Use
	ft_module_driver_has_hinter conditionally.
	Moved some type 42 specific structure definitions to...
	* include/freetype/internal/t42types.h: New file.
	* include/freetype/internal/internal.h (FT_INTERNAL_T42_TYPES_H):
	New macro.

2002-05-20  Werner Lemberg  <wl@gnu.org>

	* include/freetype/cache/ftcsbits.h (FTC_SBit): Added a new field
	`num_grays' for specifying the number of used gray levels.
	* src/cache/ftcsbits.c (ftc_sbit_node_load): Initialize it.

2002-05-19  Werner Lemberg  <wl@gnu.org>

	Adding a driver for BDF fonts written by Francesco Zappa Nardelli
	<Francesco.Zappa.Nardelli@ens.fr>.  Heavily modified by me to
	better adapt it to FreeType, removing unneeded stuff.  Additionally,
	it now supports Mark Leisher's BDF extension for anti-aliased
	bitmap glyphs with 2 and 4 bpp.

	* src/bdf/*: New driver.
	* include/freetype/internal/bdftypes.h: New file.
	* include/freetype/internal/fttrace.h: Added BDF driver components.
	* include/freetype/fterrdef.h: Added error codes for BDF driver.
	* include/freetype/config/ftmodule.h, src/Jamfile: Updated.
	* include/freetype/internal/internal.h (FT_INTERNAL_BDF_TYPES_H):
	New macro.

	* include/freetype/config/ftstdlib.h (ft_sprintf): New alias for
	sprintf.

2002-05-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/fttrace.h: Added Type 42 driver
	component.
	* src/type42/t42drivr.c: Use it.

	* include/freetype/internal/internal.h (FT_INTERNAL_PCF_TYPES_H):
	New macro.

2002-05-17  Werner Lemberg  <wl@gnu.org>

	* src/type42/Jamfile: New file.

2002-05-14  Werner Lemberg  <wl@gnu.org>

	Adding a driver for Type42 fonts written by Roberto Alameda
	<ojancano@geekmail.de>.

	* src/type42/*: New driver.
	* include/freetype/config/ftmodule.h, src/Jamfile: Updated.
	* include/freetype/config/ftstdlib.h (ft_xdigit, ft_memcmp,
	ft_atoi): New aliases for xdigit, memcmp, and atoi, respectively.

2002-05-12  Owen Taylor  <otaylor@redhat.com>

	* src/sfnt/ttload.c (TT_LookUp_Table): Protect against tables
	with a zero length value.

2002-05-12  Michael Pfeiffer  <michael.pfeiffer@utanet.at>

	* builds/beos/beos.mk: Include `link-std.mk'.

2002-05-12  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.h (T1_Loader): Renamed to...
	(T1_LoaderRec): This.
	(T1_Loader): Now pointer to T1_LoaderRec.
	* src/type1/t1load.c: Updated.

	* include/freetype/internal/t1types.h, src/type1/t1load.c,
	src/type1/t1objs.c:
	s/T1_ENCODING_TYPE_EXPORT/T1_ENCODING_TYPE_EXPERT/.

2002-05-06  Werner Lemberg  <wl@gnu.org>

	* README: Add a note regarding libttf vs. libfreetype.

2002-05-05  Werner Lemberg  <wl@gnu.org>

	FreeType 2 can now be built in an external directory with the
	configure script also.

	* builds/freetype.mk (INCLUDES): Add `OBJ_DIR'.

	* builds/unix/detect.mk (have_mk): New variable to test for
	external build.
	(unix-def.mk): Defined according to value of `have_mk'.
	* builds/unix/unix.mk (have_mk): New variable to test for
	external build.
	Select include paths for unix-def.mk and unix-cc.mk according
	to value of `have_mk'.
	* builds/unix/unix-def.in (OBJ_BUILD): New variable.
	(DISTCLEAN): Use it.
	* builds/unix/unix-cc.in (LIBTOOL): Define default value only
	if not yet defined.
	* builds/unix/install.mk (install): Use `OBJ_BUILD' for installing
	freetype-config.

	* configure: Don't depend on bash features.
	(ft2_dir, abs_curr_dir, abs_ft2_dir): New variables (code
	partially taken from Autoconf).
	Build a dummy Makefile if not building in source tree.

	* docs/INSTALL: Document it.

2002-05-04  David Turner  <david@freetype.org>

	* src/truetype/ttgload.c (TT_Load_Glyph): Finally fixing the last
	bug that prevented FreeType 2.x and FreeType 1.x to produce
	bit-by-bit identical monochrome glyph bitmaps with native TrueType
	hinting.  The culprit was a single-bit flag that wasn't set
	correctly by the TrueType glyph loader.

	* src/otlayout/otlayout.h, src/otlayout/otlbase.c,
	src/otlayout/otlbase.h, src/otlayout/otlconf.h,
	src/otlayout/otlgdef.c, src/otlayout/otlgdef.h,
	src/otlayout/otlgpos.c, src/otlayout/otlgpos.h,
	src/otlayout/otlgsub.c, src/otlayout/otlgsub.h,
	src/otlayout/otljstf.c, src/otlayout/otljstf.h,
	src/otlayout/otltable.c, src/otlayout/otltable.h,
	src/otlayout/otltags.h: New OpenType Layout source files.  The
	module is still incomplete.

2002-05-02  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap0.c (tt_cmap4_char_index): Fix serious typo
	(0xFFFU -> 0xFFFFU).

2002-05-01  Werner Lemberg  <wl@gnu.org>

	* docs/INSTALL: Fix URL of makepp.

2002-05-01  David Turner  <david@freetype.org>

	* src/sfnt/sfobjs.c (tt_face_get_name): Fixing a bug that caused
	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').

	* src/sfnt/ttcmap0.c (tt_cmap4_validate): Fixed over-restrictive
	validation test.  The charmap validator now accepts overlapping
	ranges in format 4 charmaps.

	* src/sfnt/ttcmap0.c (tt_cmap4_char_index): Switched to a binary
	search algorithm.  Certain fonts contain more than 170 distinct
	segments!

	* include/freetype/config/ftstdlib.h: Adding an alias for the `exit'
	function.  This will be used in the near future to panic in case of
	unexpected exception (which shouldn't happen in theory).

	* include/freetype/internal/fthash.h, src/base/fthash.c: New files.
	This is generic implementation of dynamic hash tables using a linear
	algorithm (to get rid of `stalls' during resizes).  In the future
	this will be used in at least three parts of the library: the cache
	sub-system, the object sub-system, and the memory debugger.

	* src/base/Jamfile: Updated.

	* include/freetype/internal/internal.h (FT_INTERNAL_HASH_H,
	FT_INTERNAL_OBJECT_H): New macros.

	* include/freetype/internal/ftcore.h: New file to group all new
	definitions related to exception handling and memory management.  It
	is very likely that this file will disappear or be renamed in the
	future.

	* include/freetype/internal/ftobject.h, include/freetype/ftsysmem.h:
	Adding comments to better explain the object sub-system as well as
	the new memory manager interface.

2002-04-30  Wenlin Institute (Tom Bishop)  <wenlin@wenlin.com>

	* src/base/ftmac.c (p2c_str): Removed.
	(file_spec_from_path) [TARGET_API_MAC_CARBON]: Added support for
	OS X.
	(is_dfont) [TARGET_API_MAC_CARBON]: Define only for OS X.
	Handle `nameLen' <= 6 also.
	(parse_fond): Remove unused variable `name_table'.
	Use functionality of old p2c_str directly.
	Add safety checks.
	(read_lwfn): Initialize `size_p'.
	Check for size_p == NULL.
	(new_memory_stream, open_face_from_buffer): Updated to FreeType 2.1.
	(FT_New_Face_From_LWFN): Remove unused variable `memory'.
	Remove some dead code.
	(FT_New_Face_From_SFNT): Remove unused variable `stream'.
	(FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Define only for
	OS X.
	(FT_New_Face_From_FOND): Remove unused variable `error'.
	(ResourceForkSize): New function.
	(FT_New_Face): Use it.
	Handle empty resource forks.
	Conditionalize some code for OS X.
	Add code to call normal loader as a fallback.

2002-04-30  Werner Lemberg  <wl@gnu.org>

	`interface' is reserved on the Mac.

	* include/freetype/ftoutln.h, include/freetype/internal/sfnt.h,
	src/base/ftoutln.c: s/interface/func_interface/.
	* src/base/ftbbox.c (FT_Outline_Get_BBox):
	s/interface/bbox_interface/.
	* src/cff/cffdrivr.c: s/interface/module_interface/.
	* src/cff/cffload.c, src/cff/cffload.h:
	s/interface/psnames_interface/.
	* src/cid/cidriver.c: s/interface/cid_interface/.
	* src/sfnt/sfdriver.c: s/interface/module_interface/.
	* src/smooth/ftgrays.c: s/interface/func_interface/.
	* src/truetype/ttdriver.c: s/interface/tt_interface/.
	* src/type1/t1driver.c: s/interface/t1_interface/.

	Some more variable renames to avoid troubles on the Mac.

	* src/raster/ftraster.c:
	s/Unknown|Ascending|Descending|Flat/\1_State/.
	* src/smooth/ftgrays.c: s/TScan/TCoord/.

	Other changes for the Mac.

	* include/freetype/config/ftconfig.h: Define FT_MACINTOSH for
	Mac platforms.
	* src/base/ftobjs.c: s/macintosh/FT_MACINTOSH/.

	* src/raster/ftrend1.c (ft_raster1_render): Make `pitch' always
	an even number.

2002-04-29  Jouk Jansen  <joukj@hrem.stm.tudelft.nl>

	* descrip.mms (all): Add pfr driver.

2002-04-28  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrerror.h: New file.
	* include/freetype/ftmoderr.h: Add PFR error codes.
	* src/pfr/pfrgload.c: Include pfrerror.h.
	Use PCF error codes.
	(pfr_extra_item_load_stem_snaps): Fix debug message.
	* src/pfr/pfrgload.c: Include pfrerror.h.
	Use PCF error codes.
	(pfr_extra_item_load_bitmap_info, pfr_glyph_load_simple,
	pfr_glyph_load_compound): Fix debug message.
	* src/pfr/pfrobjs.c: Include pfrerror.h.
	Use PCF error codes.
	(pfr_face_init): Return PFR_Err_Unknown_File_Format.
	* src/pfr/rules.mk (PFR_DRV_H): Include pfrerror.h.

	* src/pcf/pcfdriver.c (PCF_Face_Init) [!FT_CONFIG_OPTION_USE_CMAPS]:
	`root' -> `face->root'.
	* src/sfnt/ttcmap0.c (TT_Build_CMaps) [!FT_CONFIG_OPTION_USE_CMAPS]:
	Removed.
	* src/sfnt/ttcmap0.c: Declare TT_Build_CMaps only for
	FT_CONFIG_OPTION_USE_CMAPS.

2002-04-27  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftccache.c (ftc_cache_lookup),
	src/cache/ftccmap.c (ftc_cmap_family_init),
	src/cache/ftcmanag.c (ftc_family_table_alloc),
	src/cache/ftcsbits.c (FTC_SBit_Cache_Lookup): Use FTC_Err_*.
	src/cache/ftcimage.c (FTC_Image_Cache_Lookup): Use FTC_Err_*.
	(FTC_ImageCache_Lookup): Fix handling of invalid arguments.

2002-04-22  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.ac: Set `version_info' to 9:1:3 (FT2
	version 2.0.9 has 9:0:3).
	* builds/unix/configure: Regenerated (using autoconf 2.53).

2002-04-19  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrload.c (pfr_extra_items_farse): Fix debug message.
	(pfr_phy_font_load): s/size/Size/ for local variable to avoid
	compiler warning.
	* src/pfr/pfrobjs.c (pfr_face_init): Fix debug message.
	(pfr_slot_load): Remove redundant local variable.

2002-04-19  David Turner  <david@freetype.org>

	Adding a PFR font driver to the FreeType sources.  Note that it
	doesn't support embedded bitmaps or kerning tables yet.

	src/pfr/*: New files.

	* include/freetype/config/ftmodule.h,
	include/freetype/internal/fttrace.h, src/Jamefile: Updated.

	* src/type1/t1gload.h (T1_Load_Glyph), src/type1/t1gload.c
	(T1_Load_Glyph): Fixed incorrect parameter sign-ness in callback
	function.

	* include/freetype/internal/ftmemory.h (FT_MEM_ZERO, FT_ZERO): New
	macros.

	* include/freetype/internal/ftstream.h (FT_NEXT_OFF3, FT_NEXT_UOFF3,
	FT_NEXT_OFF3_LE, FT_NEXT_UOFF3_LE): New macros to parse in-memory
	24-bit integers.

2002-04-18  David Turner  <david@freetype.org>

	* 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.

	* include/freetype/internal/ftobject.h,
	include/freetype/internal/ftexcept.h, include/freetype/ftsysmem.h,
	include/freetype/ftsysio.h, src/base/ftsysmem.c, src/base/ftsysio.c:
	New experimental files.

2002-04-17  David Turner  <david@freetype.org>


	* Version 2.1.0 released.
	=========================


2002-04-17  Michael Jansson  <mjan@em2-solutions.com>

	* src/type1/t1gload.c (T1_Compute_Max_Advance): Fixed a small bug
	that prevented the function to return the correct value.

2002-04-16  Francesco Zappa Nardelli  <Francesco.Zappa.Nardelli@ens.fr>

	* src/pcf/pcfread (pcf_get_accell): Fix parsing of accelerator
	tables.

2002-04-15  David Turner  <david@freetype.org>

	* docs/FTL.txt: Formatting.

	* include/freetype/config/ftoption.h: Reduce the size of the
	render pool from 32kByte to 16kByte.

	* src/pcf/pcfread.c (pcf_seek_to_table_type): Remove compiler
	warning.

	* include/freetype/config/ftoption.h (FT_MAX_EXTENSIONS): Removed.

	* docs/CHANGES: Preparing 2.1.0 release.

2002-04-13  Werner LEMBERG  <wl@gnu.org>

	* src/cff/cffgload.c (CFF_Parse_CharStrings): s/rand/Rand/ to avoid
	compiler warning.

2002-04-12  David Turner  <david@freetype.org>

	* README.UNX: Updated the Unix-specific quick-compilation guide to
	warn about the GNU Make requirement at compile time.

	* include/freetype/config/ftstdlib.h,
	include/freetype/config/ftconfig.h,
	include/freetype/config/ftheader.h,
	include/freetype/internal/ftmemory.h,
	include/freetype/internal/ftobjs.h,

	src/autohint/ahoptim.c,

	src/base/ftdbgmem.c, src/base/ftdebug.c, src/base/ftmac.c,
	src/base/ftobjs.c, src/base/ftsystem.c,

	src/cache/ftcimage.c, src/cache/ftcsbits.c,

	src/cff/cffdriver.c, src/cff/cffload.c, src/cff/cffobjs.c,

	src/cid/cidload.c, src/cid/cidparse.c, src/cid/cidriver.c,

	src/pcf/pcfdriver.c, src/pcf/pcfread.c,

	src/psaux/t1cmap.c, src/psaux/t1decode.c,

	src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.c,
	src/pshinter/pshrec.c,

	src/psnames/psmodule.c,

	src/raster/ftraster.c,

	src/sfnt/sfdriver.c, src/sfnt/ttload.c,

	src/smooth/ftgrays.c,

	src/type1/t1afm.c, src/type1/t1driver.c, src/type1/t1gload.c,
	src/type1/t1load.c, src/type1/t1objs.c, src/type1/t1parse.c,

	builds/unix/ftconfig.in, builds/vms/ftconfig.h,

	builds/amiga/src/base/ftdebug.c:

	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.).

	This eases the porting of FreeType 2 to environments like
	XFree86 modules/extensions.

	Also removed many #include <string.h>, #include <stdlib.h>, etc.
	from the engine's sources where they are not needed.

	* src/sfnt/ttpost.c: Use macro name for psnames.h.

2002-04-12  Vincent Caron  <v.caron@zerodeux.net>

	* configure, builds/detect.mk: Updated the build system to print
	a warning message in case GNU Make isn't used to build the library.

2002-04-11  David Turner  <david@freetype.org>

	* README, docs/CHANGES, Jamfile.in: Updates for the 2.1.0 release.

	* docs/FTL.txt: Updated license text to provide a preferred
	disclaimer and adjust copyright dates/extents.

	* include/freetype/cache/ftcglyph.h: Removing obsolete (and
	confusing) comment.

	* Jamfile.in: New file.

2002-04-11  Maxim Shemanarev  <mcseemagg@yahoo.com>

	* src/smooth/ftgrays.c (gray_hline): Minor optimization.

2002-04-02  Werner Lemberg  <wl@gnu.org>

	Fixes from the stable branch:

	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_OLD_CALCS):
	Removed.
	[FT_CONFIG_OPTION_OLD_CALCS]: Removed.
	* include/freetype/internal/ftcalc.h, src/base/ftcalc.c
	[FT_CONFIG_OPTION_OLD_CALCS]: Removed.

	* src/base/fttrigon.c (FT_Vector_Length): Change algorithm to match
	output of FreeType 1.

	* src/pshinter/pshglob.c (psh_globals_scale_widths): Fixed a small
	bug that created un-even stem widths when hinting Postscript fonts.

	* src/type1/t1driver.c, src/type1/t1parse.c: 16bit fixes.

2002-04-01  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c: 16bit fixes.
	(TT_Load_Simple_Glyph): Improve debug messages.
	(load_truetype_glyph): Remove dead code.
	* src/truetype/ttinterp.c: 16bit fixes.
	* src/truetype/ttobjs.c: Ditto.

	* include/freetype/ftsnames.h, include/freetype/internal/sfnt.h,
	src/cff/cffload.h, src/psaux/psobjs.h, src/truetype/ttinterp.[ch],
	src/sfnt/ttpost.h: s/index/idx/.

2002-03-31  Yao Zhang  <yaoz@vidar.niaaa.nih.gov>

	* src/truetype/ttobjs.c (TT_Size_Init): Fix typo.

2002-03-31  Werner Lemberg  <wl@gnu.org>

	* src/otlayout/otlcommn.c, src/otlayout/otlcommn.h: s/index/idx/.
	* src/psaux/t1cmap.c: Ditto.
	* src/sfnt/ttcmap0.c: Ditto.

	* include/freetype/internal/tttypes.h,
	include/freetype/internal/sfnt.h (TT_Goto_Table_Func): Renamed to ...
	(TT_Loader_GotoTableFunc): This.
	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix debug
	messages.
	* src/psnames/psmodule.c (psnames_interface)
	[!FT_CONFIG_OPTION_ADOBE_GLYPH_LIST]: Fix typo.
	* src/sfnt/sfdriver.c (get_sfnt_table): 16bit fix.
	* src/sfnt/ttcmap.c: 16bit fixes (0xFFFF -> 0xFFFFU).
	* src/sfnt/ttcmap0.c: 16bit fixes.
	(TT_Build_CMaps): Simplify debug messages.
	(tt_cmap12_char_next): Fix offset.
	* src/sfnt/ttload.c (TT_Load_Names, TT_Load_CMap): Fix debug
	messages.
	(TT_Load_OS2): 16bit fix.

2002-03-30  David Turner  <david@freetype.org>

	* include/freetype/internal/tttypes.h: Adding comments to some of
	the TT_FaceRec fields.

	* src/sfnt/ttcmap0.c (TT_Build_CMaps): Removed compiler warnings.

	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_{utf16,ucs4,other}:
	New functions.
	(tt_face_get_name): Use them to properly extract an ascii font name.

2002-03-30  Werner Lemberg  <wl@gnu.org>

	* include/freetype/t1tables.h (t1_blend_max): Fix typo.
	* src/base/ftstream.c: Simplify FT_ERROR calls.
	* src/cff/cffdrivr.c (cff_get_glyph_name): Fix debug message.

	* src/cff/cffobjs.c (CFF_Driver_Init, CFF_Driver_Done)
	[TT_CONFIG_OPTION_EXTEND_ENGINE]: Removed.
	* src/cff/sfobjs.c (SFNT_Load_Face)
	[TT_CONFIG_OPTION_EXTEND_ENGINE]: Ditto.
	* src/truetype/ttobjs.c (TT_Init_Driver, TT_Done_Driver)
	[TT_CONFIG_OPTION_EXTEND_ENGINE]: Ditto.

	* src/truetype/ttdriver.c, src/truetype/ttobjs.c,
	src/truetype/ttobjs.h: Renaming driver functions to the
	FT_<Subject>_<Action> scheme:

	  TT_Init_Driver => TT_Driver_Init
	  TT_Done_Driver => TT_Driver_Done
	  TT_Init_Face   => TT_Face_Init
	  TT_Done_Face   => TT_Face_Done
	  TT_Init_Size   => TT_Size_Init
	  TT_Done_Size   => TT_Size_Done
	  TT_Reset_Size  => TT_Size_Reset

2002-03-29  Werner Lemberg  <wl@gnu.org>

	* builds/vms/ftconfig.h: Rename LOCAL_DEF and LOCAL_FUNC to
	FT_LOCAL and FT_LOCAL_DEF, respectively, as with other ftconfig.h
	files.
	* builds/unix/ftconfig.in: Add argument to FT_LOCAL and
	FT_LOCAL_DEF.
	* src/truetype/ttinterp.c: s/FT_Assert/FT_ASSERT/.
	* builds/unix/configure.ac: Temporarily deactivate creation of
	../../Jamfile.
	* builds/unix/configure: Updated.

2002-03-28  KUSANO Takayuki  <AE5T-KSN@asahi-net.or.jp>

	* src/sfnt/sfdriver.c (get_sfnt_postscript_name): Fix serious typos.

2002-03-28  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/psaux.h (PSAux_ServiceRec): Fix
	compiler warnings.
	* include/freetype/internal/t1types.h (T1_FaceRec): Use `const' for
	some members.
	* src/base/ftapi.c (FT_New_Memory_Stream): Fix typos.
	* src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Add
	cast.
	(t1_cmap_{standard,expert,custom,unicode}_class_rec): Use
	`FT_CALLBACK_TABLE_DEF'.
	* src/psaux/t1cmap.h: Updated.
	* src/sfnt/ttcmap0.c (TT_Build_CMaps): Use `ft_encoding_none'
	instead of zero.
	* src/type1/t1objs.c (T1_Face_Init): Use casts.

2002-03-26  David Turner  <david@freetype.org>

	* src/sfnt/sfdriver.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c:
	Fixed a small bug in the FT_CMaps support code.

2002-03-25  David Turner  <david@freetype.org>

	* src/truetype/ttinterp.c (Norm): Replaced with...
	(TT_VecLen): This.
	(TT_MulFix14, TT_DotFix14): New functions.
	(Project, Dual_Project, Free_Project, Compute_Point_Displacement,
	Ins_SHPIX, Ins_MIAP, Ins_MIRP): Use them.
	[FT_CONFIG_OPTION_OLD_CALCS]: Removed all code.

2002-03-22  David Turner  <david@freetype.org>

	* src/base/ftobjs.c, src/sfnt/ttcmap0.c, src/type1/t1objs.c:
	Various fixes to make the FT_CMaps support work correctly (more
	tests are still needed).

	* include/freetype/internal/ftobjs.h, src/sfnt/Jamfile,
	src/sfnt/rules.mk, src/sfnt/sfnt.c, src/sfnt/sfobjs.c,
	src/sfnt/ttload.c, src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Updated
	the SFNT charmap support to use FT_CMaps.

	* include/freetype/fterrdef.h: New file.
	* include/freetype/fterrors.h: Include it.  It contains all error
	codes.
	* include/freetype/config/ftheader.h (FT_ERROR_DEFINITIONS_H): New
	macro.

	* include/freetype/internal/ftmemory.h, and a lot of other files:
	Changed the names of memory macros.  Examples:

	  MEM_Set   => FT_MEM_SET
	  MEM_Copy  => FT_MEM_COPY
	  MEM_Move  => FT_MEM_MOVE

	  ALLOC     => FT_ALLOC
	  FREE      => FT_FREE
	  REALLOC   = >FT_REALLOC

	FT_NEW was introduced to allocate a new object from a _typed_
	pointer.

	Note that ALLOC_ARRAY and REALLOC_ARRAY have been replaced by
	FT_NEW_ARRAY and FT_RENEW_ARRAY which take _typed_ pointer
	arguments.

	This results in _lots_ of sources being changed, but makes the code
	more generic and less error-prone.

	* include/freetype/internal/ftstream.h, src/base/ftstream.c,
	src/cff/cffload.c, src/pcf/pcfread.c, src/sfnt/ttcmap.c,
	src/sfnt/ttcmap0.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
	src/sfnt/ttsbit.c, src/truetype/ttgload.c, src/truetype/ttpload.c,
	src/winfonts/winfnt.c: Changed the definitions of stream macros.
	Examples:

	  NEXT_Byte     => FT_NEXT_BYTE
	  NEXT_Short    => FT_NEXT_SHORT
	  NEXT_UShortLE => FT_NEXT_USHORT_LE
	  READ_Short    => FT_READ_SHORT
	  GET_Long      => FT_GET_LONG
	  etc.

	Also introduced the FT_PEEK_XXXX functions.

	* src/cff/cffobjs.c (CFF_Build_Unicode_Charmap): Removed commented
	out function.
	(find_encoding): Removed.
	(CFF_Face_Init): Remove charmap support.

	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_USE_CMAPS,
	TT_CONFIG_CMAP_FORMAT{0,2,4,6,8,10,12}): New macros to fine-tune
	support of cmaps.

2002-03-21  David Turner  <david@freetype.org>

	* src/base/ftobjs.c, src/pcf/pcfdriver.c, src/pcf/pcfread.c: Updated
	to new FT_CMap definitions.

	* 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
	the Type 1 and CID font drivers.

	* src/psaux/Jamfile, src/psaux/psaux.c, src/psaux/psauxmod.c,
	src/psaux/rules.mk, include/freetype/internal/psaux.h: Added support
	for Type 1 FT_CMaps.

2002-03-20  David Turner  <david@freetype.org>

	* src/base/ftgloadr.c (FT_GlyphLoader_CheckSubGlyphs): Fixed a
	memory allocation bug that was due to un-careful renaming of the
	FT_SubGlyph type.

	* src/base/ftdbgmem.c (ft_mem_table_destroy): Fixed a small bug that
	caused the library to crash with Electric Fence when memory
	debugging is used.

	* Renaming stream macros.  Examples:

	  FILE_Skip    => FT_STREAM_SKIP
	  FILE_Read    => FT_STREAM_READ
	  ACCESS_Frame => FT_FRAME_ENTER
	  FORGET_Frame => FT_FRAME_EXIT
	  etc.

	* src/sfnt/sfdriver.c (get_sfnt_postscript_name): Fixed memory leak.

	* include/freetype/internal/ftobjs.h: Changing the definition of
	FT_CMap_CharNextFunc slightly.

	* src/cff/*.c: Updating CFF type definitions.

2002-03-14  David Turner  <david@freetype.org>

	* include/freetype/internal/autohint.h, src/autohint/ahmodule.c,
	src/base/ftapi.c, src/base/ftobjs.c: Updating the type definitions
	for the auto-hinter module.

	  FT_AutoHinter_Interface  => FT_AutoHinter_ServiceRec
	  FT_AutoHinter_Interface* => FT_AutoHinter_Service
	  etc.

	  FT_AutoHinter_Get_Global_Func  => FT_AutoHinter_GlobalGetFunc
	  FT_AutoHinter_Done_Global_Func => FT_AutoHinter_GlobalDoneFunc
	  etc.

	* ahloader.h [_STANDALONE_]: Removed all conditional code.

	* include/freetype/internal/cfftypes.h, src/cff/*.c: Updating the
	type definitions of the CFF font driver.

	  CFF_Font  => CFF_FontRec
	  CFF_Font* => CFF_Font
	  etc.

	* include/freetype/internal/fnttypes.h, src/winfonts/*.c: Updating
	type definitions of the Windows FNT font driver.

	* include/freetype/internal/ftdriver.h,
	include/freetype/internal/ftobjs.h, src/base/ftapi.c,
	src/base/ftobjs.c, src/cff/cffdrivr.c, src/cff/cffdrivr.h,
	src/cid/cidriver.c, src/cid/cidriver.h, src/pcf/pcfdriver.c,
	src/pcf/pcfdriver.h, src/truetype/ttdriver.c,
	src/truetype/ttdriver.h, src/type1/t1driver.c, src/type1/t1driver.h,
	src/winfonts/winfnt.c, src/winfonts/winfnt.h: Updating type
	definitions for font drivers.

	  FTDriver_initFace      => FT_Face_InitFunc
	  FTDriver_initGlyphSlot => FT_Slot_InitFunc
	  etc.

	* src/cid/cidobjs.c (CID_Face_Init): Remove dead code.

	* include/freetype/internal/ftobjs.h, src/base/ftobjs.c: Updated a
	few face method definitions:

	  FT_PSName_Requester     => FT_Face_GetPostscriptNameFunc
	  FT_Glyph_Name_Requester => FT_Face_GetGlyphNameFunc
	  FT_Name_Index_Requester => FT_Face_GetGlyphNameIndexFunc

	* src/base/ftapi.c: New file.  It contains backwards compatibility
	functions.

	* include/freetype/internal/psaux.h, src/cid/cidload.c,
	src/cidtoken.h, src/psaux/psobjs.c, src/psaux/psobjs.h,
	src/psaux/t1decode.c, stc/type1/t1load.c, src/type1/t1tokens.h:
	Updated common PostScript type definitions.
	Renamed all enumeration values like to uppercase variants:

	  t1_token_any      => T1_TOKEN_TYPE_ANY
	  t1_field_cid_info => T1_FIELD_LOCATION_CID_INFO
	  etc.

	* include/freetype/internal/psglobals.h: Removed.
	* include/freetype/internal/pshints.h, src/pshinter/pshglob.h:
	Updated.

	* include/freetype/internal/tttypes.h,
	include/freetype/internal/sfnt.h, src/base/ftnames.c,
	src/cff/cffdrivr.c, src/sfnt/*.c, src/truetype/*.c: Updated
	SFNT/TrueType type definitions.

	* include/freetype/freetype.h, include/freetype/internal/ftgloadr.h:
	Updating type definitions for the glyph loader.

2002-03-13  Antoine Leca  <antoine@oriolnet.com>

	* include/freetype/config/ftoption.h: Changed the automatic
	detection of Microsoft C compilers to automatically support 64-bit
	integers only since revision 9.00 (i.e. >= Visual C++ 2.0).

2002-03-08  Werner Lemberg  <wl@gnu.org>

	* src/base/ftutil.c (FT_Realloc): Use MEM_Set instead of memset.

2002-03-07  Werner Lemberg  <wl@gnu.org>

	* src/base/ftdbgmem.c (ft_mem_table_resize, ft_mem_table_new,
	ft_mem_table_set, ft_mem_debug_alloc, ft_mem_debug_free,
	ft_mem_debug_realloc, ft_mem_debug_done, FT_Alloc_Debug,
	FT_Realloc_Debug, FT_Free_Debug): Fix compiler warnings.
	* src/base/ftcalc.c (FT_MulFix): Ditto.
	* src/cff/cffdrivr.c (cff_get_name_index): Ditto.
	* src/cff/cffobjs.c (CFF_Size_Get_Global_Funcs, CFF_Size_Init,
	CFF_GlyphSlot_Init): Ditto.
	* src/cid/cidobjs.c (CID_GlyphSlot_Init,
	CID_Size_Get_Globals_Funcs): Ditto.
	* src/type1/t1objs.c (T1_Size_Get_Globals_Funcs, T1_GlyphSlot_Init):
	Ditto.
	* src/pshinter/pshmod.c (pshinter_interface): Use `static const'.
	* src/winfonts/winfnt.c (FNT_Get_Next_Char): Remove unused
	variables.

	* include/freetype/internal/psaux.h (T1_Builder_Funcs): Renamed
	to...
	(T1_Builder_FuncsRec): This.
	(T1_Builder_Funcs): New typedef.
	(PSAux_Interface): Remove compiler warnings.
	* src/psaux/psauxmod.c (t1_builder_funcs), src/psaux/psobjs.h
	(t1_builder_funcs): Updated.

	* src/pshinter/pshglob.h (PSH_Blue_Align): Replaced with ...
	(PSH_BLUE_ALIGN_{NONE,TOP,BOT}): New defines.
	(PSH_AlignmentRec): Updated.

	* include/freetype/internal/ftstream.h (GET_Char, GET_Byte): Fix
	typo.
	* include/freetype/internal/ftgloadr.h (FT_SubGlyph): Ditto.
	* src/base/ftstream (FT_Get_Char): Rename to...
	(FT_Stream_Get_Char): This.

	* src/base/ftnames.c (FT_Get_Sfnt_Name): s/index/idx/ -- `index' is
	a built-in function in gcc, causing warning messages with gcc 3.0.
	* src/autohint/ahglyph.c (ah_outline_load): Ditto.
	* src/autohint/ahglobal.c (ah_hinter_compute_blues): Ditto.
	* src/cache/ftcmanag.c (ftc_family_table_alloc,
	ftc_family_table_free, FTC_Manager_Done, FTC_Manager_Register_Cache):
	Ditto.
	* src/cff/cffload.c (cff_new_index, cff_done_index,
	cff_explicit_index, CFF_Access_Element, CFF_Forget_Element,
	CFF_Get_Name, CFF_Get_String, CFF_Load_SubFont, CFF_Load_Font,
	CFF_Done_Font): Ditto.
	* src/psaux/psobjs.c (PS_Table_Add, PS_Parser_LoadField): Ditto.
	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Ditto.
	* src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_clear_bit,
	ps_mask_set_bit, ps_dimension_add_t1stem, ps_hints_t1stem3,
	* src/pshinter/pshalgo1.c (psh1_hint_table_record,
	psh1_hint_table_record_mask, psh1_hint_table_activate_mask): Ditto.
	* src/pshinter/pshalgo2.c (psh2_hint_table_record,
	psh2_hint_table_record_mask, psh2_hint_table_activate_mask): Ditto.
	* src/sfnt/ttpost.c (Load_Format_20, Load_Format_25,
	TT_Get_PS_Name): Ditto.
	* src/truetype/ttgload.c (TT_Get_Metrics, Get_HMetrics,
	load_truetype_glyph): Ditto.
	* src/type1/t1load.c (parse_subrs, T1_Open_Face): Ditto.
	* src/type1/t1afm.c (T1_Get_Kerning): Ditto.
	* include/freetype/cache/ftcmanag.h (ftc_family_table_free): Ditto.

2002-03-06  David Turner  <david@freetype.org>

	* src/type1/t1objs.c (T1_Face_Init), src/cid/cidobjs.c
	(CID_Face_Init): Fixed another bug related to the
	ascender/descender/text height of Postscript fonts.

	* src/pshinter/pshalgo2.c (print_zone): Renamed to ...
	(psh2_print_zone): This.
	* src/pshinter/pshalgo1.c (print_zone): Renamed to ...
	(psh1_print_zone): This.

	* include/freetype/freetype.h, include/freetype/internal/ftobjs.h,
	src/base/ftobjs.c: Adding the new FT_Library_Version API to return
	the library's current version in dynamic links.
	* src/base/ftinit.c (FT_Init_FreeType): Updated.

2002-03-06  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshglob.h (PSH_DimensionRec): s/std/stdw/.
	* src/pshinter/pshglob.c (psh_global_scale_widths,
	psh_dimension_snap_width, psh_globals_destroy, psh_globals_new):
	Ditto.

2002-03-05  David Turner  <david@freetype.org>

	* src/type1/t1objs.c (T1_Face_Init), src/cff/cffobjs.c
	(CFF_Face_Init), src/cid/cidobjs.c (CID_Face_Init): Removing the bug
	that returned global BBox values in 16.16 fixed format (instead of
	integer font units).

	* 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'.

	* 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
	crash when trying to load them.

	Also improved the name table parser to be able to load
	Windows-encoded entries before Macintosh or Unicode ones, since it
	seems some fonts don't have reliable values here anyway.

	* include/freetype/internal/psnames.h: Add typedef for
	`PSNames_Service'.

2002-03-05  Werner Lemberg  <wl@gnu.org>

	* builds/unix/aclocal.m4, builds/unix/ltmain.sh: Update to libtool
	1.4.2.
	Apply a small patch for AIX to make shared libraries work (this
	patch is already in the CVS version of libtool).

	* builds/unix/config.sub, builds/unix/config.guess: Updated to
	recent versions.

	* builds/unix/configure.ac: Fix typo
	(AC_CONFIG_FILE->AC_CONFIG_FILES).

	* builds/unix/configure: Regenerated.

2002-02-28  David Turner  <david@freetype.org>

	* include/freetype/ftconfig.h: Changed `FT_LOCAL xxxx' to
	`FT_LOCAL( xxxx )' everywhere in the source.  The same goes for
	`FT_LOCAL_DEF xxxx' which is translated to `FT_LOCAL_DEF( xxxxx )'.

	* include/freetype/freetype.h (FREETYPE_MINOR, FREETYPE_PATCH):
	Changing version to 2.1.0 to indicate an unstable branch.
	Added the declarations of FT_Get_First_Char and FT_Get_Next_Char.

	* src/base/ftobjs.c: Implement FT_Get_First_Char and
	FT_Get_Next_Char.

	* include/freetype/t1tables.h: Renaming structure types.  This

	  typedef  T1_Struct_
	  {
	  } T1_Struct;

	becomes

	  typedef  PS_StructRec_
	  {
	  } PS_StructRec, *PS_Struct;

	  typedef PS_StructRec  T1_Struct;  /* backwards-compatibility */

	Hence, we increase the coherency of the source code by effectively
	using the `Rec' prefix for structure types.

2002-02-27  David Turner  <david@freetype.org>

	* 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.

	* src/otlayout/otlcommon.h, src/otlayout/otlcommon.c: Adding (still
	experimental) code for OpenType Layout tables validation and
	parsing.

	* src/type1/t1cmap.h, src/type1/t1cmap.c: Adding (still
	experimental) code for Type 1 charmap processing.

	* src/sfnt/ttcmap0.c: New file.  It contains a new, still
	experimental SFNT charmap processing support.

	* include/freetype/internal/ftobjs.h: Adding validation support as
	well as internal charmap object definitions (FT_CMap != FT_CharMap).

2002-02-24  David Turner  <david@freetype.org>

	* Renaming stream functions to the FT_<Subject>_<Action> scheme:

	  FT_Seek_Stream    => FT_Stream_Seek
	  FT_Skip_Stream    => FT_Stream_Skip
	  FT_Read_Stream    => FT_Stream_Read
	  FT_Read_Stream_At => FT_Stream_Read_At
	  FT_Access_Frame   => FT_Stream_Enter_Frame
	  FT_Forget_Frame   => FT_Stream_Exit_Frame
	  FT_Extract_Frame  => FT_Stream_Extract_Frame
	  FT_Release_Frame  => FT_Stream_Release_Frame
	  FT_Get_XXXX       => FT_Stream_Get_XXXX
	  FT_Read_XXXX      => FT_Stream_Read_XXXX

	  FT_New_Stream( filename, stream ) =>
	    FT_Stream_Open( stream, filename )

	    (The function doesn't create the FT_Stream structure, it simply
	    initializes it for reading.)

	  FT_New_Memory_Stream( library, FT_Byte*  base, size, stream ) =>
	    FT_Stream_Open_Memory( stream, const FT_Byte* base, size )

	  FT_Done_Stream  => FT_Stream_Close
	  FT_Stream_IO    => FT_Stream_IOFunc
	  FT_Stream_Close => FT_Stream_CloseFunc

	  ft_close_stream => ft_ansi_stream_close (in base/ftsystem.c only)
	  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',
	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'.
	(ft_glyph_own_bitmap): Renamed to ...
	(FT_GLYPH_OWN_BITMAP): This.
	* src/base/ftobjs.c: Moving all code related to glyph loaders
	to ...
	* src/base/ftgloadr.c: This new file.

2002-02-22  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftdebug.h (FT_Trace): Remove comma in
	enum to avoid compiler warnings.

2002-02-21  David Turner  <david@freetype.org>

	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.

	* src/base/ftdebug.c: (FT_SetTraceLevel): Removed.
	(ft_debug_init): New function.
	(ft_debug_dummy): Removed.
	Updated to changes in ftdebug.h

	* include/freetype/internal/ftdebug.h: Always define
	FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE is defined.
	(FT_Assert): Renamed to ...
	(FT_ASSERT): This.
	Some stuff from ftdebug.h has been moved to ...

	* include/freetype/internal/fttrace.h: New file, to define the trace
	levels used for debugging.  It is used both to define enums and
	toggle names for FT2_DEBUG.

	* include/freetype/internal/internal.h: Updated.

	* src/base/ftobjs.c, src/base/ftstream.c: Updated.

	* include/freetype/internal/ftextend.h, src/base/ftextend.c:
	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
	LCC).

	* src/pshinter/pshalgo2.c (print_zone): Renamed to ...
	(psh2_print_zone): This to avoid errors during compilation of debug
	library.

	* src/smooth/ftgrays.c (FT_COMPONENT): Change definition to as
	`trace_smooth'.

2002-02-20  David Turner  <david@freetype.org>

	* README: Adding `devel@freetype.org' address for bug reports.

2002-02-20  Werner Lemberg  <wl@gnu.org>

	* builds/unix/install.mk (check): New dummy target.
	(.PHONY): Add it.

2002-02-19  Werner Lemberg  <wl@gnu.org>

	* builds/freetype.mk (FT_CFLAGS): Use $(INCLUDE_FLAGS) first.

	* src/cache/ftccache.c (ftc_cache_resize): Mark `error' as unused
	to avoid compiler warning.
	* src/cff/cffload.c (CFF_Get_String): Ditto.
	* src/cff/cffobjs.c (CFF_StrCopy): Ditto.
	* src/psaux/psobjs.c (PS_Table_Done): Ditto.
	* src/pcf/pcfread.c (pcf_seek_to_table_type): Ditto.
	* src/sfnt/sfdriver.c (get_sfnt_postscript_name): Ditto.
	(pcf_get_bitmaps): The same for `sizebitmaps'.
	* src/psaux/t1decode.c (T1_Decode_Parse_Charstrings): The same for
	`orig_y'.
	(t1operator_seac): Comment out more dead code.
	* src/pshinter/pshalgo2.c (ps2_hints_apply): Add `DEBUG_HINTER'
	conditional.
	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
	load_truetype_glyph): Add `TT_CONFIG_OPTION_BYTECODE_INTERPRETER'
	conditional.

2002-02-18  Werner Lemberg  <wl@gnu.org>

	* src/autohint/ahglyph.c (ah_outline_link_segments): Remove unused
	variables.
	* src/autohint/ahhint.c (ah_align_serif_edge): Use FT_UNUSED instead
	of UNUSED.
	* src/autohint/ahmodule.c (ft_autohinter_reset): Ditto.
	* src/pshinter/pshrec.c (ps_mask_table_merge): Fix typo in variable
	swapping code.
	* src/pshinter/pshglob.h (PSH_Blue_Align): Add PSH_BLUE_ALIGN_NONE.
	* src/pshinter/pshglob.c (psh_blues_snap_stem): Use it.
	* src/pshinter/pshalgo1.c (psh1_hint_table_optimize): Ditto.
	* src/pshinter/pshalgo2.c (psh2_hint_align): Ditto.
	* include/freetype/internal/ftobjs.h (UNUSED): Removed.

2002-02-10  Roberto Alameda  <ojancano@geekmail.de>

	Add support for ISOLatin1 PS encoding.

	* include/freetype/freetype.h (ft_encoding_latin_1): New tag
	(`lat1').
	* include/freetype/internal/t1types.h (T1_Encoding_Type): Add
	`t1_encoding_isolatin1'.
	* src/type1/t1driver.c (Get_Char_Index, Get_Next_Char): Handle
	ft_encoding_latin_1.
	* src/type1/t1load.c (parse_encoding): Handle `ISOLatin1Encoding'.
	* src/type1/t1objs.c (T1_Face_Init): Handle `t1_encoding_isolatin1'.

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

Copyright 2002, 2003, 2004, 2005, 2007 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: utf-8
End:
