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_Sizes): Handle fractional sizes
	more carefully.  This fixes Savannah bug #12263.

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

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

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

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

	* autogen.sh: New script for bootstrapping.

	* README.CVS: New file which documents bootstrapping.

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

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

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

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

	Various fixes for C and C++ compiling.

	* src/autofit/*: Add copyright messages.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* src/autofit/aflatin.c (af_latin_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_GlyphMetrics): Move `lsb_delta'
	and `rsb_delta' elements to...
	(FT_GlyphSlotRec): Here to retain binary compatibility with older
	FreeType versions.
	Update all users.

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

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

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

	* src/cache/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_string_points): Use PSH_STRONG_THRESHOLD_MAXIMUM.
	(psh_glyph_find_blue_points): New function.  Needed for fonts like
	p052003l.pfb (URW Palladio L Roman) which have flex curves at the
	base line within blue zones, but the flex curves aren't covered by
	hints.
	(ps_hints_apply): Use psh_glyph_find_blue_points.

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

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

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

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

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

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

	* docs/CHANGES: Updated.

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

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

	* src/base/ftmac.c [__MWERKS__]: Include FSp_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_GlyphStrokeBorder): New
	functions.
	(FT_Stroker_EndSubPath): Close path if needed.
	(FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind.

	* include/freetype/cache/ftcmanag.h (FTC_ScalerRec,
	FTC_Manager_LookupSize): Moved to...
	* include/freetype/ftcache.h (FTC_ScalerRec,
	FTC_Manager_LookupSize): Here.

	* src/tools/docmaker/docbeauty.py: New file to beautify the
	documentation comments (e.g., to convert them to single block border
	mode).
	* src/tools/docmaker/docmaker.py (file_exists, make_file_list):
	Moved to...
	* src/tools/docmaker/utils.py (file_exists, make_file_list): Here.

2004-01-14  David Turner  <david@freetype.org>

	* include/freetype/internal/ftmemory.h (FT_ARRAY_COPY,
	FT_ARRAY_MOVE): New macros to make copying arrays easier.
	Updated all relevant code to use them.

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

	* src/cff/cffload.c (cff_font_load): Load charstrings_index earlier.
	Use number of charstrings as argument to CFF_Load_FD_Select (as
	documented in the CFF specs).

2004-01-13  Graham Asher  <graham.asher@btinternet.com>

	* src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of
	`glyph->memory' up to free arrays properly in case of failure.

2004-01-10  Masatake YAMATO  <jet@gyve.org>

	Make `FT_Get_CMap_Language_ID' work with CFF.  Bug reported by
	Steve Hartwell <shspamsink@comcast.net>.

	* src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H.
	(cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP.
	(cff_get_cmap_info): New function.
	(cff_service_get_cmap_info) New entry for cff_services.

	* src/sfnt/ttcmap0.c: Exit loop after a format match has been found.
	Suggested by Steve Hartwell <shspamsink@comcast.net>.

2004-01-03  Masatake YAMATO  <jet@gyve.org>

	* src/base/ftobjs.c (destroy_charmaps): New function.
	(destroy_face, open_face): Use `destroy_charmaps'.

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

	* docs/CHANGES: Updated.

2004-01-01  Michael Jansson  <mjan@em2-solutions.com>

	* src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of
	size->metrics.descender.

2003-12-31  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	[FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4.
	<cff_op_flex1>: Change type of dx and dy to FT_Pos and remove
	cast for accessing arguments.

2003-12-31  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous
	change.  It's not necessary.

2003-12-29  Smith Charles  <smith.charles@free.fr>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated
	flags set' correctly.

2003-12-29  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating
	`full' and `weight' properly.
	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_hintmask> [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for
	tracing output.

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

	* include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func):
	Use FT_UInt for ppem values.
	* src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for
	ppem values.
	* src/sfnt/ttsbit.h: Updated.

	* src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values
	larger than -0FFFF.

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

	* src/base/fttrigon.c, src/base/ftgloadr.c: 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_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_Size): Assign value to `metrics' after validation of
	arguments.

2003-06-20  Werner Lemberg  <wl@gnu.org>

	Synchronize computation of height and width for bitmap strikes.  The
	`width' field in the FT_Bitmap_Size structure is now only useful to
	enumerate different strikes.  The `max_advance' field of the
	FT_Size_Metrics structure should be used to get the (maximum) width
	of a strike.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Don't use AVERAGE_WIDTH for
	computing `available_sizes->width' but make it always equal to
	`available_sizes->height'.

	* src/pcf/pcfread.c (pcf_load_font): Don't use RESOLUTION_X for
	computing `available_sizes->width' but make it always equal to
	`available_sizes->height'.

	* src/truetype/ttdriver.c (Set_Pixel_Sizes): Pass only single
	argument to function.

	* src/psnames/psmodule.c (ps_unicode_value): Handle `.' after
	`uniXXXX' and `uXXXX[X[X]]'.

2003-06-19  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdfdrivr.c: s/FT_Err_/BDF_Err/.
	* src/cache/ftccache.c, src/cache/ftcsbits.c, src/cache/ftlru.c:
	s/FT_Err_/FTC_Err_/.
	* src/cff/cffcmap.c: s/FT_Err_/CFF_Err_/.
	* src/pcf/pcfdrivr.c: s/FT_Err_/PCF_Err_/.
	* src/psaux/t1cmap.c: Include psauxerr.h.
	s/FT_Err_/PSaux_Err_/.
	* src/pshinter/pshnterr.h: New file.
	* src/pshinter/rules.mk: Updated.
	* src/pshinter/pshalgo.c, src/pshinter/pshrec.c: Include pshnterr.h.
	s/FT_Err_/PSH_Err_/.
	* src/pfr/pfrdrivr.c, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c:
	s/FT_Err_/PFR_Err_/.
	* src/sfnt/sfdriver.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c,
	src/sfnt/ttload.c: s/FT_Err_/SFNT_Err_/.
	* src/truetype/ttgload.c: s/FT_Err_/TT_Err_/.
	* src/gzip/ftgzip.c: Load FT_MODULE_ERRORS_H and define
	FT_ERR_PREFIX and FT_ERR_BASE.
	s/FT_Err_/Gzip_Err_/.

2003-06-19  Dirck Blaskey  <listtarget@danbala.com>

	* src/cff/cffload (cff_encoding_load): `nleft' must be FT_UInt,
	otherwise adding 1 might wrap the result.

2003-06-18  Werner Lemberg  <wl@gnu.org>

	* src/psnames/psmodule.c (ps_unicode_value): Add support to
	recognize `uXXXX[X[X]]' glyph names.
	Don't handle glyph names starting with `uni' which have more than
	four digits.

2003-06-16  Werner Lemberg  <wl@gnu.org>

	* include/freetype/freetype.h (FT_Open_Flags): Replaced with
	#defines for the constants.
	(FT_Open_Args): Change type of `flags' to FT_UInt.
	(FT_GlyphSlot): Move `flags' to FT_Slot_Internal.

	* include/freetype/ftimage.h (FT_Outline_Flags, FT_Raster_Flag):
	Replaced with #defines for the constants.

	* include/freetype/internal/ftobjs.h (FT_Slot_Internal): New
	field `flags' (from FT_GlyphSlot).
	Updated all affected source files.
	(FT_GLYPH_OWN_BITMAP): New macro (from ftgloadr.h).

	* include/freetype/internal/ftgloadr.h (FT_GLYPH_OWN_BITMAP): Moved
	to ftobjs.h.

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Use dummy
	FT_GlyphSlot_Internal object.

2003-06-15  Werner Lemberg  <wl@gnu.org>

	* builds/compiler/gcc.mk, builds/compiler/gcc-dev.mk (CFLAGS):
	Add -fno-strict-aliasing to get rid of zillion warnings from gcc
	version 3.3.

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

	* include/freetype/ftglyph.h (ft_glyph_bbox_unscaled,
	ft_glyph_bbox_subpixels, ft_glyph_bbox_gridfit,
	ft_glyph_bbox_truncate, ft_glyph_bbox_pixels): Replaced with
	FT_GLYPH_BBOX_UNSCALED, FT_GLYPH_BBOX_SUBPIXELS,
	FT_GLYPH_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_record): Comment out element for parsing FontBBox.

	* src/type42/t42parse.c (t42_parse_font_bbox): Commented out.
	(t42_keywords): Handle FontBBox with T1_FIELD_BBOX, not with
	T1_FIELD_CALLBACK.
	(t42_parse_font_bbox): Commented out.
	(t42_load_keyword): Handle T1_FIELD_LOCATION_BBOX.
	* src/type42/t42objs.c (T42_Face_Init): Apply change 2003-05-31
	from <Ron.Dev@gmx.de>.

2003-06-09  George Williams  <gww@silcom.com>

	* src/truetype/ttinterp.c (SetSuperRound) <0x30>: Follow Apple's
	TrueType specification.
	(Ins_MDRP, Ins_MIRP): Fix single width cut-in test.

2003-06-09  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/gzip/ftgzip.c: (inflate_mask): Replaced with...
	(NO_INFLATE_MASK): This.
	* src/gzip/infutil.h: Declare `inflate_mask' conditionally by
	NO_INFLATE_MASK.

2003-06-09  Alexis S. L. Carvalho  <alexis@cecm.usp.br>

	* src/gzip/ftgzip.c (ft_gzip_file_fill_output): Handle Z_STREAM_END
	correctly.

2003-06-09  Wolfgang Domröse  <porthos.domroese@harz.de>

	* src/pshinter/pshglob.c (psh_globals_new): Change calculation of
	dim->stdw.count to avoid compiler problem.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Move the block
	variables to the beginning of the function to avoid compiler
	problems.
	Add casts necessary for 16bit compilers.

2003-06-09  Werner Lemberg  <wl@gnu.org>

	* src/pfr/rules.mk (PFR_DRV_SRC): Add pfrsbit.c.
	(PFR_DRV_H): Add pfrtypes.h.

	* include/freetype/config/ftconfig.h: s/__MWKS__/__MWERKS__/.

2003-06-08  Karl Schultz  <kschultz@rsinc.com>

	* src/pfr/pfrsbit.c (pfr_bitwriter_init): Change type of third
	argument to FT_Bool.
	(pfr_lookup_bitmap_data): Change type of third and fourth argument
	to FT_UInt.  Updated caller.
	(pfr_load_bitmap_bits): Change type of fourth argument to FT_Bool.

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

	Completely revised FreeType's make management.

	. In all makefiles `/' is used as the path separator.  The
	  conversion to the real path separators is done as late as
	  possible using $(subst ...).

	. $(HOSTSEP) no longer exists.  Now, $(SEP) gives the path separator
	  for the operating system, and the new $(COMPILER_SEP) the path
	  separator for the compiler tools.

	. $(BUILD) has been renamed to $(BUILD_DIR).  In general, all
	  directory variables end with `_DIR'.  The variants ending in `_'
	  (like `BASE_' have been removed).

	The following ChangeLog entries only describe changes which are
	not related to the redesign.

	* builds/beos/beos-def.mk (BUILD_DIR): Fix typo.
	* builds/compiler/watcom.mk (LINK_LIBRARY): Fix linker call to avoid
	overlong arguments as suggested by J. Ali Harlow
	<ali@avrc.city.ac.uk>.
	* builds/dos/dos-wat.mk: New file.
	* builds/freetype.mk (FREETYPE_H): Include header files from the
	`devel' subdirectory.

	* builds/os2/os2-dev.mk, builds/unix/unixddef.mk,
	builds/unix/unixddef.mk, builds/win32/w32-bccd.mk,
	builds/win32/w32-dev.mk (BUILD_DIR): Fix path.

	* builds/unix/configure.ac, builds/unix/configure: Updated.
	* builds/unix/unix-def.in (DISTCLEAN): Add `freetype2.pc'.

2003-06-07  Werner Lemberg  <wl@gnu.org>

	* src/base/ftmac.c (FT_New_Face_From_SFNT): s/rlen/sfnt_size/ to
	make it compile.

	* devel/ftoption.h: Updated.

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

	* include/freetype/internal/psaux.h, src/truetype/ttgload.h:
	s/index/idx/ to fix compiler warnings.

	* src/sfnt/ttcmap0.c (tt_face_build_cmaps): Use more `volatile' to
	fix compiler warning.

	* src/gzip/ftgzip.c (BUILDFIXED): Removed.
	* src/gzip/inftrees.c (inflate_trees_fixed) [!BUILDFIXED]: Use
	FT_UNUSED to remove compiler warning.

2003-06-06  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftstroker.h: Renamed to...
	* include/freetype/ftstroke.h: This.

	* src/base/ftstroker.c: Renamed to...
	* src/base/ftstroke.c: This.

	* include/freetype/config/ftheader.h (FT_STROKER_H): Updated.

	* src/base/descrip.mms, src/base/Jamfile, src/base/rules.mk:
	Updated.

	* src/pcf/pcfdriver.c: Renamed to...
	* src/pcf/pcfdrivr.c: This.
	* src/pcf/pcfdriver.h: Renamed to...
	* src/pcf/pcfdrivr.h: This.

	* src/pcf/Jamfile, src/pcf/rules.mk: Updated.

2003-06-05  Wenlin Institute (Tom Bishop)  <wenlin@wenlin.com>

	* src/base/ftmac.c (file_spec_from_path) [TARGET_API_MAC_CARBON]:
	Add `#if !defined(__MWERKS__)'.

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

	* include/freetype/internal/psaux.h (T1_FieldType): Add
	T1_FIELD_TYPE_FIXED_1000 and T1_FIELD_TYPE_FIXED_1000_P.
	(T1_FIELD_FIXED_1000, T1_FIELD_FIXED_1000_P): New macros.
	* src/psaux/psobjs.c (ps_parser_load_field): Handle
	T1_FIELD_TYPE_FIXED_1000 and T1_FIELD_TYPE_FIXED_1000_P.

	* src/cff/cffparse.c (cff_kind_fixed_thousand): New enumeration.
	(CFF_FIELD_FIXED_1000): New macro.
	(cff_parser_run): Handle cff_kind_fixed_thousand.
	* src/cff/cfftoken.h: Use CFF_FIELD_FIXED_1000 for blue_scale.
	* src/cff/cffload (cff_subfont_load): Fix default values of
	expansion_factor and blue_scale.

	* src/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/otlyaout/otlconf.h,
	src/otlayout/otlgsub.c, src/otlayout/otlgsub.h,
	src/otlayout/otlparse.c, src/otlayout/otlparse.h,
	src/otlayout/otlutils.h: Updating the OpenType Layout code, adding
	support for the first GSUB lookups.  Nothing that really compiles
	for now though.

	* src/autohint/ahhint.c (ah_align_serif_edge): Disabled serif stem
	width quantization.  It produces slightly better shapes though this
	is not distinguishable with many fonts.
	Remove other dead code.

	* src/Jamfile, src/*/Jamfile: Simplified.
	Use $(FT2_SRC_DIR).

2002-11-06  David Turner  <david@freetype.org>

	* include/freetype/freetype.h (FT_LOAD_TARGET_LIGHT): New macro.
	(FT_LOAD_TARGET, FT_LOAD_TARGET_MODE): Use `& 15' instead of `& 7'.

2002-11-05  David Turner  <david@freetype.org>

	* include/freetype/config/ftoption.h, src/gzip/ftgzip.c: Added
	support for the FT_CONFIG_OPTION_SYSTEM_ZLIB option, used to specify
	the use of system-wide zlib.

	Note that this macro, as well as
	TT_CONFIG_OPTION_BYTECODE_INTERPRETER, is not #undef-ed anymore.
	This allows the build system to define them depending on the
	configuration (typically by adding -D flags at compile time).

	* src/sfnt/ttcmap0.c (tt_face_build_cmaps): Removed compiler
	warnings in optimized mode relative to the `volatile' local
	variables.  This was not a compiler bug after all, but the fact that
	a pointer to a volatile variable is not the same as a volatile
	pointer to a variable :-)

	The fix was to change
	  `volatile FT_Byte* p'
	into
	  `FT_Byte* volatile p'.

	* src/pfr/pfrload.c (pfr_phy_font_load), src/pfr/pfrdrivr.c
	(pfr_get_metrics), src/gzip/inftrees.c: Removed compiler warnings in
	optimized modes.

	* src/gzip/*.[hc]: Modified our zlib copy in order to prevent
	exporting any zlib function names outside of the component.  This
	prevents linking problems on some platforms, when applications want
	to link FreeType _and_ zlib together.

2002-11-05  Juliusz  <jch@pps.jussieu.fr>

	* src/psaux/psobjs.c (ps_table_add): Modified increment loop in
	order to implement exponential behaviour.

2002-11-01  David Turner  <david@freetype.org>

	Added PFR-specific public API.  Fixed the kerning 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_GlyphLoad): Fix computation of
	horiBearingY.

2002-08-16  George Williams  <gww@silcom.com>

	Add support for Apple composite glyphs.

	* include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED): New macro.

	* src/truetype/ttgload.c (OVERLAP_COMPOUND, SCALED_COMPONENT_OFFSET,
	UNSCALED_COMPONENT_OFFSET): New macros for additional OpenType
	glyph loading flags.
	(load_truetype_glyph): Implement it.

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

	* src/cff/cffgload.c (cff_free_glyph_data),
	src/cff/cffload.c (cff_font_load): Use FT_UNUSED.

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

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Initialize `error'.
	* src/sfnt/sfobjs.c (SFNT_Load_Face): Fix compiler warning.

2002-08-15  Graham Asher  <graham.asher@btinternet.com>

	Implemented the incremental font loading system for the CFF driver.
	Tested using the GhostScript-to-FreeType bridge (under development).

	* src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data): New
	functions.
	(cff_operator_seac, cff_compute_max_advance, cff_slot_load): Use
	them.
	* src/cff/cffload.c (cff_font_load): Add `face' parameter.
	Load charset and encoding only if there are glyphs.
	[FT_CONFIG_OPTION_INCREMENTAL]: Incremental fonts don't need
	character recipes.
	* src/cff/cffload.h, src/cff/cffobjs.c: Updated.

	* src/cid/cidgload.c (cid_load_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Corrected the incremental font
	loading implementation to use the new system introduced on
	2002-08-01.

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

	* src/cff/cffcmap.c: Remove compiler warnings.
	* src/cache/ftccache.c, src/cache/ftccache.i,
	src/pfr/pfrload.c, src/pfr/pfrgload.c: s/index/idx/.
	* src/cff/cffload.c: s/select/fdselect/.
	* src/raster/ftraster.c: s/wait/waiting/.

2002-08-01  Graham Asher  <graham.asher@btinternet.com>

	* src/type1/t1load.c (T1_Open_Face): Tolerate a face with no
	charstrings if there is an incremental loading interface.  Type 1
	faces supplied by PostScript interpreters like GhostScript will
	typically not provide any charstrings at load time, so this is
	essential if they are to work.

2002-08-01  Graham Asher  <graham.asher@btinternet.com>

	Modified incremental loading interface to be closer to David's
	preferences.  The header freetype.h is not now affected, the
	interface is specified via an FT_Parameter, the pointer to the
	interface is hidden in an internal part of the face record, and all
	the definitions are in ftincrem.h.

	* include/freetype/freetype.h [FT_CONFIG_OPTION_INCREMENTAL]:
	Removed.
	* include/freetype/internal/ftobjs.h [FT_CONFIG_OPTION_INCREMENTAL]:
	Include FT_INCREMENTAL_H.
	(FT_Face_InternalRec) [FT_CONFIG_OPTION_INCREMENTAL]: Add
	`incremental_interface'.

	* src/base/ftobjs.c (open_face, FT_Open_Face)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	* src/sfnt/sfobjs.c (SFNT_Load_Face) [FT_CONFIG_OPTION_INCREMENTAL]:
	Updated.

	* src/truetype/ttgload.c (load_truetype_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	Free loaded glyph data properly.
	(compute_glyph_metrics, TT_Load_Glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	* src/truetype/ttobjs.c (TT_Face_Init)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String)
	[FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	(T1_Parse_Glyph) [FT_CONFIG_OPTION_INCREMENTAL]: Updated.
	Free loaded glyph data properly.
	(T1_Load_Glyph): Updated.
	[FT_CONFIG_OPTION_INCREMENTAL]: Free loaded glyph data properly.

2002-07-30  David Turner  <david@freetype.org>

	* include/freetype/ftincrem.h: Adding new experimental header file
	to demonstrate a `cleaner' API to support incremental font loading.

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

	* src/tools/docmaker/*: Adding new (more advanced) version of
	the DocMaker tool, using Python's sophisticated regexps.

2002-07-28  Werner Lemberg  <wl@gnu.org>

	s/ft_memset/FT_MEM_SET/.
	s/FT_MEM_SET/FT_MEM_ZERO/ where appropriate.

2002-07-27  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttload.c (sfnt_dir_check): Make it work with TTCs.

2002-07-26  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: s/memset/ft_memset/.

	* src/autohint/ahhint.c (ah_hint_edges_3): Fix compiler warning.
	* src/cff/cffload.c (cff_encoding_load): Remove `memory' variable.
	* src/cff/cffcmap.c (cff_cmap_encoding_init): Remove `psnames'
	variable.
	* src/truetype/ttgload.c (load_truetype_glyph): Remove statement
	without effect.
	* src/truetype/ttdriver (Get_Char_Index, Get_Next_Char): Removed.

	* src/pshinter/pshalgo3.c (psh3_hint_table_record,
	psh3_hint_table_init, psh3_hint_table_activate_mask): Fix error
	message.

2002-07-24  Graham Asher  <graham.asher@btinternet.com>

	* src/truetype/ttobjs.c: Fix for bug reported by Sven Neumann
	[sven@gimp.org] on the FreeType development forum: `If
	FT_CONFIG_OPTION_INCREMENTAL is undefined (this is the default), the
	TrueType loader crashes in line 852 of src/truetype/ttgload.c when
	it tries to access face->glyph_locations.'

2002-07-18  Graham Asher  <graham.asher@btinternet.com>

	Added types and structures to support incremental typeface loading.
	The FT_Incremental_Interface structure, defined in freetype.h, is
	designed to be passed to FT_Open_Face to provide callback functions
	to obtain glyph recipes and metrics, for fonts like those passed
	from PostScript that do not necessarily provide all, or any, glyph
	information, when first opened.

	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_INCREMENTAL):
	New configuration macro to enable incremental face loading.  By
	default it is not defined.

	* include/freetype/freetype.h (FT_Basic_Glyph_Metrics,
	FT_Get_Glyph_Data_Func, FT_Get_Glyph_Metrics_Func,
	FT_Incremental_Interface_Funcs, FT_Incremental_Interface)
	[FT_CONFIG_OPTION_INCREMENTAL]: New.
	(FT_Open_Args, FT_FaceRec) [FT_CONFIG_OPTION_INCREMENTAL]: New field
	`incremental_interface'.
	(FT_Open_Flags) [FT_CONFIG_OPTION_INCREMENTAL]: New enum
	`ft_open_incremental'.

	* include/freetype/fttypes.h: Include FT_CONFIG_CONFIG_H.
	(FT_Data): New structure to represent binary data.

	* src/base/ftobjs.c (open_face) [FT_CONFIG_OPTION_INCREMENTAL]:
	Add parameter for incremental loading.
	(FT_Open_Face) [FT_CONFIG_OPTION_INCREMENTAL]: Use incremental
	interface.

	* src/truetype/ttgload.c (load_truetype_glyph)
	[FT_CONFIG_OPTION_INCREMENTAL]: Added the incremental loading system
	for the TrueType driver.
	(compute_glyph_metrics): Return FT_Error.
	[FT_CONFIG_OPTION_INCREMENTAL]: Check for overriding metrics.
	(TT_Load_Glyph) [FT_CONFIG_OPTION_INCREMENTAL]: Don't look for
	the glyph table while handling an incremental font.
	Get glyph offset.

	* src/truetype/ttobjs.c (TT_Face_Init)
	[FT_CONFIG_OPTION_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.
	(t1_cid_driver_class): Updated.
	* src/truetype/ttdriver.c (tt_driver_class): Updated.
	* src/type1/t1driver.c (Get_Char_Index, Get_Next_Char): Removed
	(t1_driver_class): Updated.
	* src/type42/t42drivr.c (t42_driver_class): Updated.

	* src/base/ftobjs.c (open_face): Select Unicode cmap by default.

	* src/sfnt/ttload.c (TT_Load_SFNT_Header): Fixed a recent bug that
	prevented OpenType fonts to be recognized by FreeType.

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

	Changing the SFNT loader to check for SFNT-based font files
	differently.  We now ignore the range `helper' fields and check the
	`head' table's magic number instead.

	* include/freetype/internal/tttypes.h (SFNT_HeaderRec): Add `offset'
	field.

	* src/sfnt/ttload.c (sfnt_dir_check): New function.
	(TT_Load_SFNT_HeaderRec): Renamed to...
	(TT_Load_SFNT_Header): This.
	Implement new functionality.
	* src/sfnt/ttload.h: Updated.
	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/base/ftobject.c, src/base/fthash.c: Updated object sub-system
	and dynamic hash table implementation (still experimental, don't
	use).
	* include/freetype/internal/fthash.h: Updated.
	* include/freetype/internal/ftobjs.h (FT_LibraryRec): New member
	`meta_class'.

	Fixing a bug in the Type 1 loader that prevented valid font bounding
	boxes to be loaded from multiple master fonts.

	* include/freetype/t1tables.h (PS_BlendRec): Add `bboxes' field.

	* include/freetype/internal/psaux.h (T1_FieldType): Add
	`T1_FIELD_TYPE_BBOX'.
	(T1_FieldLocation): Add `T1_FIELD_LOCATION_BBOX'.
	(T1_FIELD_BBOX): New macro.

	* src/psaux/psobjs.c (PS_Parser_LoadField): Handle T1_FIELD_TYPE_BBOX.
	* src/type1/t1load.c (t1_allocate_blend): Create blend->bboxes.
	(T1_Done_Blend): Free blend->bboxes.
	(t1_load_keyword): Handle T1_FIELD_LOCATION_BBOX.
	(parse_font_bbox): Commented out.
	(t1_keywords): Comment out `parse_font_bbox'.
	* src/type1/t1tokens.h: Define `FontBBox' field.

2002-07-10  David Turner  <david@freetype.org>

	* src/cff/cffobjs.c: Small fix to select the Unicode charmap by
	default when needed.
	Small fix to allow OpenType fonts to support Adobe charmaps when
	needed.

	* src/cff/cffcmap.c, src/cff/cffcmap.h: New files to support
	charmaps for CFF fonts.

	* src/cff/cff.c, src/cff/Jamfile, src/cff/rules.mk: Updated.

	* include/freetype/internal/cfftypes.h (CFF_EncodingRec): Use
	fixed-length arrays for `sids' and `codes'.  Add `count' member.
	(CFF_FontRec): Add `psnames' member.

	* src/cff/cffdrivr.c, src/cff/cffload.c, src/cff/cffload.h,
	src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c,
	src/cffparse.h, src/cff/cffgload.c, src/cff/cffgload.h: Adding
	support for CFF charmaps, reformatting the sources, and removing
	some bugs in the Encoding and Charset loaders.
	Many fonts renamed to use lowercase only:

	  CFF_Builder_Init -> cff_builder_init
	  CFF_Builder_Done -> cff_builder_done
	  CFF_Init_Decoder -> cff_decoder_init
	  CFF_Parse_CharStrings -> cff_decoder_parse_charstrings
	  CFF_Load_Glyph -> cff_slot_load
	  CFF_Init_Decoder -> cff_decoder_init
	  CFF_Prepare_Decoder -> cff_decoder_prepare
	  CFF_Get_Standard_Encoding -> cff_get_standard_encoding
	  CFF_Access_Element -> cff_index_access_element
	  CFF_Forget_Element -> cff_index_forget_element
	  CFF_Get_Name -> cff_index_get_name
	  CFF_Get_String -> cff_index_get_sid_string
	  CFF_Get_FD -> cff_fd_select_get
	  CFF_Done_Charset -> cff_charset_done
	  CFF_Load_Charset -> cff_charset_load
	  CFF_Done_Encoding -> cff_encoding_done
	  CFF_Load_Encoding -> cff_encoding_load
	  CFF_Done_SubFont -> cff_subfont_done
	  CFF_Load_Font -> cff_font_load
	  CFF_Done_Font -> cff_font_done
	  CFF_Size_Get_Global_Funcs -> cff_size_get_global_funcs
	  CFF_Size_Done -> cff_size_done
	  CFF_Size_Init -> cff_size_init
	  CFF_Size_Reset -> cff_size_reset
	  CFF_GlyphSlot_Done -> cff_slot_done
	  CFF_GlyphSlot_Init -> cff_slot_init
	  CFF_StrCopy -> cff_strcpy
	  CFF_Face_Init -> cff_face_init
	  CFF_Face_Done -> cff_face_done
	  CFF_Driver_Init -> cff_driver_init
	  CFF_Driver_Done -> cff_driver_done
	  CFF_Parser_Init -> cff_parser_init
	  CFF_Parser_Run -> cff_parser_run

	  add_point -> cff_builder_add_point
	  add_point1 -> cff_builder_add_point1
	  add_contour -> cff_builder_add_contour
	  close_contour -> cff_builder_close_contour
	  cff_explicit_index -> cff_index_get_pointers

2002-07-09  Owen Taylor  <owen@redhat.com>

	* src/pshinter/pshglob.c (psh_globals_new): Fixed a bug that
	prevented the hinter from using correct standard width and height
	values, resulting in hinting bugs with certain fonts (e.g. Utopia).

2002-07-07  David Turner  <david@freetype.org>

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Added code to return
	successfully when the function is called with a bitmap glyph (the
	previous code simply returned with an error).

	* docs/DEBUG.TXT: Adding debugging support documentation.

	* src/base/ftdebug.c (ft_debug_init), builds/win32/ftdebug.c
	(ft_debug_init), builds/amiga/src/ftdebug.c (ft_debug_init): Changed
	the syntax of the FT2_DEBUG environment variable used to control
	debugging output (i.e. logging and error messages).  It must now
	look like:

	  any:6 memory:4 io:3   or
	  any:6,memory:4,io:3   or
	  any:6;memory:4;io:3

2002-07-07  Owen Taylor  <owen@redhat.com>

	* src/pshinter/pshglob.c (psh_blues_snap_stem): Adding support for
	blue fuzz.
	* src/pshinter/pshglob.h (PSH_BluesRec): Add `blue_fuzz' field.
	* src/type1/t1load.c (T1_Open_Face): Initialize `blue_fuzz'.

	Adding support for hinter-specific bit flags, and the new
	FT_Set_Hint_Flags high-level API.

	* include/freetype/freetype.h (FT_Set_Hint_Flags): New function.
	(FT_HINT_NO_INTEGER_STEM, FT_HINT_NO_HSTEM_ALIGN,
	FT_HINT_NO_VSTEM_ALIGN): New macros.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
	`hint_flags' member.

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

	* include/freetype/internal/psaux.h (T1_DecoderRec): Add `hint_flags'
	member.

	* include/freetype/internal/pshints.h (T1_Hints_ApplyFunc,
	T2_Hints_ApplyFunc): Add parameter to pass hint flags.

	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings,
	T1_Decoder_Init): Use decoder->hint_flags.
	* src/cff/cffgload.h (CFF_Builder): Add `hint_flags' field.
	* src/cff/cffgload.c (CFF_Builder_Init): Set builder->hint_flags.
	(CFF_Parse_CharStrings): Updated.
	* src/pshinter/pshalgo1.c (ps1_hints_apply): Add parameter to handle
	hint flags (unused).
	* src/pshinter/pshalgo1.h: Updated.
	* src/pshinter/pshalgo2.c (ps2_hints_apply): Add parameter to handle
	hint flags (unused).
	* src/pshinter/pshalgo2.h: Updated.
	* src/pshinter/pshalgo3.c (ps3_hints_apply): Add parameter to handle
	hint flags.
	* src/pshinter/pshalgo3.h: Updated.

2002-07-04  David Turner  <david@freetype.org>

	* src/pfr/pfrobjs.c (pfr_slot_load): Fixed a small bug that returned
	incorrect advances when the outline resolution was different from
	the metrics resolution.

	* src/autohint/ahhint.c: Removing compiler warnings.

	* src/autohint/ahglyph.c: s/FT_MEM_SET/FT_ZERO/ where appropriate.
	(ah_outline_link_segments): Slight improvements to the serif
	detection code.  More work is needed though.

2002-07-03  David Turner  <david@freetype.org>

	Small improvements to the automatic hinter.  Uneven stem-widths have
	now disappeared and everything looks much better, even if there are
	still issues with serifed fonts.

	* src/autohint/ahtypes.h (AH_Globals): Added `stds' array.
	* src/autohint/ahhint.c (OPTIM_STEM_SNAP): New #define.
	(ah_snap_width): Commented out.
	(ah_align_linked_edge): Renamed to...
	(ah_compute_stem_width): This.
	Don't allow uneven stem-widths.
	(ah_align_linked_edge): New function.
	(ah_align_serifed_edge): Don't strengthen serifs.
	(ah_hint_edges_3, ah_hinter_scale_globals): Updated.

2002-07-03  Owen Taylor  <owen@redhat.com>

	Adding new algorithm based on Owen Taylor's recent work.

	* src/pshinter/pshalgo3.c, src/pshinter/pshalgo3.h: New files.
	* src/pshinter/pshalgo.h: Updated.
	Use pshalgo3 by default.
	* src/pshinter/pshinter.c: Include pshalgo3.c.

	* src/pshinter/Jamfile, src/pshinter/rules.mk: Updated.

2002-07-01  Owen Taylor  <owen@redhat.com>

	* src/pshinter/pshalgo2.c (psh2_glyph_find_strong_points): Fix a bug
	where, if a glyph has more than hint mask, the second mask gets
	applied to points that should have been covered by the first mask.

2002-07-01  Keith Packard  <keithp@keithp.com>

	* src/sfnt/ttcmap0.c (tt_cmap8_char_next, tt_cmap12_char_next):
	Fixing the cmap 8 and 12 parsing routines.

2002-07-01  David Turner  <david@freetype.org>

	* src/base/ftsynth.c: Include FT_TRIGONOMETRY_H.
	(FT_Outline_Embolden): Renamed to...
	(FT_GlyphSlot_Embolden): This.
	Updated to new trigonometric functions.
	(FT_Outline_Oblique): Renamed to...
	(FT_GlyphSlot_Oblique): This.
	(ft_norm): Removed.
	* include/freetype/ftsynth.h: Updated.

2002-06-26  David Turner  <david@freetype.org>

	* include/freetype/internal/ftobject.h: Updating the object
	sub-system definitions (still experimental).

	* src/base/fthash.c (ft_hash_remove): Fixing a small reallocation
	bug.

	* src/base/fttrigon.c (FT_Vector_From_Polar, FT_Angle_Diff): New
	functions.
	* include/freetype/fttrigon.h: Updated.


	Adding path stroker component (work in progress).

	* include/freetype/ftstroker.h, src/base/ftstroker.c: New files.
	* src/base/Jamfile: Updated.

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


	* src/truetype/ttgload.c (TT_Load_Composite_Glyph),
	src/base/ftoutln.c (FT_Vector_Transform): Fixed Werner's latest fix.
	FT_Vector_Transform wasn't buggy, the TrueType composite loader was.

2002-06-24  Werner Lemberg  <wl@gnu.org>

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

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


	* Version 2.1.2 released.
	=========================


2002-06-21  Roberto Alameda  <ojancano@geekmail.de>.

	* include/freetype/internal/t42types.h (T42_Font): Removed since
	it is already in t42objs.h.
	(T42_Face): Use T1_FontRec.

	* src/base/fttype1.c (FT_Get_PS_Font_Info): Updated.
	(FT_Has_PS_Glyph_Names): Check for type42 driver name also.
	* src/type42/t42objs.h: Include FT_INTERNAL_TYPE42_TYPES_H.
	(T42_Face): Removed since it is already in t42types.h.

2002-06-21  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/pfrgload.c (pfr_glyph_load_compound): Fix loading of composite
	glyphs.

2002-06-21  Sven Neumann  <sven@convergence.de>

	* src/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_Global_Funcs, CFF_Size_Init,
	CFF_GlyphSlot_Init): Ditto.
	* src/cid/cidobjs.c (CID_GlyphSlot_Init,
	CID_Size_Get_Globals_Funcs): Ditto.
	* src/type1/t1objs.c (T1_Size_Get_Globals_Funcs, T1_GlyphSlot_Init):
	Ditto.
	* src/pshinter/pshmod.c (pshinter_interface): Use `static const'.
	* src/winfonts/winfnt.c (FNT_Get_Next_Char): Remove unused
	variables.

	* include/freetype/internal/psaux.h (T1_Builder_Funcs): Renamed
	to...
	(T1_Builder_FuncsRec): This.
	(T1_Builder_Funcs): New typedef.
	(PSAux_Interface): Remove compiler warnings.
	* src/psaux/psauxmod.c (t1_builder_funcs), src/psaux/psobjs.h
	(t1_builder_funcs): Updated.

	* src/pshinter/pshglob.h (PSH_Blue_Align): Replaced with ...
	(PSH_BLUE_ALIGN_{NONE,TOP,BOT}): New defines.
	(PSH_AlignmentRec): Updated.

	* include/freetype/internal/ftstream.h (GET_Char, GET_Byte): Fix
	typo.
	* include/freetype/internal/ftgloadr.h (FT_SubGlyph): Ditto.
	* src/base/ftstream (FT_Get_Char): Rename to...
	(FT_Stream_Get_Char): This.

	* src/base/ftnames.c (FT_Get_Sfnt_Name): s/index/idx/ -- `index' is
	a built-in function in gcc, causing warning messages with gcc 3.0.
	* src/autohint/ahglyph.c (ah_outline_load): Ditto.
	* src/autohint/ahglobal.c (ah_hinter_compute_blues): Ditto.
	* src/cache/ftcmanag.c (ftc_family_table_alloc,
	ftc_family_table_free, FTC_Manager_Done, FTC_Manager_Register_Cache):
	Ditto.
	* src/cff/cffload.c (cff_new_index, cff_done_index,
	cff_explicit_index, CFF_Access_Element, CFF_Forget_Element,
	CFF_Get_Name, CFF_Get_String, CFF_Load_SubFont, CFF_Load_Font,
	CFF_Done_Font): Ditto.
	* src/psaux/psobjs.c (PS_Table_Add, PS_Parser_LoadField): Ditto.
	* src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Ditto.
	* src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_clear_bit,
	ps_mask_set_bit, ps_dimension_add_t1stem, ps_hints_t1stem3,
	* src/pshinter/pshalgo1.c (psh1_hint_table_record,
	psh1_hint_table_record_mask, psh1_hint_table_activate_mask): Ditto.
	* src/pshinter/pshalgo2.c (psh2_hint_table_record,
	psh2_hint_table_record_mask, psh2_hint_table_activate_mask): Ditto.
	* src/sfnt/ttpost.c (Load_Format_20, Load_Format_25,
	TT_Get_PS_Name): Ditto.
	* src/truetype/ttgload.c (TT_Get_Metrics, Get_HMetrics,
	load_truetype_glyph): Ditto.
	* src/type1/t1load.c (parse_subrs, T1_Open_Face): Ditto.
	* src/type1/t1afm.c (T1_Get_Kerning): Ditto.
	* include/freetype/cache/ftcmanag.h (ftc_family_table_free): Ditto.

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

	* src/type1/t1objs.c (T1_Face_Init), src/cid/cidobjs.c
	(CID_Face_Init): Fixed another bug related to the
	ascender/descender/text height of Postscript fonts.

	* src/pshinter/pshalgo2.c (print_zone): Renamed to ...
	(psh2_print_zone): This.
	* src/pshinter/pshalgo1.c (print_zone): Renamed to ...
	(psh1_print_zone): This.

	* include/freetype/freetype.h, include/freetype/internal/ftobjs.h,
	src/base/ftobjs.c: Adding the new FT_Library_Version API to return
	the library's current version in dynamic links.
	* src/base/ftinit.c (FT_Init_FreeType): Updated.

2002-03-06  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshglob.h (PSH_DimensionRec): s/std/stdw/.
	* src/pshinter/pshglob.c (psh_global_scale_widths,
	psh_dimension_snap_width, psh_globals_destroy, psh_globals_new):
	Ditto.

2002-03-05  David Turner  <david@freetype.org>

	* src/type1/t1objs.c (T1_Face_Init), src/cff/cffobjs.c
	(CFF_Face_Init), src/cid/cidobjs.c (CID_Face_Init): Removing the bug
	that returned global BBox values in 16.16 fixed format (instead of
	integer font units).

	* src/cid/cidriver.c (cid_get_postscript_name): Fixed a bug that
	caused the CID driver to return Postscript font names with a leading
	slash (`/') as in `/MOEKai-Regular'.

	* src/sfnt/ttload.c (TT_Load_Names), src/sfnt/sfobjs.c (Get_Name),
	src/sfnt/sfdriver.c (get_sfnt_postscript_name): Fixed the loader so
	that it accepts broken fonts like `foxjump.ttf', which made FreeType
	crash when trying to load them.

	Also improved the name table parser to be able to load
	Windows-encoded entries before Macintosh or Unicode ones, since it
	seems some fonts don't have reliable values here anyway.

	* include/freetype/internal/psnames.h: Add typedef for
	`PSNames_Service'.

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

	* builds/unix/aclocal.m4, builds/unix/ltmain.sh: Update to libtool
	1.4.2.
	Apply a small patch for AIX to make shared libraries work (this
	patch is already in the CVS version of libtool).

	* builds/unix/config.sub, builds/unix/config.guess: Updated to
	recent versions.

	* builds/unix/configure.ac: Fix typo
	(AC_CONFIG_FILE->AC_CONFIG_FILES).

	* builds/unix/configure: Regenerated.

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

	* include/freetype/ftconfig.h: Changed `FT_LOCAL xxxx' to
	`FT_LOCAL( xxxx )' everywhere in the source.  The same goes for
	`FT_LOCAL_DEF xxxx' which is translated to `FT_LOCAL_DEF( xxxxx )'.

	* include/freetype/freetype.h (FREETYPE_MINOR, FREETYPE_PATCH):
	Changing version to 2.1.0 to indicate an unstable branch.
	Added the declarations of FT_Get_First_Char and FT_Get_Next_Char.

	* src/base/ftobjs.c: Implement FT_Get_First_Char and
	FT_Get_Next_Char.

	* include/freetype/t1tables.h: Renaming structure types.  This

	  typedef  T1_Struct_
	  {
	  } T1_Struct;

	becomes

	  typedef  PS_StructRec_
	  {
	  } PS_StructRec, *PS_Struct;

	  typedef PS_StructRec  T1_Struct;  /* backwards-compatibility */

	Hence, we increase the coherency of the source code by effectively
	using the `Rec' prefix for structure types.

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

	* src/sfnt/ttload.c (TT_Load_Names): Simplifying and securing the
	names table loader.  Invalid individual name entries are now handled
	correctly.  This allows the loading of very buggy fonts like
	`foxjump.ttf' without allocating tons of memory and causing crashes.

	* src/otlayout/otlcommon.h, src/otlayout/otlcommon.c: Adding (still
	experimental) code for OpenType Layout tables validation and
	parsing.

	* src/type1/t1cmap.h, src/type1/t1cmap.c: Adding (still
	experimental) code for Type 1 charmap processing.

	* src/sfnt/ttcmap0.c: New file.  It contains a new, still
	experimental SFNT charmap processing support.

	* include/freetype/internal/ftobjs.h: Adding validation support as
	well as internal charmap object definitions (FT_CMap != FT_CharMap).

2002-02-24  David Turner  <david@freetype.org>

	* Renaming stream functions to the FT_<Subject>_<Action> scheme:

	  FT_Seek_Stream    => FT_Stream_Seek
	  FT_Skip_Stream    => FT_Stream_Skip
	  FT_Read_Stream    => FT_Stream_Read
	  FT_Read_Stream_At => FT_Stream_Read_At
	  FT_Access_Frame   => FT_Stream_Enter_Frame
	  FT_Forget_Frame   => FT_Stream_Exit_Frame
	  FT_Extract_Frame  => FT_Stream_Extract_Frame
	  FT_Release_Frame  => FT_Stream_Release_Frame
	  FT_Get_XXXX       => FT_Stream_Get_XXXX
	  FT_Read_XXXX      => FT_Stream_Read_XXXX

	  FT_New_Stream( filename, stream ) =>
	    FT_Stream_Open( stream, filename )

	    (The function doesn't create the FT_Stream structure, it simply
	    initializes it for reading.)

	  FT_New_Memory_Stream( library, FT_Byte*  base, size, stream ) =>
	    FT_Stream_Open_Memory( stream, const FT_Byte* base, size )

	  FT_Done_Stream  => FT_Stream_Close
	  FT_Stream_IO    => FT_Stream_IOFunc
	  FT_Stream_Close => FT_Stream_CloseFunc

	  ft_close_stream => ft_ansi_stream_close (in base/ftsystem.c only)
	  ft_io_stream    => ft_ansi_stream_io    (in base/ftsystem.c only)

	* src/base/ftutil.c: New file.  Contains all memory and list
	management code (previously in `ftobjs.c' and `ftlist.c',
	respectively).

	* include/freetype/internal/ftobjs.h: Moving all code related to
	glyph loaders to ...
	* include/freetype/internal/ftgloadr.h: This new file.
	`FT_GlyphLoader' is now a pointer to the structure
	`FT_GlyphLoaderRec'.
	(ft_glyph_own_bitmap): Renamed to ...
	(FT_GLYPH_OWN_BITMAP): This.
	* src/base/ftobjs.c: Moving all code related to glyph loaders
	to ...
	* src/base/ftgloadr.c: This new file.

2002-02-22  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftdebug.h (FT_Trace): Remove comma in
	enum to avoid compiler warnings.

2002-02-21  David Turner  <david@freetype.org>

	Modified the debug sub-system initialization.  Trace levels can now
	be specified within the `FT2_DEBUG' environment variable.  See the
	comments within `ftdebug.c' for more details.

	* src/base/ftdebug.c: (FT_SetTraceLevel): Removed.
	(ft_debug_init): New function.
	(ft_debug_dummy): Removed.
	Updated to changes in ftdebug.h

	* include/freetype/internal/ftdebug.h: Always define
	FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE is defined.
	(FT_Assert): Renamed to ...
	(FT_ASSERT): This.
	Some stuff from ftdebug.h has been moved to ...

	* include/freetype/internal/fttrace.h: New file, to define the trace
	levels used for debugging.  It is used both to define enums and
	toggle names for FT2_DEBUG.

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

	* src/base/ftobjs.c, src/base/ftstream.c: Updated.

	* include/freetype/internal/ftextend.h, src/base/ftextend.c:
	Removed.  Both files are now completely obsolete.
	* src/base/Jamfile, src/base/rules.mk: Updated.

	* include/freetype/fterrors.h: Adding `#undef FT_ERR_CAT' and
	`#undef FT_ERR_XCAT' to avoid warnings with certain compilers (like
	LCC).

	* src/pshinter/pshalgo2.c (print_zone): Renamed to ...
	(psh2_print_zone): This to avoid errors during compilation of debug
	library.

	* src/smooth/ftgrays.c (FT_COMPONENT): Change definition to as
	`trace_smooth'.

2002-02-20  David Turner  <david@freetype.org>

	* README: Adding `devel@freetype.org' address for bug reports.

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

	* builds/unix/install.mk (check): New dummy target.
	(.PHONY): Add it.

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

	* builds/freetype.mk (FT_CFLAGS): Use $(INCLUDE_FLAGS) first.

	* src/cache/ftccache.c (ftc_cache_resize): Mark `error' as unused
	to avoid compiler warning.
	* src/cff/cffload.c (CFF_Get_String): Ditto.
	* src/cff/cffobjs.c (CFF_StrCopy): Ditto.
	* src/psaux/psobjs.c (PS_Table_Done): Ditto.
	* src/pcf/pcfread.c (pcf_seek_to_table_type): Ditto.
	* src/sfnt/sfdriver.c (get_sfnt_postscript_name): Ditto.
	(pcf_get_bitmaps): The same for `sizebitmaps'.
	* src/psaux/t1decode.c (T1_Decode_Parse_Charstrings): The same for
	`orig_y'.
	(t1operator_seac): Comment out more dead code.
	* src/pshinter/pshalgo2.c (ps2_hints_apply): Add `DEBUG_HINTER'
	conditional.
	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
	load_truetype_glyph): Add `TT_CONFIG_OPTION_BYTECODE_INTERPRETER'
	conditional.

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

	* src/autohint/ahglyph.c (ah_outline_link_segments): Remove unused
	variables.
	* src/autohint/ahhint.c (ah_align_serif_edge): Use FT_UNUSED instead
	of UNUSED.
	* src/autohint/ahmodule.c (ft_autohinter_reset): Ditto.
	* src/pshinter/pshrec.c (ps_mask_table_merge): Fix typo in variable
	swapping code.
	* src/pshinter/pshglob.h (PSH_Blue_Align): Add PSH_BLUE_ALIGN_NONE.
	* src/pshinter/pshglob.c (psh_blues_snap_stem): Use it.
	* src/pshinter/pshalgo1.c (psh1_hint_table_optimize): Ditto.
	* src/pshinter/pshalgo2.c (psh2_hint_align): Ditto.
	* include/freetype/internal/ftobjs.h (UNUSED): Removed.

2002-02-10  Roberto Alameda  <ojancano@geekmail.de>

	Add support for ISOLatin1 PS encoding.

	* include/freetype/freetype.h (ft_encoding_latin_1): New tag
	(`lat1').
	* include/freetype/internal/t1types.h (T1_Encoding_Type): Add
	`t1_encoding_isolatin1'.
	* src/type1/t1driver.c (Get_Char_Index, Get_Next_Char): Handle
	ft_encoding_latin_1.
	* src/type1/t1load.c (parse_encoding): Handle `ISOLatin1Encoding'.
	* src/type1/t1objs.c (T1_Face_Init): Handle `t1_encoding_isolatin1'.

----------------------------------------------------------------------------

Copyright 2002-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:
