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


	* Version 2.2.1 released.
	=========================


	Tag sources with `VER-2-2-1'.

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

	* src/tools/docmaker/sources.py (re_source_keywords): Add word
	boundary markers.
	* src/tools/docmaker/content.py (re_field): Allow `.' in field names
	(but not at the beginning or end).
	* src/tools/docmaker/tohtml.py (html_header_1): Use `utf-8' charset.
	(block_footer): Split into...
	(block_footer_start, block_footer_middle, block_footer_end): This to
	add navigation buttons.
	(HtmlFormatter::block_exit): Updated.

	* include/freetype/*: Many minor documentation improvements (adding
	links, spelling errors, etc.).

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

	* README: Minor updates.

	* include/freetype/*: s/scale/scaling value/ where appropriate.
	Many other minor documentation improvements.

	* src/tools/docmaker/sources.py (re_italic, re_bold): Handle
	trailing punctuation.
	* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word): Add
	warning message for undefined cross references.
	Update handling of re_italic and re_bold.

2006-05-11  Masatake YAMATO  <jet@gyve.org>

	* builds/unix/ftsystem.c (FT_Stream_Open): Check errno only if
	read system call returns -1.
	Remove a redundant parenthesis.

2006-05-10  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ftsystem.c (FT_Stream_Open): Avoid infinite loop if
	given an empty, un-mmap()able file.  Reported and suggested fix in
	Savannah bug #16555.

	* builds/freetype.mk (refdoc): Write-protect the `docmaker'
	directory to suppress generation of .pyc files.  According to the
	Python docs there isn't a more elegant solution (currently).

	* builds/toplevel.mk (dist): New target which builds .tar.gz,
	.tar.bz2, and .zip files.  Note that the version number is still
	hard-coded.
	(do-dist): Sub-target of `dist'.
	(CONFIG_GUESS, CONFIG_SUB): New variables.
	(.PHONY): Updated.

2006-05-09  Rajeev Pahuja  <rpahuja@esri.com>

	* builds/win32/visualc/freetype.sln,
	builds/win32/visualc/freetype.vcproj: Upgraded to VS.NET 2005 from
	VS.NET 2003
	Added files ftbbox.c, fttype1.c, ftwinfnt.c, ftsynth.c.

	* builds/win32/visualc/index.html: Updated.

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

	Put version information into the configure script.  Reported by Paul
	Watson <pwatson@redlinepy.com>.

	* builds/unix/configure.ac: Renamed to...
	* builds/unix/configure.raw: This which now serves (with appropriate
	modifications) as a template for configure.ac.

	* version.sed: New script.

	* autogen.sh: Generate configure.ac from configure.raw, using
	FREETYPE_MAJOR, FREETYPE_MINOR, and FREETYPE_PATCH from freetype.h.

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

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

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

	* builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj, builds/freetype.mk (refdoc),
	Jamfile (RefDoc), README: s/220/221/, s/2.2.0/2.2.1/.
	Minor updates.

	* docs/CHANGES, docs/VERSION.DLL, docs/PROBLEMS, README.CVS:
	Updated.

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

	* devel/ftoption.h: Synchronize with
	include/freetype/config/ftoption.h.

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

	* src/lzw/ftlzw2.c: Renamed to...
	* src/lzw/ftlzw.c: This.

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

	* builds/mac/FreeType.m68k_cfm.make.txt,
	builds/mac/FreeType.m68k_far.make.txt,
	builds/mac/FreeType.ppc_carbon.make.txt,
	builds/mac/FreeType.ppc_classic.make.txt: Updated.

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

	Allow compilation again with C++ compilers.

	* include/freetype/internal/ftmemory.h (FT_ASSIGNP,
	FT_ASSIGNP_INNER): New macros which do the actual assignment, and
	which exist in two variants (for C and C++).
	Update callers accordingly.

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

	* include/freetype/config/ftoption.h (FT_STRICT_ALIASING): Removed.

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

	* include/freetype/internal/ftmemory.h: s/new/newsz/ (for C++).
	(FT_ALLOC): Remove redundant redefinition.

	* builds/compiler/gcc-dev.mk (CFLAGS) [g++]: Don't use
	`-Wstrict-prototypes'.

	* src/base/ftstream.c (FT_Stream_EnterFrame): Add cast.

	* include/freetype/config/ftconfig.h (FT_BASE_DEF) [__cplusplus]:
	Remove `extern'.

2006-05-02  David Turner  <david@freetype.org>

	Update the memory management functions and macros to safely deal
	with array size buffer overflows.  This corresponds to attemps to
	allocate arrays that are too large.  For an example, consider the
	following code:

	  count = read_uint32_from_file(); array = malloc( sizeof ( Item ) *
	  count ); for ( nn = 0; nn < count; nn++ )
	    array[nn] = read_item_from_file();

	If `count' is larger than `FT_UINT_MAX/sizeof(Item)', the
	multiplication overflows, and the array allocated os smaller than
	the data read from the file.  In this case, the heap will be
	trashed, and this can be used as a denial-of-service attack, or make
	the engine crash later.

	The FT_ARRAY_NEW and FT_ARRAY_RENEW macros now ensure that the new
	count is no larger than `FT_INT_MAX/item_size', otherwise a new
	error code `FT_Err_Array_Too_Large' will be returned.

	Note that the memory debugger now works again when FT_DEBUG_MEMORY
	is defined.  FT_STRICT_ALIASING has disappeared; the corresponding
	code is now the default.


	* include/freetype/config/ftconfig.h (FT_BASE_DEF) [!__cplusplus]:
	Don't use `extern'.

	* include/freetype/fterrdef.h (FT_Err_Array_Too_Large): New error
	code.

	* include/freetype/internal/ftmemory.h (FT_DEBUG_INNER)
	[FT_DEBUG_MEMORY]: New macro.
	(ft_mem_realloc, ft_mem_qrealloc): Pass new object size count also.
	(ft_mem_alloc_debug, ft_mem_qalloc_debug, ft_mem_realloc_debug,
	ft_mem_qrealloc_debug, ft_mem_free_debug): Removed.
	(FT_MEM_ALLOC, FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC,
	FT_MEM_FREE): Redefine.
	(FT_MEM_NEW_ARRAY, FT_MEM_RENEW_ARRAY, FT_MEM_QNEW_ARRAY,
	FT_MEM_QRENEW_ARRAY): Redefine.
	(FT_ALLOC_MULT, FT_REALLOC_MULT, FT_MEM_QALLOC_MULT,
	FT_MEM_QREALLOC_MULT): New macros.  Update callers where
	appropriate.
	(FT_MEM_SET_ERROR): Slightly redefine.


	* src/base/ftdbgmem.c (_ft_debug_file, _ft_debug_lineno)
	[FT_DEBUG_MEMORY]: New global variables, replacing...
	(FT_MemTable_Rec) [FT_DEBUG_MEMORY]: Remove `filename' and
	`line_no'.  Update all callers.
	(ft_mem_debug_alloc) [FT_DEBUG_MEMORY]: Avoid possible integer
	overflow.
	(ft_mem_alloc_debug, ft_mem_realloc_debug, ft_mem_qalloc_debug,
	ft_mem_qrealloc_debug, ft_mem_free_debug): Removed.

	* src/base/ftmac.c (read_lwfn): Catch integer overflow.
	* src/base/ftrfork.c (raccess_guess_darwin_hfsplus): Ditto.
	* src/base/ftutil.c: Remove special code for FT_STRICT_ALIASING.
	(ft_mem_alloc. ft_mem_realloc, ft_mem_qrealloc): Rewrite.


	* include/freetype/ftstream.h (FT_FRAME_ENTER, FT_FRAME_EXIT,
	FT_FRAME_EXTRACT, FT_FRAME_RELEASE): Use FT_DEBUG_INNER to report the
	place where the frames were entered, extracted, exited or released
	in the memory debugger.

	* src/base/ftstream.c (FT_Stream_ReleaseFrame) [FT_DEBUG_MEMORY]:
	Call ft_mem_free.
	(FT_Stream_EnterFrame) [FT_DEBUG_MEMORY]: Use ft_mem_qalloc.
	(FT_Stream_ExitFrame) [FT_DEBUG_MEMORY]: Use ft_mem_free.

2006-04-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Correct pfb_pos
	initialization, remove extra cast to copy to pfb_lenpos.  This fixes
	parsing of PFB fonts with MacOS resource fork (bug introduced
	2003-09-11).  Patch provided by Huib-Jan Imbens <ft@imbens.nl>.

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

	Further C library abstraction.  Based on a patch from
	msn2@bidyut.com.

	* include/freetype/config/ftstdlib.h (FT_CHAR_BIT, FT_FILE,
	ft_fopen, ft_fclose, ft_fseek, ft_ftell, ft_fread, ft_smalloc,
	ft_scalloc, ft_srealloc, ft_sfree, ft_labs): New wrapper macros for
	C library functions.  Update all users accordingly (and catch some
	other places where the C library function was used instead of the
	wrapper functions).

	* src/base/ftsystem.c: Don't include stdio.h and stdlib.h.
	* src/gzip/zutil.h [MSDOS && !(__TURBOC__ || __BORLANDC__)]: Don't
	include malloc.h.


	* builds/unix/unix-def.in (datarootdir): Define, for autoconf 2.59c
	and forthcoming versions.

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

	* src/lzw/ftlzw.c, src/lzw/zopen.c, src/lzw/zopen.h: Removed,
	obsolete.

2006-04-27  yi luo  <luoyi.ly@gmail.com>

	* builds/win32/visualc/freetype.vcproj: Updated.

2006-04-26  David Turner  <david@freetype.org>


	* Version 2.2 released.
	=======================


	Tag sources with `VER-2-2-0'.

2006-04-26  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psobjs.c (shift_elements): Don't use FT_Long but
	FT_PtrDiff for `delta'.  Reported by Céline PILLET
	<Celine.Pillet@Tagginfo.com>.

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

	* include/freetype/ftincrem.h: Documentation updates.
	(FT_Incremental_Interface): New typedef.

	* include/freetype/ftmodapi.h, include/freetype/ftglyph.h:
	Documentation updates.

	* include/freetype/freetype.h: Documentation update.
	(FT_HAS_FAST_GLYPHS): Always set to 0.

	* include/freetype/ftstroke.h, src/base/ftstroke.c (FT_Stroker_New):
	Take an FT_Library argument instead of FT_Memory.

	* src/sfnt/ttcmap.c: Remove compiler warnings (gcc-4.0.2).

2006-04-13  David Turner  <david@freetype.org>

	* src/autofit/afloader.c (af_loader_init, af_loader_load_g): Remove
	superfluous code in the auto-fitter's loader.

2006-04-05  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/makefile, builds/amiga/makefile.os4,
	builds/amiga/smakefile: Added FT2_BUILD_LIBRARY define.

2006-04-03  luoyi  <luoyi.ly@gmail.com>

	* builds/compiler/intelc.mk (TE): New variable.
	(ANSIFLAGS): Updated.

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

	* builds/exports.mk (clean_symbols_list, clean_apinames): Removed.
	(CLEAN): Add $(EXPORTS_LIST) and $(APINAMES_EXE).
	(.PHONY): Updated.

	* configure.ac: Minor fixes to improve --help output.


	* docs/PROBLEMS: New file.

2006-04-01  David Turner  <david@freetype.org>

	* docs/CHANGES: Updated.

	* include/freetype/ftcache.h, include/freetype/config/ftheader.h:
	Update documentation comments.

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

	* builds/unix/install.mk (uninstall): Don't handle `cache'
	directory which no longer exists.

2006-03-29  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* src/psaux/psconv.c: Changed some variables which are expected to
	hold negative values from `char' to `FT_Char' to allow building with
	a compiler where `char' is unsigned by default.

2006-03-27  David Turner  <david@freetype.org>

	* src/sfnt/ttkern.c (tt_face_get_kerning): Fix a serious bug that
	causes some programs to go into an infinite loop when dealing with
	fonts that don't have a properly sorted kerning sub-table.

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

	* src/bdf/bdflib.c (ERRMSG4): New macro.
	(_bdf_parse_glyphs): Handle invalid BBX values.

	* include/freetype/fterrdef.h (FT_Err_Bbx_Too_Big): New error
	macro.

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

	* docs/CHANGES: Updated.


	* src/tools/docmaker/tohtml.py (html_header_2): Add horizontal
	padding between table elements.
	(html_header_1): The `DOCTYPE' comment must be in uppercase.
	(make_html_para): Convert `...' quotations into real left and
	right single quotes.
	Use `para_header' and `para_footer'.

	* src/tools/docmaker/sources.py (re_bold, re_italic): Accept "'"
	also.

2006-03-23  David Turner <david@freetype.org>

	Add FT_Get_SubGlyph_Info API to retrieve subglyph data.  Note that
	we do not expose the FT_SubGlyphRec structure.

	* include/freetype/internal/ftgloadr.h (FT_SUBGLYPH_FLAGS_*): Moved
	to...
	* include/freetype/freetype.h (FT_SUBGLYPH_FLAGS_*): Here.
	(FT_Get_SybGlyph_Info): New declaration.

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


	* src/autofit/afloader.c (af_loader_load_g): Compute lsb_delta and
	rsb_delta correctly in edge cases.

2006-03-22  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftccache.c, (ftc_node_mru_up, FTC_Cache_Lookup)
	[!FTC_INLINE]: Compile conditionally.
	* src/cache/ftccache.h: Updated.

	* src/cache/ftcglyph.c (FTC_GNode_Init, FTC_GNode_UnselectFamily,
	FTC_GNode_Done, FTC_GNode_Compare, FTC_Family_Init, FTC_GCache_New):
	s/FT_EXPORT/FT_LOCAL/.
	(FTC_GCache_Init, FTC_GCache_Done): Commented out.
	(FTC_GCache_Lookup) [!FTC_INLINE]: Compile conditionally.
	s/FT_EXPORT/FT_LOCAL/.
	* src/cache/ftcglyph.h: Updated.

	* src/cache/ftcimage.c (FTC_INode_Free, FTC_INode_New):
	s/FT_EXPORT/FT_LOCAL/.
	(FTC_INode_Weight): Commented out.
	* src/cache/ftcimage.h: Updated.

	* src/cache/ftmanag.c (FTC_Manager_Compress,
	FTC_Manager_RegisterCache, FTC_Manager_FlushN):
	s/FT_EXPORT/FT_LOCAL/.
	* src/cache/ftmanag.h: Updated.

	* src/cache/ftcsbits.c (FTC_SNode_Free, FTC_SNode_New,
	FTC_SNode_Compare): s/FT_EXPORT/FT_LOCAL/.
	(FTC_SNode_Weight): Commented out.
	* src/cache/ftcsbits.h: Updated.

2006-03-22  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftccache.c, src/cache/ftccache.h (FTC_Node_Destroy):
	Remove, unused.

	* src/cache/ftccmap.h: Remove, unused.

	* src/cache/rules.mk (CACHE_DRV_H): Remove ftccmap.h.

2006-03-21  Zhe Su  <james.su@gmail.com>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Improve
	algorithm.

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

	* src/cff/cfftypes.h (CFF_CharsetRec): Add `max_cid' member.

	* src/cff/cffload.c (cff_charset_load): Set `charset->max_cid'.

	* src/cff/cffgload.c (cff_slot_load): Change type of third parameter
	to `FT_UInt'.
	Check range of `glyph_index'.
	* src/cff/cffgload.h: Updated.


	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Handle invalid offset
	correctly.


	* builds/freetype.mk (refdoc), docs/CHANGES, Jamfile (RefDoc),
	README: s/2.1.10/2.2/.

2006-03-21  David Turner  <david@freetype.org>

	* src/autofit/aflatin.c (af_latin_metrics_scale): Fix small bug
	that crashes the auto-hinter (introduced by previous patch).

2006-03-20  Werner Lemberg  <wl@gnu.org>

	* builds/freetype.mk (CACHE_DIR, CACHE_H): Remove.
	(FREETYPE_H): Updated.

	* src/cache/rules.mk (CACHE_H_DIR): Remove.
	(CACHE_DRV_H): Updated.

2006-03-20  David Turner  <david@freetype.org>

	* include/freetype/cache/ftccache.h,
	include/freetype/cache/ftccmap.h, include/freetype/cache/ftcglyph.h
	include/freetype/cache/ftcimage.h include/freetype/cache/ftcmanag.h
	include/freetype/cache/ftcmru.h include/freetype/cache/ftcsbits.h:
	Move to...

	* src/cache/ftccache.h, src/cache/ftcglyph.h, src/cache/ftcimage.h,
	src/cache/ftcsbits.h, src/cache/ftcmanag.h, src/cache/ftccmap.h,
	src/cache/ftcmru.h: This new location.
	Update declarations according to the changes in the corresponding
	source files.

	Note that these files are not used by FreeType clients; all public
	APIs of the cache module have been already moved to
	`include/freetype/ftcache.h', and all FT_CACHE_INTERNAL_XXXX_H
	macros resolve to it.

	Reason for the move is to allow modifications of the internals
	without interferences with rogue clients.  Note that there are no
	known clients that access the cache internals at the moment.

	* builds/unix/install.mk (install): Don't install headers from
	$(CACHE_H).
	Remove `freetype/cache' from the target directory.

	* include/freetype/config/ftheader.h (FT_CACHE_MANAGER_H,
	FT_CACHE_INTERNAL_MRU_H, FT_CACHE_INTERNAL_MANAGER_H,
	FT_CACHE_INTERNAL_CACHE_H, FT_CACHE_INTERNAL_GLYPH_H,
	FT_CACHE_INTERNAL_IMAGE_H, FT_CACHE_INTERNAL_SBITS_H): Point to
	FT_CACHE_H.

	* src/cache/ftcbasic.c, src/cache/ftccache.h, src/cache/ftccback.h,
	src/cache/ftccmap.c, src/cache/ftcglyph.c, src/cache/ftcglyph.h,
	src/cache/ftcimage.c, src/cache/ftcimage.h, src/cache/ftcmanag.c,
	src/cache/ftcmanag.h, src/cache/ftcmru.h, src/cache/ftcsbits.c,
	src/cache/ftcsbits.h: Don't use the FT_CACHE_INTERNAL_XXX_H macros
	but include the headers directly (which are now in `src/cache').

	* src/cache/ftccache.c:  Don't use the FT_CACHE_INTERNAL_XXX_H
	macros but include the headers directly.
	(FTC_Cache_Init, FTC_Cache_Done, FTC_Cache_NewNode,
	FTC_Cache_Lookup, FTC_Cache_RemoveFaceID): Declare as FT_LOCAL_DEF.

	* src/cache/ftccache.c:  Don't use the FT_CACHE_INTERNAL_XXX_H
	macros but include the headers directly.
	(FTC_MruNode_Prepend, FTC_MruNode_Up, FTC_MruNode_Remove,
	FTC_MruList_Init, FTC_MruList_Reset, FTC_MruList_Done,
	FTC_MruList_New, FTC_MruList_Remove, FTC_MruList_RemoveSelection):
	Declare as FT_LOCAL_DEF.
	(FTC_MruListFind, FTC_MruList_Lookup) [!FTC_INLINE]: Compile
	conditionally.
	Declare as FT_LOCAL_DEF.


	* builds/win32/visualc/freetype.dsp: Update project file, add
	missing base source files (ftstroke.c, ftxf86.c, etc.).


	* src/autofit/afcjk.c, src/autofit/aflatin.c, src/base/ftobjs.c,
	src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrobjs.c,
	src/sfnt/sfobjs.c, src/sfnt/ttmtx.c, src/type1/t1afm.c,
	src/type1/t1objs.c: Remove compiler warnings when building with
	Visual C++ 6 and /W4.

	* src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal
	hinting for italic/oblique fonts.



	* src/truetype/ttpload.c, src/truetype/ttpload.h
	(tt_face_get_device_metrics): Change second argument to `FT_UInt'.

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

	* src/cache/ftcmanag.c (FTC_Manager_Lookup_Size): Prevent crashes in
	Mozilla/FireFox print preview in Ubuntu Hoary.

2006-02-28  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftutil.c (ft_mem_qalloc) [FT_STRICT_ALIASING]: Do not
	return error when size == 0.

2006-02-28  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftobjs.c (FT_Done_Library): Remove modules in reverse
	order so that type42 module is removed before truetype module.  This
	avoids double free in some occasions.

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

	* Release candidate VER-2-2-0-RC4.
	----------------------------------

	* docs/CHANGES: Documentation updates.

2006-02-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to
	build ftvalid in ft2demos.  It works as dummy ABI if gxvalid is not
	built.

2006-02-27  Werner Lemberg  <wl@gnu.org>

	* include/freetype/cache/ftccache.h
	[FT_CONFIG_OPTION_OLD_INTERNALS]: Remove declaration of
	ftc_node_done.

	* src/cache/ftccache.c (ftc_node_destroy)
	[!FT_CONFIG_OPTION_OLD_INTERNALS]: Mark as FT_LOCAL_DEF.  This
	should now fix all possible compilation options.

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

	* src/base/ftutil.c (ft_mem_alloc, ft_mem_qalloc, ft_mem_realloc,
	ft_mem_qrealloc): Return an error if a negative size is passed in
	parameters.

	* src/cache/ftccache.c (ftc_node_destroy): Mark as FT_BASE_DEF since
	it needs to be exported for rogue clients.

	* src/pshinter/pshglob.c (psh_blues_set_zones_0): Prevent problems
	with malformed fonts which have an odd number of blue values (these
	are broken according to the specs).

	* src/cff/cffload.c (cff_subfont_load), src/type1/t1load.c
	(T1_Open_Face): Modify the loaders to force even-ness of
	`num_blue_values'.

	(cff_index_access_element): Ignore invalid entries in index files.

2006-02-27  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftobjs.c (FT_Set_Char_Size): Check the case where width
	or height is 0.

2006-02-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/mac/FreeType.m68k_cfm.make.txt,
	builds/mac/FreeType.m68k_far.make.txt,
	builds/mac/FreeType.ppc_carbon.make.txt,
	builds/mac/FreeType.ppc_classic.make.txt: Update to new header
	inclusion introduced on 2006-02-16.

2006-02-27  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftobjs.c (GRID_FIT_METRICS): New macro.
	(ft_glyphslot_grid_fit_metrics, FT_Load_Glyph) [GRID_FIT_METRICS]:
	Re-enable glyph metrics grid-fitting.  It is now done in the base
	layer.
	(FT_Set_Char_Size, FT_Set_Pixel_Sizes): Make sure the width and
	height are not too small or too large, just like we were doing in
	2.1.10.

	* src/autofit/afloader.c (af_loader_load_g): The vertical metrics
	are not scaled.

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

	* docs/release: Minor additions and clarifications.

	* docs/CHANGES: Updated to reflect many fixes for backwards
	compatibility.  Still incomplete.

2006-02-26  David Turner  <david@freetype.org>

	* src/base/ftobjs.c (ft_recompute_scaled_metrics): Re-enable
	conservative rounding of metrics to avoid breaking clients like
	Pango (see http://bugzilla.gnome.org/show_bug.cgi?id=327852).

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

	* devel/ftoption.h: Synchronize with
	include/freetype/config/ftoption.h.

	* src/cache/ftccache.c (ftc_node_destroy): Use FT_LOCAL_DEF (again).

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

	Fix compiler warnings as well as C++ compilation problems.
	Add missing prototypes.

	* src/autofit/afcjk.c, src/base/ftobjs.c, src/base/ftutil.c,
	src/bdf/bdfdrivr.c, src/cff/cffcmap.c, src/cff/cffobjs.c,
	src/psaux/afmparse.c,, src/psaux/t1cmap.c, src/smooth/ftgrays.c
	src/tools/apinames.c, src/truetype/ttdriver.c: Add various casts,
	initialize variables, and decorate functions with FT_CALLBACK_DEF,
	etc., to fix compiler warnings (and C++ compiling errors).

	* src/cache/ftcbasic.c: Fix `-Wmissing-prototypes' warnings with
	gcc.

	* builds/unix/ftsystem.c: Don't include FT_INTERNAL_OBJECTS_H but
	FT_INTERNAL_STREAM_H.

	* src/base/ftsystem.c: Include FT_INTERNAL_STREAM_H.

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

	* include/freetype/config/ftoption.h (FT_STRICT_ALIASING): Don't
	define for C++.

	* include/freetype/internal/services/svotval.h: Don't include
	FT_OPENTYPE_VALIDATE_H but FT_INTERNAL_VALIDATE_H.

	* include/freetype/internal/services/svpfr.h: Include FT_PFR_H.

	* src/gzip/ftgzip.c: Include FT_GZIP_H.

	* src/lzw/ftlzw.c, src/lzw/ftlzw2.c: Include FT_LZW_H.

	* src/sfnt/ttbdf.c (tt_face_load_bdf_props): Rearrange code.

2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftoutln.c (FT_OUTLINE_GET_CONTOUR, ft_contour_has,
	ft_contour_enclosed, ft_outline_get_orientation): Commented out.  We
	have to wait until `FT_GlyphSlot_Own_Bitmap' is stabilized.
	(FT_Outline_Embolden): Use `FT_Outline_Get_Orientation'.

2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>

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

	* include/freetype/ftsynth.h (FT_GlyphSlot_Own_Bitmap),
	src/base/ftsynth.c (FT_GlyphSlot_Own_Bitmap): New function to make
	sure a glyph slot owns its bitmap.  It is also marked experimental
	and due to change.
	(FT_GlyphSlot_Embolden): Undo the last change.  It turns out that
	rendering the outline confuses some applications.

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

	* Release candidate VER-2-2-0-RC3.
	----------------------------------

	* src/cache/ftcbasic.c: Correct compatibility hack bug.

2006-02-24  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/freetype.h (FT_Size_RequestRec): Change the type
	of `width' and `height' to `FT_Long'.
	(enum FT_Size_Request_Type), src/base/ftobjs.c (FT_Request_Metrics):
	New request type `FT_SIZE_REQUEST_TYPE_SCALES' to specify the scales
	directly.

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

	Two BDF patches from Debian libfreetype6 for 2.1.10.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a bug with zero-width
	glyphs.
	Fix a problem with large encodings.


	Fix binary compatibility issues for gnustep-back (GNUstep backend
	module) which still crashes under Sarge.

	* src/cache/ftccmap.c (FTC_OldCMapType, FTC_OldCMapIdRec,
	FTC_OldCMapDesc) [FT_CONFIG_OPTION_OLD_INTERNALS]: New data
	structures and enumerations.
	(FTC_CMapCache_Lookup) [FT_CONFIG_OPTION_OLD_INTERNALS]: New
	compatibility code.

	* src/cache/ftcbasic.c: Fix a silly bug that prevented our `hack' to
	support rogue clients compiled against 2.1.7 to work correctly.
	This probably explains the GNUstep crashes with the second release
	candidate.

2006-02-23  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/ftoutln.h (enum FT_Orientation): New value
	`FT_ORIENTATION_NONE'.

	* src/base/ftoutln.c (FT_OUTLINE_GET_CONTOUR, ft_contour_has,
	ft_contour_enclosed, ft_outline_get_orientation): Another version of
	`FT_Outline_Get_Orientation'.  This version differs from the public
	one in that each part (contour not enclosed in another contour) of the
	outline is checked for orientation.
	(FT_Outline_Embolden): Use `ft_outline_get_orientation'.

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Render the outline and
	use bitmap's embolden routine when the outline one failed.

2006-02-22  Chia-I Wu  <b90201047@ntu.edu.tw>

	* modules.cfg: Compile in ftotval.c and ftxf86.c by default for ABI
	compatibility.

	* src/sfnt/sfobjs.c (sfnt_done_face): Fix a memory leak.

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_bit_aligned,
	tt_sbit_decoder_load_byte_aligned) [FT_OPTIMIZE_MEMORY]: Fix sbit
	loading.  (Only tested with bit aligned sbit with x_pos == 0.)

	* src/truetype/ttpload.c (tt_face_load_hdmx,
	tt_face_get_device_metrics) [FT_OPTIMIZE_MEMORY]: `hdmx' is not
	actually used.

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

	Add a new API named FT_Get_TrueType_Engine_Type to determine whether
	we have a patented, unpatented, or unimplemented TrueType bytecode
	interpreter.

	The FT_Get_Module_Flags API was removed consequently.

	* include/freetype/ftmodapi.h (FT_Module_Get_Flags): Removed.
	Replaced with...
	(FT_Get_TrueType_Engine_Type): This.
	(FT_TrueTypeEngineType): New enumeration.

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

	* src/base/ftobjs.c: Include FT_SERVICE_TRUETYPE_ENGINE_H.
	(FT_Module_Get_Flags): Removed.  Replaced with...
	(FT_Get_TrueType_Engine_Type): This.

	* src/truetype/ttdriver.c: Include FT_SERVICE_TRUETYPE_ENGINE_H.
	(tt_service_truetype_engine): New service structure.
	(tt_services): Register it.

	* include/freetype/internal/services/svtteng.h: New file.


	* src/sfnt/sfobjs.c (sfnt_load_face): Fix silly bug that prevented
	embedded bitmaps from being correctly listed and used.


	* src/sfnt/ttmtx.c (tt_face_load_hmtx): Disable memory optimization
	if FT_CONFIG_OPTION_OLD_INTERNALS is used.  The is necessary because
	libXfont is directly accessing the HMTX data, unfortunately.
	Fix some compiler warnings.
	(tt_face_get_metrics): Ditto.


	* src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix handling of
	character advances.

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

	Support binary compatibility with the X.Org server's Xfont library.
	Note that this change unfortunately prevents memory optimizations
	for the embedded bitmap loader.

	* include/freetype/internal/sfnt.h (SFNT_Interface): Move
	`set_sbit_strike' and `load_sbit_metrics' fields to the location of
	version 2.1.8.

	* src/sfnt/sfdriver.c (tt_face_set_sbit_strike_stub): Call
	FT_Size_Request.
	(sfnt_interface): Updated.

	* src/sfnt/ttsbit.c [FT_CONFIG_OPTION_OLD_INTERNALS]: Don't load
	ttsbit0.c.
	(tt_load_sbit_metrics): Make `sbit_small_metrics_fields' static.

	* src/sfnt/ttsbit.h: Updated.

2006-02-17  David Turner  <david@freetype.org>

	* builds/unix/unix-cc.in (LINK_LIBRARY): Don't filter out exported
	functions anymore.  This ensures that all FT_BASE internal functions
	are available for dynamic linking.

	* include/freetype/ftcache.h (FTC_IMAGE_TYPE_COMPARE,
	FTC_IMAGE_TYPE_HASH), src/cache/ftcbasic.c (FTC_OldFontRec,
	FTC_OldImageDescRec, FTC_ImageCache_Lookup, FTC_Image_Cache_New,
	FTC_OldImage_Desc, FTC_OLD_IMAGE_FORMAT, ftc_old_image_xxx,
	ftc_image_type_from_old_desc, FTC_Image_Cache_Lookup,
	FTC_SBitCache_Lookup, FTC_SBit_Cache_New, FTC_SBit_Cache_Lookup)
	[FT_CONFIG_OPTION_OLD_INTERNALS]: Try to revive old functions of the
	cache sub-system.  We try to recognize old legacy signatures with a
	gross hack (hope it works).

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

	* devel/ftoption.h: Synchronize with
	include/freetype/config/ftoption.h.

2006-02-16  David Turner  <david@freetype.org>

	Massive changes to the internals to respect the internal object
	layouts and exported functions of FreeType 2.1.7.  Note that the
	cache sub-system cannot be fully retrofitted, unfortunately.

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

	* include/freetype/ftcache.h, include/freetype/cache/ftccache.h,
	include/freetype/cache/ftccmap.h,
	include/freetype/internal/ftcalc.h,
	include/freetype/internal/ftdriver.h,
	include/freetype/internal/ftmemory.h,
	include/freetype/internal/ftobjs.h,
	include/freetype/internal/psaux.h, include/freetype/internal/sfnt.h,
	include/freetype/internal/t1types.h,
	include/freetype/internal/tttypes.h, src/base/ftcalc.c,
	src/base/ftdbgmem.c, src/base/ftobjs.c, src/base/ftutil.c,
	src/bdf/bdfdrivr.c, src/cache/ftccache.c, src/cache/ftccback.h,
	src/cache/ftcmanag.c, src/cff/cffdrivr.c, src/cid/cidriver.c,
	src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c, src/psaux/psauxmod.c,
	src/sfnt/sfdriver.c, src/truetype/ttdriver.c, src/type1/t1driver.c,
	src/type1/t1objs.c, src/type42/t42drivr.c, src/winfonts/winfnt.c:
	Use FT_CONFIG_OPTION_OLD_INTERNALS to revive old functions and data
	structures.

	Move newly added structure elements to the end of the affected
	structure and add stub fields (if FT_CONFIG_OPTION_OLD_INTERNALS is
	defined) to assure binary compatibility with older FreeType
	versions.
	Use FT_CONFIG_OPTION_OLD_INTERNALS to add function stubs for old
	functions:

	  ft_stub_set_char_sizes
	  ft_stub_set_pixel_sizes

	Rename the following internal functions to provide the old function
	names as stubs:

	  FT_Alloc          -> ft_mem_alloc
	  FT_QAlloc         -> ft_mem_qalloc
	  FT_Realloc        -> ft_mem_realloc
	  FT_QRealloc       -> ft_mem_qrealloc
	  FT_Free           -> ft_mem_free
	  FT_Alloc_Debug    -> ft_mem_alloc_debug
	  FT_QAlloc_Debug   -> ft_mem_qalloc_debug
	  FT_Realloc_Debug  -> ft_mem_realloc_debug
	  FT_QRealloc_Debug -> ft_mem_qrealloc_debug
	  FT_Free_Debug     -> ft_mem_free_debug

2006-02-15  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
	unused `max_points' and `max_contours'.

	* src/cid/cidobjs.c (cid_face_init), src/type1/t1objs.c
	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Update.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
	`max_components'.

	* src/truetype/ttinterp.h (TT_ExecContextRec): Remove unused
	`loadSize' and `loadStack'.

	* src/truetype/ttinterp.c (TT_Done_Context, TT_Load_Context),
	src/sfnt/ttload.c (tt_face_load_maxp): Update.

	* src/cff/cffobjs.h (cff_size_select), src/sfnt/sfdriver.c
	(sfnt_interface), src/truetype/ttdriver.c (tt_size_request): Fix
	compiler errors/warnings when TT_CONFIG_OPTION_EMBEDDED_BITMAPS is not
	defined.

	* src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics): Fix
	possible segment faults for the non-FT_OPTIMIZE_MEMORY'ed versions.
	(finally!)


	For most OpenType tables, `tt_face_load_xxxx' simply loads the table
	and `face->root' is set later in `sfnt_load_face'.  Here, we try to
	make this work for _all_ tables.  Also improve tracing messages.

	* src/sfnt/ttsbit.c, src/sfnt/ttsbit0.c, src/sfnt/ttload.c,
	src/sfnt/ttmtx.c: all `tt_face_load_xxxx' should load the table and
	then exit.  Error handling or setting face->root is done later in
	`sfnt_load_face'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Work harder.
	Mac bitmap-only fonts are not scalable.
	Check that `face->header.Units_Per_EM' is not zero.
	(LOAD_, LOADM_): Emit pretty trace messages.

	* src/sfnt/ttsbit0.c (tt_face_load_strike_metrics): Read metrics
	from `eblc'.

	* src/sfnt/ttcmap.c (tt_face_build_cmaps), src/sfnt/ttpost.c
	(load_format_20, load_format_25, tt_face_get_ps_name): Use
	face->max_profile.numGlyphs, instead of face->root.num_glyphs.

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

	* include/freetype/ftoutln.h (FT_Outline_Embolden): Mention in
	documentation that negative strength values are possible.
	Give an example call.

	* include/freetype/freetype.h (FT_GlyphSlotRec): Improve
	documentation of `outline' field.

	* src/sfnt/sfobjc.s: Inckude FT_INTERNAL_DEBUG_H.
	* src/sfnt/sfdriver.c: Include ttmtx.h.

	* src/autofit/afcjk.c: Include aftypes.h and aflatin.h.

2006-02-14  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.

2006-02-14  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/sfnt/ttmtx.c (tt_face_load_hhea, tt_face_load_hmtx): Simply
	return error if table is missing.
	Check table length in non-FT_OPTIMIZE_MEMORY'ed `tt_face_load_hmtx'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Take care of missing metrics
	tables.  The last change makes Mac bitmap-only font not load and
	this fixes it.

	* src/truetype/ttgload.c (load_truetype_glyph): Fix compilation
	error when FT_CONFIG_OPTION_INCREMENTAL is defined.

2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>

	Clean up the SFNT_Interface.  In this final pass, `load_hmtx' is
	split from `load_hhea'.

	* include/freetype/internal/sfnt.h, src/sfnt/sfdriver.c,
	src/sfnt/ttmtx.c, src/sfnt/ttmtx.h: Split `hmtx' from `hhea'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Update.

2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/sfnt/ttmtx.h, src/sfnt/ttmtx.c: Why are there two copies of
	code...

2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>

	Clean up the SFNT_Interface.  In this pass, we want to treat the
	font directory (offset table and table directory) as a normal table
	like the others.  This also means that TTCs are no longer recognized
	there but in `init_face'.

	* include/freetype/internal/sfnt.h (SFNT_Interface),
	src/sfnt/sfdriver.c: `load_sfnt_header' and `load_directory' are
	combined and renamed to `load_font_dir'.

	* src/sfnt/ttload.h, src/sfnt/ttload.c:
	s/sfnt_dir_check/check_table_dir/.
	`sfnt_init' is moved to sfobjs.c and renamed to `sfnt_open_font'.
	`tt_face_load_sfnt_header' and `tt_face_load_directory' are combined
	and renamed to `tt_face_load_font_dir'.

	* src/sfnt/sfobjs.c (sfnt_init_face): Recognize TTC here.

2006-02-13  Chia-I Wu  <b90201047@ntu.edu.tw>

	Clean up the SFNT_Interface.  Table loading functions are now named
	after the tables' tags; `hdmx' is TrueType-specific and thus the
	code is moved to the truetype module; `get_metrics' is moved here
	from the truetype module so that the code can be shared with the cff
	module.

	This pass involves no real changes.  That is, the code is moved
	verbatim mostly.  The only exception is the return value of
	`tt_face_get_metrics'.

	* include/freetype/internal/sfnt.h, src/sfnt/rules.mk,
	src/sfnt/sfdriver.c, src/sfnt/sfnt.c, src/sfnt/sfobjs.c,
	src/sfnt/ttload.c, src/sfnt/ttload.h, src/sfnt/ttsbit.c,
	src/sfnt/ttsbit.h, src/sfnt/ttsbit0.c: Clean up the SFNT_Interface.

	* src/sfnt/ttmtx.c, src/sfnt/ttmtx.h: New files.  Metrics-related
	tables' loading and parsing code is moved to here.
	Move `tt_face_get_metrics' here from the truetype module.  The
	return value is changed from `void' to `FT_Error'.

	* include/freetype/internal/fttrace.h: New trace: ttmtx.

	* src/truetype/ttpload.c, src/truetype/ttpload.h: `hdmx' loading and
	parsing code is moved here.
	New function `tt_face_load_prep' split from `tt_face_load_fpgm'.
	`tt_face_load_fpgm' returns `FT_Err_Ok' if `fpgm' doesn't exist.

	* src/cff/cffgload.c, src/cff/cffobjs.c: Update.

	* src/truetype/ttgload.c, src/truetype/ttobjs.c: Update.

2006-02-11  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/autofit/afcjk.c (af_cjk_metrics_init): Fix a stupid bug...

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Use
	AF_LatinMetricsRec as the dummy metrics because we cast the metrics
	to it later in `af_latin_hints_link_segments'.

2006-02-11  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/config/ftoption.h (AF_CONFIG_OPTION_CJK): #define
	to enable autofit CJK script support.  (#define'd by default.)

	* src/autofit/aflatin.h (AF_LATIN_CONSTANT): New macro.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Make sure
	that `edge_distance_threshold' is always set.
	(af_latin_hints_link_segments): Potential divide-by-zero bug.
	Use latin constant in the scoring formula.

	* src/autofit/afcjk.c: Minor updates due to the above three changes.

	* docs/TODO, docs/CHANGES: Updated.

2006-02-09  Chia-I Wu  <b90201047@ntu.edu.tw>

	Introduce experimental autofit CJK module based on akito's autohint
	patch.  You need to #define AF_MOD_CJK in afcjk.c to enable it.

	* src/autofit/afglobal.c, src/autofit/afcjk.h, src/autofit/afcjk.c,
	src/autofit/rules.mk, src/autofit/autofit.c, src/autofit/aftypes.h:
	Add CJK module based on akito's autohint patch.

	* src/autofit/afhints.h (AF_SegmentRec): New field `len' for the
	overlap length of the segments.
	(AF_SEGMENT_LEN, AF_SEGMENT_DIST): New macros.

	* src/autofit/aflatin.h (af_latin_metrics_init_widths),
	src/autofit/aflatin.c (af_latin_metrics_init_widths): Made
	`FT_LOCAL'.
	Use the character given by the caller.
	(af_latin_metrics_init_widths, af_latin_hints_link_segments): Scale
	the thresholds.

	* src/autofit/afloader.c (af_loader_load_g): Respect
	AF_SCALER_FLAG_NO_ADVANCE.

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

	* src/cid/cidparse.c (cid_parse_new): Remove shadowing variable.

2006-02-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/cid/cidparse.c (cid_parse_new): Fix for abnormally short or
	broken CIDFont.  Reported by Taek Kwan(TK) Lee (see ft-devel
	2005-11-02).

2006-02-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.ac: Fix bug for `--with-old-mac-fonts'
	option on UNIX platform.  It has been broken since 2006-01-11.

2006-02-01  Werner Lemberg  <wl@gnu.org>

	* src/otvalid/module.mk: s/otvalid_module_class/otv_module_class/.
	* src/gxvalid/module.mk: s/gxvalid_module_class/gxv_module_class/.

	* builds/unix/unixddef.mk: Actually do define PLATFORM (fixing
	change from 2006-01-31).
	(TOP_DIR, OBJ_DIR): Update.

	* builds/unix/install.mk (install): Fix path for ftmodule.h.

	* Makefile, *.mk, builds/unix/unix-cc.in, builds/unix-def.in: Use
	`?=' where appropriate.

	* builds/detect.mk (TOP_DIR), builds/os2/os2-dev.mk (TOP_DIR),
	builds/win32/w32-dev.mk (TOP_DIR): Removed.  Defined elsewhere.

2006-01-31  Werner Lemberg  <wl@gnu.org>

	Implement new, simplified module selection.  With GNU make it is now
	sufficient to modify a single file, `modules.cfg', to control the
	inclusion of modules and base extension files.

	This change also fixes the creation of ftmodule.h; it now depends on
	`modules.cfg' and thus is rebuilt only if necessary.

	Finally, a version of `ftoption.h' in OBJ_DIR is preferred over the
	default location.

	* modules.cfg: New file.

	* builds/freetype.mk: Don't include `modules.mk'.
	Include all `rules.mk' files as specified in `modules.cfg'.
	(FTOPTION_FLAG, FTOPTION_H): New variables.
	(FT_CFLAGS): Add macro definition for FT_CONFIG_MODULES_H.
	Add FTOPTION_FLAG.
	($(FT_INIT_OBJ)): Don't use FT_MODULE_LIST.
	(CONFIG_H): Add FTMODULE_H and FTOPTION_H.
	(INCLUDES): Add DEVEL_DIR.
	(INCLUDE_FLAGS, FTSYS_SRC, FTSYS_OBJ, FTDEBUG_SRC, FTDEBUG_OBJ,
	OBJ_M, OBJ_S): Use `:=', not `='.
	(remove_ftmodule_h): New phony target to delete `ftmodule.h'.
	(distclean): Add remove_ftmodule_h.

	* builds/modules.mk: (MODULE_LIST): Removed.
	(make_module_list, clean_module_list): Replace targets
	with...
	(FTMODULE_H_INIT, FTMODULE_H_CREATE, FTMODULE_H_DONE): New
	variables.  Reason for the change is that it is not possible to have
	a phony prerequisite which is run only if the target file must be
	rebuilt (phony prerequisites act like subroutines and are *always*
	executed).  We only want to rebuild `ftmodule.h' if `module.cfg' is
	changed.
	Update all callers.
	($FTMODULE_H)): Rule to create `ftmodule.h', depending on
	`modules.cfg'.

	* builds/toplevel.mk: Rewrite and simplify module handling.
	(MODULES_CFG, FTMODULE_H): New variables.
	Include MODULES_CFG.
	(MODULES): New variable to include all `module.mk' and `rules.mk'
	files.  We no longer use make's `wildcard' function for this.

	* Makefile (USE_MODULES): Remove.  Update all users.
	(OBJ_DIR): Define it here.

	* src/*/module.mk: Change

	    make_module_list: foo
	    foo: ...

	to

	    FTMODULE_H_COMMANDS += FOO
	    define FOO
	    ...
	    endef

	in all files.  `FTMODULE_H_COMMANDS' is used in `FTMODULE_H_CREATE'.

	* src/base/rules.mk (BASE_EXT_SRC): Use BASE_EXTENSIONS.

	* builds/unix/detect.mk (setup): Always execute `configure' script.
	(have_mk): Rename to...
	(have_Makefile): This.
	Don't use `strip' function.

	* builds/unix/unix.mk: Include `install.mk' only if BUILD_PROJECT is
	defined.
	(have_mk): Don't use `strip' function.
	Test for unix-def.mk in OBJ_DIR, not BUILD_DIR (and invert the test
	accordingly).

	* builds/unix/install.mk (install, uninstall): Handle `ftmodule.h'.

	* builds/os2/os2-dev.mk, builds/unix/unix-dev.mk,
	builds/win32/w32-bccd.mk, builds/win32/w32-dev.mk: Don't define
	BUILD_DIR but DEVEL_DIR for development header files.

	* builds/ansi/ansi-def.mk (TOP_DIR, OBJ_DIR),
	builds/beos/beos-def.mk (TOP_DIR, OBJ_DIR), builds/unix/unix-def.in
	(TOP_DIR, OBJ_DIR): Removed.  Defined elsewhere.

	* builds/dos/dos-def.mk (OBJ_DIR), builds/os2/os2-def.mk (OBJ_DIR),
	builds/win32/win32-def.mk (OBJ_DIR): Removed.  Defined elsewhere.

	* builds/unix/unixddef.mk: Don't define BUILD_DIR but DEVEL_DIR for
	development header files.
	Don't define PLATFORM.

	* configure: Copy `modules.cfg' to builddir if builddir != srcdir.
	Update snippet taken from autoconf's m4sh.m4 to current CVS version.
	Be more verbose.

	* include/freetype/config/ftmodule.h: Add comments -- this file is
	no longer used if FreeType is built with GNU make.

	* docs/CHANGES, docs/CUSTOMIZE, docs/INSTALL, docs/INSTALL.ANY,
	docs/INSTALL.GNU, docs/INSTALL.UNX: Document new build mechanism.
	Other minor updates.

	* modules.txt: Removed.  Contents included in `modules.cfg'.


	* include/freetype/internal/ftmemory.h (FT_QAlloc_Debug,
	FT_Free_Debug) [FT_STRICT_ALIASING]: Fix typos.

	* src/base/ftdbgmem.c (FT_Alloc_Debug, FT_Realloc_Debug,
	FT_QAlloc_Debug, FT_QRealloc_Debug, FT_Free_Debug)
	[FT_STRICT_ALIASING]: Implement.

2006-01-31  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
	(cid_face_init), src/pfr/pfrobjs.c (pfr_face_init),
	src/type1/t1objs.c (T1_Face_Init): Set face->height to MAX(1.2 *
	units_per_EM, ascender - descender).

2006-01-31  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/internal/t1types.h (AFM_FontInfo),
	src/psaux/afmparse.c, src/tools/test_afm.c: Read `FontBBox',
	`Ascender', and `Descender' from an AFM.

	* src/type1/t1afm.c (T1_Read_Metrics): Use the metrics from the AFM.

	* include/freetype/freetype.h (FT_FaceRec): Mention that fields may
	be changed after file attachment.

2006-01-28  Werner Lemberg  <wl@gnu.org>

	* src/*/module.mk (.PHONY): Add.

2006-01-27  Werner Lemberg  <wl@gnu.org>

	* README, docs/FTL.TXT: Fix email address for bug reports.
	Other minor formatting.

	* devel/ftoption.h: Synchronize with
	include/freetype/config/ftoption.h.

	* src/autofit/module.mk (add_autofit_module), src/bdf/module.mk
	(add_bdf_module), src/type42/module.mk (add_type42_driver): Fix
	whitespace.

	* src/smooth/module.mk (add_smooth_renderer): Add lcd and lcdv
	renderer classes.

2006-01-27  David Turner  <david@freetype.org>

	* builds/unix/configure.ac: Fix build problem on Cygwin.

	* builds/unix/install.mk (install): Don't install the internal
	headers, and remove existing ones if found in the target install
	directory.

	* src/autofit/afwarp.c: Add simple #ifdef to prevent compilation
	if the warp hinter isn't active (it shouldn't, still experimental).

	* Jamfile, include/freetype/config/ftmodule.h: Remove `gxvalid'
	and `otvalid' from the list of modules that are linked statically
	to a given FreeType library.  Functionality has been moved to the
	`ftvalid' CVS module.

	Note also that current Make-based build system still compiles the
	modules though.

	* include/freetype/config/ftoption.h (FT_STRICT_ALIASING): New macro
	which controls the definitions of the memory management functions to
	avoid warnings with recent versions of GCC.  This macro is only here
	to be disabled, in case we detect problems with the new scheme.

	NOTE: Disable macro to use the memory debugger -- this will be fixed
	      later!

	* include/freetype/internal/ftmemory.h, src/base/ftutil.c (FT_Alloc,
	FT_QAlloc, FT_Realloc, FT_QRealloc, FT_Free) [FT_STRICT_ALIASING]:
	New versions.


	* builds/win32/visualc/freetype.dsp: Updating project file to
	define FT2_BUILD_LIBRARY, and remove gxvalid + otvalid modules from
	compilation.


	* builds/freetype.mk (FT_CFLAGS), Jamfile (DEFINES): Define the
	macro FT2_BUILD_LIBRARY when compiling the library.

	* include/freetype/config/ftheader.h: Remove inclusions of internal
	headers except if the macro FT2_BUILD_LIBRARY is defined.


	* include/freetype/internal/psaux.h (AFM_KernPair, AFM_TrackKern,
	AFM_FontInfo): Move structure declarations to...
	* include/freetype/internal/t1types.h: This file.


	* (many files): Fix compiler warnings.
	Various minor reorganizations.


	* src/cff/cffload.c (cff_font_done): Don't free static array
	`subfonts'.

	* src/otvalid/otvcommn.c (otv_ClassDef_validate),
	src/otvalid/otvgpos.c (otv_x_sxy): Fix debugging information.


	Get rid of writable static variables (i.e., the string table) in
	afmparse, and fix compilation in FT2_MULTI mode.

	* src/psaux/afmparse.c: Include ft2build.h and FT_FREETYPE_H.
	(AFM_MAX_ARGUMENTS): Define...
	* src/psaux/afmparse.h: Here.
	* src/psaux/Jamfile (_sources): Add afmparse.

	* src/psaux/psconv.c: Include psconv.h.

	* src/type1/t1afm.c: Don't include FT_INTERNAL_TYPE1_TYPES_H but
	FT_INTERNAL_POSTSCRIPT_AUX_H.
	* src/type1/t1afm.h: Include FT_INTERNAL_TYPE1_TYPES_H.

2006-01-23  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/freetype.h (FT_Select_Size): Rename the second
	argument from `idx' to `strike_index'.
	(FT_Size_Request_Type): Add FT_SIZE_REQUEST_TYPE_MAX to the end of
	this enum.

	* include/freetype/internal/ftobjs.h (FT_REQUEST_WIDTH,
	FT_REQUEST_HEIGHT): New macros to get the width and height of a
	request, in fractional pixels.

	* include/freetype/internal/ftobjs.h (FT_Select_Metrics,
	FT_Request_Metrics), src/base/ftobjs.c (FT_Select_Metrics,
	FT_Request_Metrics): New base functions to set the font metrics.  They
	were part of FT_Select_Size/FT_Request_Size and are made independent
	functions so that metrics are not set again and again.

	* src/base/ftobjs.c (FT_Select_Size, FT_Request_Size): Metrics are set
	only when driver's size_select/size_request is NULL.  That is, drivers
	should set the metrics themselves.
	(FT_Match_Size): Round before matching.  This was what we did and it
	does cause some problems without rounding.

	* src/cff/cffobjs.c (cff_size_select), src/truetype/ttdriver.c
	(tt_size_select): Set the font metrics.
	s/index/strike_index/.
	The scaled metrics are always preferred over strikes' metrics, even
	when some strike is selected.  This is done because the strikes'
	metrics are not reliable, e.g., the sign of the descender is wrong for
	some fonts.

	* src/cff/cffobjs.c (cff_size_request), src/truetype/ttdriver.c
	(tt_size_request): Set the font metrics.
	Call cff_size_select/tt_size_select when some strike is matched.

	* src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/cid/cidobjs.c,
	src/pcf/pcfdrivr.c, src/truetype/ttdriver.c, src/type1/t1objs.c,
	src/type1/t1objs.h, src/type42/t42objs.c, src/winfonts/winfnt.c:
	Set the font metrics.
	s/index/strike_index/.

	* src/tools/test_afm.c, src/psaux/psconv.c: Older versions of these
	files were committed.  Just a catch-up.
	(PS_Conv_ToFixed): Remove the `goto'.
	(PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Speed up a little.

	* src/sfnt/ttsbit.c (tt_face_load_sbit_strikes,
	tt_face_load_strike_metrics), src/sfnt/ttsbit0.c
	(tt_face_load_sbit_strikes, tt_face_load_strike_metrics): The
	advertised metrics in `available_sizes' are different from those
	actually used.

2006-01-23  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/psaux/psaux.c src/psaux/psauxmod.c src/type1/t1driver.c: Make
	AFM parser optional, controlled by `T1_CONFIG_OPTION_NO_AFM'.

2006-01-22  Werner Lemberg  <wl@gnu.org>

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

2006-01-21  Werner Lemberg  <wl@gnu.org>

	* src/autofit/rules.mk (AUTOF_DRV_SRC): Add afwarp.c.

	* src/autofit/afloader.c (af_loader_load_g): Move AF_USE_WARPER up
	to avoid compiler warnings.

	* src/autofit/afwarp.c (af_warper_compute_line_best): Remove
	shadowing variable declarations.
	Fix warning parameters and replace printf with AF_LOG.
	(af_warper_compute): Remove unused variable.

2006-01-20  David Turner  <david@freetype.org>

	Adding experimental implementation of `warp hinting' (new hinting
	algorithm for gray-level and LCD rendering).  It is disabled by
	default, you need to #define AF_USE_WARPER in aftypes.h.

	* src/autofit/afhints.c (af_glyph_hints_scale_dim) [AF_USE_WARPER]:
	New function.
	* src/autofit/afhints.h: Updated.

	* src/autofit/aflatin.c [AF_USE_WARPER]: Include afwarp.h.
	(af_latin_hints_init) [AF_USE_WARPER]: Reset mode to
	FT_RENDER_MODE_NORMAL if an LCD mode is selected.
	(af_latin_hints_apply) [AF_USE_WARPER]: Call af_warper_compute
	appropriately.

	* src/autofit/afloader.c (af_loader_load_g) [!AF_USER_WARPER]:
	Isolate code for adjusting metrics.

	* src/autofit/aftypes.h (AF_USE_WARPER): New macro (commented out by
	default).

	* src/autofit/afwarp.c, src/autofit/afwarp.h: New files.

	* src/autofit/autofit.c [AF_USE_WARPER]: Include afwarp.c.

	* src/autofit/Jamfile (_sources): Add afwarp.

2006-01-19  David Turner  <david@freetype.org>

	* src/sfnt/ttsbit0.c (tt_face_load_strike_metrics): Fix small bug
	that prevented compilation when FT_OPTIMIZE_MEMORY is defined.

2006-01-19  Brian Weed  <bw@imaginengine.com>

	* builds/win32/visualc/freetype.dsp: Updated.

2006-01-17  Werner Lemberg  <wl@gnu.org>

	Use pscmap service in CFF module.

	* src/cff/cffcmap.c (cff_cmap_uni_pair_compare): Removed.
	(cff_sid_to_glyph_name): New function.
	(cff_cmap_unicode_init, cff_cmap_unicode_done,
	cff_cmap_unicode_char_index, cff_cmap_unicode_char next): Use pscmap
	service.
	(cff_cmap_unicode_class_rec): Updated.
	* src/cff/cffcmap.h (CFF_CMapUnicode, CFF_CMap_UniPair): Removed.


	* src/psnames/psmodule.c (ps_unicodes_char_next): Fix `unicode'
	return value.


	* src/psaux/afmparse.c (afm_parser_read_vals): Use double casting
	to avoid compiler warnings regarding type-punning.

2006-01-16  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/psaux/afmparse.c, src/psaux/afmparse.h: New files which
	implement an AFM parser.

	* src/psaux/psconv.c, src/psaux/psconv.h: New files to provide
	conversion functions (e.g., PS real number => FT_Fixed) for the
	PS_Parser and AFM_Parser.  Some of the functions are taken, with
	some modifications, from the file psobjs.c.

	* src/psaux/psobjs.c: Use functions from psconv.c.

	* include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Add
	`AFM_Parser' to the `psaux' service.

	* src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Include
	those new files.

	* src/tools/test_afm.c: A test program for AFM parser.

	* include/freetype/internal/services/svkern.h: New file providing a
	`Kerning' service.  It is currently only used to get the track
	kerning information.

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

	* src/type1/t1driver.c, src/type1/t1objs.c, src/type1/t1afm.c,
	src/type1/t1afm.h: Update to use the AFM parser.
	Provide the `Kerning' service.

	* include/freetype/freetype.h, src/base/ftobjs.c: New API
	`FT_Get_Track_Kerning'.

2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/internal/ftobjs.h, src/base/ftobjs.c,
	src/bdf/bdfdrivr.c, src/cff/cffgload.c, src/cid/cidgload.c,
	src/pcf/pcfdrivr.c, src/type1/t1gload.c, src/winfonts/winfnt.c:
	s/ft_fake_vertical_metrics/ft_synthesize_vertical_metrics/.

	* docs/CHANGES: Mention that vertical metrics are synthesized for
	fonts not having this info.

2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/internal/ftobjs.h (ft_fake_vertical_metrics),
	src/base/ftobjs.c (ft_fake_vertical_metrics): New function to fake
	vertical metrics.

	* src/cff/cffgload.c, src/cid/cidgload.c, src/pcf/pcfdrivr.c,
	src/type1/t1gload.c, src/winfonts/winfnt.c: Fake vertical metrics,
	which are monotone.

	* src/truetype/ttgload.c (compute_glyph_metrics): Some fixes and
	formattings in vertical metrics faking.  There is still room for
	improvements (and so does the CFF module).

2006-01-15  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/pcf/pcfdrivr.c
	(PCF_Glyph_Load), src/winfonts/winfnt.c (FNT_Load_Glyph): Don't set
	the linear advance fields as they are only used by the outline
	glyphs.

	* include/freetype/freetype.h: Documentation updates and
	clarifications.
	The meaning of FT_LOAD_FORCE_AUTOHINT is changed so that no real
	change need be made to the code.

	* src/base/ftobjs.c (FT_Load_Glyph): Resolve flag dependencies and
	decide whether to use the auto-hinter according to documentation.
	There should to be no real difference.
	Some checks (e.g., is text height positve?) after the glyph is
	loaded.
	(FT_Select_Size, FT_Request_Size): Scales are set to wrong values.
	Be careful that scales won't be negative.

2006-01-14  Chia-I Wu  <b90201047@ntu.edu.tw>

	* docs/CHANGES: Mention the size selection change.

	* src/bdf/bdfdrivr.c (BDF_Size_Request, BDF_Size_Select),
	src/pcf/pcfdrivr.c (PCF_Size_Request, PCF_Size_Select),
	src/winfonts/winfnt.c (FNT_Size_Request, FNT_Size_Select): Do size
	matching for requests of type NOMINAL and REAL_DIM.

	* src/winfonts/winfnt.c (FNT_Face_Init): Print trace message when
	`pixel_height' is used for nominal height.

	* src/base/ftobjs.c (FT_Request_Size): Call `FT_Match_Size' if the
	face is bitmap only and driver doesn't provide `request_size'.  This
	is added merely for completion as no driver satisfies the conditions.

2006-01-13  Chia-I Wu  <b90201047@ntu.edu.tw>

	Introduce new size selection interface.

	* include/freetype/internal/ftdriver.h (struct FT_Driver_ClassRec):
	Replace `set_char_sizes' and `set_pixel_sizes' by `request_size' and
	`select_size'.

	* include/freetype/freetype.h (FT_Select_Size, FT_Size_Request_Type,
	FT_Size_Request, FT_Request_Size, FT_Select_Size), src/base/ftobjs.c
	(FT_Select_Size, FT_Request_Size): API additions to export the new
	size selection interface.

	* src/base/ftobjs.c (FT_Set_Char_Size, FT_Set_Pixel_Sizes): Use
	`FT_Request_Size'.

	* include/freetype/internal/ftobjs.h (FT_Match_Size),
	src/base/ftobjs.c (FT_Match_Size): New function to match a size
	request against `available_sizes'.  Drivers supporting bitmap strikes
	can use this function to implement `request_size'.

	* src/bdf/bdfdrivr.c, src/cid/cidobjs.c, src/cid/cidobjs.h,
	src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/type1/t1driver.c,
	src/type1/t1objs.c, src/type1/t1objs.h, src/type42/t42drivr.c,
	src/type42/t42objs.c, src/type42/t42objs.h, src/winfonts/winfnt.c:
	Update to new size selection interface.

	* src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffobjs.c,
	src/cff/cffobjs.h, src/truetype/ttdriver.c, src/truetype/ttgload.c,
	src/truetype/ttobjs.c, src/truetype/ttobjs.h: Update to new size
	selection interface.
	Make `strike_index' FT_ULong and always defined.
	Use `load_strike_metrics' provided by SFNT interface.

2006-01-13  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/internal/sfnt.h (SFNT_Interface): New method
	`load_strike_metrics' used to load the strike's metrics.

	* src/sfnt/sfdriver.c, src/sfnt/ttsbit.c, src/sfnt/ttsbit.h,
	src/sfnt/ttsbit0.c: New function `tt_face_load_strike_metrics'.

	* src/pfr/pfrobjs.c (pfr_face_init): Set FT_Bitmap_Size correctly.

	* src/winfonts/winfnt.c (FNT_Face_Init): Use `nominal_point_size' for
	nominal size unless it is obviously incorrect.

	* include/freetype/freetype.h (FT_Bitmap_Size): Update the comments on
	FNT driver.

2006-01-12  Werner Lemberg  <wl@gnu.org>

	Prepare use of pscmap service within CFF module.

	* include/freetype/internal/services/svpscmap.h: Include
	FT_INTERNAL_OBJECTS_H.
	(PS_Unicode_Index_Func): Removed.  Unused.
	(PS_Macintosh_Name_Func): Renamed to...
	(PS_Macintosh_NameFunc): This.
	Update all callers.
	(PS_Adobe_Std_Strings_Func): Renamed to...
	(PS_Adobe_Std_StringsFunc): This.
	Update all callers.
	(PS_UnicodesRec): This is the former `PS_Unicodes' structure.
	Add `cmap' member.
	Update all callers.
	(PS_Unicodes): This is now a typedef'd pointer to PS_UnicodesRec.
	Update all callers.
	(PS_Glyph_NameFunc): New typedef.
	(PS_Unicodes_InitFunc): Change arguments to expect a function
	and generic data pointer which returns a glyph name from a given
	index.

	* src/psnames/psmodule.c (ps_unicodes_init, ps_unicodes_char_index,
	ps_unicodes_char_next, pscmaps_interface): Updated.

	* include/freetype/internal/t1types.h (T1_FaceRec): Updated.

	* src/psaux/t1cmap.h (T1_CmapStdRec): Updated.
	(T1_CmapUnicode, T1_CmapUnicodeRec): Removed.

	* src/psaux/t1cmap.c (t1_get_glyph_name): New callback function.
	(t1_cmap_unicode_init, t1_cmap_unicode_done,
	t1_cmap_unicode_char_index, t1_cmap_unicode_char_next,
	t1_cmap_unicode_class_rec): Updated.

	* src/type42/t42types.h (T42_FaceRec): Updated.

2006-01-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/ftmac.h: Add declaration of new functions
	FT_New_Face_From_FSRef and FT_GetFile_From_Mac_ATS_Name that
	were introduced by the jumbo patch on  2006-01-11.

2006-01-11  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #15056 and use pscmap service in psaux module.

	* include/freetype/internal/services/svpscmap.h (PS_UniMap): Use
	FT_UInt32 for `glyph_index'.
	(PS_Unicodes_InitFunc): Use FT_String for `glyph_names'.
	(PS_Unicodes_CharIndexFunc): Use FT_UInt32 for `unicode'.
	(PS_Unicodes_CharNextFunc): Make second argument a pointer to
	FT_UInt32.

	* src/psnames/psmodule.c (VARIANT_BIT, BASE_GLYPH): New macros.
	(ps_unicode_value): Set VARIANT_BIT in return value if glyph is a
	variant glyph (this is, it has non-leading `.' in its name).
	(compare_uni_maps): Sort base glyphs before variant glyphs.
	(ps_unicodes_init): Use FT_String for `glyph_names' argument.
	Reallocate only if number of used entries is much smaller.
	Updated to handle variant glyphs.
	(ps_unicodes_char_index, ps_unicodes_char_next): Prefer base glyphs
	over variant glyphs.
	Simplify code.

	* src/psaux/t1cmap.c (t1_cmap_uni_pair_compare): Removed.
	(t1_cmap_unicode_init, t1_cmap_unicode_char_index,
	t1_cmap_unicode_char_next): Use pscmap service.
	(t1_cmap_unicode_done): Updated.

	* src/psaux/t1cmap.h (T1_CMapUniPair): Removed.
	(T1_CMapUnicode): Use PS_Unicodes structure.

2006-01-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Jumbo patch to fix `deprecated' warning of cross-build for Tiger on
	Intel, as reported by Sean McBride <sean@rogue-research.com> on
	2005-08-24.

	* src/base/ftmac.c: Heavy change to build without deprecated Carbon
	functions on Tiger.

	* builds/unix/configure.ac: Add options and autochecks for Carbon
	functions availabilities, for MacOS X.

	* builds/mac/ascii2mpw.py: Add converter for character `\305'.
	* builds/mac/FreeType.m68k_{far|cfm}.make.txt: Add conditional
	macros to avoid unavailable functions.
	ftmac.c must be compiled without `-strict ansi', because it disables
	cpp macro to use ToolBox system call.

	* builds/mac/FreeType.ppc_{classic|carbon}.make.txt: Add conditional
	macros to avoid unavailable functions.

	* builds/mac/README: Detailed notes on function availabilities.

	* docs/CHANGES: Notes about (possible) incompatibilities.

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

	* docs/CHANGES: Updated.

2006-01-08  Huw D M Davies  <h.davies1@physics.ox.ac.uk>

	* include/freetype/ftmodapi.h (FT_Module_Get_Flags): New
	declaration.

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

2006-01-07  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_bitmaps): Remove unused variable
	`bitmaps'.  Reported by Yu Lei <yulei0@gmail.com>.

	* src/base/ftutil.c (ft_highpow2): s/FT_BASE/FT_BASE_DEF/.
	Reported by Niels Boldt <nielsboldt@gmail.com>.

2005-12-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/sfnt/sfnt/ttbdf.c: Add newline '\n' to the end of file, for
	MPW compiler.

2005-12-23  David Turner  <david@freetype.org>

	* Jamfile (RefDoc), docs/reference/README: Fix it so that `jam
	refdoc' works correctly to generate the API reference in
	`docs/reference'.

	* src/tools/docmaker/tohtml.py (print_html_field,
	print_html_field_list): Update to output nicer fields lists in the
	API reference.

	* src/base/ftobjs.c (FT_Load_Glyph): FT_LOAD_TARGET_LIGHT now
	forces auto-hinting.

	* freetype/freetype.h: Updating the documentation for
	FT_LOAD_TARGET_XXX and FT_Render_Mode values.

2005-12-23  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (FT_New_Face_From_Suitcase): Count scalable faces
	in supported formats (sfnt, LWFN) only, and ignore bitmap faces in
	unsupported formats (fbit, NFNT).  The number of available faces are
	passed via face->num_faces.  If bitmap faces are embedded in sfnt
	resource, face->num_fixed_size is correctly set.  In public API,
	FT_New_Face() and FT_New_Face_From_FSSpec() count the faces as
	FT_GetFile_From_Mac_Name(), which ignores NFNT resources.

	* doc/CHANGES: Mention the changes.

2005-12-17  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/truetype/ttinterp.c (Update_Max): Set current size of buffer
	correctly (so that memory debug system won't panic).

2005-12-16  Chia-I Wu  <b90201047@ntu.edu.tw>

	* include/freetype/internal/ftobjs.h (ft_glyphslot_grid_fit_metrics),
	src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Removed.

	* src/base/ftobjs.c (ft_recompute_scaled_metrics): Do not round.

	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
	(cid_slot_load_glyph), src/truetype/ttgload.c (compute_glyph_metrics),
	src/type1/t1gload.c (T1_Load_Glyph): Do not round glyph metrics.

	* doc/CHANGES: Mention the changes.

2005-12-13  David Turner  <david@freetype.org>

	Change the implementation of the LIGHT hinting mode to completely
	disable horizontal hinting.  This is an experimental effort to
	integrate David Chester's latest patch without affecting the other
	hinting modes as well.

	Note that this doesn't force auto-hinting for all fonts, however.

	* src/autofit/afhints.c (af_glyph_hints_reload): Don't set
	scaler_fiags here but...
	(af_glyph_hints_rescale): Here.

	* src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal
	hinting for `light' hinting mode.


	* Jamfile: Small fix to ensure that ftexport.sym is placed into the
	same location as other generated objects (i.e., within the `objs'
	directory of the current directory).


	Add support for an embedded `BDF ' table within SFNT-based bitmap
	font files.  This is used to store atoms & properties from the
	original BDF fonts that were used to generate the font file.

	The feature is controlled by TT_CONFIG_OPTION_BDF within
	`ftoption.h' and is used to implement FT_Get_BDF_Property for these
	font files.

	At the moment, this is still experimental, the BDF table format
	isn't cast into stone yet.

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

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

	* include/freetype/internal/tttypes.h (TT_BDFRec, TT_BDF)
	[TT_CONFIG_OPTION_BDF]: New structure.
	(TT_FaceRec) [TT_CONFIG_OPTION_BDF]: New member `bdf'.

	* include/freetype/ttags.h (TTAG_BDF): New macro.

	* src/sfnt/Jamfile (_sources): Add ttbdf.

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

	* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h and
	FT_SERVICE_BDF_H.
	(sfnt_get_charset_it) [TT_CONFIG_OPTION_BDF]: New function.
	(sfnt_service_bdf) [TT_CONFIG_OPTION_BDF]: New service.
	(sfnt_servives) [TT_CONFIG_OPTION_BDF]: Add sfnt_service_bdf.

	* src/sfnt/sfnt.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.c.

	* src/sfnt/sfobjs.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h.
	(sfnt_done_face) [TT_CONFIG_OPTION_BDF]: Call
	tt_face_free_bdf_props.

	* src/sfnt/ttbdf.h, src/sfnt/ttbdf.c: New files.

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

	* src/sfnt/sfobjc.c (sfnt_init_face): Move tag check to...
	* src/sfnt/ttload.c (sfnt_init): Here, before handling TTCs.

2005-12-06  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/truetype/ttobjs.c (tt_size_init): size->ttmetrics.valid is
	initialized twice.
	size->strike_index is not initialized.

2005-12-02  Taek Kwan(TK) Lee  <taeklee@gmail.com>

	* src/type42/t42objs.c (T42_Face_Init): Replace call to
	FT_New_Memory_Face with call to FT_Open_Face to pass `params'.

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

	* docs/CHANGES: Document ftdump's `-v' option.
	Document latest charmap code changes.

	* src/sfnt/ttcmap.c, src/sfnt/ttcmap.h:
	s/TT_CMAP_FLAG_OVERLAPPED/TT_CMAP_FLAG_OVERLAPPING/.

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

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_binary,
	tt_cmap12_char_map_binary): Fix compiler warnings.

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

	Major update to distinguish between unsorted and overlapping
	segments for cmap format 4.  For overlapping but sorted segments,
	which is previously considered unsorted, we still use binary search.

	* src/sfnt/ttcmap.h (TT_CMapRec_): Replace `unsorted' by `flags'.
	(TT_CMAP_FLAG_UNSORTED, TT_CMAP_FLAG_OVERLAPPED): New macros.

	* src/sfnt/ttcmap.c (OPT_CMAP4): Removed as it is always defined.
	(TT_CMap4Rec_): Remove `old_charcode' and `table_length'.
	(tt_cmap4_reset): Removed.
	(tt_cmap4_init): Updated accordingly.
	(tt_cmap4_next): Updated accordingly.
	Take care of overlapping segments.
	(tt_cmap4_validate): Make sure the subtable is large enough.
	Do not check glyph_ids because some fonts set the length wrongly.
	Also, if all segments have offset 0, glyph_ids is always invalid.
	It does not cause any problem so far only because the check misses
	equality.
	Distinguish between unsorted and overlapping segments.
	(tt_cmap4_char_map_linear, tt_cmap4_char_map_binary): New functions
	to do `charcode => glyph index' by linear/binary search.
	(tt_cmap4_char_index, tt_cmap4_char_next): Use
	tt_cmap4_char_map_linear and tt_cmap4_char_map_binary.
	(tt_face_build_cmaps): Treat the return value of validator as flags
	for cmap.

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

	* src/sfnt/ttcmap.c (TT_CMap12Rec_, tt_cmap12_init, tt_cmap12_next):
	New structures and functions for fast `next char'.
	(tt_cmap12_char_map_binary): New function to do `charcode => glyph
	index' by binary search.
	(tt_cmap12_char_index, tt_cmap12_char_next): Use
	tt_cmap12_char_map_binary.
	(tt_face_build_cmaps): Check table and offset correctly (equality is
	missing).

2005-11-15  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/smakefile: Adjusted the compiler options
	to the current sources, now really builds the gxvalid, gzip
	and psnames modules.

	* builds/amiga/src/base/ftsystem.c: The assumed Seek() position
	in the file cache was off by one byte which could cause false
	errors in font files.

2005-11-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/mac/FreeType.m68k_far.make.txt,
	builds/mac/FreeType.m68k_cfm.make.txt,
	builds/mac/FreeType.ppc_classic.make.txt,
	builds/mac/FreeType.ppc_carbon.make.txt:
	Updated for MPW to build all available modules.

2005-11-21  Håvard Wall  <haavardw@ifi.uio.no>

	* src/bdf/bdfdrivr.c (bdf_interpret_style, BDF_Face_Done): Fix small
	memory leak.

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

	* src/sfnt/ttload.c (sfnt_init): Add tracing message.

2005-11-21  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Image_offset was
	added twice to image_start if image_format was 2 or 5.

2005-11-21  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/sfnt/sfobjs.c (sfnt_init_face): Check that format_tag is known
	before loading the table directory.

	* src/sfnt/ttload.c (tt_face_load_sfnt_header,
	tt_face_load_directory): Delay sfnt_dir_check from
	tt_face_load_sfnt_header to tt_face_load_directory.

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

	* src/sfnt/ttload.c (sfnt_dir_check): Clean up and return correct
	error code.
	(sfnt_init): New function to fill in face->ttc_header.  A non-TTC font
	is synthesized into a TTC font with one offset table.
	(tt_face_load_sfnt_header): Use sfnt_init.
	Fix an invalid access if the font is TTC and face_index is -1.

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

	* src/sfnt/ttload.c (tt_face_load_metrics): Ignore excess number
	of metrics instead of aborting.  Patch suggested by Derek Noonburg.

	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
	(cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Scale
	the glyph properly if no hinter is available.

	* docs/CHANGES: Mention scaling bug.

2005-11-18  susuzki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/ftgxval.h, src/base/ftgxval.c
	(FT_TrueTypeGX_Free, FT_ClassicKern_Free): New functions to free
	buffers allocated by gxvalid module.
	* include/freetype/ftotval.h, src/base/ftotval.c
	(FT_OpenType_Free): New function to free buffer allocated by
	otvalid module.

2005-11-18  Chia-I Wu  <b90201047@ntu.edu.tw>

	* builds/unix/ftsystem.c (FT_Stream_Open, FT_New_Memory,
	FT_Done_Memory), builds/vms/ftsystem.c (FT_Stream_Open, FT_New_Memory,
	FT_Done_Memory), builds/win32/ftdebug.c (FT_Message, FT_Panic):
	s/FT_EXPORT/FT_BASE/.

2005-11-17  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/src/base/ftdebug.c (FT_Trace_Get_Count,
	FT_Trace_Get_Name, FT_Message, FT_Panic),
	builds/amiga/src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory,
	FT_Stream_Open): s/FT_EXPORT/FT_BASE/.

2005-11-17  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/makefile, builds/amiga/makefile.os4,
	builds/amiga/smakefile,
	builds/amiga/include/freetype/config/ftmodule.h: Updated the Amiga
	build files (added support for the gxvalid module).

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

	Add vertical metrics support to OpenType CFF outlines.  Based on a
	patch from Mike Moening <MikeM@RetekSolutions.com>.

	* src/cff/cffgload.c (cff_face_get_vertical_metrics): New function.
	(cff_slot_load): Use cff_face_get_vertical_metrics.

	* docs/CHANGES: Updated.

2005-11-17  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftcalc.c (FT_MulTo64): Commented out.

	* include/freetype/internal/ftcalc.h (FT_SqrtFixed),
	src/base/ftcalc.c (FT_SqrtFixed),
	include/freetype/internal/ftdebug.h (FT_Trace_Get_Count,
	FT_Trace_Get_Name, FT_Message, FT_Panic), src/base/ftdebug.c
	(FT_Trace_Get_Count, FT_Trace_Get_Name, FT_Message, FT_Panic),
	include/freetype/internal/ftobjs.h (FT_New_Memory, FT_Done_Memory),
	include/freetype/internal/ftstream.h (FT_Stream_Open),
	src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory, FT_Stream_Open):
	s/FT_EXPORT/FT_BASE/.

	* builds/exports.mk: Manually add TT_New_Context to EXPORTS_LIST
	too.

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

	* src/base/fttrigon.c (ft_trig_prenorm): Fix a bug that created
	invalid computations, resulting in very weird bugs in TrueType
	bytecode hinted fonts.

	* src/truetype/ttinterp.c (FT_UNUSED_EXEC): Don't perform a
	structure copy each time.

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

	* src/cache/ftccache.c (FTC_Cache_Clear), src/cache/ftcmanag.c
	(FTC_Manager_Check): Remove FT_EXPORT_DEF tag.

	* src/base/ftcalc.c (FT_Add64): Remove FT_EXPORT_DEF tag.
	(FT_Div64by32, FT_Sqrt32): Commented out.  Unused.

	* include/freetype/internal/ftcalc.h (SQRT_32): Removed.  Unused.
	(FT_Sqrt32): Commented out.  Unused.

	* include/freetype/cache/ftccache.h:
	s/ftc_node_destroy/FTC_Node_Destroy/.

	* src/cache/ftccback.h (ftc_node_destroy): New declaration.

	* src/cache/ftccache.c (ftc_node_destroy): Use FT_LOCAL_DEF tag.
	(FTC_Node_Destroy): New exported wrapper function for
	ftc_node_destroy.

	* src/cache/ftcmanag.c: Include ftccback.c.

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

	* src/autofit/afangles.c, src/autofit/aftypes.h (af_angle_diff):
	Comment out.  Unused.

	* builds/exports.mk ($(EXPORTS_LIST)): Add TT_RunIns.

2005-11-10  Christian Biesinger  <cbiesinger@web.de>

	* builds/beos/beos.mk: Call beos-def.mk before anything else to
	define the separator.

	* builds/unix/unix-cc.in (LINK_LIBRARY): Add `-no-undefined' flag.

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

	* src/type1/t1afm.c (T1_Read_PFM): Zero offset means `no kerning
	table available'.  From Sergey Tolstov <stolstov@esri.com>.

2005-11-03  Ville Syrjälä  <syrjala@sci.fi>

	* src/base/ftobjs.c (FT_Open_Face): Avoid possible memory leak.

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

	Make compiling instructions in docs/CUSTOMIZE work again.

	* builds/unix/unix-cc.in (CPPFLAGS): New variable.
	(CFLAGS): Don't include @CPPFLAGS@.
	* builds/freetype.mk (FT_CFLAGS): Add CPPFLAGS.

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

	Update build system to support the generation of a list of exported
	symbols or Windows .DEF files by parsing the public headers with the
	`apinames' tool located in src/tools/apinames.c.

	Only tested on Unix at the moment.  On Windows, the .DEF file is
	generated but isn't used yet to generate a DLL.

	* builds/exports.mk: New file.

	* builds/freetype.mk: Include exports.mk.
	(dll): New target.
	(clean_project_dos): Fix rule.

	* builds/compiler/visualc.mk (TE), builds/dos/dos-def.mk (E),
	builds/os2/os2-def.mk (E), builds/win32/win32-def.mk (E): New
	variables for controlling executable extensions.

	* builds/unix/unix-cc.in (EXPORTS_LIST, CCexe),
	builds/win32/w32-bcc.mk, builds/win32/w32-gcc.mk,
	builds/win32/w32-icc.mk, builds/win32/w32-icc.mk,
	builds/win32/w32-mingw32.mk, builds/win32/w32-vcc,
	builds/win32/w32-wat.mk (EXPORTS_LIST, EXPORT_OPTIONS,
	APINAMES_OPTIONS): New targets for controlling the `apinames' tool.

	* Jamfile (GenExportSymbols): Updated.


	* src/pfr/pfrtypes.h, src/pfr/pfrload.c, src/pfr/pfrobjs.c
	[!FT_OPTIMIZE_MEMORY]: Fold memory optimization code into
	FT_OPTIMIZE_MEMORY chunks for better maintainability and simplicity.


	* src/base/fttrigon.c (ft_trig_prenorm), src/base/ftcalc.c
	(FT_MulFix): Performance optimizations.


	* include/freetype/internal/ftgloadr.h (FT_GLYPHLOADER_CHECK_P,
	FT_GLYPHLOADER_CHECK_C, FT_GLYPHLOADER_CHECK_POINTS): New macros for
	checking points and contours.  Update callers to use
	FT_GLYPHLOADER_CHECK_POINTS instead of FT_GlyphLoader_CheckPoints
	at profile-detected hot-spots.

	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Set `adjust'
	to 0 to not call `AdjustPoints' every time.


	* src/autofit/aftypes.h (AF_ANGLE_DIFF): New macro to inline
	FT_Angle_Diff.

	* src/autofit/afhints.c (af_direction_compute): Re-implement.
	(af_glyph_hints_compute_inflections, af_glyph_hints_reload): Use
	AF_ANGLE_DIFF to speed up the detection of inflexions.


	* src/tools/apinames.c: Include <string.h>.
	(OutputFormat): New enumeration.
	(names_dump): Add two parameters to control output format and DLL
	name.
	(names_dump_windef): Removed.  Code folded into `names_dump'.
	(read_header_file): Use isalnum, not isalpha.  Otherwise function
	names with digits aren't read correctly.
	(usage): Updated.
	(main): New option `-o' to control output file name.
	New option `-d' to indicate DLL file name.
	Extend `-w' flag to handle Borland and Watcom compilers and linkers.

2005-10-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/mac/ftlib.prj, builds/mac/freetype.mak: Removed.
	ftlib.prj is unmaintained and incompatible with current tree.
	freetype.mak is unrecoverably broken.

	* builds/mac/ftlib.prj.xml: Added.
	Generated by Metrowerks CodeWarrior 9.0.

	* builds/mac/FreeType.m68k_far.make.txt,
	builds/mac/FreeType.m68k_cfm.make.txt,
	builds/mac/FreeType.ppc_classic.make.txt,
	builds/mac/FreeType.ppc_carbon.make.txt: Added.
	Skeleton files of MPW makefiles.

	* builds/mac/ascii2mpw.py: Added.
	Python script to make MPW makefile from skeleton.

	* builds/mac/README: Updated.
	Almost rewritten to use new files.

2005-10-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c: Fix invalid casts from NULL to integer typed
	variables.  Advised by David Turner, Masatake YAMATO, Sean McBride,
	and George Williams.

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

	* include/freetype/ftsysmem.h, include/freetype/ftsysio.h: Removed.
	Obsolete.

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

	* src/sfnt/sfdriver.c (sfnt_interface): Move out
	`tt_face_get_kerning' from a #ifdef clause.  Reported by Tony J.
	Ibbs <tibs@sj.co.uk>.

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

	* src/base/ftdbgmem.c (ft_mem_debug_realloc): Make it compile with
	C++.

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

	* src/base/ftdbgmem.c (ft_mem_table_set, ft_mem_debug_realloc):
	Another realloc memory counting bug fix.

	* src/tools/Jamfile: Add missing file.

	* src/lzw/Jamfile: Fix incorrect source file reference.

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

	* src/base/ftdbgmem.c (ft_mem_table_set, ft_mem_table_remove,
	ft_mem_debug_alloc, ft_mem_debug_free, ft_mem_debug_realloc): Fixes
	to better account for memory reallocations.

	* src/lzw/ftlzw2.c, src/lzw/ftzopen.h, src/lzw/ftzopen.c,
	src/lzw/rules.mk: First version of LZW loader re-implementation.
	Apparently, this saves about 330 KB of heap memory when loading
	timR24.pcf.Z.

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

	* include/freetype/ftbitmap.h (FT_Bitmap_Copy, FT_Bitmap_Embolden),
	src/base/ftbdf.c (FT_Get_BDF_Property), src/cache/ftcmru.c
	(FTC_MruList_Reset, FTC_MruList_Done, FTC_MruList_Lookup): Fix
	FT_EXPORT/FT_EXPORT_DEF tagging.

2005-10-19  Chia-I Wu  <b90201047@ntu.edu.tw>

	* src/truetype/ttgload.c (TT_Load_Glyph): Allow size->ttmetrics to
	be invalid when FT_LOAD_NO_SCALE is set.

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

	* src/base/ftobjs.c (FT_Open_Face): Don't call FT_New_GlyphSlot and
	FT_New_Size if we are opening a face with face_index < 0 (which is
	only used for testing the format).

	* src/gxvalid/gxvmort0.c (gxv_mort_subtable_type0_entry_validate):
	Remove compiler warning.

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

	* src/tools/apinames.c: Add new tool to extract public API function
	names from header files.

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

	Add FT_FACE_FLAG_HINTER to indicate that a specific font driver has
	a hinting engine of its own.

	* include/freetype/freetype.h (FT_FACE_FLAG_HINTER): New macro.

	* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
	(cid_face_init), src/truetype/ttobjs.c (tt_face_init)
	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER], src/type1/t1objs.c
	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init)
	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Update face flags.

	* docs/CHANGES: Document it.

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

	* builds/unix/freetype2.m4: Add license exception so that the file
	can be used in any other autoconf script.

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

	* src/autofit/aflatin.c (af_latin_compute_stem_width): Fix bad
	computation of the `vertical' flag, causing ugly things in LCD mode
	and others.

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

	* src/autofit/aflatin.c (af_latin_hints_init): Fix a bug that
	prevented internal hint mode bitflags from being computed correctly.

	* src/base/Jamfile: Adding src/base/ftgxval.c.

	* src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
	src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c, src/gxvalid/gxvkern.c,
	src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
	src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
	src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
	src/gxvalid/gxvmort5.c, src/gxvalid/gxvmorx.c,
	src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx5.c,
	src/gxvalid/gxvopbd.c, src/gxvalid/gxvprop.c,
	src/truetype/ttgload.c: Remove _many_ compiler warnings when
	compiling with Visual C++ at maximum level (/W4).

	* src/autofit/afangles.c (af_angle_atan): Replaced CORDIC-based
	implementation with one using lookup tables.  This simple thing
	speeds up glyph loading by 18%, according to ftbench!

	* src/sfnt/sfdriver.c (sfnt_get_interface): Don't check for
	`get_sfnt' and `load_sfnt' module interfaces.

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

	* docs/CHANGES: Mention SING Glyphlet support.

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

	* src/base/Jamfile: Disable compilation of ftgxval module
	temporarily.

2005-09-19  David Somers  <dsomers@omz13.com>

	* freetype2/src/sfnt/ttload.c (sfnt_dir_check): Modified to allow a
	font to have no `head' table if tables `SING' and `META' are
	present; this is to support `SING Glyphlet'.

	`SING Glyphlet' is an extension to OpenType developed by Adobe
	primarily to facilitate adding supplemental glyphs to an OpenType
	font (with emphasis on, but not necessariy limited to, gaiji to a
	CJK font).  A SING Glyphlet Font is an OpenType font that contains
	the outline(s), either in a `glyf' or `CFF' table, for a glyph;
	`cmap', `BASE', and `GSUB' tables are present with the same format
	and functionaliy as a regular OpenType font; there are no `name',
	`head', `OS/2', and `post' tables; there are two new tables, `SING'
	which contains details about the glyphlet, and `META' which contains
	metadata.

	Further information on the SING Glyphlet format can be found at:

	  http://www.adobe.com/products/indesign/sing_gaiji.html

	* freetype2/include/freetype/ttags.h (TTAG_SING, TTAG_META): New
	macros for the OpenType tables `SING' and `META'.  These two tables
	are used in SING Glyphlet Format fonts.

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

	* src/sfnt/sfobjs.c (sfnt_load_face): Reactivate code to set
	FT_FACE_FLAG_KERNING which has been commented out erroneously.

	* docs/CHANGES: Document it.

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

	Fixes for `make multi' and using C++ compiler.

	* gxvalid/gxvcommn.c (gxv_set_length_by_ushort_offset,
	gxv_set_length_by_ulong_offset, gxv_array_getlimits_byte,
	gxv_array_getlimits_ushort): Declare with FT_LOCAL_DEF.
	(gxv_compare_ranges): Make it static.
	(gxv_LookupTable_fmt0_validate, gxv_LookupTable_fmt2_validate,
	gxv_LookupTable_fmt4_validate, gxv_LookupTable_fmt6_validate,
	gxv_LookupTable_fmt8_validate, gxv_LookupTable_validate): Improve
	trace messages.
	(gxv_StateArray_validate, gxv_XStateArray_validate): s/class/clazz/.
	(GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
	GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Move to
	gxvcommn.h.

	* gxvalid/gxvcommn.h: Add prototypes for
	gxv_StateTable_subtable_setup, gxv_XStateTable_subtable_setup,
	gxv_XStateTable_validate, gxv_array_getlimits_byte,
	gxv_array_getlimits_ushort, gxv_set_length_by_ushort_offset,
	gxv_set_length_by_ulong_offset, gxv_odtect_add_range,
	gxv_odtect_validate.
	(GXV_STATETABLE_HEADER_SIZE, GXV_STATEHEADER_SIZE,
	GXV_XSTATETABLE_HEADER_SIZE, GXV_XSTATEHEADER_SIZE): Moved from
	gxvcommn.c.

	* src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
	gxv_bsln_parts_fmt1_validate): Improve trace messages.

	* gxvalid/gxvfeat.c: Split off predefined registry stuff to...
	* gxvalid/gxvfeat.h: New file.

	* gxvalid/gxvjust.c (gxv_just_wdc_entry_validate): Improve trace
	message.

	* gxvalid/gxvkern.c (GXV_kern_Dialect): Add KERN_DIALECT_UNKNOWN.
	(gxv_kern_subtable_fmt1_valueTable_load,
	gxv_kern_subtable_fmt1_subtable_setup,
	gxv_kern_subtable_fmt1_entry_validate): Fix C++ compiler errors.
	(gxv_kern_coverage_validate): Use KERN_DIALECT_UNKWOWN.
	Improve trace message.
	(gxv_kern_validate_generic): Fix C++ compiler error.
	Improve trace message.
	(gxv_kern_validate_classic): Fix C++ compiler error.

	* gxvalid/gxvmort0.c (gxv_mort_subtable_type0_validate): Declare
	with FT_LOCAL_DEF.

	* gxvalid/gxvmort1.c
	(gxv_mort_subtable_type1_substitutionTable_load,
	gxv_mort_subtable_type1_subtable_setup): Fix C++ compiler errors.
	(gxv_mort_subtable_type1_substTable_validate): Improve trace
	message.
	(gxv_mort_subtable_type1_validate): Declare with FT_LOCAL_DEF.

	* gxvalid/gxvmort2.c (gxv_mort_subtable_type2_opttable_load,
	gxv_mort_subtable_type2_subtable_setup,
	gxv_mort_subtable_type2_ligActionOffset_validate,
	gxv_mort_subtable_type2_ligatureTable_validate): Fix C++ compiler
	errors.
	(gxv_mort_subtable_type2_validate): Declare with FT_LOCAL_DEF.

	* gxvalid/gxvmort4.c (gxv_mort_subtable_type4_validate): Declare
	with FT_LOCAL_DEF.

	* gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup,
	gxv_mort_subtable_type5_InsertList_validate): Fix C++ compiler
	errors.
	(gxv_mort_subtable_type5_validate): Declare with FT_LOCAL_DEF.

	* gxvalid/gxvmort.c: Include gxvfeat.h.
	(gxv_mort_featurearray_validate, gxv_mort_coverage_validate):
	Declare with FT_LOCAL_DEF.
	(gxv_mort_subtables_validate, gxv_mort_validate): Improve trace
	messages.

	* gxvalid/gxvmort.h (gxv_mort_feature_validate): Remove.

	* gxvalid/gxvmorx0.c (gxv_morx_subtable_type0_validate): Declare
	with FT_LOCAL_DEF.

	* gxvalid/gxvmorx1.c
	(gxv_morx_subtable_type1_substitutionTable_load,
	gxv_morx_subtable_type1_subtable_setup,
	gxv_morx_subtable_type1_entry_validate,
	gxv_morx_subtable_type1_substitutionTable_validate): Fix C++
	compiler errors.
	(gxv_morx_subtable_type1_validate): Declare with FT_LOCAL_DEF.

	* gxvalid/gxvmorx2.c (gxv_morx_subtable_type2_opttable_load,
	gxv_morx_subtable_type2_subtable_setup,
	gxv_morx_subtable_type2_ligActionIndex_validate,
	gxv_morx_subtable_type2_ligatureTable_validate): Fix C++ compiler
	errors.
	(gxv_morx_subtable_type2_validate): Declare with FT_LOCAL_DEF.
	Fix typo.

	* gxvalid/gxvmorx4.c (gxv_morx_subtable_type4_validate): Declare
	with FT_LOCAL_DEF.

	* gxvalid/gxvmorx5.c (gxv_morx_subtable_type5_insertionGlyph_load,
	gxv_morx_subtable_type5_subtable_setup): Fix C++ compiler error.
	(gxv_morx_subtable_type5_validate): Declare with FT_LOCAL_DEF.

	* gxvalid/gxvmorx.c (gxv_morx_subtables_validate,
	gxv_morx_validate): Improve trace message.

	* gxvalid/gxvopbd.c (gxv_opbd_LookupFmt4_transit): Fix compiler
	warnings.
	(gxv_opbd_validate): Improve trace message.

	* gxvalid/gxvprop.c: Decorate constants with `U' and `L' where
	appropriate.
	(gxv_prop_zero_advance_validate, gxv_prop_validate): Improve trace
	message.

	* gxvalid/gxvtrak.c (gxv_trak_trackTable_validate): Remove unused
	parameter.  Update all callers.
	(gxv_trak_validate): Improve trace message.

	* rules.mk (GXV_DRV_H): Add gxvfeat.h.

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

	* src/gxvalid/gxvbsln.c (GXV_BSLN_VALUE_EMPTY): Add `U'.

	* src/gxvalid/gxmort1.c (GXV_MORT_SUBTABLE_TYPE1_HEADER_SIZE),
	src/gxvalid/gxmort2.c (GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE): Fix
	typo.

	* src/gxvalid/gxvmorx0.c, src/gxvalid/gxvmorx1.c,
	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvmorx4.c,
	src/gxvalid/gxvmorx5.c, src/gxvalid/gxvmort.c: Improve trace
	messages.
	Decorate constants with `U' and `L' where appropriate.
	Fix compiler warnings.

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

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

	* src/gxvalid/gxvbsln.c (gxv_bsln_validate): Fix trace message.

	* src/gxvalid/gxvcommn.c (gxv_odtect_add_range): Use `const'.

	* src/gxvalid/gxvfeat.c, src/gxvalid/gxvjust.c,
	src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmod.c,
	src/gxvalid/gxvmort0.c, src/gxvalid/gxvmort1.c,
	src/gxvalid/gxvmort2.c, src/gxvalid/gxvmort4.c,
	src/gxvalid/gxvmort5.c, src/gxvalid/gxvmort.c: Improve trace
	messages.
	Decorate constants with `U' and `L' where appropriate.
	Fix compiler warnings.

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

	* src/gxvalid/README: Revised.
	* src/gxvalid/gxvbsln.c: Fix compiler warnings.
	* src/gxvalid/gxvcommn.c: Fix compiler warnings.
	(gxv_XEntryTable_validate, gxv_compare_ranges): Remove unused
	parameter.  Update all callers.
	Improve trace messages.
	Some formatting.

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

	* include/freetype/freetype.h, include/freetype/ftchapters.h: Add
	a preliminary section with some explanations about user allocation.

	* src/tools/docmaker/tohtml.py (HtmlFormatter.section_enter):
	Don't abort if there are no data types, functions, etc., in a
	section.
	Print synopsis only if we have a data type, function, etc.

	* docs/INSTALL.ANY, docs/INSTALL, docs/INSTALL.UNX, docs/CUSTOMIZE,
	docs/INSTALL.GNU, docs/TRUETYPE, docs/DEBUG, docs/UPGRADE.UNX,
	docs/VERSION.DLL, docs/formats.txt: Revised, formatted.

2005-08-28  George Williams  <gww@silcom.com>

	* src/truetype/ttgload.c [TT_MAX_COMPOSITE_RECURSE]: Removed.
	(load_truetype_glyph): Limit recursion depth by `maxComponentDepth'.

2005-08-25  J. Ali Harlow  <ali@avrc.city.ac.uk>

	* builds/unix/freetype2.in (CFlags): Add missing directory.

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

	* docs/CHANGES: Mention gxvalid module.

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

	* src/autofit/aflatin.c (af_latin_metrics_scale): Initialize
	render mode properly.  Reported by chris@dokein.co.uk.

2005-08-23  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Add gxvalid module to validate TrueType GX/AAT tables.

	Modifications on existing files:

	* Jamfile: Register gxvalid module.
	* src/base/Jamfile: Register ftgxval.c.
	* src/base/rule.mk: Register ftgxval.c.
	* docs/INSTALL.ANY: Register gxvalid/gxvalid.c.

	* include/freetype/config/ftheader.h (FT_GX_VALIDATE_H): New macro
	to include gxvalid header file.
	* include/freetype/config/ftmodule.h: Register gxv_module_class.

	* include/freetype/ftchapters.h: Add comment about gx_validation.
	* include/freetype/ftotval.h: Change keyword FT_VALIDATE_XXX
	to FT_VALIDATE_OTXXX to co-exist with gxvalid.
	* include/freetype/tttags.h: Add tags for TrueType GX/AAT tables.

	* include/freetype/internal/ftserv.h (FT_SERVICE_GX_VALIDATE_H): New
	macro for gxvalid service.
	* include/freetype/internal/fttrace.h: Add trace facilities for
	gxvalid.

	New files on existing directories:

	* include/freetype/internal/services/svgxval.h: Registration of
	validation service for TrueType GX/AAT and classic kern table.
	* include/freetype/ftgxval.h: Public API definition to use gxvalid.
	* src/base/ftgxval.c: Public API of gxvalid.

	New files under src/gxvalid/:

	* src/gxvalid/Jamfile src/gxvalid/README src/gxvalid/module.mk
	src/gxvalid/rules.mk src/gxvalid/gxvalid.c src/gxvalid/gxvalid.h
	src/gxvalid/gxvbsln.c src/gxvalid/gxvcommn.c src/gxvalid/gxvcommn.h
	src/gxvalid/gxverror.h src/gxvalid/gxvfeat.c src/gxvalid/gxvfgen.c
	src/gxvalid/gxvjust.c src/gxvalid/gxvkern.c src/gxvalid/gxvlcar.c
	src/gxvalid/gxvmod.c src/gxvalid/gxvmod.h src/gxvalid/gxvmort.c
	src/gxvalid/gxvmort.h src/gxvalid/gxvmort0.c src/gxvalid/gxvmort1.c
	src/gxvalid/gxvmort2.c src/gxvalid/gxvmort4.c src/gxvalid/gxvmort5.c
	src/gxvalid/gxvmorx.c src/gxvalid/gxvmorx.h src/gxvalid/gxvmorx0.c
	src/gxvalid/gxvmorx1.c src/gxvalid/gxvmorx2.c src/gxvalid/gxvmorx4.c
	src/gxvalid/gxvmorx5.c src/gxvalid/gxvopbd.c src/gxvalid/gxvprop.c
	src/gxvalid/gxvtrak.c: New files, gxvalid body.

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

	* src/truetype/ttgload.c (TT_Load_Glyph): Only translate outline
	to (0,0) if bit 1 of the `head' table isn't set.  This improves
	rendering of buggy fonts.

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

	* src/truetype/ttdriver.c (Load_Glyph): Don't check the validity of
	ttmetrics here.  TrueType fonts with only sbits always have
	ttmetrics.valid set to false.

	* src/truetype/ttgload.c (TT_Load_Glyph): Check that ttmetrics is
	valid before loading outline glyph.

	* src/cache/ftcimage.c (FTC_INode_New): Fix a memory leak.

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

	* src/sfnt/ttload.c (tt_face_load_metrics_header): Ignore missing
	`hhea' table for SFNT Mac fonts.  Change based on a patch by
	mpsuzuki@hiroshima-u.ac.jp.

2005-08-20  Masatake YAMATO  <jet@gyve.org>

	* src/otvalid/otvmod.c (otv_validate): Use ft_validator_run instead
	of ft_setjmp.

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

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

2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Update copyright
	messages.

2005-08-16  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/truetype/ttinterp.c, src/truetype/ttinterp.h: Remove original
	TT_Done_Context and rename TT_Destroy_Context to TT_Done_Context
	with slight changes.
	Update all callers.
	(TT_New_Context): Now takes TT_Driver argument directly.
	Update all callers.

	* src/truetype/ttobjs.h (tt_slot_init): New function.
	* src/truetype/ttobjs.c (tt_driver_init): Initialize execution
	context here.
	(tt_slot_init): New function to create extra points for the internal
	glyph loader.  We then use it directly, instead of face's glyph
	loader, when loading glyph.

	* src/truetype/ttdriver.c (tt_driver_class): Use tt_slot_init for
	glyph slot initialization.
	(Load_Glyph): Load flag dependencies are handled here.  Return error
	if size is NULL.

	* src/truetype/ttgload.c: Heavy cleanup and refactoring.
	(org_to_cur): Removed.
	(TT_Load_Simple_Glyph): Call FT_GlyphLoader_CheckPoints.
	(TT_Hint_Glyph): New funcion to hint a zone, prepared by caller.
	(TT_Process_Simple_Glyph): s/load/loader/.
	Use loader->pp values instead of recalculation.
	Use TT_Hint_Glyph.
	No need to save/restore loader->stream before and after
	TT_Vary_Get_Glyph_Deltas now.
	(TT_LOADER_SET_PP): New macro to calculate and set the four phantom
	points.
	(load_truetype_glyph): Never set exec->glyphSize to 0.  This closes
	Savannah bug #13107.
	Forget glyph frame before calling TT_Process_Simple_Glyph.
	Use TT_LOADER_SET_PP.
	Scale all four phantom points.
	Split off some functionality to ...
	(TT_Process_Composite_Component, TT_Process_Composite_Glyph): These
	new functions.
	(TT_Load_Glyph): Set various fields of `glyph' here, not in
	load_truetype_glyph and compute_glyph_metrics.
	Split off some functionality to ...
	(load_sbit_image, tt_loader_init): These new functions.
	(compute_glyph_metrics): Call FT_Outline_Get_CBox.

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

	* docs/INSTALL.ANY: Updated.

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

	* src/cff/cffgload.c (cff_builder_close_contour),
	src/psaux/psobjs.c (t1_builder_close_contour): Protect against
	zero `outline' pointer.

	* src/base/ftgloadr.c (FT_GlyphLoader_Add): Protect against zero
	`loader' address.

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

	* src/sfnt/sfdriver.c (sfnt_interface) [FT_OPTIMIZE_MEMORY]:
	Reactivate pointers to tt_find_sbit_image and tt_load_sbit_metrics
	to make X work again.

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

	* src/otvalid/otvcommn.h: Remove dead code.

2005-07-31  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/truetype/ttobjs.h (tt_size_run_fpgm, tt_size_run_prep): New
	functions.

	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): New
	functions.
	(tt_size_init): Add 4, instead of 2, (phantom) points to twilight
	zone.
	Move code that runs fpgm to tt_size_run_fpgm.
	(Reset_Outline_Size): Move code that runs prep to tt_size_run_prep.
	(tt_glyphzone_new): Allocate right size of arrays.
	Set max_points and max_contours properly.

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

	* src/truetype/ttdriver.c (Set_Char_Sizes): Avoid unnecessary
	computations and clean up.

	* src/truetype/ttobjs.h (struct TT_SizeRec_): Comment on the
	internal copy of metrics.

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

	* include/freetype/ftoutln.h (FT_Outline_Embolden): Fix prototype.
	Reported by Xerxes.

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

	* include/freetype/internal/ftmemory.h (FT_REALLOC_ARRAY): Fix typo.
	Reported by Brett Hutley.

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

	* src/sfnt/ftbitmap.c, src/truetype/ttgload.c, src/sfnt/ttcmap.c:
	Removing compiler warnings (Visual C++ /W4).


	Implement a work-around for broken C preprocessor in Visual C++ (it
	has been confirmed by the MS developers that it is indeed a bug
	which won't be fixed in the very near future).

	* Jamfile (FT2_COMPONENTS): Include otvalid (again).

	* src/otvalid/otvcommn.h (OTV_NAME, OTV_FUNC): New macros.
	(OTV_NEST1, OTV_NEST2, OTV_NEST3): Use OTV_NAME and OTV_FUNC to
	avoid argument expansion by argument prescan.
	Append `Func' to all affected macros and change them to take just a
	single argument.  Example: `AttachList' is renamed to
	`AttachListFunc'.

	* src/otvalid/otvgdef.c, src/otvalid/otvgpos.c,
	src/otvalid/otvgsub.c, src/otvjstf.c: Append `Func' to macros
	affected by the changes to OTV_NESTx and modify them to take just a
	single argument.

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

	* include/freetype/internal/ftobjs.h, src/base/ftobjs.c: New function
	ft_glyphslot_grid_fit_metrics.

	* src/truetype/ttgload.c (compute_glyph_metrics): Use
	ft_glyphslot_grid_fit_metrics.

	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
	(cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Use
	ft_glyphslot_grid_fit_metrics.
	FT_Outline_Get_CBox is called twice.

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Modify metrics to more
	reasonable values when emboldening outline glyphs.  The theoretic
	ones are unrealistic.

2005-06-16  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/base/ftoutln.c (FT_Outline_Embolden): Strength should be
	halved.

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Change the default
	strength.
	Don't increase slot->advance.y.

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

	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 2.
	(FREETYPE_PATCH): Set to 0.

	* builds/unix/configure.ac (version_info): Set to 9:9:3.
	Currently, we are still binary compatible.

	* builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/.

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

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

	* ChangeLog: Split off older entries into...
	* ChangeLog.20, ChangeLog.21: These new files.

2005-06-15  Kirill Smelkov  <kirr@mns.spb.ru>

	The next release will be 2.2.0, so don't worry about source code
	backwards compatibility.

	* include/freetype/ftimage.h (FT_Outline_MoveToFunc,
	FT_Outline_LineToFunc, FT_Outline_ConicToFunc,
	FT_Outline_CubicToFunc, FT_SpanFunc, FT_Raster_RenderFunc),
	include/freetype/ftrender.h (FT_Glyph_TransformFunc,
	FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Decorate
	parameters with `const' where appropriate.

2005-06-15  Chia I Wu  <b90201047@ntu.edu.tw>

	* src/sfnt/ttsbit.c (tt_face_load_sbit_image): Compute vertBearingY
	to make glyphs centered vertically.

	* src/truetype/ttgload.c (compute_glyph_metrics): Compute
	vertBearingY to make glyphs centered vertically.
	Fix some bugs in vertical metrics:

	  . loader->pp3.y and loader->pp4.y are in 26.6 format, not in font
	    units.
	  . As we use the glyph's cbox to calculate the top bearing now
	    there iss no need to adjust `top'.

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

	* src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE): Use FT_UShort to be
	in sync with OTV_OPTIONAL_OFFSET.  Reported by YAMATO Masatake.

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

	* docs/release: Update.

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

Copyright 2005, 2006 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:
