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_CACHE_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/ttcmap.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_Size): 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_metrics_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/psobjs.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/ftchapters.h: 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_extrema, 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 specifying 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/truetype/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_COMPONENT): 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_Glyph_Metrics): 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/ftcbasic.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@qmx.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' and 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_strong_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_fopen.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 synthesized 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_Glyph_StrokeBorder): 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: Include
	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_PIX_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/ftlru.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/cid/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), src/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: Don't 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 structures
	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/pfrload.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_Sizes): 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_BBOX_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_records): 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/cid/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_file_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_strong_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: Updated.

	* 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 (BDF_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, pcf_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/ftcsbits.c (ftc_sbit_node_load): Fixed a small bug that
	caused problems with embedded bitmaps.

	* src/otlayout/otlayout.h, src/otlayout/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 retrieval 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/pfrobjs.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 segfault 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/ftcsbits.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,SetModeFunc}):
	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_lcd_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_Glyph_Load): 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_INCREMENTAL]: 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.
	(t1cid_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_Globals_Funcs -> cff_size_get_globals_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/pfr/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 happening 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_parse): 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/Jamfile: 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.c (pcf_get_accel): 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/cffdrivr.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, src/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/psglobal.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_Globals_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_Decoder_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-2017 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:
