2010-02-13  Werner Lemberg  <wl@gnu.org>

	* Version 2.3.12 released.
	==========================


	Tag sources with `VER-2-3-12'.

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.3.12.

	* README, Jamfile (RefDoc),
	builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
	builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.3.11/2.3.12/, s/2311/2312/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 12.

	* builds/unix/configure.raw (version_info): Set to 10:0:4.

2010-02-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Improve autotool version checking to work with beta releases.

	* autogen.sh (check_tool_version): Improve the extraction of version
	number from "tool --version" output.  Some beta releases of
	autotools have extra strings before version number.

2010-02-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix overallocating bug in FT_Outline_New_Internal().

	* src/base/ftoutln.c (FT_Outline_New_Internal): The length of
	FT_Outline->points[] should be numPoints, not 2 * numPoints.
	Found by Paul Messmer, see
	http://lists.gnu.org/archive/html/freetype-devel/2010-02/msg00003.html

2010-02-10  Ken Sharp  <ken.sharp@artifex.com>

	Really fix Savannah bug #28678 (part 2).

	Since we consider `sbw' for the horizontal direction only, we still have
	to synthesize vertical metrics if the user wants to use the vertical
	writing direction.

	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
	(cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph):
	Synthesize vertical metrics (only) if FT_LOAD_VERTICAL_LAYOUT is
	set.

2010-02-10  Ken Sharp  <ken.sharp@artifex.com>

	Really fix Savannah bug #28678 (part 1).

	After long discussion, we now consider the character width vector
	(wx,wy) returned by the `sbw' Type 1 operator as being part of *one*
	direction only.  For example, if you are using the horizontal
	writing direction, you get the horizontal and vertical components of
	the advance width for this direction.  Note that OpenType and CFF fonts
	don't have such a vertical component; instead, the GPOS table can be
	used to generate two-dimensional advance widths (but this isn't
	handled by FreeType).

	* include/freetype/ftincrem.h (FT_Incremental_MetricsRec): Add
	`advance_v' field to hold the vertical component of the advance
	value.

	* src/truetype/ttgload.c (tt_get_metrics), src/cff/cffgload.c
	(cff_slot_load), src/type1/t1gload.c
	(T1_Parse_Glyph_And_Get_Char_String), src/cid/cidgload.c
	(cid_load_glyph): Use it.

2010-02-08  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h [FT_CONFIG_OPTION_PIC]: Define.

2010-02-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Prevent NULL pointer dereference passed to FT_Module_Requester.

	* src/sfnt/sfdriver.c (sfnt_get_interface): Don't use `module'.
	* src/psnames/psmodule.c (psnames_get_interface): Ditto.

	* src/cff/cffdrivr.c (cff_get_interface): Check NULL `driver'.
	* src/truetype/ttdriver.c (tt_get_interface): Ditto.

2010-01-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix memory leaks in previous patch.

	* src/sfnt/sfobjs.c (sfnt_load_face): Don't overwrite the strings
	allocated for face->root.family_name and style_name.

2010-01-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	New parameters for FT_Open_Face() to ignore preferred family names.

	Preferred family names should be used for legacy systems that
	can hold only a few faces (<= 4) for a family name. Suggested by
	Andreas Heinrich.
	http://lists.gnu.org/archive/html/freetype/2010-01/msg00001.html

	* include/freetype/ftsnames.h (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
	FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Define.

	* src/sfnt/sfobjs.c (sfnt_load_face): Check the arguments and
	ignore preferred family and subfamily names if requested.

2010-01-27  Ken Sharp  <ken.sharp@artifex.com>

	Fix Savannah bug #28678.

	* src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
	(cid_load_glyph): Handle vertical metrics correctly.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Handle
	vertical metrics correctly.
	(T1_Load_Glyph): Don't synthesize vertical metrics.

2010-01-14  Werner Lemberg  <wl@gnu.org>

	Make FT_Set_Transform work if no renderer is available.

	* src/base/ftobjs.c (FT_Load_Glyph): Apply `standard' transformation
	if no renderer is compiled into the library.

2010-01-14  Werner Lemberg  <wl@gnu.org>

	Fix compilation warning.

	* src/base/ftbase.h: s/LOCAL_DEF/LOCAL/.
	* src/base/ftobjc.s: Include ftbase.h conditionally.

2010-01-11  Kwang Yul Seo  <skyul@company100.net>

	Provide inline assembly code for RVCT compiler.
	This is Savannah patch #7059.

	* include/freetype/config/ftconfig.h (FT_MULFIX_ASSEMBLER,
	FT_MulFix_arm) [__CC_ARM || __ARM_CC]: Define.

2010-01-08  Ken Sharp  <ken.sharp@artifex.com>

	Fix Savannah bug #28521.

	Issue #28226 involved a work-around for a font which used the
	`setcurrentpoint' operator in an invalid way; this operator is only
	supposed to be used with the result of OtherSubrs, and the font used
	it directly.  The supplied patch removed the block of code which
	checked this usage entirely.

	This turns out to be a Bad Thing.  If `setcurrentpoint' is being
	used correctly it should reset the flex flag in the decoder.  If we
	don't do this then the flag never gets reset and we omit any further
	contours from the glyph (at least until we close the path or
	similar).

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<op_setcurrentpoint>: Handle `flex_state' correctly.

2010-01-05  Werner Lemberg  <wl@gnu.org>

	Apply reports from clang static analyzer.

	* src/lzw/ftlzw.c (ft_lzw_file_init), src/base/ftstroke.c
	(FT_Stroker_ParseOutline), src/base/ftsynth.c
	(FT_GlyphSlot_Embolden): Remove dead code.

	* src/base/ftpatent.c (_tt_check_patents_in_table): Initialize
	`offset_i' and `length_i'.

2010-01-05  Ralph Giles  <giles@ghostscript.com>

	Enable the incremental font interface by default.

	Ghostscript requires the incremental font interface for handling
	some Postscript documents.  It is moving to using FreeType as its
	primary renderer; supporting this in the default build makes it
	Ghostscript to be linked against the system FreeType when one is
	available.

	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_INCREMENTAL):
	Uncomment.

2010-01-05  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #28395.

	* src/truetype/ttdriver.c (Load_Glyph), src/type1/t1gload.c
	(T1_Loada_Glyph): Don't check `num_glyphs' if incremental interface
	is used.

2010-01-05  Ken Sharp  <ken.sharp@artifex.com>

	Make Type 1 `seac' operator work with incremental interface.
	This fixes Savannah bug #28480.

	* src/psaux/t1decode.c (t1operator_seac): Don't check `glyph_names'
	if incremental interface is used.

2010-01-04  Ken Sharp  <ken.sharp@artifex.com>

	Make incremental interface work with TrueType fonts.
	This fixes Savannah bug #28478.

	* src/truetype/ttgload.c (load_truetype_glyph): Don't check
	`glyf_offset' if incremental interface is used.

2009-12-31  Lars Abrahamsson  <wonko@opera.com>

	Make compilation with FT_CONFIG_OPTION_PIC work again.

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap) [FT_CONFIG_OPTION_PIC]:
	Declare `library' for FT_BITMAP_GLYPH_CLASS_GET.

	* src/base/ftinit.c (ft_destroy_default_module_classes,
	ft_create_default_module_classes): Use proper casts (needed for C++
	compilation).

	* src/sfnt/ttcmap.c (tt_cmap13_class_rec): Use FT_DEFINE_TT_CMAP.

2009-12-22  Marc Kleine-Budde  <mkl@pengutronix.de>

	Make freetype-config aware of $SYSROOT.
	This is Savannah patch #7040.

	* builds/unix/freetype-config.in: Decorate with ${SYSROOT} where
	appropriate.

2009-12-20  Werner Lemberg  <wl@gnu.org>

	Fix compiler warning.
	Reported by Sean.

	* src/base/ftdbgmem.c [!FT_DEBUG_MEMORY]: ANSI C doesn't like empty
	source files; however, some compilers warn about an unused variable
	declaration.  This is now replaced with a typedef.

2009-12-18  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #28320.

	There exist corrupt, subsetted fonts (embedded in PDF files) which
	contain a private dict that ends with an unterminated floating point
	number (no operator following).  We now ignore this error (as
	acrobat does).

	* src/cff/cffparse.c (cff_parser_run): Don't emit a syntax error for
	unterminated floating point numbers.

2009-12-16  Werner Lemberg  <wl@gnu.org>

	Really fix compiler warnings.
	Reported by Sean.

	* src/truetype/ttgxvar.c (GX_PT_POINTS_ARE_WORDS,
	GX_PT_POINT_RUN_COUNT_MASK): Convert enum values to macros.

2009-12-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Improve configure.raw to copy some options from CFLAGS to LDFLAGS.
	The linker of Mac OS X 10.6 is sensitive to the architecture.  If
	the architectures are specified explicitly for the C compiler, the
	linker requires the architecture specifications too.

	* builds/unix/configure.raw: Replace `-isysroot' option parser by
	more generic argument parser.

2009-12-15  Werner Lemberg  <wl@gnu.org>

	Fix compiler warnings.
	Reported by Sean.

	* src/truetype/ttgxvar.c (ft_var_readpackeddeltas): Fix counter data
	type.

2009-12-14  Ken Sharp  <ken.sharp@artifex.com>

	Ignore invalid `setcurrentpoint' operations in Type 1 fonts.
	This fixes Savannah bug #28226.

	At least two wild PostScript files of unknown provenance contain
	Type 1 fonts, apparently converted from TrueType fonts in earlier
	PDF versions of the files, which use the `setcurrentpoint' operator
	inappropriately.

	FreeType currently throws an error in this case, but Ghostscript and
	Adobe Distiller both accept the fonts and ignore the problem.  This
	commit #ifdefs out the check so PostScript interpreters using
	FreeType can render these files.

	The specification says `setcurrentpoint' should only be used to set
	the point after a `Subr' call, but these fonts use it to set the
	initial point to (0,0).  Unnecessarily so, as they correctly use an
	`hsbw' operation which implicitly sets the initial point.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<op_setcurrentpoint>: Comment out code.

2009-12-14  Bram Tassyns  <bramt@enfocus.be>

	Fix parsing of /CIDFontVersion.
	This fixes Savannah bug #28287.

	* src/cid/cidtoken.h: `cid_version' in CID_FaceInfoRec (in
	t1tables.h) is of type FT_Fixed.

2009-12-14  Werner Lemberg  <wl@gnu.org>

	Trace glyph index in CID module.
	Suggested in Savannah patch #7023.

	* src/cid/cidgload.c (cid_load_glyph): Add tracing message.

2009-12-03  Werner Lemberg  <wl@gnu.org>

	Fix compiler warnings.

	* src/truetype/ttgload.c (tt_get_metrics): Put `Exit' label into the
	proper preprocessor conditional.
	* src/pfr/pfrobjs.c (pfr_slot_load): Pacify gcc.

2009-11-25  John Tytgat  <John.Tytgat@esko.com>

	Better handling of start of `eexec' section.
	This fixes Savannah bug #28090.

	* src/type1/t1parse.c (T1_Get_Private_Dict): Skip all whitespace
	characters before start of `eexec' section.

2009-11-20  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #27742.

	* src/base/ftstroke.c (ft_stroker_outside): Avoid silent division by
	zero, using a threshold for `theta'.

2009-11-20  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #28036.

	* src/type1/t1afm.c (t1_get_index): Fix comparison.

2009-11-16  Werner Lemberg  <wl@gnu.org>

	Fix compiler warnings.
	Reported by Kevin Blenkinsopp <arqon@promode.org>.

	* src/sfnt/ttload.c (check_table_dir): Use proper data type.

2009-11-15  Werner Lemberg  <wl@gnu.org>

	Really fix FreeDesktop bug #21197.
	This also fixes Savannah bug #28021.

	* src/autofit/aflatin.c (af_latin_metrics_check_digits),
	src/autofit/aflatin2.c (af_latin2_metrics_check_digits): Fix loop.

2009-11-15  Werner Lemberg  <wl@gnu.org>

	Add tracing messages for advance values.

	* src/base/ftobjs.c (FT_Load_Glyph), src/truetype/ttgload.c
	(TT_Get_HMetrics, TT_Get_VMetrics): Do it.

2009-11-08  Werner Lemberg  <wl@gnu.org>

	Fix compiler warning.
	Reported by Jeremy Manson <jeremy.manson@gmail.com>.

	* src/truetype/ttgload.c (load_truetype_glyph): Initialize `error'.

2009-11-04  Werner Lemberg  <wl@gnu.org>

	Remove compiler warning.
	Reported by Sean McBride <sean@rogue-research.com>.

	* src/tools/apinames.c (read_header_file)<STATE_TYPE>: Use a cast to
	`int', as specified in the printf(3) man page.

2009-11-04  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #27921.

	* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
	(cid_face_init), src/type1/t1afm.c (T1_Read_Metrics),
	src/type1/t1objs.c (T1_Face_Init): Don't use unsigned constant
	values for rounding if the argument can be negative.

2009-11-03  Bram Tassyns  <bramt@enfocus.be>

	Add basic support for Type1 charstrings in CFF.
	This fixes Savannah bug #27922.

	* src/cff/cffgload.c (CFF_Operator, cff_argument_counts): Handle
	`seac', `sbw', and `setcurrentpoint' opcodes.
	(cff_compute_bias): Add parameter to indicate the charstring type.
	Update all callers.
	(cff_operator_seac): Add parameter for side bearing.
	(cff_decoder_parse_charstrings): Updated for more Type1 support.

2009-11-03  Werner Lemberg  <wl@gnu.org>

	Return correct `linearHoriAdvance' value for embedded TT bitmaps too.
	Reported by Jeremy Manson <jeremy.manson@gmail.com>.

	src/truetype/ttgload.c (load_truetype_glyph): Add parameter to
	quickly load the glyph header only.
	Update all callers.
	(tt_loader_init): Add parameter to quickly load the `glyf' table
	only.
	Update all callers.
	(TT_Load_Glyph): Compute linear advance values for embedded bitmap
	glyphs too.

2009-11-03  Werner Lemberg  <wl@gnu.org>

	Improve code readability.

	* src/ttgload.c (load_truetype_glyph): Move metrics calculation
	to...
	(tt_get_metrics): This new function.

2009-10-26  Bram Tassyns  <bramt@enfocus.be>

	Fix Savannah bug #27811.

	* src/truetype/ttxgvar.c (ft_var_readpackeddeltas): Fix
	signed/unsigned mismatch.

2009-10-19  Ning Dong  <flintning@163.com>

	Fix handling of `get' and `put' CFF instructions.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_get,
	cff_op_put>: Appendix B of Adobe Technote #5177 limits the number of
	elements for the `get' and `put' operators to 32.
	* src/cff/cffgload.h (CFF_MAX_TRANS_ELEMENTS): Define.
	(CFF_Decoder): Use it for `buildchar' and remove `len_buildchar'.

2009-10-18  Werner Lemberg  <wl@gnu.org>

	Fix handling of `dup' CFF instruction.
	Problem and solution reported by Ning Dong <flintning@163.com>.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_dup>:
	Increase `args' by 2, not 1.

2009-10-10  Werner Lemberg  <wl@gnu.org>

	* Version 2.3.11 released.
	==========================


	Tag sources with `VER-2-3-11'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.3.11.

	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj: s/2.3.10/2.3.11/, s/2310/2311/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 11.

	* builds/unix/configure.raw (version_info): Set to 9:22:3.

2009-10-10  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES, docs/release: Updated.

2009-10-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/pcf/pcfread.c (pcf_get_properties): Fix a bug in the nprops
	truncation.  Reported by Martin von Gagern and Peter Volkov.
	https://bugs.gentoo.org/288357 and https://bugs.gentoo.org/288256

2009-10-06  Werner Lemberg  <wl@gnu.org>

	* Version 2.3.10 released.
	==========================


	Tag sources with `VER-2-3-10'.

	* builds/toplevel.mk (major, minor, patch): Fix regexp to allow more
	than a single digit.
	(dist): We now use git.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.3.10.

	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj: s/2.3.9/2.3.10/, s/239/2310/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 10.

	* builds/unix/configure.raw (version_info): Set to 9:21:3.

2009-10-06  Werner Lemberg  <wl@gnu.org>

	Fix `make multi'.

	* src/cache/ftccache.c, src/cache/ftcsbits.c (FT_COMPONENT): Define.

	* src/sfnt/sfdriver.c: Include FT_INTERNAL_DEBUG_H.

2009-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Fix Savannah bug #27441, clean up Redhat bugzilla #513582.
	Tricky casts in FTC_{CACHE,GCACHE,MRULIST}_LOOKUP_CMP() are removed.
	Now these functions should be called with FTC_Node or FTC_MruNode
	variable, and the caller should cast them to appropriate pointers to
	concrete data.  These tricky casts can GCC-4.4 optimizer (-O2)
	confused and the crashing binaries are generated.

	* src/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Drop tricky cast.
	Now the 4th argument `node' of this function should be typed as
	FTC_MruNode.

	* src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): For inline
	implementation, new temporal variable FTC_MruNode `_mrunode' to take
	the pointer from FTC_MRULIST_LOOKUP_CMP().  For non-inline
	implementation, tricky cast is dropped.

	* src/cache/ftcmanag.c (FTC_SIZE_NODE): New macro casting
	to FTC_SizeNode.
	(FTC_Manager_LookupSize): Replace FTC_SizeNode `node' by FTC_MruNode
	`mrunode', and FTC_SIZE_NODE() is inserted.
	(FTC_FACE_NODE): New macro casting to FTC_FaceNode.
	(FTC_Manager_LookupFace) Replace FTC_FaceNode `node' by FTC_MruNode
	`mrunode', and FTC_FACE_NODE() is inserted.

	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Change the type of
	`node' from FTC_INode to FTC_Node.  Extra casting macro FTC_NODE()
	is dropped.
	(FTC_ImageCache_LookupScaler): Ditto.
	(FTC_SBitCache_Lookup): Change the type of `node' from FTC_SNode to
	FTC_Node.  Extra casting macro FTC_NODE() is dropped.  FTC_SNODE()
	is inserted.
	(FTC_SBitCache_LookupScaler): Ditto.

	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the type of
	`node' from FTC_CMapNode to FTC_Node.  Extra casting macro
	FTC_NODE() is dropped, FTC_CMAP_NODE() is inserted.

2009-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache, psaux, type1] Fix for multi build.
	In multi build, some cpp functions are left as unresolved symbols.

	* src/cache/ftcbasic.c: Include FT_INTERNAL_DEBUG_H for FT_TRACE1().

	* src/psaux/t1decode.c: Include FT_INTERNAL_CALC_H for
	FIXED_TO_INT().
	* src/type1/t1gload.c: Ditto.
	* src/type1/t1objs.c: Ditto.

2009-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autofit] Fix for multi build.

	* src/autofit/afmodule.h: Include FT_INTERNAL_OBJECTS_H to use
	FT_DECLARE_MODULE() macro in multi build.

	* src/autofit/aflatin.c: Include <ft2build.h> to handle
	FT_ADVANCES_H correctly in multi build.

2009-09-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Check the face filled by FTC_Manager_LookupFace().

	* src/cache/ftcbasic.c (ftc_basic_family_get_count): Return
	immediately if FTC_Manager_LookupFace() fills face by NULL.  Such
	case can occur when the code is optimized by GCC-4.2.x.

2009-09-23  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2009-09-12  Werner Lemberg  <wl@gnu.org>

	[raster] Fix 5-levels grayscale output.
	This was broken since version 2.3.0.

	* src/raster/ftraster.c (count_table): Use pre-2.3.0 values (which
	were then computed dynamically).
	(Vertical_Gray_Sweep_Step): Updated.

	(ft_black_render): Initialize `worker->gray_lines' (problem found by
	valgrind).

	(FT_RASTER_OPTION_ANTI_ALIASING, DEBUG_RASTER): Dont' #undef, just
	comment out.

2009-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Improve configure.raw for cross build.

	* builds/unix/configure.raw: Remove temporal files created by the
	suffix checking for CC_BUILD.  Set XX_ANSIFLAGS and XX_CFLAGS when
	cross compiler is GCC.  AC_PROG_CC checks whether the cross compiler
	is GCC, its result is stored in GCC.

2009-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[BDF] Modify hash API to take size_t value instead of void *.

	The hash API in BDF driver is designed to be generic, it takes
	void * typed data.  But BDF driver always gives an unsigned long
	integer (the index to a property).  To reduce non-essential
	casts from unsigned long to void* and from void* to unsigned
	long, the hash API is changed to take size_t integer.
	The issue of incompatible cast between unsigned long and void*
	on LLP64 platform is reported by NightStrike from MinGW-Win64
	project.  See
	http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html

	* src/bdf/bdf.h: The type of hashnode->data is changed from
	void* to size_t.

	* src/bdf/bdflib.c (hash_insert): Get size_t data, instead of
	void* data.
	(bdf_create_property): Get the name length of new property by
	size_t variable, with a cut-off at FT_ULONG_MAX.
	(_bdf_set_default_spacing): Get the name length of the face by
	size_t variable, with a cut-off at 256.
	(bdf_get_property): Get the property id by size_t variable to
	reduce the casts between 32-bit prop ID & hashnode->data during
	simple copying.
	(_bdf_add_property): Ditto.
	(_bdf_parse_start): Calculate the index to the property array
	by size_t variable.
	(bdf_get_font_property): Drop a cast to unsigned long.

2009-09-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[Win64] Improve the computation of random seed from stack address.

	On LLP64 platform, the conversion from pointer to FT_Fixed need
	to drop higher 32-bit.  Explict casts are required. Reported by
	NightStrike from MinGW-w64 project.  See
	http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html

	* src/cff/cffgload.c: Convert the pointers to FT_Fixed explicitly.

	* src/psaux/t1decode.c: Ditto.


2009-09-03  Werner Lemberg  <wl@gnu.org>

	[raster] Improvements for stand-alone mode.

	* src/raster/rules.mk: Don't handle ftmisc.h.  It is needed for
	stand-alone mode only.

	* src/raster/ftmisc.h (FT_MemoryRec , FT_Alloc_Func, FT_Free_Func,
	FT_Realloc_Func): Copy declarations from ftsystem.h.

2009-09-02  Bram Tassyns  <bramt@enfocus.be>

	Improve vertical metrics calculation (Savannah bug #27364).

	The calculation of `vertBearingX' is not defined in the OTF font
	spec so FreeType does a `best effort' attempt.  However, this value
	is defined in the PDF and PostScript specs, and that algorithm is
	better than the one FreeType currently uses:

	  FreeType: Use the middle of the bounding box as the X coordinate
	            of the vertical origin.

	  Adobe PDF spec: Use the middle of the horizontal advance vector as
	                  the X coordinate of the vertical origin.

	FreeType's algorithm goes wrong if you have a really small glyph
	(like the full-width, circle-like dot at the end of the sentence, as
	used in CJK scripts) with large bearings.  With the FreeType
	algorithm this dot gets centered on the baseline; with the PDF
	algorithm it gets the correct location (in the top right).  Note
	that this is a serious issue, it's like printing the dot at the end
	of a Roman sentence at the center of the textline instead of on the
	baseline like it should. So i believe the PDF spec's algorithm
	should be used in FreeType as well.

	The `vertBearingY' value for such small glyphs is also very strange
	if no `vmtx' information is present, since the height of the bbox is
	not representable for the height of the glyph visually (the
	whitespace up to the baseline is part of the glyph).  The fix also
	includes some code for a better estimate of `vertBearingY'.

	* src/base/ftobjs.c (ft_synthesize_vertical_metrics): `vertBearingX'
	is now calculated as described by the Adobe PDF Spec.  Estimate for
	`vertBearingY' now works better for small glyphs completely above or
	below the baseline into account.

	* src/cff/cffgload.c (cff_slot_load): `vertBearingX' is now
	calculated as described by the Adobe PDF Spec.  Vertical metrics
	information was always ignored when FT_CONFIG_OPTION_OLD_INTERNALS
	was not defined.

	* src/truetype/ttgload.c (compute_glyph_metrics): `vertBearingX' is
	now calculated as described by the Adobe PDF Spec.

2009-09-01  John Tytgat  <John.Tytgat@esko.com>

	Fix custom cmap for empty Type 1 font (Savannah bug #27294).

	* include/freetype/internal/t1types.h (T1_EncodingRecRec_): Update
	comment to reflect revised code_last meaning.
	* src/type1/t1load.c (T1_Open_Face), src/type42/t42objs.c
	(T42_Open_Face): Assign max_char as highest character code + 1 and
	use this for T1_EncodingRecRec_::code_last.
	* src/psaux/t1cmap.c (t1_cmap_custom_init): Follow revised
	T1_EncodingRecRec_::code_last meaning.

2009-08-25  Werner Lemberg  <wl@gnu.org>

	Fix rendering of horizontally compressed CFFs.
	Bug reported by Ivan Nincic <inincic@pdftron.com>.

	* src/cff/cffgload.c (cff_slot_load): Thinko: Check `xx' element of
	`font_matrix' also.

	* docs/CHANGES: Updated.

2009-08-03  suyu0925@gmail.com

	Don't call `ft_fseek' every time when executing `ft_fread'.

	* src/base/ftstream.c (FT_Stream_Seek), src/base/ftsystem.c
	(ft_ansi_stream_io): Implement it.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Cast a charcode to 32-bit in cmap format 14 parser.
	
	* src/sfnt/ttcmap.c (tt_cmap14_char_var_index,
	tt_cmap14_char_var_isdefault, tt_cmap14_char_variants,
	tt_cmap14_variant_chars): Correct mismatches from
	FT_CMap_CharVarIndexFunc prototype, FT_ULong arguments
	are replaced by FT_UInt32 arguments.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Cast a charcode to 32-bit in cmap format 12 parser.

	* src/sfnt/ttcmap.c (tt_cmap12_char_next):
	Insert explicit cast from FT_UFast to FT_UInt32
	for return value.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	psaux: Fix a few casts to FT_Int32 value.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings):
	Fix a few casts setting `value' from FT_Long to FT_Int32,
	because `value' is typed as FT_Int32 since 2009-06-22.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Fix a data type mismatching with its source.

	* src/sfnt/ttcmap.c (tt_cmap13_char_next): Fix the
	type of `gindex' from FT_ULong to FT_UInt because
	it is set by FT_UInt tt_cmap13_char_map_binary() or
	TT_CMap13->cur_gindex.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Extend a few local variables to load 32-bit values.

	* src/sfnt/ttkern.c (tt_face_load_kern): Extend `count'
	and `kern' to load 32-bit values.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pfr: Extend `num_aux' to take 32-bit value.

	* src/pfr/pfrload.c (pfr_phy_font_load): Extend
	`num_aux' to load 32-bit value.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pcf: Truncate FT_ULong `nprops' to fit to int PCF_Face->nprops.

	* src/pcf/pcfread.c (pcf_get_properties): Load `nprops'
	as FT_ULong value from PCF file, but truncate it as
	int to fit PCF_Face->nprops.  The number of truncated
	properties is shown in the trace message.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gxvalid: Extend a few local variables to reduce the casts.

	* src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
	Extend `type' and `rest' to take FT_ULong values.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gxvalid: Extend `settingTable' to take 32-bit offset.

	* src/gxvalid/gxvfeat.c (gxv_feat_name_validate):
	Extend `settingTable' to take 32-bit offset.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	autofit: Cast FT_Long glyph_count to compare with FT_UInt GID.

	* src/autofit/afglobal.c (af_face_globals_is_digit,
	af_face_globals_compute_script_coverage): Cast FT_Long
	globals->glyph_count to FT_ULong, to compare with FT_UInt
	gindex.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	smooth: Exclude 16-bit system in invalid pitch/height check.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic):
	pitch and height are typed as FT_UInt but checked to fit
	16-bit range, to avoid the overflows.  On 16-bit system,
	this checking inserts a conditional that never occurs.

2009-07-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cff: Type large constants > 0x7FFF as long for 16-bit systems.

	* src/cff/cffload.c (cff_charset_load): Type large
	constants > 0x7FFF as long, because normal constants
	are typed signed integer that is less than 0x8000 on
	16-bit systems.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	base: Remove an unused variable.

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove an
	unused variable `library'.  glyph->library is used.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Check higher bits in flags for non ILP32 systems.

	4 public functions ought to take FT_ULong flags, but take
	FT_UInt flags. To keep binary compatibility, we drop higher
	bits on non ILP32 platforms,
		ILP64 systems: No drop occurs.
		LP64 systems: Higher bits are not used.
		16-bit systems: Drop can occur.
	See
	http://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00065.html
	These functions will be refined to take FT_ULong flags in
	next bump with incompatible API change.

	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup):
	Check `flags' in `type', the 2nd argument.
	(FTC_SBitCache_Lookup): Ditto.
	(FTC_ImageCache_LookupScaler): Check `load_flags',
	the 3rd argument.
	(FTC_SBitCache_LookupScaler): Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Ignore invalid GIDs in glyph name lookup.

	* include/freetype/internal/fttrace.h:
	New trace module for sfdriver.c is added.

	* src/sfnt/sfdriver.c (sfnt_get_name_index):
	Restrict glyph name lookup to FT_UInt GID.
	Genuine TrueType can hold 16-bit glyphs.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pcf: Fix a comparison between FT_Long and FT_ULong.

	* src/pcf/pcfread.c (pcf_get_bitmaps): Return an error
	if PCF_Face->nemetrics is negative.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gxvalid: Guarantee `nFeatureFlags' size up to 32-bit.

	* src/gxvalid/gxvmort.c (gxv_mort_featurearray_validate):
	Extend the 3rd argument `nFeatureFlags' to FT_ULong.
	* src/gxvalid/gxvmort.h: Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Insert explicit cast for LP64 system.

	* src/sfnt/ttkern.c (tt_face_load_kern): Insert
	cast from unsigned long to FT_UInt32.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gxvalid: Guarantee `just' table size upto 32-bit.

	* src/gxvalid/gxvjust.c (gxv_just_validate):
	The type of `offset' is changed from FT_UInt to
	FT_Offset, for 16-bit platforms.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gxvalid: Guarantee `trak' table size upto 32-bit.

	* src/gxvalid/gxvtrak.c (gxv_trak_validate):
	The type of `offset' is changed from FT_UInt to
	FT_Offset, for 16-bit platforms.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	type1: Fix a data type mismatching with its source.

	* include/freetype/internal/t1types.h: The type of
	T1_Face->buildchar is matched with T1_Decorder->top.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pfr: Fix a data type mismatching with its source.

	* src/pfr/pfrtypes.h: The type of PFR_KernItem->offset
	is extended from FT_UInt32 to FT_Offset, because it is
	calculated with the pointer difference, in
	pfr_extra_item_load_kerning_pairs().

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pfr: Fix a data type mismatching with its source.

	* src/pfr/pfrtypes.h: The type of PFR_PhysFont->chars_offset
	is extended from FT_UInt32 to FT_Offset, because it is
	calculated with the pointer difference in pfr_phy_font_load().

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pfr: Fix a data type mismatching with its source.

	* src/pfr/pfrtypes.h: The type of PFR_PhyFont->bct_offset
	is extended from FT_UInt32 to FT_Long, because it is
	loaded by FT_STREAM_POS() in pfr_phy_font_load().

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	smooth: Improve the format in debug message.

	* src/smooth/ftgrays.c (gray_dump_cells): Improve the
	format specifications to dump variables.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Fix a data type mismatching with its source.

	* src/sfnt/sfobjs.c (sfnt_load_face): The type of
	local `flags' is matched with FT_Face->face_flags.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	psaux: Fix a data type mismatching with its source.

	* include/freetype/internal/psaux.h: The type of
	T1_DecorderRec.buildchar is matched with
	T1_DecorderRec.top.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Extend TrueType GX packed deltas to FT_Offset.

	* src/truetype/ttgxvar.c (ft_var_readpackeddeltas):
	The type of 2nd argument `delta_cnt' is changed from
	FT_Int to FT_Offset, because its source can be cvt
	table size calculated from stream position.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Extend mmvar_len to hold size_t values.

	* src/truetype/ttgxvar.h: The type of
	GX_BlendRec.mmvar_len is changed from FT_Int to
	FT_Offset, because TT_Get_MM_Var() calculates it
	by sizeof() results.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Check invalid function number in IDEF instruction.

	* src/truetype/ttinterp.c (Ins_IDEF): Check
	if the operand fits to 8-bit opcode limitation.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Check invalid function number in FDEF instruction.

	* src/truetype/ttinterp.c (Ins_FDEF): Check
	if the operand fits 16-bit function number.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Truncate the deltas of composite glyph at 16-bit values.

	* src/truetype/ttgload.c (load_truetype_glyph):
	Insert cast from FT_Long (deltas[i].{x,y}) to
	FT_Int16 in the summation of deltas[] for composite
	glyphs.  Because deltas[i] is typed as FT_Pos,
	its component x, y are typed as FT_Long, but
	their sources are always FT_Int16 when they are
	loaded by ft_var_readpackeddeltas().  However,
	the limitation about the summed deltas is unclear.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Truncate the instructions upto 16-bit per a glyph.

	* src/truetype/ttgload.c (TT_Hint_Glyph): Truncate
	the instructions upto 16-bit length per a glyph.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Cast the numerical operands to 32-bit for LP64 systems.

	* src/truetype/ttinterp.c (Ins_SPHIX, INS_MIAP,
	Ins_MIRP): Insert cast from long (args[], the
	operands passed to TrueType operator) to FT_Int32
	(the argument of TT_MulFix14()).

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Cast the project vector to 32-bit for LP64 system.

	* src/truetype/ttinterp.c (Project, DualProject):
	Insert casts from FT_Pos (the arguments `dx', `dy')
	to FT_UInt32 (the argument to TT_DotFix14()).

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Cast the scaling params to 32-bit for LP64 system.

	* src/truetype/ttgload.c (TT_Process_Composite_Component):
	Insert casts from long (return value of FT_MulFix()) to
	FT_Int32 (the argument to FT_SqrtFixed()).

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Cast a character code to FT_UInt32 for LP64 system.

	* src/sfnt/ttcmap.c (tt_cmap14_char_map_nondef_binary,
	tt_cmap14_variants, tt_cmap14_char_variants,
	tt_cmap14_def_char_count, tt_cmap14_get_def_chars,
	tt_cmap14_get_nondef_chars, tt_cmap14_variant_chars)
	Insert casts when FT_UInt32 variable is loaded by
	TT_NEXT_{UINT24|ULONG}.  Because most of them are
	compared with FT_UInt32 values in public API, replacing
	FT_UFast is not recommended.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Cast a character code to FT_UInt32 for LP64 system.

	* src/sfnt/ttcmap.c (tt_cmap4_init, tt_cmap4_next):
	Insert the casts from unsigned long constant to
	FT_UInt32.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Extend TT_BDF->strings_size to FT_ULong for huge BDF.

	* include/freetype/internal/tttypes.h: The type
	of TT_BDF->string_size is extended from FT_UInt32
	to FT_ULong, because BDF specification does not
	restrict the length of string.
	* src/sfnt/ttbdf.c: The scratch variable `strings'
	to load TT_BDF->string_size is matched with
	TT_BDF->string_size.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	psaux: Handle the string length by FT_Offset variables.

	* src/psaux/afmparse.c (afm_parser_next_key,
	afm_tokenize, afm_parse_track_kern,
	afm_parse_kern_pairs, afm_parse_kern_data,
	afm_parser_skip_section, afm_parser_parse):
	The length of key is handled by FT_Offset,
	instead of FT_UInt.  Although the length of
	PostScript strings or name object is 16-bit,
	AFM_STREAM_KEY_LEN() calculates the length
	from the pointer difference.

	* src/psaux/afmparse.h (afm_parser_next_key):
	Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pcf: Fix some data types mismatching with their sources.

	* src/pcf/pcfread.c (pcf_get_bitmaps): The types
	of `nbitmaps', `i', `sizebitmaps' are matched with
	the type of area FT_Bitmap.pitch * FT_Bitmap.rows.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pcf: Handle the string length by size_t variables.

	* src/pcf/pcfread.c (pcf_interpret_style): The types
	of nn, len, lengths[4] are changed to size_t, because
	they are loaded by (or compared with) ft_strlen().

	* src/pcf/pcfutil.c (BitOrderInvert, TwoByteSwap,
	FourByteSwap): The type of the 2nd argument `nbytes'
	is changed to size_t, for similarity with ANSI C
	string functions.

	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): The type of
	`bytes' is changed to FT_Offset, because it is passed
	to FT_ALLOC(), via ft_glyphslot_alloc_bitmap().  At
	least, using unsigned type is better.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pcf: Fix some data types mismatching with their sources.

	* src/pcf/pcfread.c (pcf_seek_to_table_type,
	pcf_has_table_type): The type of 3rd argument
	`ntables' is matched with PCF_Toc->count.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	otvalid: Truncate the glyph index to 16-bit.

	* src/otvalid/otvalid.c (otv_validate): Checks
	face->num_glyphs does not exceed 16-bit limit,
	pass FT_UInt num_glyphs to backend functions
	otv_{GPOS|GSUB|GDEF|JSTF|MATH}_validate().

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Insert explict casts for LP64 systems.

	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup,
	FTC_SBitCache_Lookup): The type of FTC_ImageType->width
	is FT_Int, so the cast to unsigned larger type FT_ULong
	is introduced for the comparisons with 0x10000L for
	LP64 platform.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Fix some data types mismatching with their sources.

	* src/cache/ftccache.h: The type of return value
	by FTC_Node_WeightFunc function is changed to
	FT_Offset.  The type of FTC_CacheClass->cache_size
	is changed to FT_Offset, too.

	* src/cache/ftccback.h (ft_inode_weight,
	ftc_snode_weight): Ditto.

	* src/cache/ftccmap.c (ftc_cmap_node_weight): Ditto.

	* src/cache/ftcimage.c (ftc_inode_weight,
	FTC_INode_Weight): Ditto.

	* src/cache/ftcsbits.c (ftc_snode_weight,
	FTC_SNode_Weight): Ditto.

	* src/cache/ftcmru.h: The type of
	FTC_MruListClass->node_size is changed to FT_Offset,
	because it is passed to FT_ALLOC() to specify the
	size of buffer.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	XXX_cmap_encoding_char_next() return FT_UInt32 values.

	* include/freetype/internal/services/svpscmap.h:
	The size of the charcode value returned by
	the function typed PS_Unicodes_CharNextFunc is
	matched with its input charcode value.

	* src/cff/cffmap.c (cff_cmap_encoding_char_next,
	cff_cmap_unicode_char_next): Ditto.

	* src/pfr/pfrmap.c (pfr_cmap_encoding_char_next):
	Ditto.

	* src/psaux/t1cmap.c (t1_cmap_std_char_next,
	t1_cmap_custom_char_next, t1_cmap_unicode_char_next):
	Ditto.

	* src/psnames/psmodule.c (ps_unicodes_char_next):
	Ditto.

	* src/winfonts/winfnt.c (fnt_cmap_char_next):
	Ditto.

	* src/sfnt/ttcmap.c (tt_cmap0_char_next,
	tt_cmap2_char_next, tt_cmap4_char_next,
	tt_cmap6_char_next, tt_cmap10_char_next,
	tt_cmap12_char_next, tt_cmap13_char_next): Ditto.
	(tt_cmap14_char_variants): Handle base unicode
	codepoint by FT_UInt32 variable to avoid overflow
	on 16-bit platforms.
	(tt_cmap14_ensure): The type of `num_results' is
	extend to FT_UInt32, to cover unsigned 32-bit
	`numVarSelectorRecords' in cmap14 table header.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	truetype: Extend TT_Face->num_locations for broken TTFs.

	* include/freetype/internal/tttypes.h:
	TT_Face->num_locations are extended from FT_UInt
	to FT_ULong, to stand with broken huge loca table.
	Some people insists there are broken TTF including
	the glyphs over 16-bit limitation, in PRC market.
	* src/truetype/ttpload.c (tt_face_load_loca):
	Remove unrequired 16-bit truncation for FT_UInt
	TT_Face->num_locations.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	smooth: Fix some data types mismatching with their sources.

	* src/smooth/ftgrays.c: The type of `TCoord' is
	matched to `TPos', because they are mixed in
	gray_set_cell().  The type of TCell->x is extended
	to `TPos', because gray_find_cell() sets it by
	TWorker.ex.  The type of TCell->cover is extended
	to `TCoord', because gray_render_scanline() adds
	TCoord value to it.  The type of TWork.cover is matched
	with TCell->cover.  The types of
	TWork.{max_cells,num_cells} are changed to FT_PtrDist,
	because they are calculated from the memory addresses.
	The type of TWork.ycount is changed to TPos, because
	it is calculated from TPos variables.
	(gray_find_cell): The type of `x' is matched with
	its initial value ras.ex.
	(gray_render_scanline): The types of `mod', `lift'
	and `rem' are changed to TCoord, because their values
	are set with explicit casts to TCoord.  When ras.area
	is updated by the differential values including
	`delta', they are explicitly cast to TArea, because
	the type of `delta' is not TArea but TCoord.
	(gray_render_line): The type of `mod' is extended
	from int to TCoord, because (TCoord)dy is added to mod.
	(gray_hline): The argument `acount' is extended to
	TCoord, to match with the parameters in the callers.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cff: Fix some data types mismatching with their sources.

	* src/cff/cffobjs.c (cff_face_init): The type of
	`scaling' is matched with the scaling parameter
	in FT_Matrix_Multiply_Scaled() and
	FT_Vector_Transform_Scaled().

	* src/cff/cffparse.c (cff_parse_real): The type of
	`power_ten', `scaling', `exponent_add',
	`integer_length', `fraction_length',
	`new_fraction_length' and `shift' are matched with
	the type of `exponent' to avoid unexpected truncation.
	(cff_parse_fixed_scaled): The type of `scaling' is
	matched with the `scaling' argument to
	cff_parse_real().
	(cff_parse_fixed_dynamic): Ditto.
	(cff_parse_font_matrix): The type of `scaling' is
	matched with the `scaling' argument to
	cff_parse_dynamic().

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	autofit: Fix some data types mismatching with their sources.

	* src/autofit/afglobal.c: Correct the type of
	AF_FaceGlobalsRec.glyph_count to match with
	FT_Face->num_glyphs.
	(af_face_globals_compute_script_coverage):
	Insert explicit cast to compare
	FT_Long AF_FaceGlobalsRec.glyph_count versus
	FT_UInt gindex.  The type of `nn' is changed
	to scan glyph index upto AF_FaceGlobalsRec.glyph_count.
	(af_face_globals_get_metrics): The type of `script_max'
	is changed to cover size_t value.  Insert explicit cast
	to compare FT_Long AF_FaceGlobalsRec.glyph_count versus
	FT_UInt gindex.

	* src/autofit/afhints.c (af_axis_hints_new_segment):
	Insert explicit cast to calculate `big_max' from
	integer and size_t values.
	(af_axis_hints_new_edge): Ditto.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues):
	The type of `best_y' is matched to FT_Vector.y.
	(af_latin_compute_stem_width): The type of `delta' is
	matched to `dist' and `org_dist'.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	autofit: Count the size of the memory object by ptrdiff_t.

	* src/autofit/afcjk.c (af_cjk_hint_edges): The
	number of edges `n_edges' should be counted by
	FT_PtrDist variable instead of FT_Int.

	* src/autofit/aflatin.c (af_latin_hint_edges):
	Ditto.

	* src/autofit/aftypes.h: In AF_ScriptClassRec,
	the size of metric `script_metrics_size' should
	be counted by FT_Offset variable instead of FT_UInt.

	* src/autofit/afhints.c
	(af_glyph_hints_align_strong_points): The cursors
	for the edges `min', `max', `mid' in the memory
	buffer should be typed FT_PtrDist.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	autofit: Fix for unused variable `first'.

	* src/autofit/afhints.c (af_glyph_hints_reload): Insert
	FT_UNUSED() to hide the unused variable warning.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Improve bitmap size or pixel variables for 16-bit systems.

	* include/freetype/config/ftstdlib.h: Introduce
	FT_INT_MIN, to use in signed integer overflow in
	16-bit and 64-bit platforms.
	
	* include/freetype/internal/fttrace.h: Add a tracer
	to ftsynth.c.
	
	* src/base/ftbitmap.c (FT_Bitmap_Embolden): Check
	invalid strength causing integer overflow on 16-bit
	platform.
	
	* src/base/ftcalc.c (ft_corner_orientation): Change
	the internal calculation from FT_Int to FT_Long, to
	avoid an overflow on 16-bit platforms.  The caller of
	this function should use only the sign of result,
	so the cast to FT_Int is acceptable.
	
	* src/base/ftsynth.c: Introduce a tracer for synth module.
	(FT_GlyphSlot_Embolden): Check invalid strength causing
	integer overflow on 16-bit platform.
	
	* src/bdf/bdfdrivr.c (BDF_Face_Init): The glyph index
	in FT2 API is typed as FT_UInt, although BDF driver
	can handle unsigned long glyph index internally.  To
	avoid integer overflow on 16-bit platform, too large
	glyph index should be excluded.
	(BDF_Glyph_Load): The glyph pitch in FT2 is typed as
	FT_UInt, although BDF driver can handle unsigned long
	glyph pitch internally.  To avoid integer overflow on
	16-bit platform, too large glyph pitch should not be
	returned.
	
	* src/pfr/pfrsbit.c (pfr_slot_load_bitmap): The glyph
	pitch in FT2 is typed as FT_UInt, although PFR font
	format can include huge bitmap glyph with 24-bit pitch
	(however, a glyph spends 16.7 pixel, it's not realistic).
	To avoid integer overflow on 16-bit platform, huge
	bitmap glyph should be excluded.
	
	* src/smooth/ftgrays.c (gray_hline): As FT_Span.x is
	truncated to fit its type (16-bit short), FT_Span.y
	should be truncated to fit its type (FT_Int).
	
	* src/cff/cffdrivr.c (cff_get_ros): CFF specification
	defines the supplement in ROS as a real number.
	Truncate it to fit public FT2 API.
	
	* src/cff/cffparse.c (cff_parse_cid_ros): Warn the
	supplement if it is truncated or rounded in cff_get_ros().
	
	* src/cff/cfftypes.h: Change the type of internal variable
	`supplement' from FT_Long to FT_ULong to fit the signedness
	to the type in public API.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	psaux: Prevent invalid arguments to afm_parser_read_vals().

	* src/psaux/afmparse.c (afm_parser_read_vals): Change
	the type of `n' to prevent negative number how many
	arguments should be parsed.

	* src/psaux/afmparse.h (afm_parser_read_vals): Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	base: Prevent some overflows on LP64 systems.

	* src/base/ftadvance.c (FT_Get_Advances): Cast the
	unsigned long constant FT_LOAD_ADVANCE_ONLY to FT_UInt32
	for LP64 platforms.

	* src/base/ftcalc.c (FT_Sqrt32): All internal variables
	are changed to FT_UInt32 from FT_ULong.
	(FT_MulDiv): Insert casts to FT_Int32 for LP64 platforms.
	This function is designed for 32-bit integer, although
	their arguments and return value are FT_Long.

	* src/base/ftobjs.c (FT_Get_Char_Index): Check `charcode'
	is within unsigned 32-bit integer for LP64 platforms.
	(FT_Face_GetCharVariantIndex): Check `charcode' and
	`variantSelector' are within 32-bit integer for LP64
	platforms.
	(FT_Face_GetCharsOfVariant): Check `variantSelector' is
	within unsigned 32-bit integer for LP64 platforms.

	* src/base/fttrigon.c (ft_trig_downscale): The FT_Fixed
	variable `val' and unsigned long constant FT_TRIG_SCALE
	are cast to FT_UInt32, when calculates FT_UInt32.
	(FT_Vector_Rotate): The long constant 1L is cast to
	FT_Int32 to calculate FT_Int32 `half'.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cff: Cast the long variables to 32-bit for LP64 systems.

	* src/cff/cffdrivr.c (cff_get_advances): Insert
	explicit cast to modify a 32-bit flag by unsigned
	long constant.

	* src/cff/cffobjs.c (cff_face_init): Ditto.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings):
	Replace the casts to FT_Long by the casts to FT_Int32
	for LP64 platforms.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pcf: Improve PCF_PropertyRec.value names on LP64 platforms.

	* src/pcf/pcf.h: In PCF_PropertyRec.value, the member
	`integer' is replaced by `l', `cardinal' is replaced
	by `ul', to fix the difference between the name and
	the types on LP64 platforms.

	* src/pcf/pcfdrivr.c (pcf_get_bdf_property): Reflect
	PCF_PropertyRec.value change, with appropriate casts
	to FT_Int32/FT_UInt32.  Their destinations
	BDF_PropertyRec.{integer|cardinal} are public and
	explicitly defined as FT_Int32/FT_UInt32.

	* src/pcf/pcfread.c (pcf_get_properties, pcf_load_font):
	Reflect PCF_PropertyRec.value change.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	pcf: Fix some data types mismatching with their sources.

	* src/pcf/pcfdrivr.c (pcf_cmap_char_index): The type of
	`code' is matched to PCF_Encoding->enc.
	(pcf_cmap_char_next): The type of `charcode' is matched
	to PCF_Encoding->enc.  When *acharcode is set by charcode,
	an overflow is checked and cast to unsigned 32-bit
	integer.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	bdf: Improve bdf_property_t.value names for LP64 platforms.

	* src/bdf/bdf.h: In bdf_property_t.value, the member
	`int32' is replaced by `l', `card32' is replaced by
	`ul', to fix the difference between the name and the
	types on LP64 platforms.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Reflect
	bdf_property_t.value change.
	(bdf_get_bdf_property): Reflect bdf_property_t.value
	change, with appropriate casts to FT_Int32/FT_UInt32.
	Their destinations BDF_PropertyRec.{integer|cardinal}
	are public and explicitly defined as FT_Int32/FT_UInt32.

	* src/bdf/bdflib.c (_bdf_add_property): Reflect
	bdf_property_t.value change.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	bdf: Fix some data types mismatching with their sources.

	* src/bdf/bdrdrivr.c (bdf_cmap_char_index): The type
	of `code' is matched with BDF_encoding_el->enc.
	(bdf_cmap_char_next): The type of `charcode' is
	matched with BDF_encoding_el->enc.  When *acharcode
	is set by charcode, an overflow is checked and
	cast to unsigned 32-bit integer.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	autofit: Improve Unicode range definitions.

	* src/autofit/aftypes.h (AF_UNIRANGE_REC): New macro
	to declare a range by two unsigned 32-bit integer,
	to avoid 64-bit range definition on LP64 platforms.

	* src/autofit/aflatin.c (af_latin_uniranges): Ditto.

	* src/autofit/aflatin2.c (af_latin2_uniranges): Ditto.

	* src/autofit/afindic.c (af_indic_uniranges): Ditto.

	* src/autofit/afcjk.c (af_cjk_uniranges): Declare
	the ranges by AF_UNIRANGE_REC.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	smooth: Fix a data type mismatching with its source.

	* src/smooth/ftgrays.c (gray_sweep): The type of
	`area' is matched with the 3rd argument `area'
	of gray_hline().

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	smooth: Fix a data type mismatching with its source.

	* src/smooth/ftgrays.c (gray_render_line): The type
	of `area' is matched with TWorker.area.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Disable the legacy compatibility if 16-bit system.

	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Exclude
	the legacy behaviour from 16-bit platform, because the
	current hack cannot detect the caller uses this function
	via legacy convension.
	(FTC_SBitCache_Lookup): Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Check 32-bit glyph index on 16-bit systems.

	* src/cache/ftcbasic.c (ftc_basic_family_get_count):
	Check overflow caused by the face including large
	number of glyphs > 64k.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Fix some data types mismatching with their sources.

	* src/cache/ftccache.c (ftc_cache_resize): The types of
	`p', `mask', `count' are matched with FTC_Cache->{p,mask}.
	(FTC_Cache_Clear): The type of `old_index' is matched to
	FTC_Cache->{p,mask}.

	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): The type
	of `_idx' is matched with FTC_Cache->{p,mask}.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Fix some data types mismatching with their sources.

	* src/cache/ftcsbits.c (ftc_snode_load): The types
	of `xadvance' and `yadvance' are matched with
	FT_GlyphSlot->advance.{x|y}.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cache: Cast NULL to a required function type explicitly.

	* src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID):
	Insert explicit cast from NULL to function type.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	fttypes.h: Cast FT_MAKE_TAG output to FT_Tag exlicitly.

	* include/freetype/fttypes.h (FT_MAKE_TAG):
	Cast the result to FT_Tag.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	psnames: Handle Unicode codepoints by FT_UInt32 variables.

	* src/psnames/psmodule.c (BASE_GLYPH): Cast the result
	to unsigned 32-bit integer for LP64 platform.
	(ps_unicode_value): Return the value by unsigned 32-bit
	integer instead of unsigned long.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	psaux: Use size_t variable to pass the buffer size.

	* src/psaux/psaux.h (to_bytes): The type of `max_bytes'
	(the argument to pass the buffer size) is changed to
	size_t, to match with ANSI C string functions.

	* src/psaux/psconv.h (PS_Conv_StringDecode,
	PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.

	* src/psaux/psconv.c (PS_Conv_StringDecode,
	PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Ditto.

	* src/psaux/psobjs.h (ps_parser_to_bytes): Ditto.

	* src/psaux/psobjs.c (ps_parser_to_bytes): Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	type1: Use size_t variable to pass the string length.

	* psaux.h: The type of `len' (the argument to pass
	the buffer size to the function in AFM_ParserRec)
	is changed to size_t, to match with ANSI C string
	functions.

	* t1afm.c (t1_get_index): Ditto.

	* test_afm.c (dummy_get_index): Ditto.

	* afmparse.c (afm_parser_read_vals): To call
	AFM_ParserRec.get_index, the length of token
	`len' is cast to size_t.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cid: Fix some data types mismatching with their sources.

	* src/cid/cidparse.c (cid_parser_new): The types of
	`read_len' and `stream_len' are matched to
	FT_Stream->size.  Unrequired cast is removed.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cff: Fix for unused variable `rest'.

	* src/cff/cffparse.c (cff_parse_real): Insert
	FT_UNUSED() to hide the unused variable warning.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	cff: Fix some data types mismatching with their sources.

	* src/cff/cffgload.c (cff_slot_load): The types of	
	`top_upm' and `sub_upm' are matched with
	CFF_FontRecDict->units_per_em.

	* src/cff/cffobjs.c (cff_size_select): Ditto.
	(cff_size_request): Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	bdf: Fix some data types mismatching with their sources.

	* bdflib.c (_bdf_list_ensure): The type of `num_items'
	is matched with _bdf_list_t.used.  Also the types of
	`oldsize', `newsize', `bigsize' are matched too.
	(_bdf_readstream): `cursor' is used as an offset to
	the pointer, it should be typed as FT_Offset.  Also
	the types of `bytes', `start', `end', `avail' are matched.

	* bdfdrivr.c: The type of BDF_CMap->num_encodings is
	matched with FT_CMap->clazz->size.
	(bdf_cmap_char_index): The types of `min', `max', `mid'
	are matched with BDF_CMap->num_encodings.  The type of
	`result' is matched with encoding->glyph.
	(bdf_cmap_char_next): Ditto, the type of `code' is
	matched with BDF_encoding_el.enc.
	(bdf_interpret_style): The type of `lengths' is changed
	to size_t, to take the value by ft_strlen().  Also the
	types of `len', `nn', `mm' are matched.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	sfnt: Count the size of the memory object by ptrdiff_t.

	* src/sfnt/ttbdf.c (tt_face_find_bdf_prop): The type of
	`peroperty_len' is changed from FT_UInt to FT_Offset,
	to match with size_t, which is appropriate type for the
	object in the memory buffer.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	lzw: Count the size of the memory object by ptrdiff_t.

	* src/lzw/ftzopen.h: The types of FT_LzwState->{buf_total,
	stack_size} are changed from FT_UInt to FT_Offset, to match
	with size_t, which is appropriate type for the object in
	the memory buffer.

	* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): The types of
	`old_size' and `new_size' are changed from FT_UInt to
	FT_Offset, to match with size_t, which is appropriate type
	for the object in the memory buffer.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	otvalid: Count the table size on memory by ptrdiff_t.

	* src/otvalid/otvgpos.c (otv_ValueRecord_validate):
	Change the type of table size from FT_UInt to
	FT_PtrDist because it is calculated by the memory
	addresses.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	otvalid: Prevent an overflow by GPOS/GSUB 32b-bit offset.

	* src/otvalid/otvgpos.c (otv_ExtensionPos_validate):
	Extend ExtensionOffset from FT_UInt to FT_ULong, to
	cover 32-bit offset on 16-bit platform.

	* src/otvalid/otvgsub.c (otv_ExtensionSubst_validate):
	Ditto.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	ftobjs.c: Prevent an overflow in glyph index handling.

	* src/base/ftobjs.c (FT_Face_GetCharsOfVariant):
	Improve the cast in comparison to avoid the truncation.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Improve the variable types in raccess_make_file_name().

	* src/base/ftrfork.c (raccess_make_file_name):
	Change the type of cursor variable `tmp' to const char*,
	to prevent the unexpected modification of original pathname.
	(raccess_make_file_name): Change the type of new_length
	to size_t.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	ftpatent.c: Fix for unused variable `error'.

	* src/base/ftpatent.c (_tt_check_patents_in_range):
	Fix warning for unused variable `error'.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	type1: Check invalid string longer than PostScript limit.

	* src/type1/t1afm.c (t1_get_index): Check invalid string
	which exceeds the limit of PostScript string/name objects.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gzip: Use FT2 zcalloc() & zfree() in ftgzip.c by default.

	* src/gzip/ftgzip.c (zcalloc, zcfree): Disable all
	zcalloc() & zfree() by zlib in zutil.c, those in
	ftgzip.c by FT2 are enabled by default.  To use
	zlib zcalloc() & zfree(), define USE_ZLIB_ZCALLOC.
	See discussion:
	http://lists.gnu.org/archive/html/freetype-devel/2009-02/msg00000.html

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gzip: Distinguish PureC from TurboC on MSDOS.

	* src/gzip/zutil.c (zcalloc, zcfree): Enable only for
	MSDOS platform.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gxvalid: Insert PureC pragma to allow unevaluated variables.

	* builds/atari/ATARI.H: Insert PureC pragma not to
	warn against set-but-unevaluated variable in gxvalid
	module.

2009-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	gxvalid: Pass the union by the pointer instead of the value.

	* src/gxvalid/gxvcommn.h:
	  - Declare new type `GXV_LookupValueCPtr'.
	  - Update the type of the 2nd argument to pass GXV_LookupValueDesc
	    data to the function prototyped as GXV_Lookup_Value_Validate_Func,
	    from GXV_LookupValueDesc to GXV_LookupValueCPtr.
	  - Likewise for the function prototyped as
	    GXV_Lookup_Fmt4_Transit_Func.

	  - Declare new type `GXV_StateTable_GlyphOffsetCPtr'.
	  - Update the type of the 3rd argument to pass
	    GXV_StateTable_GlyphOffsetDesc data to the function prototyped
	    as GXV_StateTable_Entry_Validate_Func, from
	    GXV_StateTable_GlyphOffsetDesc to GXV_StateTable_GlyphOffsetCPtr.

	  - Declare new type `GXV_XStateTable_GlyphOffsetCPtr'.
	  - Update the type of the 3rd argument to pass
	    GXV_XStateTable_GlyphOffsetDesc data to the function prototyped
	    as GXV_XStateTable_Entry_Validate_Func,
	    from GXV_XStateTable_GlyphOffsetDesc
	    to GXV_XStateTable_GlyphOffsetCPtr.

	* src/gxvalid/gxvcommn.c (gxv_LookupTable_fmt0_validate,
	gxv_XClassTable_lookupval_validate,
	gxv_XClassTable_lookupfmt4_transit):
	Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
	
	* src/gxvalid/gxvbsln.c (gxv_bsln_LookupValue_validate,
	gxv_bsln_LookupFmt4_transit): Ditto.
	
	* src/gxvalid/gxvjust.c
	(gxv_just_pcTable_LookupValue_entry_validate,
	gxv_just_classTable_entry_validate,
	gxv_just_wdcTable_LookupValue_validate): Ditto.
	
	* src/gxvalid/gxvkern.c
	(gxv_kern_subtable_fmt1_entry_validate): Ditto.
	
	* src/gxvalid/gxvlcar.c (gxv_lcar_LookupValue_validate,
	gxv_lcar_LookupFmt4_transit): Ditto.
	
	* src/gxvalid/gxvopbd.c (gxv_opbd_LookupValue_validate,
	gxv_opbd_LookupFmt4_transit): Ditto.
	
	* src/gxvalid/gxvprop.c (gxv_prop_LookupValue_validate,
	gxv_prop_LookupFmt4_transit): Ditto.
	
	* src/gxvalid/gxvmort4.c
	(gxv_mort_subtable_type4_lookupval_validate): Ditto.
	
	* src/gxvalid/gxvmort0.c
	(gxv_mort_subtable_type0_entry_validate): Update
	from GXV_StateTable_GlyphOffsetDesc
	to GXV_StateTable_GlyphOffsetCPtr.
	
	* src/gxvalid/gxvmort1.c
	(gxv_mort_subtable_type1_entry_validate): Ditto.
	
	* src/gxvalid/gxvmort2.c
	(gxv_mort_subtable_type2_entry_validate): Ditto.
	
	* src/gxvalid/gxvmort5.c
	(gxv_mort_subtable_type5_entry_validate): Ditto.
	
	* src/gxvalid/gxvmorx2.c
	(gxv_morx_subtable_type2_entry_validate): Ditto.
	
	* src/gxvalid/gxvmorx5.c
	(gxv_morx_subtable_type5_entry_validate): Ditto.
	
	* src/gxvalid/gxvmorx1.c
	(gxv_morx_subtable_type1_entry_validate): Ditto.
	(gxv_morx_subtable_type1_LookupValue_validate,
	gxv_morx_subtable_type1_LookupFmt4_transit):
	Update from GXV_LookupValueDesc to GXV_LookupValueCPtr.
	
	* src/gxvalid/gxvmorx0.c
	(gxv_morx_subtable_type0_entry_validate): Update
	from GXV_XStateTable_GlyphOffsetDesc
	to GXV_XStateTable_GlyphOffsetCPtr.

2009-07-29  Fabrice Bellet  <fabrice@bellet.info>

	Fix Redhat bugzilla #513582 and Savannah bug #26849.

	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) <FTC_INLINE>: Fix
	aliasing bug.

2009-07-19  Werner Lemberg  <wl@gnu.org>

	Document recent library changes.

	* docs/CHANGES: Do it.

2009-07-17  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #23786.

	* src/truetype/ttobjs.c (tt_size_init_bytecode): Don't reset x_ppem
	and y_ppem.  Otherwise the `*_CVT_Stretched' functions in ttinterp.c
	get never called.
	An anonymous guy suggested this change on Savannah, and it seems to
	be the right solution.

2009-07-15  Werner Lemberg  <wl@gnu.org>

	* docs/release: Updated.

2009-07-15  Werner Lemberg  <wl@gnu.org>

	README.CVS -> README.git

	* README.CVS: Renamed to...
	* README.git: This.
	Updated.

2009-07-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Borland C++ compiler patch proposed by Mirco Babin.
	http://lists.gnu.org/archive/html/freetype/2009-07/msg00016.html.

	* builds/exports.mk: Delete unused flags, CCexe_{CFLAGS,LDFLAGS}.
	Fix APINAMES_C and APINAMES_EXE pathnames to reflect the platform
	specific pathname syntax.
	* builds/compiler/bcc.mk: Remove unused flag, CCexe_LDFLAGS.
	Define TE = `-e' separately (bcc32 cannot specify the pathname of
	binary executable by T = `-o').
	Extend the large page size in linking freetype.lib.
	Add extra CLEAN target to delete bcc specific temporary files.
	* builds/compiler/bcc-dev.mk: Ditto.

2009-07-14  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #27026.

	* builds/win32/vc2005/freetype.sln: Use correct version number.

2009-07-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Add a script to check the undefined and unused trace macros.

	* src/tools/chktrcmp.py: A script to check trace_XXXX macros
	that are used in C source but undefined in fttrace.h, or
	defined in fttrace.h but unused in C sources.  See
	http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html.
	* docs/DEBUG: Mention on chktrcmp.py.
	* docs/release: Ditto.

2009-07-09  Werner Lemberg  <wl@gnu.org>

	[ftraster] Make it compile again with -D_STANDALONE_.

	* src/raster/ftraster.c [_STANDALONE_]: Define
	FT_CONFIG_STANDARD_LIBRARY_H.
	Include `string.h'.
	Don't include `rastpic.h'.
	Define FT_DEFINE_RASTER_FUNCS.

2009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	smooth: Check glyph size by width/height, instead of pitch/height.
	Suggested by der Mouse <mouse@Rodents-Montreal.ORG>.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Improve
	the check for too large glyph.  Replace the pair of `pitch' and
	`height' by the pair of `width' and `height'.  `pitch' cannot
	be greater than `height'.  The required is checking the product
	`pitch' * `height' <= FT_ULONG_MAX, but we use cheap checks for
	the realistic case only.

2009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Register 2 missing trace components, t1afm and ttbdf.

	* include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( t1afm )
	and FT_TRACE_DEF( ttbdf ).  See
	http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00013.html

2009-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Register a trace component for ftgloadr.c.

	* include/freetype/internal/fttrace.h: Add FT_TRACE_DEF( gloader ).
	The macro `trace_gloader' was already used in the initial version
	on 2002-02-24.

2009-07-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Prevent the overflows by a glyph with too many points or contours.
	The bug is reported by Boris Letocha <b.letocha@gmc.net>.  See
	http://lists.gnu.org/archive/html/freetype-devel/2009-06/msg00031.html
	http://lists.gnu.org/archive/html/freetype-devel/2009-07/msg00002.html	

	* include/freetype/ftimage.h (FT_OUTLINE_CONTOURS_MAX,
	FT_OUTLINE_POINTS_MAX): New macros to declare the maximum
	values of FT_Outline.{n_contours,n_points}.
	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Check the
	total numbers of points and contours cause no overflows in
	FT_Outline.{n_contours,n_points}.

	* include/freetype/internal/ftgloadr.h (FT_GLYPHLOADER_CHECK_P,
	FT_GLYPHLOADER_CHECK_C): Compare the numbers of points and
	contours as unsigned long number, instead of signed int, to
	prevent the overflows on 16-bit systems.

2009-07-05  Bram Tassyns  <bramt@enfocus.be>

	Improve compatibility to Acroread.
	This fixes Savannah bug #26944.

	* src/cff/cffload.c (cff_charset_compute_cids): For multiple GID to
	single CID mappings, make the lowest value win.

2009-06-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	ftpatent: Fix a bug by wrong usage of service->table_info().
	http://lists.gnu.org/archive/html/freetype-devel/2008-12/msg00039.html

	* include/freetype/internal/services/svsfnt.h: Extend
	FT_SFNT_TableInfoFunc() to take new argument to obtain the offset
	to the specified table.
	* src/sfnt/sfdriver.c (sfnt_table_info): Extend to return the
	table-offset to the caller function.
	* src/base/ftpatent.c (_tt_check_patents_in_table): Use new
	service->table_info().
	* src/base/ftobjs.c (FT_Sfnt_Table_Info): Synchronize to new
	service->table_info().

2009-06-28  Werner Lemberg  <wl@gnu.org>

	[psaux, cff] Protect against nested `seac' calls.

	* include/freetype/internal/psaux.h (T1_Decoder), src/cff/cffgload.h
	(CFF_Decoder): Add `seac' boolean variable.

	* src/cff/cffgload.c (cff_operator_seac), src/psaux/t1decode.c
	(t1operator_seac): Use it.

2009-06-28  Werner Lemberg  <wl@gnu.org>

	Thinko.

	* src/psaux/t1decode.c (t1operator_seac)
	[FT_CONFIG_OPTION_INCREMENTAL]: Test for existence of incremental
	interface.

2009-06-28  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h [FT_CONFIG_OPTION_INCREMENTAL]: Define.

2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Add tools to preprocess the source files for AtariST PureC.

	* builds/atari/deflinejoiner.awk: New file to filter C source files
	for broken C preprocessor of PureC compiler.

	* builds/atari/gen-purec-patch.sh: New file to generate a patch set
	for PureC, by using deflinejoiner.awk.

2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Keep existing modules.cfg in the building tree.

	* configure: If `configure' is executed outside of the source tree,
	an existing `modules.cfg' file in the build directory should be
	kept, not overwritten by the version in the source tree.

2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Filter --srcdir= option before invoking builds/unix/configure.

	* configure: If builds/unix/configure is invoked with --srcdir
	option, the option should take `builds/unix' directory instead of
	the top source directory.  Thus the configure script in the top
	directory should modify the --srcdir= option if
	`builds/unix/configure' is invoked.

2009-06-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Improve configure.raw for cross-building on exe-suffixed systems.

	* builds/unix/configure.raw: Fix a bug in sed script to extract
	native suffix for binary executables, patch by Peter Breitenlohner.
	http://lists.gnu.org/archive/html/freetype-devel/2009-04/msg00036.html

2009-06-26  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove TT_SubGlyphRec.

	* src/truetype/ttobjs.h (TT_SubGlyphRec): Removed, unused.

2009-06-26  Werner Lemberg  <wl@gnu.org>

	* */*: For warning messages, replace FT_ERROR with FT_TRACE0.

	FT_ERROR is now used only if a function produces a non-zero `error'
	value.

	Formatting, improving and harmonizing debug strings.

2009-06-25  Werner Lemberg  <wl@gnu.org>

	Provide version information better.

	* src/base/ftinit.c (FT_Init_FreeType): Don't set version here
	but...
	* src/base/ftobjs.c (FT_New_Library): Here.

2009-06-22  Werner Lemberg  <wl@gnu.org>

	Use 16.16 format while parsing Type 1 charstrings.
	This fixes Savannah bug #26867.

	Previously, only integers have been used which can lead to serious
	rounding errors.

	However, fractional values are only used internally; after the
	charstrings (of either Type 1 or 2) have been processed, the
	resulting coordinates get rounded to integers currently -- before
	applying scaling.  This should be fixed; at the same time a new load
	flag should be introduced, to be used in combination with
	FT_LOAD_NO_SCALE, which indicates that font units are returned in
	16.16 format.  Similarly, the incremental interface should be
	extended to allow fractional values for metrics.

	* include/freetype/internal/psaux.h (T1_BuilderRec): Remove `shift'
	field.
	* include/freetype/internal/pshints.h (T1_Hints_SetStemFunc,
	T1_Hints_SetStem3Func): Use FT_Fixed for coordinates.

	* src/psaux/psobjs.c: Include FT_INTERNAL_CALC_H.
	(t1_build_add_point): Always convert fixed to integer.
	* src/psaux/t1decode.c (t1_decoder_parse_charstrings):
	Use 16.16 format everywhere (except for large integers followed by a
	`div').
	[CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS]: Remove #ifdef and activate
	code uncoditionally.
	Add support for random numbers and update remaining code
	accordingly; this should work now.
	(t1_operator_seac): Updated.
	* src/psaux/pshrec.c: Include FT_INTERNAL_CALC_H.
	(ps_hints_t1stem3, t1_hints_stem): Updated.

	* src/cid/cidgload.c: Include FT_INTERNAL_CALC_H.
	(cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL],
	(cid_face_compute_max_advance, cid_slot_load_glyph): Updated.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String)
	[FT_CONFIG_OPTION_INCREMENTAL], (T1_Get_Advances, T1_Load_Glyph):
	Updated.
	* src/type1/t1load.c: Include FT_INTERNAL_CALC_H.
	* src/type1/t1objs.c (T1_Face_Init): Updated.

2009-06-21  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshrec.c: Use PSH_Err_Ok.

2009-06-21  Werner Lemberg  <wl@gnu.org>

	Code beautification.

	* src/type1/t1load.c (FT_INT_TO_FIXED): Removed.
	Replace everywhere with INT_TO_FIXED.
	(FT_FIXED_TO_INT): Move to ...
	* include/freetype/internal/ftcalc.h (FIXED_TO_INT): Here.
	Update all users.

2009-06-20  Werner Lemberg  <wl@gnu.org>

	Remove unused variables.

	* include/freetype/internal/psaux.h (T1_BuilderRec),
	src/cff/cffgload.h (CFF_Builder): Remove `last'.
	Update all users.

2009-06-20  Werner Lemberg  <wl@gnu.org>

	[psaux] Check large integers while parsing charstrings.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Large
	integers must be followed by a `div' operator.

2009-06-20  Werner Lemberg  <wl@gnu.org>

	[cff] Revert last change.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Do it.
	Next time, don't confuse Type 2 charstring opcodes with TOP DICT
	values...

2009-06-20  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin.c (af_latin_metrics_check_digits): Fix
	compiler warning.

2009-06-20  Werner Lemberg  <wl@gnu.org>

	* builds/compiler/gcc.mk (CFLAGS): Use -O3, not -O6.

2009-06-19  Werner Lemberg  <wl@gnu.org>

	[cff] Fix handling of reserved byte 0xFF.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Abort if byte
	0xFF is encountered.

2009-06-19  Werner Lemberg  <wl@gnu.org>

	Improve debug messages for Type1 charstrings.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Emit newlines
	after instructions.
	Prettify output.

2009-06-19  Werner Lemberg  <wl@gnu.org>

	More ftgray fixes for FT_STATIC_RASTER.
	Problems reported by suyu@cooee.cn.

	* src/smooth/ftgrays.c (gray_move_to, gray_raster_render): Use
	RAS_VAR.

2009-06-18  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2009-06-18  Werner Lemberg  <wl@gnu.org>

	Fix B/W rasterization of subglyphs with different drop-out modes.

	Normally, the SCANMODE instruction (if present) to set the drop-out
	mode in a TrueType font is located in the `prep' table only and thus
	valid for all glyphs.  However, there are fonts like `pala.ttf'
	which additionally contain this instruction in the hinting code of
	some glyphs (but not all).  As a result it can happen that a
	composite glyph needs multiple drop-out modes for its subglyphs
	since the rendering state gets reset for each subglyph.

	FreeType collects the hinted outlines from all subglyphs, then it
	sends the data to the rasterizer.  It also sends the drop-out mode
	-- after hinting has been applied -- and here is the error: It sends
	the drop-out mode of the last subglyph only; drop-out modes of all
	other subglyphs are lost.

	This patch fixes the problem; it adds a second, alternative
	mechanism to pass the drop-out mode: For each contour, the
	rasterizer now checks the first `tags' array element.  If bit 2 is
	set, bits 5-7 contain the contour's drop-out mode, overriding the
	global drop-out mode.

	* include/freetype/ftimage.h (FT_CURVE_TAG_HAS_SCANMODE): New macro.

	* src/truetype/ttgload.c (TT_Hint_Glyph): Store drop-out mode in
	`tags[0]'.

	* src/raster/ftraster.c (Flow_Up, Overshoot_Top, Overshoot_Bottom):
	Use bits 3-5 instead of 0-2.
	(New_Profile): Set the drop-out mode in the profile's `flags' field.
	(Decompose_Curve): Check `tags[0]' and set `dropOutControl' if
	necessary.
	(Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
	Horizontal_Gray_Sweep_Drop, Draw_Sweep): Use the profile's drop-out
	mode.

2009-06-16  Werner Lemberg  <wl@gnu.org>

	Improve scan conversion rules 4 and 6.

	Two new constraints are introduced to better identify a `stub' -- a
	concept which is only vaguely described in the OpenType
	specification.  The old code was too rigorous and suppressed more
	pixel than it should.

	  . The intersection of the two profiles with the scanline is less
	    than a half pixel.  Code related to this was already present in
	    the sources but has been commented out.

	  . The endpoint of the original contour forming a profile has a
	    distance (`overshoot') less than half a pixel to the scanline.

	Note that the two additional conditions fix almost all differences
	to the Windows rasterizer, but some problematic cases remain.

	* src/raster/ftraster.c (Overshoot_Top, Overshoot_Bottom): New
	macros for the `flags' field in the `TProfile' structure.
	(IS_BOTTOM_OVERSHOOT, IS_TOP_OVERSHOOT): New macros.
	(New_Profile, End_Profile): Pass overshoot flag as an argument and
	set it accordingly.
	Update callers.
	(Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Implement the two new
	constraints.

2009-06-11  Werner Lemberg  <wl@gnu.org>

	Increase precision for B/W rasterizer.

	* src/raster/ftraster.c (Set_High_Precision): Add two more bits to
	the precision.  This corrects rendering of some small glyphs, for
	example, glyph `xi' in verdana.ttf at 13 ppem.  Testing with ftbench
	on my GNU/Linux box I don't see a performance degradation.

2009-06-08  Michael Zucchi  <notzed@gmail.com>

	Handle FT_STROKER_LINECAP_BUTT.
	This fixes Savannah bug #26757.

	* src/base/ftstroke.c (ft_stroker_cap): Implement it.

2009-06-07  Harald Fernengel  <harry@kdevelop.org>

	Fix some potential out-of-memory crashes.

	* src/base/ftobjs.c (ft_glyphslot_done): Check `slot->internal'.
	* src/base/ftstream.c (FT_Stream_ReleaseFrame): Check `stream'.
	* src/truetype/ttinterp.c (TT_New_Context): Avoid double-free of
	`exec' in case of failure.

2009-06-07  Werner Lemberg  <wl@gnu.org>

	Simplify math.
	Suggested by Alexei Podtelezhnikov <apodtele@gmail.com>.

	* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
	Horizontal_Gray_Sweep_Drop): Do it.

2009-06-04  Werner Lemberg  <wl@gnu.org>

	Preparation for fixing scan conversion rules 4 and 6.

	* src/raster/ftraster.c (TFlow): Replace enumeration with...
	(Flow_Up): This macro.
	(TProfile): Replace `flow' member with `flags' bit field.
	Update all affected code.

2009-05-29  James Cloos  <cloos@jhcloos.com>

	Enable autohinting for glyphs rotated by multiples of 90°.

	* src/base/ftobjs.c (FT_Load_Glyph): Alter check for permitted
	matrices to allow rotations by multiples of 90°, not only unrotated,
	possibly slanted matrices.

2009-05-28  Werner Lemberg  <wl@gnu.org>

	Remove compiler warning.
	Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.

	* src/autofit/aflatin2.c (af_latin2_hint_edges): Move declaration of
	`n_edges' into `#if' block.

2009-05-28  Werner Lemberg  <wl@gnu.org>

	Make compilation work with FT_CONFIG_OPTION_USE_ZLIB not defined.
	Reported by Krzysztof Kowalczyk <kkowalczyk@gmail.com>.

	* src/pcf/pcfdrivr.c (PCF_Face_Init) [!FT_CONFIG_OPTION_USE_ZLIB]:
	Make it work.
	Simplify #ifdef logic.

2009-05-22  Werner Lemberg  <wl@gnu.org>

	Improve b/w rasterizer.
	Problem reported by Krzysztof Kotlenga <pocek@users.sf.net>.

	* src/raster/raster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
	Horizontal_Gray_Sweep_Drop): For smart drop-out mode, if
	intersections are equally distant relative to next pixel center,
	select the left pixel, not the right one.

2009-05-19  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #26600.

	* src/type42/t42parse.c (t42_load_keyword): Handle
	T1_FIELD_LOCATION_FONT_EXTRA.

2009-04-30  Werner Lemberg  <wl@gnu.org>

	Document recent changes to ftview.

	* docs/CHANGES: Do it.

2009-04-27  Werner Lemberg  <wl@gnu.org>

	autohinter: Don't change digit widths if all widths are the same.
	This fixes FreeDesktop bug #21197.

	* src/autofit/afglobal.c (AF_DIGIT): New macro.
	(af_face_globals_compute_script_coverage): Mark ASCII digits in
	`glyph_scripts' array.
	(af_face_globals_get_metrics): Updated.
	(af_face_globals_is_digit): New function.
	* src/autofit/afglobal.h: Updated.
	(AF_ScriptMetricsRec): Add `digits_have_same_width' flag.

	* src/autofit/aflatin.c: Include FT_ADVANCES_H.
	(af_latin_metrics_check_digits): New function.
	(af_latin_metrics_init): Use it.
	* src/autofit/aflatin.h: Updated.
	* src/autofit/afcjk.c (af_cjk_metrics_init): Updated.

	* src/autofit/aflatin2.c: Similar changes as with aflatin.c.

	* src/autofit/afloader.c (af_loader_load_g): Test digit width.

	* docs/CHANGES: Document it.

2009-04-26  Werner Lemberg  <wl@gnu.org>

	Make ftgrays compile with _STANDALONE_ and FT_STATIC_RASTER again.
	Problems reported by suyu@cooee.cn.

	* src/smooth/ftgrays.c (FT_DEFINE_OUTLINE_FUNCS,
	FT_DEFINE_RASTER_FUNCS) [_STANDALONE_]: Define.
	[!_STANDALONE_]: Include ftspic.h only here.
	(ras): Define/declare after definition of `TWorker'.
	Use `RAS_VAR_' where necessary.

2009-04-21  Karl Berry  <karl@gnu.org>

	Fix AC_CHECK_FT2.

	* builds/unix/freetype2.m4: Only check PATH for freetype-config if
	we did not already find it from a prefix option.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Add #error to modules and files that do not support PIC yet.

	When FT_CONFIG_OPTION_PIC is defined the following files will
	create #error:
	* src/bdf/bdfdrivr.h
	* src/cache/ftcmanag.c
	* src/cid/cidriver.h
	* src/gxvalid/gxvmod.h
	* src/gzip/ftgzip.c
	* src/lzw/ftlzw.c
	* src/otvalid/otvmod.h
	* src/pcf/pcfdrivr.h
	* src/pfr/pfrdrivr.h
	* src/psaux/psauxmod.h
	* src/type1/t1driver.h
	* src/type42/t42drivr.h
	* src/winfonts/winfnt.h

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in autofit module.

	* include/freetype/internal/autohint.h add macros to init
	instances of FT_AutoHinter_ServiceRec.

	* src/autofit/afmodule.h declare autofit_module_class
	using macros from ftmodapi.h,
	when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/autofit/afmodule.c when FT_CONFIG_OPTION_PIC is defined
	af_autofitter_service and autofit_module_class structs
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from afpic.h in order to access them.

	* src/autofit/aftypes.h add macros to init and declare
	instances of AF_ScriptClassRec.

	* src/autofit/afcjk.h declare af_cjk_script_class
	using macros from aftypes.h,
	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
	* src/autofit/afcjk.c when FT_CONFIG_OPTION_PIC is defined
	af_cjk_script_class struct will have function to init it instead of
	being allocated in the global scope.

	* src/autofit/afdummy.h declare af_dummy_script_class
	using macros from aftypes.h,
	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
	* src/autofit/afdummy.c when FT_CONFIG_OPTION_PIC is defined
	af_dummy_script_class struct will have function to init it instead of
	being allocated in the global scope.

	* src/autofit/afindic.h declare af_indic_script_class
	using macros from aftypes.h,
	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
	* src/autofit/afindic.c when FT_CONFIG_OPTION_PIC is defined
	af_indic_script_class struct will have function to init it instead of
	being allocated in the global scope.

	* src/autofit/aflatin.h declare af_latin_script_class
	using macros from aftypes.h,
	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
	* src/autofit/aflatin.c when FT_CONFIG_OPTION_PIC is defined
	af_latin_script_class struct will have function to init it instead of
	being allocated in the global scope.
	Change af_latin_blue_chars to be PIC-compatible by being a two
	dimentional array rather than array of pointers.


	* src/autofit/aflatin2.h declare af_latin2_script_class
	using macros from aftypes.h,
	when FT_CONFIG_OPTION_PIC is defined init function will be declared.
	* src/autofit/aflatin2.c when FT_CONFIG_OPTION_PIC is defined
	af_latin2_script_class struct will have function to init it instead of
	being allocated in the global scope.
	Change af_latin2_blue_chars to be PIC-compatible by being a two
	dimentional array rather than array of pointers.

	* src/autofit/afglobal.c when FT_CONFIG_OPTION_PIC is defined
	af_script_classes array initialization was moved to afpic.c and
	is later refered using macros defeined in afpic.h.

	New Files:
	* src/autofit/afpic.h declare struct to hold PIC globals for autofit
	module and macros to access them.
	* src/autofit/afpic.c implement functions to allocate, destroy and
	initialize PIC globals for autofit module.

	* src/autofit/autofit.c add new file to build: afpic.c.
	* src/autofit/jamfile add new files to FT2_MULTI build: afpic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in pshinter module.

	* include/freetype/internal/pshints.h add macros to init
	instances of PSHinter_Interface.

	* src/pshinter/pshmod.h declare pshinter_module_class
	using macros from ftmodapi.h,
	when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/pshinter/pshmod.c when FT_CONFIG_OPTION_PIC is defined
	pshinter_interface and pshinter_module_class structs
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from pshpic.h in order to access them.

	New Files:
	* src/pshinter/pshpic.h declare struct to hold PIC globals for pshinter
	module and macros to access them.
	* src/pshinter/pshpic.c implement functions to allocate, destroy and
	initialize PIC globals for pshinter module.

	* src/pshinter/pshinter.c add new file to build: pshpic.c.
	* src/pshinter/jamfile add new files to FT2_MULTI build: pshpic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in psnames module.

	* include/freetype/internal/services/svpscmap.h add macros to init
	instances of FT_Service_PsCMapsRec.

	* src/psnames/psmodule.h declare psnames_module_class
	using macros from ftmodapi.h,
	when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/psnames/psmodule.c when FT_CONFIG_OPTION_PIC is defined
	pscmaps_interface and pscmaps_services structs
	and psnames_module_class array
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from pspic.h in order to access them.

	New Files:
	* src/psnames/pspic.h declare struct to hold PIC globals for psnames
	module and macros to access them.
	* src/psnames/pspic.c implement functions to allocate, destroy and
	initialize PIC globals for psnames module.

	* src/psnames/psnames.c add new file to build: pspic.c.
	* src/psnames/jamfile add new files to FT2_MULTI build: pspic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in raster renderer.

	* src/raster/ftrend1.h declare ft_raster1_renderer_class
	and ft_raster5_renderer_class
	using macros from ftrender.h,
	when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/smooth/ftrend1.c when FT_CONFIG_OPTION_PIC is defined
	ft_raster1_renderer_class and ft_raster5_renderer_class structs
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	Macros will be used from rastpic.h in order to access
	ft_standard_raster from the pic_container (allocated in ftraster.c).
	In ft_raster1_render when PIC is enabled, the last letter of
	module_name is used to verfy the renderer class rather than the
	class pointer.

	* src/raster/ftraster.c when FT_CONFIG_OPTION_PIC is defined
	ft_standard_raster struct will have function to init it
	instead of being allocated in the global scope.

	New Files:
	* src/raster/rastpic.h declare struct to hold PIC globals for raster
	renderer and macros to access them.
	* src/raster/rastpic.c implement functions to allocate, destroy and
	initialize PIC globals for raster renderer.

	* src/raster/raster.c add new file to build: rastpic.c.
	* src/raster/jamfile add new files to FT2_MULTI build: rastpic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in smooth renderer.

	* src/smooth/ftsmooth.h declare ft_smooth_renderer_class,
	ft_smooth_lcd_renderer_class and ft_smooth_lcd_v_renderer_class
	using macros from ftrender.h,
	when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/smooth/ftsmooth.c when FT_CONFIG_OPTION_PIC is defined
	the following structs:
	ft_smooth_renderer_class, ft_smooth_lcd_renderer_class
	and ft_smooth_lcd_v_renderer_class
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from ftspic.h in order to access
	ft_grays_raster from the pic_container (allocated in ftgrays.c).

	* src/smooth/ftgrays.h include FT_CONFIG_CONFIG_H
	* src/smooth/ftgrays.c when FT_CONFIG_OPTION_PIC is NOT defined
	func_interface was moved from gray_convert_glyph_inner function
	to the global scope.
	When FT_CONFIG_OPTION_PIC is defined
	func_interface and ft_grays_raster structs
	will have functions to init them
	instead of being allocated in the global scope.
	And func_interface will be allocated on the stack of
	gray_convert_glyph_inner.

	New Files:
	* src/smooth/ftspic.h declare struct to hold PIC globals for smooth
	renderer and macros to access them.
	* src/smooth/ftspic.c implement functions to allocate, destroy and
	initialize PIC globals for smooth renderer.

	* src/smooth/smooth.c add new file to build: ftspic.c.
	* src/smooth/jamfile add new files to FT2_MULTI build: ftspic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in cff driver.

	* include/freetype/internal/services/svcid.h add macros to init
	instances of FT_Service_CIDRec.
	* include/freetype/internal/services/svpsinfo.h add macros to init
	instances of FT_Service_PsInfoRec.

	* src/cff/cffcmap.h declare cff_cmap_encoding_class_rec
	and cff_cmap_unicode_class_rec using macros from
	ftobjs.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/cff/cffcmap.c when FT_CONFIG_OPTION_PIC is defined
	the following structs:
	cff_cmap_encoding_class_rec and cff_cmap_unicode_class_rec
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.

	* src/cff/cffdrivr.h declare cff_driver_class using macros from
	ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/cff/cffdrivr.c when FT_CONFIG_OPTION_PIC is defined
	the following structs:
	cff_service_glyph_dict, cff_service_ps_info, cff_service_ps_name
	cff_service_get_cmap_info, cff_service_cid_info, cff_driver_class,
	and cff_services array
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from cffpic.h in order to access them
	from the pic_container.
	Use macros from cffpic.h in order to access the
	structs allocated in cffcmap.c

	* src/cff/cffobjs.c Use macros from cffpic.h in order to access the
	structs allocated in cffcmap.c

	* src/cff/parser.c when FT_CONFIG_OPTION_PIC is defined
	implement functions to create and destroy cff_field_handlers array
	instead of being allocated in the global scope.
	And macros will be used from cffpic.h in order to access it
	from the pic_container.

	New Files:
	* src/cff/cffpic.h declare struct to hold PIC globals for cff
	driver and macros to access them.
	* src/cff/cffpic.c implement functions to allocate, destroy and
	initialize PIC globals for cff driver.

	* src/cff/cff.c add new file to build: cffpic.c.
	* src/cff/jamfile add new files to FT2_MULTI build: cffpic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in sfnt driver.

	* include/freetype/internal/services/svbdf.h add macros to init
	instances of FT_Service_BDFRec.
	* include/freetype/internal/services/svgldict.h add macros to init
	instances of FT_Service_GlyphDictRec.
	* include/freetype/internal/services/svpostnm.h add macros to init
	instances of FT_Service_PsFontNameRec.
	* include/freetype/internal/services/svsfnt.h add macros to init
	instances of FT_Service_SFNT_TableRec.
	* include/freetype/internal/services/svttcmap.h add macros to init
	instances of FT_Service_TTCMapsRec.
	* include/freetype/internal/sfnt.h add macros to init
	instances of SFNT_Interface.

	* src/sfnt/sfdriver.h declare sfnt_module_class using macros from
	ftmodapi.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/sfnt/sfdriver.c when FT_CONFIG_OPTION_PIC is defined
	the following structs:
	sfnt_service_sfnt_table, sfnt_service_glyph_dict, sfnt_service_ps_name
	tt_service_get_cmap_info, sfnt_service_bdf, sfnt_interface,
	sfnt_module_class, and sfnt_services array
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from sfntpic.h in order to access them
	from the pic_container.

	* src/sfnt/ttcmap.h add macros to init
	instances of TT_CMap_ClassRec.
	* src/sfnt/ttcmap.c when FT_CONFIG_OPTION_PIC is defined
	the following structs:
	tt_cmap0_class_rec, tt_cmap2_class_rec, tt_cmap4_class_rec
	tt_cmap6_class_rec, tt_cmap8_class_rec, tt_cmap10_class_rec,
	tt_cmap12_class_rec, tt_cmap14_class_rec and tt_cmap_classes array
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from sfntpic.h in order to access them
	from the pic_container.
	The content of tt_cmap_classes is now described in the
	new file 'ttcmapc.h'.

	New Files:
	* src/sfnt/sfntpic.h declare struct to hold PIC globals for sfnt
	driver and macros to access them.
	* src/sfnt/sfntpic.c implement functions to allocate, destroy and
	initialize PIC globals for sfnt driver.
	* src/sfnt/ttcmapc.h describing the content of
	tt_cmap_classes allocated in ttcmap.c

	* src/sfnt/sfnt.c add new file to build: sfntpic.c.
	* src/sfnt/jamfile add new files to FT2_MULTI build: sfntpic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support in truetype driver.

	* include/freetype/internal/services/svmm.h add macros to init
	instances of FT_Service_MultiMastersRec.
	* include/freetype/internal/services/svttglyf.h add macros to init
	instances of FT_Service_TTGlyfRec.

	* src/truetype/ttdriver.h declare tt_driver_class using macros from
	ftdriver.h, when FT_CONFIG_OPTION_PIC is defined create and destroy
	functions will be declared.
	* src/truetype/ttdriver.c when FT_CONFIG_OPTION_PIC is defined
	the following structs:
	tt_service_gx_multi_masters, tt_service_truetype_glyf, tt_driver_class
	and tt_services array,
	will have functions to init or create and destroy them
	instead of being allocated in the global scope.
	And macros will be used from ttpic.h in order to access them
	from the pic_container.
	* src/truetype/ttobjs.c change trick_names array to be
	PIC-compatible by being a two dimentional array rather than array
	of pointers.

	New Files:
	* src/truetype/ttpic.h declare struct to hold PIC globals for truetype
	driver and macros to access them.
	* src/truetype/ttpic.c implement functions to allocate, destroy and
	initialize PIC globals for truetype driver.

	* src/truetype/truetype.c add new file to build: ttpic.c.
	* src/truetype/jamfile add new files to FT2_MULTI build: ttpic.c.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Position Independent Code (PIC) support and infrastructure in base.

	* include/freetype/config/ftoption.h add FT_CONFIG_OPTION_PIC
	* include/freetype/internal/ftobjs.h Add pic_container member to
	FT_LibraryRec.
	Add macros to declare and init instances of FT_CMap_ClassRec.
	Add macros to init instances of FT_Outline_Funcs and FT_Raster_Funcs.
	Add macros to declare, allocate and initialize modules
	(FT_Module_Class).
	Add macros to declare, allocate and initialize renderers
	(FT_Renderer_Class).
	Add macro to init instances of FT_Glyph_Class.
	Add macros to declare, allocate and initialize drivers
	(FT_Driver_ClassRec).
	* include/freetype/internal/ftpic.h new file to declare the
	FT_PIC_Container struct and the functions to allocate and detroy it.
	* include/freetype/internal/ftserv.h add macros to allocate and
	destory arrays of FT_ServiceDescRec.
	* include/freetype/internal/internal.h define macro to include
	ftpic.h.

	New Files:
	* src/base/ftpic.c implement functions to allocate and destory the
	global pic_container.
	* src/base/basepic.h declare struct to hold PIC globals for base and
	macros to access them.
	* src/base/basepic.c implement functions to allocate, destroy and
	initialize PIC globals for base.

	* src/base/ftinit.c when FT_CONFIG_OPTION_PIC is defined implement
	functions that allocate and destroy ft_default_modules according to
	FT_CONFIG_MODULES_H in the pic_container instead of the global scope
	and use macro from basepic.h to access it.
	* src/base/ftobjs.c add calls to the functions that allocate and
	destroy the global pic_container when the library is created and
	destroyed.

	* src/base/jamfile add new files to FT2_MULTI build:
	ftpic.c and basepic.c.
	* src/base/ftbase.c add new files to build:
	ftpic.c and basepic.c.

	* src/base/ftglyph.c when FT_CONFIG_OPTION_PIC is defined
	ft_bitmap_glyph_class and ft_outline_glyph_class will be allocated
	in the pic_container instead of the global scope and use macros from
 	basepic.h to access them.
	* src/base/ftbbox.c allocate bbox_interface stract on the stack
	instead of the global scope when FT_CONFIG_OPTION_PIC is defined.
	* src/base/ftstroke.c access ft_outline_glyph_class allocated in
	ftglyph.c via macros from basepic.h

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Preparing changes in cff parser later needed for PIC version.

	* src/cff/cffload.c, src/cff/cffload.h, src/cff/cffobjs.c,
	src/cff/cffparse.c, src/cff/cffparse.h: Add library pointer to
	'CFF_ParserRec' set by `cff_parser_init'.
	Route library pointer from 'cff_face_init' to 'cff_subfont_load'
	for `cff_parser_init'.

	* src/cff/cffparse.c (CFF_Field_Handler): Move it to...
	* src/cff/cffparse.h: This file, to be used by other C files.

2009-04-05  Oran Agra  <oran@monfort.co.il>

	Minor change in ftstroke.c.

	* src/base/ftstroke.c (FT_StrokerRec): Replace `memory' member with
	`library' needed for PIC version.
	Update all callers.

2009-04-04  Werner Lemberg  <wl@gnu.org>

	ftnames.c -> ftsnames.c

	* src/base/ftnames.c: Rename to...
	* src/base/ftsnames.c: This.
	* src/base/Jamfile, src/base/rules.mk, src/base/ftbase.c: Updated.

2009-04-04  Werner Lemberg  <wl@gnu.org>

	Add support for cmap type 13.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_CMAP_FORMAT_13): New macro.

	* src/sfnt/ttcmap.c (TT_CMap13Rec, tt_cmap13_init,
	tt_cmap13_validate, tt_cmap13_char_index, tt_cmap13_char_next,
	tt_cmap13_get_info, tt_cmap13_char_map_def_binary,
	tt_cmap14_class_rec): New functions and structures for cmap 13
	support.
	(tt_cmap_classes): Register tt_cmap13_class_rec.

	* docs/CHANGES: Mention cmap 13 support.

2009-04-01  Werner Lemberg  <wl@gnu.org>

	Ignore empty contours in CFF glyphs.

	Problem reported by Albert Astals Cid <aacid@kde.org>.

	* src/cff/cffgload.c (cff_builder_close_contour): Synchronize with
	t1_builder_close_contour.

2009-03-21  Werner Lemberg  <wl@gnu.org>

	Another redundant header inclusion.

	* src/truetype/ttgxvar.c: Fix Ghostscript Coverity issue #4041.

2009-03-21  Werner Lemberg  <wl@gnu.org>

	Remove redundant header inclusions.

	This covers many Ghostscript Coverity issues.

	* src/*: Do it.

2009-03-21  Werner Lemberg  <wl@gnu.org>

	Fix Ghostscript Coverity issue #3904.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
	invalid values of `runcnt'.

2009-03-20  Werner Lemberg  <wl@gnu.org>

	Fix `make multi' run.

	* src/smooth/ftsmooth.h: Include FT_INTERNAL_DEBUG_H.

2009-03-20  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #25923.

	* src/cache/ftccmap.c (FTC_CMAP_HASH): Fix typo.

2009-03-20  Werner Lemberg  <wl@gnu.org>

	Protect against too large glyphs.

	Problem reported by Tavis Ormandy <taviso@google.com>.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Don't allow
	`pitch' or `height' to be larger than 0xFFFF.

2009-03-20  Werner Lemberg  <wl@gnu.org>
	    Tavis Ormandy  <taviso@google.com>

	Fix validation for various cmap table formats.

	* src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate,
	tt_cmap12_validate): Check `length' correctly.
	(tt_cmap_14_validate): Check `length' and `numMappings' correctly.

2009-03-20  Werner Lemberg  <wl@gnu.org>

	Protect against malformed compressed data.

	* src/lzw/ftzopen.c (ft_lzwstate_io): Test whether `state->prefix' is
	zero.

2009-03-20  Werner Lemberg  <wl@gnu.org>

	Protect against invalid SID values in CFFs.

	Problem reported by Tavis Ormandy <taviso@google.com>.

	* src/cff/cffload.c (cff_charset_load): Reject SID values larger
	than 64999.

2009-03-19  Vincent Richomme  <richom.v@free.fr>

	Update WinCE Visual C project files.

	* builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2008-ce/freetype.vcproj: Add missing base extension
	files.

2009-03-19  Werner Lemberg  <wl@gnu.org>

	Remove unused Win32 code.

	* builds/wince/ftdebug.c: Remove code guarded with `!_WIN32_WCE'.
	Since Win32 is handled separately this is no longer needed.

2009-03-19  Vincent Richomme  <richom.v@free.fr>

	Make `gzip' module compile on WinCE.

	* src/gzip/zconf.h [_WIN32_WCE]: Define NO_ERRNO_H.

2009-03-19  Werner Lemberg  <wl@gnu.org>

	Remove unused WinCE code.

	* builds/win32/ftdebug.c: Remove code guarded with `_WIN32_WCE'.
	Since WinCE is handled separately this is no longer needed.

2009-03-16  Werner Lemberg  <wl@gnu.org>

	docmaker: Don't ignore single-line code blocks.

	* src/tools/docmaker/content.py (DocBlock::_init__): Fix change from
	2009-01-31.

2009-03-15  Steve Langasek  <steve.langasek@canonical.com>

	Use __asm__ for declaring assembly instead of asm.

	* builds/unix/ftconfig.in (FT_MulFix_arm): Use __asm__ instead of
	asm on arm, fixing a build failure on armel with -pedantic.

2009-03-14  Werner Lemberg  <wl@gnu.org>

	Fix valgrind warning.

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_bit_aligned): Don't read
	past the end of the frame.

2009-03-12  Werner Lemberg  <wl@gnu.org>

	* Version 2.3.9 released.
	=========================


	Tag sources with `VER-2-3-9'.

2009-03-12  Werner Lemberg  <wl@gnu.org>

	* builds/unix/freetype2.in: Move @FT2_EXTRA_LIBS@ to `Libs.private'.

2009-03-12  Werner Lemberg  <wl@gnu.org>

	Fix some FreeType Coverity issues as reported for Ghostscript.

	* src/base/ftobjs.c (FT_New_Face, FT_New_Memory_Face): Initialize
	`args.stream' (#3874, #3875).
	(open_face_PS_from_sfnt_stream): Improve error management (#3786).
	* src/base/ftmm.c (ft_face_get_mm_service): Fix check of `aservice'
	(#3870).
	* src/base/ftstroke.c (ft_stroke_border_get_counts): Remove dead
	code (#3790).
	* src/base/ftrfork.c (raccess_guess_apple_generic): Check error
	value of `FT_Stream_Skip' (#3784).

	* src/type1/t1gload.c (T1_Load_Glyph): Check `size' before accessing
	it (#3872)

	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Check `face' before accessing
	it (#3871).
	* src/pcf/pcfread.c (pcf_get_metrics): Handle return value of
	`pcf_get_metric' (#3789, #3782).
	(pcf_get_properties): Use FT_STREAM_SKIP (#3783).

	* src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Fix check of
	`acache' (#3797)

	* src/cff/cffdrivr.c (cff_ps_get_font_info): Fix check of `cff'
	(#3796).
	* src/cff/cffgload.c (cff_decoder_prepare): Check `size' (#3795).
	* src/cff/cffload.c (cff_index_get_pointers): Add comment (#3794).

	* src/bdf/bdflib.c (_bdf_add_property): Check `fp->value.atom'
	(#3793).
	(_bdf_parse_start): Add comment (#3792).

	* src/raster/ftraster.c (Finalize_Profile_Table): Check
	`ras.fProfile' (#3791).

	* src/sfnt/ttsbit.c (Load_SBit_Image): Use FT_STREAM_SKIP (#3785).

	* src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Properly ignore
	seek error (#3781).

2009-03-11  Michael Toftdal  <toftdal@gmail.com>

	Extend CID service functions to handle CID-keyed CFFs as CID fonts.

	* include/freetype/ftcid.h (FT_Get_CID_Is_Internally_CID_keyed,
	FT_Get_CID_From_Glyph_Index): New functions.

	* include/freetype/internal/services/svcid.h
	(FT_CID_GetIsInternallyCIDKeyedFunc,
	FT_CID_GetCIDFromGlyphIndexFunc): New function typedefs.
	(CID Service): Use them.

	* src/base/ftcid.c: Include FT_CID_H.
	(FT_Get_CID_Is_Internally_CID_keyed, FT_Get_CID_From_Glyph_Index):
	New functions.

	* src/cff/cffdrivr.c (cff_get_is_cid, cff_get_cid_from_glyph_index):
	New functions.
	(cff_service_cid_info): Add them.
	* src/cff/cffload.c (cff_font_load): Don't free `font->charset.sids'
	-- it is needed for access as a CID-keyed font.  It gets deleted
	later on.

	* src/cid/cidriver.c (cid_get_is_cid, cid_get_cid_from_glyph_index):
	New functions.
	(cid_service_cid_info): Add them.

	* docs/CHANGES: Updated.

2009-03-11  Bram Tassyns  <bramt@enfocus.be>

	Fix Savannah bug #25597.

	* src/cff/cffparse.c (cff_parse_real): Don't allow fraction_length
	to become larger than 9.

2009-03-11  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #25814.

	* builds/unix/freetype2.in: As suggested in the bug report, move
	@LIBZ@ to `Libs.private'.

2009-03-11  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #25781.
	We now simply check for a valid `offset', no longer handling `delta
	= 1' specially.

	* src/sfnt/ttcmap.c (tt_cmap4_validate): Don't check `delta' for
	last segment.
	(tt_cmap4_set_range, tt_cmap4_char_map_linear,
	tt_cmap4_char_map_binary): Check offset.

2009-03-11  Werner Lemberg  <wl@gnu.org>

	* src/base/Jamfile: Fix handling of ftadvanc.c.
	Reported by Oran Agra <oran@monfort.co.il>.

2009-03-10  Vincent Richomme  <richom.v@free.fr>

	Restructure Win32 and Wince compiler support.

	* src/builds/win32: Remove files for WinCE.
	Move VC 2005 support to a separate directory.
	Add directory for VC 2008 support.

	* src/builds/wince: New directory hierarchy for WinCE compilers
	(VC 2005 and VC 2008).

2009-03-09  Werner Lemberg  <wl@gnu.org>

	More preparations for 2.3.9 release.

	* docs/CHANGES: Updated.

	* Jamfile, README: s/2.3.8/2.3.9/, s/238/239/.

2009-03-09  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/rules.mk (SFNT_DRV_H): Add ttsbit0.c.

2009-03-09  Alexey Kryukov  <anagnost@yandex.ru>

	Fix handling of EBDT formats 8 and 9 (part 2).

	This patch fixes the following problems in ttsbit0.c:

	. Bitmaps for compound glyphs were never allocated.

	. `SBitDecoder' refused to load metrics if some other metrics have
	  already been loaded.  This condition certainly makes no sense for
	  recursive calls, so I've just disabled it.  Another possibility
	  would be resetting `decoder->metrics_loaded' to false before
	  loading each composite component.  However, we must restore the
	  original metrics after finishing the recursion; otherwise we can
	  get a misaligned glyph.

	. `tt_sbit_decoder_load_bit_aligned' incorrectly handled `x_pos',
	  causing some glyph components to be shifted too far to the right
	  (especially noticeable for small sizes).

	Note that support for grayscale bitmaps (not necessarily compound) is
	completely broken in ttsbit0.c.

	* src/sfnt/tt_sbit_decoder_load_metrics: Always load metrics.
	(tt_sbit_decoder_load_bit_aligned): Handle `x_pos' correctly in case
	of `h == height'.
	(tt_sbit_decoder_load_compound): Reset metrics after loading
	components.
	Allocate bitmap.

2009-03-09  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.raw (version_info): Set to 9:20:3.

2009-03-03  David Turner  <david@freetype.org>

	Protect SFNT kerning table parser against malformed tables.

	This closes Savannah BUG #25750.

	* src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning): Fix a
	bug where a malformed table would be successfully loaded but later
	crash the engine during parsing.

2009-03-03  David Turner  <david@freetype.org>

	Update documentation and bump version number to 2.3.9.

	* include/freetype/freetype.h: Bump patch version to 9.
	* docs/CHANGES: Document the ABI break in 2.3.8.
	* docs/VERSION.DLL: Update version numbers table for 2.3.9.

2009-03-03  David Turner  <david@freetype.org>

	Remove ABI-breaking field in public PS_InfoFontRec definition.

	Instead, we define a new internal PS_FontExtraRec structure to
	hold the additional field, then place it in various internal
	positions of the corresponding FT_Face derived objects.

	* include/freetype/t1tables.h (PS_FontInfoRec): Remove the
	`fs_type' field from the public structure.
	* include/freetype/internal/psaux.h (T1_FieldLocation): New
	enumeration `T1_FIELD_LOCATION_FONT_EXTRA'.
	* include/freetype/internal/t1types.h (PS_FontExtraRec): New
	structure.
	(T1_FontRec, CID_FaceRec): Add it.

	* src/cid/cidload.c (cid_load_keyword): Handle
	T1_FIELD_LOCATION_FONT_EXTRA.
	* src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c:
	Adjust FT_STRUCTURE and T1CODE properly to handle `FSType'.
	* src/type1/t1load.c (t1_load_keyword): Handle
	T1_FIELD_LOCATION_FONT_EXTRA.

	* include/freetype/internal/services/svpsinfo.h (PsInfo service):
	Add `PS_GetFontExtraFunc' function typedef.

	* src/base/ftfstype.c: Include FT_INTERNAL_SERVICE_H and
	FT_SERVICE_POSTSCRIPT_INFO_H.
	(FT_Get_FSType_Flags): Use POSTSCRIPT_INFO service.

	* src/cff/cffdrivr.c (cff_service_ps_info): Updated.
	* src/cid/cidriver.c (cid_ps_get_font_extra): New function.
	(cid_service_ps_info): Updated.
	* src/type1/t1driver.c (t1_ps_get_font_extra): New function.
	(t1_service_ps_info): Updated.
	* src/type42/t42drivr.c (t42_ps_get_font_extra): New function.
	(t42_service_ps_info): Updated.

2009-03-02  Alexey Kryukov  <anagnost@yandex.ru>

	Fix handling of EBDT formats 8 and 9.

	The main cycle in `blit_sbit' makes too many iterations: it actually
	needs the count of lines in the source bitmap rather than in the
	target image.

	* src/sfnt/ttsbit.c (blit_sbit) [FT_CONFIG_OPTION_OLD_INTERNALS]:
	Add parameter `source_height' and use it for main loop.
	(Load_SBit_Single) [FT_CONFIG_OPTION_OLD_INTERNALS]: Updated.

2009-02-23  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #25669.

	* src/base/ftadvanc.h (FT_Get_Advances): Fix serious typo.

	* src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics): Fix
	scaling factor for non-scalable fonts.

	* src/cff/cffdrivr.c (cff_get_advances): Use correct advance width
	value to prevent incorrect scaling.

	* docs/CHANGES: Document it.

2009-02-15  Matt Godbolt  <matt@godbolt.org>

	Fix Savannah bug #25588.

	* builds/unix/ftconfig.in (FT_MulFix_arm): Use correct syntax for
	`orr' instruction.

2009-02-11  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.c (tt_check_trickyness): Add `DFKaiShu'.
	Reported by David Bevan <dbevan@emtex.com>.

2009-02-09  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #25495.

	* src/sfnt/sfobjs.c (sfnt_load_face): Test for bitmap strikes before
	setting metrics and bbox values.  This ensures that the check for a
	font with neither a `glyf' table nor bitmap strikes can be performed
	early enough to set metrics and bbox values too.

2009-02-04  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #25480.

	* builds/unix/freetype-config.in: For --ftversion, don't use $prefix
	but $includedir.

2009-01-31  Werner Lemberg  <wl@gnu.org>

	Minor docmaker improvements.

	* src/tools/docmaker/content.py (DocBlock::__init__): Ignore empty
	code blocks.

2009-01-25  Werner Lemberg  <wl@gnu.org>

	Fix SCANCTRL handling in TTFs.
	Problem reported by Alexey Kryukov <anagnost@yandex.ru>.

	* src/truetype/ttinterp.c (Ins_SCANCTRL): Fix threshold handling.

2009-01-23  Werner Lemberg  <wl@gnu.org>

	Move FT_Get_FSType_Flags to a separate file.
	Problem reported by Mickey Gabel <mickey@monfort.co.il>.

	* src/base/ftobjs.c (FT_Get_FSType_Flags): Move to...
	* src/base/ftfstype.c: This new file.

	* modules.cfg (BASE_EXTENSION): Add ftfstype.c.

	* docs/INSTALL.ANY: Updated.

	* builds/mac/*.txt, builds/amiga/*makefile*,
	builds/win32/{visualc,visualce}/freetype.*, builds/symbian/*:
	Updated.

2009-01-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/ftsystem.c (FT_Stream_Open): Fix 2 error
	messages ending without "\n".

2009-01-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #25347.

	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Rewind
	the stream to the original position passed to this function,
	when ft_lookup_PS_in_sfnt_stream() failed.
	(Mac_Read_sfnt_Resource): Rewind the stream to the head of
	sfnt resource body, when open_face_PS_from_sfnt_stream()
	failed.

2009-01-19  Michael Lotz  <mmlr@mlotz.ch>

	Fix Savannah bug #25355.

	* include/freetype/config/ftconfig.h (FT_MulFix_i386): Make
	assembler code work with gcc 2.95.3 (as used by the Haiku project).
	Add `cc' register to the clobber list.

2009-01-18  Werner Lemberg  <wl@gnu.org>

	Protect FT_Get_Next_Char.

	* src/sfnt/ttcmap.c (tt_cmap4_set_range): Apply fix similar to
	change from 2008-07-22.

	Patch from Ronen Ghoshal <rghoshal@emtex.com>.

2009-01-18  Werner Lemberg  <wl@gnu.org>

	Implement FT_Get_Name_Index for SFNT driver.

	* src/sfnt/sfdriver.c (sfnt_get_name_index): New function.
	(sfnt_service_glyph_dict): Use it.

	Problem reported by Truc Truong <tructv@necsv.com>.

2009-01-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftstroke.h (FT_Outline_GetInsideBorder): Fix
	documentation.  Problem reported by Truc Truong <tructv@necsv.com>.

	* docs/CHANGES: Updated.

2009-01-14  Werner Lemberg  <wl@gnu.org>

	* Version 2.3.8 released.
	=========================


	Tag sources with `VER-2-3-8'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.3.8.

	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj: s/2.3.7/2.3.8/, s/237/238/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 8.

	* builds/unix/configure.raw (version_info): Set to 9:19:3.

	* docs/release: Updated.

2009-01-14  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk (dist): Compress better.

2009-01-13  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Get_FSType_Flags): Cast for compilation
	with C++.

2009-01-13  Werner Lemberg  <wl@gnu.org>

	Don't use stdlib.h and friends directly.
	Reported by Mickey Gabel <mickey@monfort.co.il>.

	* src/base/ftdbgmem.c: s/<stdlib.h>/FT_CONFIG_STANDARD_LIBRARY_H/.

	* src/gzip/ftgzip.c, src/lzw/ftlzw.c, src/raster/ftmisc.h:
	s/<string.h>/FT_CONFIG_STANDARD_LIBRARY_H/.

	* src/autofit/aftypes.h, src/autofit/afhints.c,
	src/pshinter/pshalgo.c: s/<stdio.h>/FT_CONFIG_STANDARD_LIBRARY_H/

	* src/lzw/ftlzw.c, src/base/ftdbgmem.c: Don't include stdio.h.

2009-01-12  Werner Lemberg  <wl@gnu.org>

	Avoid compiler warnings.

	* */*: s/do ; while ( 0 )/do { } while ( 0 )/.
	Reported by Sean McBride <sean@rogue-research.com>.

2009-01-12  Werner Lemberg  <wl@gnu.org>

	Fix stdlib dependencies.

	Problem reported by Mickey Gabel <mickey@monfort.co.il>.

	* include/freetype/config/ftstdlib.h (ft_exit): Removed.  Unused.

	* src/autofit/afhints.c, src/base/ftlcdfil.c, src/smooth/ftsmooth.c:
	s/memcpy/ft_memcpy/.
	* src/psaux/t1decode.c: s/memset/ft_memset/, s/memcpy/ft_memcpy/.

2009-01-11  Werner Lemberg  <wl@gnu.org>

	* docs/formats.txt: Add link to PCF specification.

	* include/freetype/ftbdf.h (FT_Get_BDF_Property): Improve
	documentation.

2009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance,
	FT_Get_Advances): Change the type of load_flags from FT_UInt32 to
	FT_Int32, to match with the flags for FT_Load_Glyph().
	* src/cff/cffdrivr.c (cff_get_advances): Ditto.
	* src/truetype/ttdriver.c (tt_get_advances): Ditto.
	* include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances):
	Ditto.
	* include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
	Ditto.

2009-01-09  Daniel Zimmermann  <netzimme@aol.com>

	* src/gxvalid/gxvmort.c (gxv_mort_feature_validate): Fix wrong
	length check.  From Savannah patch #6682.

2009-01-09  Werner Lemberg  <wl@gnu.org>

	Fix problem with T1_FIELD_{NUM,FIXED}_TABLE2.

	* src/psaux/psobjs.c (ps_parser_load_field_table): Don't handle
	`count_offset' if it is zero (i.e., unused).  Otherwise, the first
	element of the structure which holds the data is erroneously
	modified.  Problem reported by Chi Nguyen <chint@necsv.com>.

2009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance,
	FT_Get_Advances): Extend the type of load_flags from FT_UInt to
	FT_UInt32, to pass 32-bit flags on 16bit platforms.
	* src/cff/cffdrivr.c (cff_get_advances): Ditto.
	* src/truetype/ttdriver.c (tt_get_advances): Ditto.
	* include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances):
	Ditto.
	* include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
	Ditto.

2009-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (FT_Done_Library): Issue an error message when
	FT_Done_Face() cannot free all faces. If the list of the opened
	faces includes broken face which FT_Done_Face() cannot free,
	FT_Done_Library() retries FT_Done_Face() and it can fall into
	an endless loop. See the discussion:
	http://lists.gnu.org/archive/html/freetype-devel/2008-09/msg00047.html
	http://lists.gnu.org/archive/html/freetype-devel/2008-10/msg00000.html

2009-01-07  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Document new key `a' in ftdiff.

2009-01-06  Werner Lemberg  <wl@gnu.org>

	* autogen.sh: Don't use GNUisms while calling sed.  Problem reported
	by Sean McBride.

2009-01-06  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_LCD
	and FT_PIXEL_MODE_LCD_V.  Problem reported by Chi Nguyen
	<chint@necsv.com>.

2009-01-06  Diego Pettenò  <flameeyes@gmail.com>

	* builds/unix/configure.raw: Don't call AC_CANONICAL_BUILD and
	AC_CANONICAL_TARGET and use $host_os only.  A nice explanation for
	this change can be found at
	http://blog.flameeyes.eu/s/canonical-target.

	From Savannah patch #6712.

2009-01-06  Sean McBride  <sean@rogue-research.com>

	* src/base/ftdbgmem.c (_debug_mem_dummy): Make it static.

	* src/base/ftmac.c: Remove some #undefs.

2008-12-26  Werner Lemberg  <wl@gnu.org>

	Set `face_index' field in FT_Face for all font formats.

	* cff/cffobjs.c (cff_face_init), winfonts/winfnt.c (FNT_Face_Init),
	sfnt/sfobjs.c (sfnt_init_face): Do it.

	* docs/CHANGES: Document it.

2008-12-22  Steve Grubb

	* builds/unix/ftsystem.c (FT_Stream_Open): Reject zero-length files.
	Patch from Savannah bug #25151.

2008-12-21  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrdrivr.c, src/winfonts/winfnt.c, src/cache/ftcmanag.c,
	src/smooth/ftgrays.c, src/base/ftobjc.s, src/sfobjs.c:
	s/_Err_Bad_Argument/_Err_Invalid_Argument/.  The former is for
	errors in the bytecode interpreter only.

2008-12-21  Werner Lemberg  <wl@gnu.org>

	* src/base/ftpfr.c (FT_Get_PFR_Metrics): Protect against NULL
	arguments.
	Fix return value for non-PFR fonts.  Both problems reported by Chi
	Nguyen <chint@necsv.com>.

2008-12-21  anonymous

	FT_USE_MODULE declares things as:

	  extern const FT_Module_Class

	(or similar for C++).  However, the actual types of the variables
	being declared are often different, e.g., FT_Driver_ClassRec or
	FT_Renderer_Class.  (Some are, indeed, FT_Module_Class.)

	This works with most C compilers (since those structs begin with an
	FT_Module_Class struct), but technically it's undefined behavior.

	To quote the ISO/IEC 9899:TC2 final committee draft, section 6.2.7
	paragraph 2:

	  All declarations that refer to the same object or function shall
	  have compatible type; otherwise, the behavior is undefined.

	(And they are not compatible types.)

	Most C compilers don't reject (or even detect!) code which has this
	issue, but the GCC LTO development branch compiler does.  (It
	outputs the types of the objects while generating .o files, along
	with a bunch of other information, then compares them when doing the
	final link-time code generation pass.)

	Patch from Savannah bug #25133.

	* src/base/ftinit.c (FT_USE_MODULE): Include variable type.

	* builds/amiga/include/freetype/config/ftmodule.h,
	include/freetype/config/ftmodule.h, */module.mk: Updated to declare
	pass correct types to FT_USE_MODULE.

2008-12-21  Hongbo Ni  <hongbo@njstar.com>

	* src/autofit/aflatin.c (af_latin_hint_edges),
	src/autofit/aflatin2.c (af_latin2_hint_edges), src/autofit/afcjk.c
	(af_cjk_hint_edges): Protect against division by zero.  This fixes
	Savannah bug #25124.

2008-12-18  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2008-12-18  Bevan, David  <dbevan@emtex.com>

	Provide API for accessing embedding and subsetting restriction
	information.

	* include/freetype.h (FT_FSTYPE_INSTALLABLE_EMBEDDING,
	FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING,
	FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING, FT_FSTYPE_EDITABLE_EMBEDDING,
	FT_FSTYPE_NO_SUBSETTING, FT_FSTYPE_BITMAP_EMBEDDING_ONLY): New
	macros.
	(FT_Get_FSType_Flags): New function declaration.

	* src/base/ftobjs.c (FT_Get_FSType_Flags): New function.

	* src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c
	(t42_keywords): Handle `FSType'.

	* include/freetype/t1tables.h (PS_FontInfoRec): Add `fs_type' field.

2008-12-17  Werner Lemberg  <wl@gnu.org>

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Don't use internal
	macros so that copying the source code into an application works
	out of the box.

2008-12-17  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftsynth.h, src/base/ftsynth.c: Move
	FT_GlyphSlot_Own_Bitmap to...
	* include/freetype/ftbitmap.h, src/base/ftbitmap.c: These files.

	* docs/CHANGES: Document it.

2008-12-10  Werner Lemberg  <wl@gnu.org>

	Generalize the concept of `tricky' fonts by introducing
	FT_FACE_FLAG_TRICKY to indicate that the font format's hinting
	engine is necessary for correct rendering.

	At the same time, slightly modify the behaviour of tricky fonts:
	FT_LOAD_NO_HINTING is now ignored.  To really force raw loading
	of tricky fonts (without hinting), both FT_LOAD_NO_HINTING and
	FT_LOAD_NO_AUTOHINT must be used.

	Finally, tricky TrueType fonts always use the bytecode interpreter
	even if the patented code is used.

	* include/freetype/freetype.h (FT_FACE_FLAG_TRICKY, FT_IS_TRICKY):
	New macros.

	* src/truetype/ttdriver.c (Load_Glyph): Handle new load flags
	semantics as described above.

	* src/truetype/ttobjs.c (tt_check_trickyness): New function, using
	code of ...
	(tt_face_init): This function, now simplified and updated to new
	semantics.

	* src/base/ftobjs.c (FT_Load_Glyph): Don't use autohinter for tricky
	fonts.

	* docs/CHANGES: Document it.

2008-12-09  Werner Lemberg  <wl@gnu.org>

	Really fix Savannah bug #25010: An SFNT font with neither outlines
	nor bitmaps can be considered as containing space `glyphs' only.

	* src/truetype/ttpload.c (tt_face_load_loca): Handle the case where
	a `glyf' table is missing.

	* src/truetype/ttgload.c (load_truetype_glyph): Abort if we have no
	`glyf' table but a non-zero `loca' entry.
	(tt_loader_init): Handle missing `glyf' table.

	* src/base/ftobjs.c (FT_Load_Glyph): Undo change 2008-12-05.

	* src/sfnt/sfobjs.c (sfnt_load_face): A font with neither outlines
	nor bitmaps is scalable.

2008-12-05  Werner Lemberg  <wl@nu.org>

	* src/autofit/aflatin.c (af_latin_uniranges): Add more ranges.  This
	fixes Savannah bug #21190 which also provides a basic patch.

2008-12-05  Werner Lemberg  <wl@nu.org>

	* include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): Use value
	0x100 instead of 0x10000; the latter value is already occupied by
	FT_LOAD_TARGET_LIGHT.  Bug reported by James Cloos.


	Handle SFNT with neither outlines nor bitmaps.  This fixes Savannah
	bug #25010.

	* src/base/ftobjs.c (FT_Load_Glyph): Reject fonts with neither
	outlines nor bitmaps.

	* src/sfnt/sfobjs.c (sfnt_load_face): Don't return an error if there
	is no table with glyphs.


	* src/sfnt/ttload.c (tt_face_lookup_table): Improve debugging
	message.

2008-12-01  Werner Lemberg  <wl@gnu.org>

	GDEF tables need `glyph_count' too for validation.  Problem reported
	by Chi Nguyen <chint@necsv.com>.

	* src/otvalid/otvgdef.c (otv_GDEF_validate), src/otvalid/otvalid.h
	(otv_GDEF_validate), src/otvalid/otvmod.c (otv_validate): Pass
	`glyph_count'.

2008-11-29  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afcjk.c, src/base/ftoutln.c, src/base/ftrfork.c,
	src/bdf/bdfdrivr.c, src/gxvalid/gxvmorx.c, src/otvalid/otvmath.c,
	src/pcf/pcfdrivr.c, src/psnames/pstables.h, src/smooth/ftgrays.c,
	src/tools/glnames.py, src/truetype/ttinterp.c, src/type1/t1load.c,
	src/type42/t42objs.c, src/winfonts/winfnt.c: Fix compiler warnings
	(Atari PureC).

2008-11-29  James Cloos  <cloos@jhcloos.com>

	* src/type/t1load.c (mm_axis_unmap): Revert previous patch and fix
	it correctly by using FT_INT_TO_FIXED (FreeType expects 16.16 values
	in the /BlendDesignMap space).

2008-11-29  James Cloos  <cloos@jhcloos.com>

	* src/type1/t1load.c (mm_axis_unmap): `blend_points' is FT_Fixed*,
	whereas `design_points' is FT_Long*.  Therefore, return blend rather
	than design points.

2008-11-27  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffparse.c (cff_parse_real): Handle more than nine
	significant digits correctly.  This fixes Savannah bug #24953.

2008-11-25  Daniel Zimmermann  <netzimme@aol.com>

	* src/base/ftstream.c (FT_Stream_ReadFields): Don't access stream
	before the NULL check.  From Savannah patch #6681.

2008-11-24  Werner Lemberg  <wl@gnu.org>

	Fixes from the gnuwin32 port.

	* src/base/ftlcdfil.c: s/EXPORT/EXPORT_DEF/.

	* src/base/ftotval.c: Include FT_OPENTYPE_VALIDATE_H.

	* src/psaux/psobjs.c (ps_table_add): Check `length'.

2008-11-15  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (tt_default_graphics_state): The default
	value for `scan_type' is zero, as confirmed by Greg Hitchcock from
	Microsoft.  Problem reported by Michal Nowakowski
	<miszka@limes.com.pl>.

2008-11-12  Tor Andersson  <tor.andersson@gmail.com>

	* src/cff/cffdrivr.c (cff_get_cmap_info): Initialize `format' field.
	This fixes Savannah bug #24819.

2008-11-08  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_load_face): Remove #if 0/#endif guards
	since OpenType version 1.5 has been released.

	* include/ttnameid.h (TT_NAME_ID_WWS_FAMILY,
	TT_NAME_ID_WWS_SUBFAMILY): New macros for OpenType 1.5.
	(TT_URC_COPTIC, TT_URC_VAI, TT_URC_NKO, TT_URC_BALINESE,
	TT_URC_PHAGSPA, TT_URC_NON_PLANE_0, TT_URC_PHOENICIAN,
	TT_URC_TAI_LE, TT_URC_NEW_TAI_LUE, TT_URC_BUGINESE,
	TT_URC_GLAGOLITIC, TT_URC_YIJING, TT_URC_SYLOTI_NAGRI,
	TT_URC_LINEAR_B, TT_URC_ANCIENT_GREEK_NUMBERS, TT_URC_UGARITIC,
	TT_URC_OLD_PERSIAN, TT_URC_SHAVIAN, TT_URC_OSMANYA,
	TT_URC_CYPRIOT_SYLLABARY, TT_URC_KHAROSHTHI, TT_URC_TAI_XUAN_JING,
	TT_URC_CUNEIFORM, TT_URC_COUNTING_ROD_NUMERALS, TT_URC_SUNDANESE,
	TT_URC_LEPCHA, TT_URC_OL_CHIKI, TT_URC_SAURASHTRA, TT_URC_KAYAH_LI,
	TT_URC_REJANG, TT_URC_CHAM, TT_URC_ANCIENT_SYMBOLS,
	TT_URC_PHAISTOS_DISC, TT_URC_OLD_ANATOLIAN, TT_URC_GAME_TILES): New
	macros for OpenType 1.5.

2008-11-08  Wenlin Institute  <wenlin@wenlin.com>

	* src/base/ftobjs.c (ft_glyphslot_free_bitmap): Protect against
	slot->internal == NULL.  Reported by Graham Asher.

2008-11-08  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (tt_face_get_name): Modified to return an error
	code so that memory allocation problems can be distinguished from
	missing table entries.  Reported by Graham Asher.
	(GET_NAME): New macro.
	(sfnt_load_face): Use it.

2008-11-05  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h, include/freetype/config/ftoption.h
	[TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Undefine
	TT_CONFIG_OPTION_UNPATENTED_HINTING.  This fixes the return value of
	`FT_Get_TrueType_Engine_Type' (and makes it work as documented).
	Reported in bug #441638 of bugzilla.novell.com.

	* docs/CHANGES: Document it.

2008-11-03  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_subrs): Use an endless loop.  There are
	fonts (like HELVI.PFB version 003.001, used on OS/2) which define
	some `subrs' elements more than once.  Problem reported by Peter
	Weilbacher <mozilla@weilbacher.org>.

2008-10-15  Graham Asher  <graham.asher@btinternet.com>

	* src/sfnt/ttpost.c (tt_post_default_names): Add `const'.

2008-10-15  David Turner  <david@freetype.org>

	* src/truetype/ttgxvar.c (TT_Set_MM_Blend): Disambiguate for
	meddlesome compilers' warning against `for ( ...; ...; ...) ;'.

2008-10-14  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Remove compiler warning.
	Suggested by Bram Tassyns in Savannah patch #6651.

2008-10-12  Graham Asher  <graham.asher@btinternet.com>

	* src/sfnt/sfobjs.c (sfnt_load_face): Fix computation of
	`underline_position'.

2008-10-12  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2008-10-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #24468.

	According to include/freetype/internal/ftobjs.h, the appropriate
	type to interchange single character codepoint is FT_UInt32. It
	should be distinguished from FT_UInt which can be 16bit integer.

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Change the type
	of the second argument `pcharcode' from FT_UInt* to FT_UInt32*.
	(tt_cmap4_char_map_binary): Ditto.
	(tt_cmap14_get_nondef_chars): Change the type of return value
	from FT_UInt* to FT_UInt32*.

2008-10-08  John Tytgat  <John.Tytgat@esko.com>

	Fix Savannah bug #24485.

	* src/type1/t1load.c (parse_charstrings): Assure that we always have
	a .notdef glyph.

2008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c: Include FT_TRUETYPE_TAGS_H for multi build.
	* builds/mac/ftmac.c: Ditto.

2008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/tttags.h (TTAG_TYP1, TTAG_typ1): Fix definitions.
	* src/base/ftobjs.c: Include FT_TRUETYPE_TAGS_H.

2008-10-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/sfnt/sfobjs.c (sfnt_open_font): Allow `typ1' version tag in
	the beginning of sfnt container.
	* src/sfnt/ttload.c (check_table_dir): Return
	`SFNT_Err_Table_Missing' when sfnt table directory structure is
	correct but essential tables for TrueType fonts (`head', `bhed' or
	`SING') are missing.  Other errors are returned by
	SFNT_Err_Unknown_File_Format.

	* src/base/ftobjs.c (FT_Open_Face): When TrueType driver returns
	`FT_Err_Table_Missing', try `open_face_PS_from_sfnt_stream'.  It is
	enabled only when old mac font support is configured.

2008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/tttags.h (TTAG_CID, TTAG_FOND, TTAG_LWFN,
	TTAG_POST, TTAG_sfnt, TTAG_TYP1, TTAG_typ1): New tags to simplify
	the repeated calculations of these values in ftobjs.c and ftmac.c.
	* src/base/ftobjs.c: Replace all FT_MAKE_TAG by new tags.
	* src/base/ftmac.c: Ditto.
	* builds/mac/ftmac.c: Ditto.

2008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (ft_lookup_PS_in_sfnt_stream): Remove wrong
	initialization of *is_sfnt_cid.

2008-10-04  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Remove compiler
	warnings.

2008-10-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Replaced by...
	(ft_lookup_PS_in_sfnt_stream): This.
	(open_face_PS_from_sfnt_stream): New function.  It checks whether
	the stream is sfnt-wrapped Type1 PS font or sfnt-wrapped CID-keyed
	font, then try to open a face for given face_index.
	(Mac_Read_sfnt_Resource): Replace the combination of
	`ft_lookup_PS_in_sfnt' and `open_face_from_buffer' by
	`open_face_PS_from_sfnt_stream'.
	* src/base/ftmac.c (FT_New_Face_From_SFNT): Ditto.
	* builds/mac/ftmac.c (FT_New_Face_From_SFNT): Ditto.
	* src/base/ftbase.h: Remove `ft_lookup_PS_in_sfnt' and add
	`open_face_PS_from_sfnt_stream'.

2008-10-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Set *is_sfnt_cid to
	FALSE if neither `CID ' nor `TYP1' is found in the sfnt container.

2008-10-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/config/ftconfig.h: Define FT_MACINTOSH when SC or
	MrC compiler of MPW is used.  These compilers do not define the
	macro __APPLE__ by themselves.
	* builds/unix/ftconfig.in: Ditto.
	* builds/vms/ftconfig.h: Ditto.
	* src/base/ftbase.c: Use FT_MACINTOSH instead of __APPLE__, to
	include ftmac.c if FreeType 2 is built by MPW.
	* src/base/ftobjs.c: Use FT_MACINTOSH instead of __APPLE__, to
	enable shared functions for ftmac.c if FreeType 2 is built by MPW.

	* builds/mac/ftmac.c: Include ftbase.h.
	(memory_stream_close): Removed.
	(new_memory_stream): Ditto.
	(open_face_from_buffer): Removed.  Use the implementation in
	ftobjs.c.
	(ft_lookup_PS_in_sfnt): Ditto.

	* builds/mac/FreeType.m68k_far.make.txt: Build ftmac.c as an
	included part of ftbase.c, to share the functions in ftobjs.c.  The
	rule compiling ftmac.c separately is removed and the rule copying
	ftbase.c from src/base/ftbase.c to builds/mac/ftbase.c is added.
	* builds/mac/FreeType.m68k_cfm.make.txt: Ditto.
	* builds/mac/FreeType.ppc_classic.make.txt: Ditto.
	* builds/mac/FreeType.ppc_carbon.make.txt: Ditto.

2008-10-02  Bram Tassyns  <bramt@enfocus.be>

	* src/cff/cffgload.c (cff_slot_load): Map CID 0 to GID 0.  This
	fixes Savannah bug #24430.

2008-10-02  Werner Lemberg  <wl@gnu.org>

	* builds/freetype.mk (BASE_H): Rename to...
	(INTERNAL_H): This.
	(FREETYPE_H): Updated.
	* src/base/rules.mk: (BASE_OBJ_S, OBJ_DIR/%.$O): Add BASE_H.
	* src/bdf/rules.mk (BDF_DRV_H): Add bdferror.h.
	* src/cache/rules.mk (CACHE_DRV_H): Add ftccache.h and ftcsbits.h.
	* src/pcf/rules.mk (PCF_DRV_H): Add pcfread.h.
	* src/raster/rules.mk (RASTER_DRV_H): Add ftmisc.h.
	* src/type42/rules.mk (T42_DRV_H): Add t42types.h.

2008-10-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftbase.h: New file to declare the private utility
	functions shared by the sources of base modules.  Currently,
	`ft_lookup_PS_in_sfnt' and `open_face_from_buffer' are declared to
	share between ftobjs.c and ftmac.c.

	* src/base/rule.mk: Add ftbase.h.

	* src/base/ftobjs.c: Include ftbase.h.
	(memory_stream_close): Build on any platform when old MacOS font
	support is enabled.
	(new_memory_stream): Ditto.
	(open_face_from_buffer): Build on any platform when old MacOS font
	support is enabled.  The counting of the face in a font file is
	slightly different between Carbon-dependent parser and Carbon-free
	parser.  They are merged with the platform-specific conditional.
	(ft_lookup_PS_in_sfnt): Ditto.

	* src/base/ftmac.c: Include ftbase.h.
	(memory_stream_close): Removed.
	(new_memory_stream): Ditto.
	(open_face_from_buffer): Removed.  Use the implementation in
	ftobjs.c.
	(ft_lookup_PS_in_sfnt): Ditto.

2008-10-02  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_load_face): `psnames_error' is only needed
	if TT_CONFIG_OPTION_POSTSCRIPT_NAMES is defined.

2008-10-01  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.c (tt_face_done), src/cff/cffobjs.c
	(cff_face_done), src/pfr/pfrobjs.c (pfr_face_done),
	src/pcf/pcfdrivr.c (PCF_Face_Done), src/cid/cidobjs.c
	(cid_face_done), src/bdf/bdfdrivr. (BDF_Face_Done),
	src/sfnt/sfobjs.c (sfnt_face_done): Protect against face == 0.
	Reported by Graham Asher.

2008-09-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/rules.mk: Add conditional source to BASE_SRC, for `make
	multi' on Mac OS X.  If the macro $(ftmac_c) is defined,
	$(BASE_DIR)/$(ftmac_c) is added to BASE_SRC.  In a normal build, the
	lack of ftmac.c in BASE_SRC is not serious because ftbase.c includes
	ftmac.c.
	* builds/unix/unix-def.in: Add a macro definition of $(ftmac_c).
	* builds/unix/configure.raw: Add procedure to set up appropriate
	value of $(ftmac_c) with the consideration of the availability of
	Carbon framework.

2008-09-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/Jamfile: Add target for multi build by jam on Mac OS X.
	* src/base/ftobjs.c (FT_New_Face): Fix the condition to include this
	function for MPW building.  It is synchronized the condition to
	include ftmac.c source into ftbase.c.

2008-09-22  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (CFF_Operator, cff_argument_counts,
	cff_decoder_parse_charstrings): Handle (invalid)
	`callothersubr' and `pop' instructions.

2008-09-22  John Tytgat  <John.Tytgat@esko.com>

	Fix Savannah bug #24307.

	* include/freetype/internal/t1types.h (CID_FaceRec),
	src/type42/t42types.h (T42_FaceRec): Comment out `afm_data'.

2008-09-21  Werner Lemberg  <wl@gnu.org>

	* src/smooth/ftgrays.c (gray_raster_render): Don't dereference
	`target_map' if FT_RASTER_FLAG_DIRECT is set.  Problem reported by
	Stephan T. Lavavej <stl@nuwen.net>.

2008-09-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/otvalid/Jamfile: Add missing target `otvmath' for multi build
	by jam.
	* src/sfnt/Jamfile: Add missing target `ttmtx' for multi build by
	jam.

2008-09-20  Werner Lemberg  <wl@gnu.org>

	* src/smooth/ftgrays.c (gray_find_cell): Fix threshold.  The values
	passed to this function are already `normalized'.  Problem reported
	by Stephan T. Lavavej <stl@nuwen.net>.

	* docs/CHANGES: Document it.

2008-09-20  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c: Include FT_INTERNAL_DEBUG_H.
	(FT_Outline_Decompose): Decorate with tracing messages.

	* src/smooth/ftgrays.c [DEBUG_GRAYS]: Replace with
	FT_DEBUG_LEVEL_TRACE.
	[_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: Include stdio.h and
	stdarg.h.

	(FT_TRACE) [_STANDALONE_]: Remove.
	(FT_Message) [_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: New function.
	(FT_TRACE5, FT_TRACE7) [_STANDALONE_]: New macros.
	(FT_ERROR) [_STANDALONE_]: Updated.

	(gray_hline) [FT_DEBUG_LEVEL_TRACE]: Fix condition.
	Use FT_TRACE7.
	(gray_dump_cells): Make it `static void'.
	(gray_convert_glyph): Use FT_TRACE7.

	(FT_Outline_Decompose) [_STANDALONE_]: Synchronize with version in
	ftoutln.c.

	* src/base/ftadvanc.c (FT_Get_Advance, FT_Get_Advances): Use
	FT_ERROR_BASE.

	* docs/formats.txt: Updated.

2008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c: Import sfnt-wrapped Type1 and sfnt-wrapped
	CID-keyed font support.
	* builds/mac/ftmac.c: Ditto.

2008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Fix double free bug in
	sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font support code.
	`open_face_from_buffer' frees the passed buffer if it cannot open a
	face from the buffer, so the caller must not free it.

2008-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add initial support
	for sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font.
	(ft_lookup_PS_in_sfnt): New function to look up `TYP1' or `CID '
	table in sfnt table directory.  It is used before loading TrueType
	font driver.

	* docs/CHANGES: Add note about the current status of sfnt-wrapped
	Type1 and sfnt-wrapped CID-keyed font support.

2008-09-18  Werner Lemberg  <wl@gnu.org>

	* src/base/ftsystem.c (FT_Done_Memory): Use ft_sfree directly for
	orthogonality (ft_free and ft_sfree could belong to different memory
	pools).  This fixes Savannah bug #24297.

2008-09-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/cff/cffobjs.c (cff_face_init): Use TTAG_OTTO defined
	in ttags.h instead of numerical value 0x4F54544FL.

2008-09-16  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.h, src/cff/cffgload.c
	(cff_decoder_set_width_only): Eliminate function call.

2008-09-15  George Williams  <gww@silcom.com>

	Fix Savannah bug #24179, reported by Bram Tassyns.

	* src/type1/t1load.c (mm_axis_unmap, T1_Get_MM_Var): Fix computation
	of default values.

2008-09-15  Werner Lemberg  <wl@gnu.org>

	* src/tools/glnames.py (main): Surround `ft_get_adobe_glyph_index'
	and `ft_adobe_glyph_list' with FT_CONFIG_OPTION_ADOBE_GLYPH_LIST to
	prevent unconditional definition.  This fixes Savannah bug #24241.

	* src/psnames/pstables.h: Regenerated.

2008-09-13  Werner Lemberg  <wl@gnu.org>

	* autogen.sh, builds/unix/configure.raw,
	include/freetype/config/ftconfig.h, builds/unix/ftconfig.in: Minor
	beautifying.

	* include/freetype/ftadvanc.h, include/freetype/ftgasp.h,
	include/freetype/ftlcdfil.h: Protect against FreeType 1.
	Some other minor fixes.

	* devel/ftoption.h: Synchronize with
	include/freetype/config/ftoption.h.

2008-09-11  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbase.c: Include ftadvanc.c.

2008-09-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/ftconfig.in: Duplicate the cpp computation of
	FT_SIZEOF_{INT|LONG} from include/freetype/config/ftconfig.h.
	(FT_USE_AUTOCONF_SIZEOF_TYPES): New macro.  If defined, the cpp
	computation is disabled and the statically configured sizes are
	used.  This fixes Savannah bug #21250.

	* builds/unix/configure.raw: Add the checks to compare the cpp
	computation results of the bit length of int and long versus the
	sizes detected by running `configure'.  If the results are
	different, FT_USE_AUTOCONF_SIZEOF_TYPES is defined to prioritize the
	results.
	New option --{enable|disable}-biarch-config is added to define or
	undefine FT_USE_AUTOCONF_SIZEOF_TYPES manually.

2008-09-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Clear FT2_EXTRA_LIBS when Carbon or
	ApplicationService framework is missing.  Although this value is not
	used in building of FreeType2, it is written in `freetype2.pc' and
	`freetype-config'.

2008-09-01  david turner  <david@freetype.org>

	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Accept a negative cmap
	index to mean `use default cached FT_Face's charmap'.  This fixes
	Savannah bug #22625.
	* include/freetype/ftcache.h: Document it.


	Make FT_MulFix an inlined function.  This is done to speed up
	FreeType a little (on x86 3% when loading+hinting, 10% when
	rendering, ARM savings are more important though).  Disable this by
	undefining FT_CONFIG_OPTION_INLINE_MULFIX.

	Use of assembler code can now be controlled with
	FT_CONFIG_OPTION_NO_ASSEMBLER.

	* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in
	[!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_arm): New assembler
	implementation.
	[!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_i386): Assembler
	implementation taken from `ftcalc.c'.
	[!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MULFIX_ASSEMBLER): New macro
	which is defined to the platform-specific assembler implementation
	of FT_MulFix.
	[FT_CONFIG_OPTION_INLINE_MULFIX && FT_MULFIX_ASSEMBLER]
	(FT_MULFIX_INLINED): New macro.

	* include/freetype/config/ftoption.h (FT_CONFIG_OPTION_NO_ASSEMBLER,
	FT_CONFIG_OPTION_INLINE_MULFIX): New macros.

	* include/freetype/freetype.h: Updated to handle FT_MULFIX_INLINED.

	* src/base/ftcalc.c: Updated to use FT_MULFIX_ASSEMBLER and
	FT_MULFIX_INLINED.


	Add a new header named FT_ADVANCES_H declaring some new APIs to
	extract the advances of one or more glyphs without necessarily
	loading their outlines.  Also provide `fast loaders' for the
	TrueType, Type1, and CFF font drivers (more to come later).

	* src/base/ftadvanc.c, include/freetype/ftadvanc.h: New files.

	* include/freetype/config/ftheader.h (FT_ADVANCES_H): New macro.
	* include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): New macro.

	* include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc):
	`flags' and `advances' are now of type `FT_UInt' and `FT_Fixed',
	respectively.

	* src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC): Add
	ftadvanc.c.

	* src/cff/cffdrivr.c (cff_get_advances): New function.
	(cff_driver_class): Register it.

	* src/cff/cffgload.c (cff_decoder_set_width_only): New function.
	(cff_decoder_parse_charstrings): Handle `width_only'.
	(cff_slot_load): Handle FT_LOAD_ADVANCE_ONLY.

	* src/cff/cffgload.h (cff_decoder): New element `width_only'.
	(cff_decoder_set_width_only): New declaration.

	* src/truetype/ttdriver.c (tt_get_advances): New function.
	(tt_driver_class): Register it.

	* src/truetype/ttgload.c (Get_HMetrics, Get_VMetrics): Renamed to...
	(TT_Get_HMetrics, TT_Get_VMetrics): This.
	Update callers.
	* src/truetype/ttgload.h: Declare them.

	* src/type1/t1gload.h, src/type1/t1gload.c (T1_Get_Advances): New
	function.
	* src/type1/t1driver.c (t1_driver_class): Register T1_Get_Advances.


	Add checks for minimum version of the `autotools' stuff.

	* autogen.sh: Implement it.
	(get_major_version, get_minor_version, get_patch_version,
	compare_to_minimum_version, check_tool_version): New auxiliary
	functions.

	* README.CVS: Document it.

2008-08-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/sfnt/sfobjs.c (sfnt_open_font): Use TTAG_OTTO defined in
	ttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ).

2008-08-28  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_encoding): Protect against infinite
	loop.  This fixes Savannah bug #24150 (where a patch has been posted
	too).

2008-08-23  Werner Lemberg  <wl@gnu.org>

	* src/type/t1afm.c (compare_kern_pairs), src/pxaux/afmparse.c
	(afm_compare_kern_pairs): Fix comparison.  This fixes Savannah bug
	#24119.

2008-08-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (FT_Stream_New): Initialize *astream always,
	even if passed library or arguments are invalid.  This fixes a bug
	that an uninitialized stream is freed when an invalid library handle
	is passed.  Originally proposed by Mike Fabian, 2008/08/18 on
	freetype-devel.
	(FT_Open_Face): Ditto (stream).
	(load_face_in_embedded_rfork): Ditto (stream2).

2008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c: Add a fallback to guess the availability of the
	`ResourceIndex' type.  It is used when built without configure
	(e.g., a build with Jam).
	* builds/mac/ftmac.c: Ditto.
	* builds/unix/configure.raw: Set HAVE_TYPE_RESOURCE_INDEX to 1 or 0
	explicitly, even if `ResourceIndex' is unavailable.

2008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: In checking of Mac OS X features,
	all-in-one header file `Carbon.h' is replaced by the minimum
	header file `CoreServices.h', similar to current src/base/ftmac.c.

2008-08-18  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/sfnt/ttcmap.c (tt_cmap2_validate): Skip the validation of
	sub-header when its code_count is 0.  Many Japanese Dynalab fonts
	include such an empty sub-header (code_count == 0, first_code == 0
	delta == 0, but offset != 0) as the second sub-header in SJIS cmap.

2008-08-04  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1tokens.h: Handle `ForceBold' keyword.  This fixes
	Savannah bug #23995.

	* src/cid/cidload.c (parse_expansion_factor): New callback function.
	(cid_field_records): Use it for `ExpansionFactor'.
	* src/cod/cidtoken.h: Handle `ForceBold' keyword.
	Don't handle `ExpansionFactor'.

2008-08-04  Bram Tassyns  <bramt@enfocus.be>

	* src/cff/cffparse.c (cff_parse_fixed_scaled): Fix thinko which
	resulted in incorrect scaling.  This fixes Savannah bug #23973.

2008-08-04  Werner Lemberg  <wl@gnu.org>

	Be more tolerant w.r.t. invalid entries in SFNT table directory.

	* src/sfnt/ttload.c (check_table_dir): Ignore invalid entries and
	adjust table count.
	Add more trace messages.
	(tt_face_load_font_dir): Updated.

2008-07-30  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): No longer
	assume that the first argument on the stack is the bottom-most
	element.  Two reasons:

	  o According to people from Adobe it is missing in the Type 2
	    specification that pushing of additional, superfluous arguments
	    on the stack is prohibited.

	  o Acroread in general handles fonts differently, namely by popping
	    the number of arguments needed for a particular operand (as a PS
	    interpreter would do).  In case of buggy fonts this causes a
	    different interpretation which of the elements on the stack are
	    superfluous and which not.

	Since there are CFF subfonts (embedded in PDFs) which rely on
	Acroread's behaviour, FreeType now does the same.

2008-07-27  Werner Lemberg  <wl@gnu.org>

	Add extra mappings for `Tcommaaccent' and `tcommaaccent'.  This
	fixes Savannah bug #23940.

	* src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): Rename to...
	(EXTRA_GLYPH_LIST_SIZE): This.
	Increase by 2.
	(ft_wgl_extra_unicodes): Rename to...
	(ft_extra_glyph_unicodes): This.
	Add two code values.
	(ft_wgl_extra_glyph_names): Rename to...
	(ft_extra_glyph_names): This.
	Add two glyphs.
	(ft_wgl_extra_glyph_name_offsets): Rename to...
	(ft_extra_glyph_name_offsets): This.
	Add two offsets.

	(ps_check_wgl_name, ps_check_wgl_unicode): Rename to...
	(ps_check_extra_glyph_name, ps_check_extra_glyph_unicode): This.
	Updated.
	(ps_unicodes_init): Updated.

2008-07-26  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_decoder_prepare,
	cff_decoder_parse_charstrings): Improve debug output.

2008-07-22  Martin McBride  <mmcbride@emtex.com>

	* src/sfnt/ttcmap.c (tt_cmap4_validate, tt_cmap4_char_map_linear,
	tt_cmap4_char_map_binary): Handle fonts which treat the last segment
	specially.  According to the specification, such fonts would be
	invalid but acroread accepts them.

2008-07-16  Jon Foster  <Jon.Foster@cabot.co.uk>

	* src/pfr/pfrdrivr.c (pfr_get_advance): Fix off-by-one error.

	* src/base/ftcalc.c (FT_MulFix): Fix portability issue.

	* src/sfnt/ttpost.c (MAC_NAME) [!FT_CONFIG_OPTION_POSTSCRIPT_NAMES]:
	Fix compiler warning.

2008-07-16  Werner Lemberg  <wl@gnu.org>

	Handle CID-keyed fonts wrapped in an SFNT (with cmaps) correctly.

	* src/cff/cffload.c (cff_font_load): Pass `pure_cff'.
	Invert sids table only if `pure_cff' is set.
	* src/cff/cffload.h: Udpated.

	* src/cff/cffobjs.c (cff_face_init): Updated.
	Set FT_FACE_FLAG_CID_KEYED only if pure_cff is set.

	* docs/CHANGES: Updated.

2008-07-09  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttpload.c (tt_face_load_loca): Handle buggy fonts
	where num_locations < num_glyphs.  Problem reported by Ding Li.

2008-07-05  Werner Lemberg  <wl@gnu.org>

	Since FreeType uses `$(value ...)', we now need GNU make 3.80 or
	newer.  This fixes Savannah bug #23648.

	* configure: zsh doesn't like ${1+"$@"}.
	Update needed GNU make version.
	* builds/toplevel.mk: Check for `$(eval ...)'.
	* docs/INSTALL.GNU, docs/INSTALL.CROSS, docs/INSTALL.UNIX: Document
	it.

2008-07-04  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (Draw_Sweep): If span is smaller than one
	pixel, only check for dropouts if neither start nor end point lies
	on a pixel center.  This fixes Savannah bug #23762.

2008-06-29  Werner Lemberg  <wl@gnu.org>

	* Version 2.3.7 released.
	=========================


	Tag sources with `VER-2-3-7'.

	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
	version number to 2.3.7.

	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj: s/2.3.6/2.3.7/, s/236/237/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 7.

	* builds/unix/configure.raw (version_info): Set to 9:18:3.

	* docs/release: Updated.

2008-06-28  Werner Lemberg  <wl@gnu.org>

	* src/ftglyph.c (FT_Matrix_Multiply, FT_Matrix_Invert): Move to...
	* src/ftcalc.c: Here.  This fixes Savannah bug #23729.

2008-06-27  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
	Horizontal_Gray_Sweep_Drop): Test for intersections which
	degenerate to a single point can be ignored; this has been confirmed
	by Greg Hitchcock from Microsoft.  (This was commented out code.)

2008-06-26  Werner Lemberg  <wl@gnu.org>

	Improve navigation in API reference.

	* src/tools/docmaker/tohtml.py (html_header_3): Renamed to...
	(html_header_6): This.
	(html_header_3, html_header_3i, html_header_4, html_header_5,
	html_header_5t): New strings.
	(toc_footer_start, toc_footer_end): New strings.
	(HtmlFormatter::html_header): Updated.
	(HtmlFormatter::html_index_header, HtmlFormatter::html_toc_header):
	New strings.
	(HtmlFormatter::index_enter): Use `html_index_header'.
	(HtmlFormatter::index_exit): Print `html_footer'.
	(HtmlFormatter::toc_enter): Use `html_toc_header'.
	(HtmlFormatter::toc_exit): Print proper footer.

	Convert ~ to non-breakable space.

	* src/tools/docmaker/tohtml.py (make_html_para): Implement it.
	Update header files accordingly.

2008-06-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Check type `ResourceIndex' explicitly
	and define HAVE_TYPE_RESOURCE_INDEX if it is defined.  Mac OS X 10.5
	bundles 10.4u SDK with MAC_OS_X_VERSION_10_5 macro but without
	ResourceIndex type definition.  The macro does not inform the type
	availability.
	* src/base/ftmac.c: More parentheses are inserted to clarify the
	conditionals to disable legacy APIs in `10.5 and later' cases.  If
	HAVE_TYPE_RESOURCE_INDEX is not defined, ResourceIndex is defined.

2008-06-24  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_SCANTYPE): Don't check rendering
	mode.

	* src/raster/ftraster.c (Render_Glyph, Render_Gray_Glyph,
	Draw_Sweep): No-dropout mode is value 2, not value 0.
	(Draw_Sweep): Really skip dropout handling for no-dropout mode.

2008-06-24  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psobjs.c (t1_builder_close_contour): Don't add contour
	if it consists of one point only.  Based on a patch from Savannah
	bug #23683 (from John Tytgat).

2008-06-22  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Glyph): Protect bytecode stuff
	with IS_HINTED.

	* docs/CHANGES: Updated.

2008-06-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: If CFLAGS has `-isysroot XXX' option
	but LDFLAGS does not, import it to LDFLAGS.  The option is used to
	specify non-default SDK on Mac OS X (e.g., universal binary SDK for
	Mac OS X 10.4 on PowerPC platform).  Although Apple TechNote 2137
	recommends to add the option only to CFLAGS, LDFLAGS should include
	it because libfreetype.la is built with -no-undefined.  This fixes a
	bug reported by Ryan Schmidt in MacPorts,
	http://trac.macports.org/ticket/15331.

2008-06-21  Werner Lemberg  <wl@gnu.org>

	Enable access to the various dropout rules of the B&W rasterizer.
	Pass dropout rules from the TT bytecode interpreter to the
	rasterizer.

	* include/freetype/ftimage.h (FT_OUTLINE_SMART_DROPOUTS,
	FT_OUTLINE_EXCLUDE_STUBS): New flags for FT_Outline.

	* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
	Horizontal_Gray_Sweep_Drop): Use same mode numbers as given in the
	OpenType specification.
	Fix mode 4 computation.
	(Render_Glyph, Render_Gray_Glyph): Handle new outline flags.

	* src/truetype/ttgload.c (TT_Load_Glyph) Convert scan conversion
	mode to FT_OUTLINE_XXX flags.

	* src/truetype/ttinterp.c (Ins_SCANCTRL): Enable ppem check.

2008-06-19  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Compute final
	`dict->units_per_em' value before assigning it to
	`cffface->units_per_EM'.  Otherwise, CFFs without subfonts are
	scaled incorrectly if the font matrix is non-standard.  This fixes
	Savannah bug #23630.

	* docs/CHANGES: Updated.

2008-06-19  Werner Lemberg  <wl@gnu.org>

	* src/type/t1objs.c (T1_Face_Init): Slightly improve algorithm fix
	from 2008-06-19.

2008-06-18  Werner Lemberg  <wl@gnu.org>

	* src/type/t1objs.c (T1_Face_Init): Fix change from 2008-03-21.
	Reported by Peter Weilbacher <mozilla@weilbacher.org>.

	* docs/CHANGES: Updated.

2008-06-15  George Williams  <gww@silcom.com>

	* src/otvalid/otvgpos.c (otv_MarkBasePos_validate): Set
	`valid->extra2' to 1.  This is undocumented in the OpenType 1.5
	specification.

2008-06-15  Werner Lemberg  <wl@gnu.org>

	* src/base/ftcalc.c (FT_MulFix) <asm>: Protect registers correctly
	from clobbering.  Patch from Savannah bug report #23556.

	* docs/CHANGES: Document it.

2008-06-10  Werner Lemberg  <wl@gnu.org>

	* autogen.sh: Add option `--install' to libtoolize.

2008-06-10  Werner Lemberg  <wl@gnu.org>

	* Version 2.3.6 released.
	=========================


	Tag sources with `VER-2-3-6'.

	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
	version number to 2.3.6.

	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj: s/2.3.5/2.3.6/, s/235/236/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.

	* builds/unix/configure.raw (version_info): Set to 9:17:3.


	* include/freetype/internal/psaux.h (T1_BuilderRec): Remove `scale_x'
	and `scale_y'.
	* src/cff/cffgload.h (CFF_Builder): Remove `scale_x' and `scale_y'.


	* src/cff/cffparse.c: Include FT_INTERNAL_DEBUG_H.
	* src/cff/cffobjs.h: Include FT_INTERNAL_POSTSCRIPT_HINTS_H.

2008-06-10  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (open_face): Check `clazz->init_face' and
	`clazz->done_face'.

2008-06-09  VaDiM  <s_sliva@rambler.ru>

	Support debugging on WinCE.  From Savannah patch #6536; this fixes
	bug #23497.

	* builds/win32/ftdebug.c (OutputDebugStringEx): New function/macro
	as a replacement for OutputDebugStringA (which WinCE doesn't have).
	Update all callers.
	(ft_debug_init) [_WIN32_CE]: WinCE apparently doesn't have
	environment variables.

2008-06-09  Werner Lemberg  <wl@gnu.org>

	* README.CVS: Updated.

	* builds/unix/configure.raw, builds/unix/freetype-config.in: Updated
	for newer versions of autoconf and friends.

2008-06-08  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1parse.h (T1_ParserRec): Make `base_len' and
	`private_len' unsigned.

	* src/type1/t1parse.c (read_pfb_tag): Make `asize' unsigned and read
	it as such.
	(T1_New_Parser, T1_Get_Private_Dict): Make `size' unsigned.


	* src/base/ftstream.c (FT_Stream_Skip): Reject negative values.


	* src/type1/t1load.c (parse_blend_design_positions): Check `n_axis'
	for sane value.
	Fix typo.


	* src/psaux/psobjs.c (ps_table_add): Check `idx' correctly.


	* src/truetype/ttinterp (Ins_SHC): Use BOUNDS() to check
	`last_point'.


	* src/sfnt/ttload.c (tt_face_load_max_profile): Limit
	`maxTwilightPoints'.

2008-06-06  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_IP): Handle case `org_dist == 0'
	correctly.  This fixes glyphs `t' and `h' of Arial Narrow at 12ppem.

2008-06-03  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftcache.h (FTC_FaceID): Change type back to
	FT_Pointer.  Reported by Ian Britten <britten@caris.com>.

2008-06-02  Werner Lemberg  <wl@gnu.org>

	Emit header info for defined FreeType objects in reference.

	* src/tools/docmaker/content.py (re_header_macro): New regexp.
	(ContentProcessor::__init__): Initialize new dictionary `headers'.
	(DocBlock::__init__): Collect macro header definitions.

	* src/tools/docmaker/tohtml.py (header_location_header,
	header_location_footer): New strings.
	(HtmlFormatter::__init__): Pass `headers' dictionary.
	(HtmlFormatter::print_html_field): Don't emit paragraph tags.
	(HtmlFormatter::print_html_field_list): Emit empty paragraph.
	(HtmlFormatter::block_enter): Emit header info.

2008-06-01  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftheader.h (FT_UNPATENTED_HINTING_H,
	FT_INCREMENTAL_H): Added.

2008-05-28  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/sources.py (SourceBlock::__init__): While
	looking for markup tags, return immediately as soon a single one is
	found.

2008-05-28  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_MD): The MD instruction also uses
	original, unscaled input values.  Confirmed by Greg Hitchcock from
	Microsoft.

2008-05-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py (block_footer_start,
	block_footer_middle): Beautify output.

2008-05-25  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (fc_black_render): Return 0 when we are
	trying to render into a zero-width/height bitmap, not an error code.

	* src/truetype/ttgload.c (load_truetype_glyph): Move initialization
	of the graphics state for subglyphs to...
	(TT_Hint_Glyph): This function.
	Hinting instructions for a composite glyph apparently refer to the
	just hinted subglyphs, not the unhinted, unscaled outline.  This
	seems to fix Savannah bugs #20973 and (at least partially) #23310.

2008-05-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (FT_New_Face_From_Suitcase): Check if valid
	`aface' is returned by FT_New_Face_From_FOND().  The patch was
	proposed by an anonymous reporter of Savannah bug #23204.

2008-05-18  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshalgo.c (ps_hints_apply): Reset scale values after
	correction for pixel boundary.  Without this patch, the effect can
	be cumulative under certain circumstances, making glyphs taller and
	taller after each call.  This fixes Savannah bug #19976.

2008-05-18  Werner Lemberg  <wl@gnu.org>

	* src/base/ftdebug.c (FT_Message, FT_Panic): Send output to stderr.
	This fixes Savannah bug #23280.

	* docs/CHANGES: Updated.

2008-05-18  David Turner  <david@freetype.org>

	* src/psnames/psmodule.c (ft_wgl_extra_unicodes,
	ft_wgl_extra_glyph_names, ft_wgl_extra_glyph_name_offsets,
	ps_check_wgl_name, ps_check_wgl_unicode): Use `static' to make
	declarations non-global.

	* src/type1/t1load.c: Add missing comment.

2008-05-17  Sam Hocevar  <samh>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle zero-contour
	glyphs correctly.  Patch from Savannah bug #23277.

2008-05-16  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2008-05-16  Sergey Tolstov  <stolstov@esri.com>

	Improve support for WGL4 encoded fonts.

	* src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): New macro.
	(ft_wgl_extra_unicodes, ft_wgl_extra_glyph_names,
	ft_wgl_extra_glyph_name_offsets): New arrays.
	(ps_check_wgl_name, ps_check_wgl_unicode): New functions.
	(ps_unicodes_init): Use them to add additional Unicode mappings.

2008-05-15  Werner Lemberg  <wl@gnu.org>

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<op_closepath>: `closepath' without a path is a no-op, not an error
	(cf. the PS reference manual).

	Reported by Martin McBride.

2008-05-15  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk (CONFIG_GUESS, CONFIG_SUB): Updated.

2008-05-15  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_subrs): Accept fonts with a subrs array
	which contains a single but empty entry.  This is technically
	invalid (since it must end with `return'), but...

	Reported by Martin McBride.

2008-05-14  Werner Lemberg  <wl@gnu.org>

	Finish fix of scaling bug of CID-keyed CFF subfonts.

	* include/freetype/internal/ftcalc.h, src/base/ftcalc.c
	(FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled): New
	functions.

	* src/cff/cffobjs.h (CFF_Internal): New struct.  It is used to
	provide global hinting data for both the top-font and all subfonts
	(with proper scaling).

	* src/cff/cffobjs.c (cff_make_private_dict): New function, using
	code from `cff_size_init'.
	(cff_size_init, cff_size_done, cff_size_select, cff_size_request):
	Use CFF_Internal and handle subfonts.
	(cff_face_init): Handle top-dict and subfont matrices correctly;
	apply some heuristic in case of unlikely matrix concatenation
	results.  This has been discussed with people from Adobe (thanks
	goes mainly to David Lemon) who confirm that the CFF specs are fuzzy
	and not correct.

	* src/cff/cffgload.h (cff_decoder_prepare): Add `size' argument.

	* src/cff/cffgload.c (cff_builder_init): Updated.
	(cff_decoder_prepare): Handle hints globals for subfonts.
	Update all callers.
	(cff_slot_load): Handling scaling of subfonts properly.

	* src/cff/cffparse.c (cff_parse_fixed_dynamic): New function.
	(cff_parse_font_matrix): Use it.

	* src/cff/cfftypes.h (CFF_FontDictRec): Make `units_per_em'
	FT_ULong.

	* docs/CHANGES: Document it.

2008-05-13  Werner Lemberg  <wl@gnu.org>

	* src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
	Handle case `face_index < 0'.
	* docs/CHANGES: Document it.

2008-05-04  Werner Lemberg  <wl@gnu.org>

	First steps to fix the scaling bug of CID-keyed CFF subfonts,
	reported by Ding Li on 2008/03/28 on freetype-devel.

	* src/base/cff/cffparse.c (power_tens): New array.
	(cff_parse_real): Rewritten to introduce a fourth parameter which
	returns the `scaling' of the real number so that we have no
	precision loss.  This is not used yet.
	Update all callers.
	(cff_parse_fixed_thousand): Replace with...
	(cff_parse_fixed_scaled): This function.  Update all callers.

2008-05-03  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Call the auto-hinter without
	transformation since it recursively calls FT_Load_Glyph.  This fixes
	Savannah bug #23143.

2008-04-26  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/psaux.h (T1_BuilderRec): Mark `scale_x'
	and `scale_y' as obsolete since they aren't used.
	* src/psaux/psobjs.c (t1_builder_init): Updated.

	* src/cff/cffgload.h (CFF_Builder): Mark `scale_x' and `scale_y' as
	obsolete since they aren't used.
	* src/cff/cffgload.c (cff_builder_init): Updated.

2008-04-14  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfdrivr.c (PCF_Face_Init): Protect call to
	`FT_Stream_OpenLZW' with `FT_CONFIG_OPTION_USE_LZ'.  From Savannah
	bug #22909.

2008-04-13  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psconv.c (PS_Conv_ToFixed): Increase precision if
	integer part is zero.

2008-04-01  Werner Lemberg  <wl@gnu.org>

	Fix compilation with g++ 4.1 (with both `single' and `multi'
	targets).

	* src/base/ftobjs.c (FT_Open_Face): Don't define a variable in block
	which is crossed by a `goto'.

	* src/otvalid/otvalid.h (otv_MATH_validate): Add prototype.

2008-03-31  Werner Lemberg  <wl@gnu.org>

	Fix support for subsetted CID-keyed CFFs.

	* include/freetype/freetype.h (FT_FACE_FLAG_CID_KEYED,
	FT_IS_CID_KEYED): New macros.

	* src/cff/cffobjs.c (cff_face_init): Set number of glyphs to the
	maximum CID value in CID-keyed CFFs.
	Handle FT_FACE_FLAG_CID_KEYED flag.

	* docs/CHANGES: Document it.


	Fix CFF font matrix calculation and improve precision.

	* src/cff/cffparse.c (cff_parse_real): Increase precision if integer
	part is zero.
	(cff_parse_font_matrix): Simplify computation of `units_per_em';
	this prevents overflow also.


	Support FT_Get_CID_Registry_Ordering_Supplement for PS CID fonts.

	* src/cid/cidriver.c: Include FT_SERVICE_CID_H.
	(cid_get_ros): New function.
	(cid_service_cid_info): New service structure.
	(cid_services): Register it.

2008-03-23  Werner Lemberg  <wl@gnu.org>

	Adjustments for Visual C++ 8.0, as reported by Rainer Deyke.

	* builds/compiler/visualc.mk (CFLAGS): Remove /W5.
	(ANSIFLAGS): Add _CRT_SECURE_NO_DEPRECATE.

2008-03-21  Laurence Darby  <ldarby>

	* src/type1/t1objs.c (T1_Face_Init): Use `/Weight'.  Patch from
	Savannah bug #22675.

2008-03-13  Derek Clegg  <dclegg@apple.com>

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix named style loop.
	Patch from Savannah bug #22541.

2008-03-03  Masatoshi Kimura  <VYV03354@nifty.ne.jp>

	* src/sfnt/ttcmap.c (tt_cmap14_char_map_nondef_binary,
	tt_cmap14_find_variant): Return correct value.
	(tt_cmap14_variant_chars): Fix check for `di'.

2008-02-29  Wermer Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2008-02-29  Wolf

	Add build support for symbian platform.  From Savannah bug #22440.

	* builds/symbian/*: New files.

2008-02-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (parse_fond): Fix a bug of PostScript font name
	synthesis.  For any face of a specified FOND, always the name for
	the first face was used.  Except of a FOND that refers multiple
	Type1 font files, wrong synthesized font names are not used at all,
	so this is an invisible bug.  A few limit checks are added too.

	* builds/mac/ftmac.c: Ditto.

2008-02-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Split compiler option to link Carbon
	frameworks to one option for CoreServices framework and another
	option for ApplicationServices framework.  The split options can be
	managed by GNU libtool to avoid unrequired duplication when FreeType
	is linked with other applications.  Suggested by Daniel Macks,
	Savannah bug #22366.

2008-02-18  Victor Stinner  <victor.stinner@haypocalc.com>

	* src/truetype/ttinterp.c (Ins_IUP): Check number of points.  Fix
	from Savannah bug #22356.

2008-02-17  Jonathan Blow  <jon@number-none.com>

	* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
	Check for valid callback pointers.

2008-02-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (FT_New_Face_From_SFNT): Check the sfnt resource
	handle by its value instead of ResError(), fix provided by Deron
	Kazmaier.  According to the Resource Manager Reference,
	GetResource(), Get1Resource(), GetNamedResource(),
	Get1NamedResource() and RGetResource() set noErr but return NULL
	handle when they can not find the requested resource.  These
	functions never return undefined values, so it is sufficient to
	check if the handle is not NULL.

	* builds/mac/ftmac.c (FT_New_Face_From_SFNT): Ditto.

2008-02-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftbase.c: <ftmac.c> is replaced by "ftmac.c" as other
	inclusion styles.  Now it always includes src/base/ftmac.c;
	builds/mac/ftmac.c is never included in any configuration.

	* builds/unix/configure.raw: Print warning if configure is executed
	with options to specify Carbon functionalities explicitly.

	* docs/INSTALL.MAC: Note that legacy builds/mac/ftmac.c is not
	included automatically and manual replacement is required.

2008-02-11  Werner Lemberg  <wl@gnu.org>

	* builds/modules.mk (CLOSE_MODULE, REMOVE_MODULE), builds/detect.mk
	(dos_setup), builds/freetype.mk (clean_project_dos,
	distclean_project_dos): Don't use \ but $(SEP).  Reported by Duncan
	Murdoch.

2008-01-18  Sylvain Pasche  <sylvain.pasche@gmail.com>

	* src/base/ftlcdfil.c (_ft_lcd_filter_legacy): Updated comment to
	mention intra-pixel algorithm.

	* include/freetype/freetype.h (FT_Render_Mode): Mention that
	FT_Library_SetLcdFilter can be used to reduce fringes.

2008-01-16  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (ft_black_render): Check `outline' before
	using it.  Reported by Allan Yang.

2008-01-12  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (FT_CONFIG_OPTION_5_GRAY_LEVELS): Remove.

2008-01-12  Allan Yang, Jian Hua - SH  <Allan.Yang@fmc.fujitsu.com>

	* src/raster/ftraster.c (ft_black_init)
	[FT_RASTER_OPTION_ANTI_ALIASING]: Fix compilation.

2008-01-10  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph): Handle the case
	where the number of contours in a simple glyph is zero (and which
	does contain an entry in the `glyf' table).  This fixes Savannah bug
	#21990.

2008-01-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Formatting suggested by Sean McBride.

	* builds/mac/ftmac.c: Formatting (tab expanded).
	* src/autofit/afindic.c: Ditto.
	* src/base/ftcid.c: Ditto.
	* src/base/ftmac.c: Ditto.

2007-12-30  Werner Lemberg  <wl@gnu.org>

	* src/smooth/ftgrays.c (gray_raster_render): Check `outline'
	correctly.

2007-12-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Improvement of POSIX resource-fork accessor to load unsorted
	references in a resource.  In HelveLTMM (resource-fork PostScript
	Type1 font bundled with Mac OS X since 10.3.x), the appearance order
	of PFB chunks is not sorted; sorting the chunks by reference IDs is
	required.

	* include/freetype/internal/ftrfork.h (FT_RFork_Ref): New structure
	type to store a pair of reference ID and offset to the chunk.

	* src/base/ftrfork.c (ft_raccess_sort_ref_by_id): New function to
	sort FT_RFork_Ref by their reference IDs.

	(FT_Raccess_Get_DataOffsets): Returns an array of offsets that is
	sorted by reference ID.

2007-12-14  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffparse.c (cff_parse_real): Don't apply `power_ten'
	division too early; otherwise the most significant digit(s) of the
	final result are lost as the value is truncated to an integer.  This
	fixes Savannah bug #21794 (where the patch has been posted too).

2007-12-06  Fix  <4d876b82@gmail.com>

	Pass options from one configure script to another as-is (not
	expanded).  This is needed for options like
	--includedir='${prefix}/include'.

	* builds/unix/detect.mk, configure: Prevent argument expansion in
	call to the (real) `configure' script.

2007-12-06  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph): Fix compilation if
	TT_USE_BYTECODE_INTERPRETER isn't defined.

2007-12-06  Werner Lemberg  <wl@gnu.org>

	There exist CFFs which contain opcodes for the Type 1 operators
	`hsbw' and `closepath' which are both invalid in Type 2 charstrings.
	However, it doesn't harm to support them.

	* src/cff/cffgload.c (CFF_Operator): Add `cff_op_hsbw' and
	`cff_op_closepath.'
	(cff_argument_counts): Ditto.

	(cff_decoder_parse_charstrings): Handle Type 1 opcodes 9 (closepath)
	and 13 (hsbw) which are invalid in Type 2 charstrings.

2007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftrfork.c (raccess_guess_darwin_newvfs): New function to
	support new pathname syntax `..namedfork/rsrc' to access a resource
	fork on Mac OS X.  The legacy syntax `/rsrc' does not work on
	case-sensitive HFS+.
	(raccess_guess_darwin_hfsplus): Fix a bug in the calculation of
	buffer size to store a pathname.
	* include/freetype/internal/ftrfork.h: Increment the number of
	resource fork guessing rule.

2007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Improve the compile tests to search
	Carbon functions.
	* builds/mac/ftmac.c: Import fixes for Carbon incompatibilities
	proposed by Sean McBride from src/base/ftmac.c (see 2007-11-16).

2007-12-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	The documents and comments for Mac OS X are improved by Sean
	McBride.

	* src/base/ftmac.c: Fix a comment.
	* include/freetype/ftmac.h: Ditto.
	* docs/INSTALL.MAC: Improve English and add comment on lowest
	system version specified by MACOSX_DEPLOYMENT_TARGET.

2007-12-04  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffload.c (cff_subfont_load): Don't use logical OR to
	concatenate error codes.
	* src/sfnt/ttsbit.c (Load_SBit_Range): Ditto.

2007-12-04  Graham Asher  <graham.asher@btinternet.com>

	* src/truetype/ttobjs.c (tt_face_init): Don't use logical OR to
	concatenate error codes.

2007-12-04  Sean McBride  <sean@rogue-research.com>

	* src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove compiler
	warning.

2007-11-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix MacOS legacy font support by Masatake Yamato on Mac OS X.  It is
	not working since 2.3.5.  In FT_Open_New(), if FT_New_Stream()
	cannot mmap() the specified file and cannot seek to head of the
	specified file, it returns NULL stream and FT_Open_New() returns the
	error immediately.  On MacOS, most legacy MacOS fonts fall into such
	a scenario because their data forks are zero-sized and cannot be
	sought.  To proceed to guessing of resource fork fonts, the
	functions for legacy MacOS font must properly handle the NULL stream
	returned by FT_New_Stream().

	* src/base/ftobjs.c (IsMacBinary): Return error
	FT_Err_Invalid_Stream_Operation immediately when NULL stream is
	passed.
	(FT_Open_Face): Even when FT_New_Stream() returns an error, proceed
	to fallback.  Originally, legacy MacOS font is tested in the cases
	of FT_Err_Invalid_Stream_Operation (occurs when data fork is empty)
	or FT_Err_Unknown_File_Format (occurs when AppleSingle header or
	.dfont header is combined).  Now the case of
	FT_Err_Cannot_Open_Stream is included.

	* src/base/ftrfork.c (FT_Raccess_Guess): When passed stream is NULL,
	skip FT_Stream_Seek(), which seeks to the head of stream, and
	proceed to unit testing of raccess_guess_XXX().  FT_Stream_Seek()
	for a NULL stream causes a Bus error on Mac OS X.
	(raccess_guess_apple_double): Return FT_Err_Cannot_Open_Stream
	immediately if passed stream is NULL.
	(raccess_guess_apple_single): Ditto.

2007-11-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix for Carbon incompatibilities since Mac OS X 10.5,
	proposed by Sean McBride.

	* doc/INSTALL.MAC: Comment on MACOSX_DEPLOYMENT_TARGET.

	* include/freetype/ftmac.h: Deprecate FT_New_Face_From_FOND and
	FT_GetFilePath_From_Mac_ATS_Name.  Since Mac OS X 10.5, calling
	Carbon functions from a forked process is classified as unsafe
	by Apple.  All Carbon-dependent functions should be deprecated.

	* src/base/ftmac.c: Use essential header files
	<CoreServices/CoreServices.h> and
	<ApplicationServices/ApplicationServices.h> instead of
	all-in-one header file <Carbon/Carbon.h>.

	Include <sys/syslimits.h> and replace HFS_MAXPATHLEN by Apple
	genuine macro PATH_MAX.

	Add fallback macro for kATSOptionFlagsUnRestrictedScope which
	is not found in Mac OS X 10.0.

	Multi-character constants ('POST', 'sfnt' etc) are replaced by
	64bit constants calculated by FT_MAKE_TAG() macro.

	For the index in the segment of resource fork, new portable
	type ResourceIndex is introduced for better compatibility.
	This type is since Mac OS X 10.5, so it is defined as short
	when built on older platforms.

	(FT_ATSFontGetFileReference): If build target is only the systems
	10.5 and newer, it calls Apple genuine ATSFontGetFileReference().

	(FT_GetFile_From_Mac_ATS_Name): Return an error if system is 10.5
	and newer or 64bit platform, because legacy type FSSpec type is
	removed completely.

	(FT_New_Face_From_FSSpec): Ditto.

2007-11-01  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_done_face): Check `sfnt' everywhere.  This
	fixes Savannah bug #21485.

2007-10-29  Daniel Svoboda  <dasvo@planeta@cz>

	* src/winfonts/winfnt.c (FNT_Face_Init): Check first that the driver
	can handle the font at all, then check `face_index'.  Otherwise, the
	driver might return the wrong error code.  This fixes Savannah bug
	#21468.

2007-10-21  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_load_face): Support bit 9 and prepare
	support for bit 8 of the `fsSelection' field in the `OS/2' table.
	MS is already using this; hopefully, this becomes part of OpenType
	1.5.
	Prepare also support for `name' IDs 21 (WWS_FAMILY) and 22
	(WWS_SUBFAMILY).

2007-10-20  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py (html_header_2): Fix typo.
	Add `td.left' element to CSS.
	(toc_section_enter): Use it.

2007-10-18  David Turner  <david@freetype.org>

	* include/freetype/freetype.h, src/base/ftobjs.c: Rename API
	functions related to cmap type 14 support to the
	`FT_Object_ActionName' scheme:

	  FT_Get_Char_Variant_index     -> FT_Face_GetCharVariantIndex
	  FT_Get_Char_Variant_IsDefault -> FT_Face_GetCharVariantIsDefault
	  FT_Get_Variant_Selectors      -> FT_Face_GetVariantSelectors
	  FT_Get_Variants_Of_Char       -> FT_Face_GetVariantsOfChar
	  FT_Get_Chars_Of_Variant       -> FT_Face_GetCharsOfVariant

	Update documentation accordingly.

	* src/sfnt/ttcmap.c: Stronger cmap 14 validation.
	Make the code a little more consistent with FreeType coding
	conventions and modify the cmap14 functions that returned a newly
	allocated array to use a persistent vector from the TT_CMap14 object
	instead.

	(TT_CMap14Rec): Provide array and auxiliary data for result.
	(tt_cmap14_done, tt_cmap14_ensure): New functions.

	(tt_cmap14_init, tt_cmap14_validate, tt_cmap14_char_map_def_binary,
	tt_cmap14_char_map_nondef_binary, tt_cmap14_find_variant,
	tt_cmap14_char_var_index, tt_cmap14_variants,
	tt_cmap14_char_variants, tt_cmap14_def_char_count,
	tt_cmap14_get_def_chars, tt_cmap14_get_nondef_chars,
	tt_cmap14_variant_chars, tt_cmap14_class_rec): Updated and improved.

2007-10-15  George Williams  <gww@silcom.com>

	Add support for cmap type 14.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_CMAP_FORMAT_14): New macro.

	* include/freetype/internal/ftobjs.h (FT_CMap_CharVarIndexFunc,
	FT_CMap_CharVarIsDefaultFunc, FT_CMap_VariantListFunc,
	FT_CMap_CharVariantListFunc, FT_CMap_VariantCharListFunc): New
	support function prototypes.
	(FT_CMap_ClassRec): Add them.
	Update all users.

	* include/freetype/ttnameid.h (TT_APPLE_ID_VARIANT_SELECTOR): New
	macro.

	* include/freetype/freetype.h (FT_Get_Char_Variant_Index,
	FT_Get_Char_Variant_IsDefault, FT_Get_Variant_Selectors,
	FT_Get_Variants_Of_Char, FT_Get_Chars_Of_Variant): New API
	functions.

	* src/base/ftobjs.c (find_variant_selector_charmap): New auxiliary
	function.
	(FT_Set_Charmap): Disallow cmaps of type 14.
	(FT_Get_Char_Variant_Index, FT_Get_Char_Variant_IsDefault,
	FT_Get_Variant_Selectors, FT_Get_Variants_Of_Char,
	FT_Get_Chars_Of_Variant): New API functions.

	* src/sfnt/ttcmap.c (TT_PEEK_UINT24, TT_NEXT_UINT24): New macros.

	(TT_CMap14Rec, tt_cmap14_init, tt_cmap14_validate,
	tt_cmap14_char_index, tt_cmap14_char_next, tt_cmap14_get_info,
	tt_cmap14_char_map_def_binary, tt_cmap14_char_map_nondef_binary,
	tt_cmap14_find_variant, tt_cmap14_char_var_index,
	tt_cmap14_char_var_isdefault, tt_cmap14_variants,
	tt_cmap14_char_variants, tt_cmap14_def_char_count,
	tt_cmap14_get_def_chars, tt_cmap14_get_nondef_chars,
	tt_cmap14_variant_chars, tt_cmap14_class_rec): New functions and
	structures for cmap 14 support.
	(tt_cmap_classes): Register tt_cmap14_class_rec.
	(tt_face_build_cmaps): One more error message.

	* docs/CHANGES: Mention cmap 14 support.

2007-10-01  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (find_unicode_charmap): If search for a UCS-4
	charmap fails, do the loop again while searching a UCS-2 charmap.
	This favours MS charmaps over Apple ones.

2007-08-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c: Introduction of abstract `short' data types,
	ResFileRefNum and ResID.  These types were introduced for Copland,
	then backported to MPW.  The variables exchanged with FileManager
	QuickDraw frameworks are redefined by these data types.  Patch was
	proposed by Sean McBride.
	* builds/mac/ftmac.c: Ditto.

2007-08-18  Werner Lemberg  <wl@gnu.org>

	* src/otvalid/otvcmmn.c (otv_x_y_ux_sy): Skip context glyphs.  Found
	by Imran Yousaf.  Fixes Savannah bug #20773.

	(otv_Lookup_validate): Correct handling of LookupType.  Found by
	Imran Yousaf.  Fixes Savannah bug #20782.

2007-08-17  George Williams  <gww@silcom.com>

	* src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix handling of
	SingleSubstFormat1.

2007-08-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Fix a bug which sets CC_BUILD by
	${build-gcc} (unchecked) instead of by ${build}-gcc (checked).
	Found by Ryan Hill.

2007-08-11  George Williams  <gww@silcom.com>

	* src/otvalid/otvcommn.c, src/otvalid/otvcommn.h
	(otv_Coverage_validate): Add fourth argument to pass an expected
	count value.  Update all users.
	Check glyph IDs.
	(otv_ClassDef_validate): Check `StartGlyph'.

	* src/otvalid/otvgsub.c (otv_SingleSubst_validate): More glyph ID
	checks.

	* src/otvalid/otvmath.c (otv_MathConstants_validate): There are only
	56 constants.
	(otv_GlyphAssembly_validate, otv_MathGlyphConstruction_validate):
	Check glyph IDs.

2007-08-08  Werner Lemberg  <wl@gnu.org>

	* src/otvalid/otvbase.c, src/otvalid/otvcommn.c,
	src/otvalid/otvgdef.c, src/otvalid/otvgpos.c, src/otvalid/otvgsub.c,
	src/otvalid/otvjstf.c: s/FT_INVALID_DATA/FT_INVALID_FORMAT/ where
	appropriate.  Reported by George.

	* include/freetype/internal/fttrace.h: Define `trace_otvmath'.

	* src/otvalid/rules.mk (OTV_DRV_SRC): Add otvmath.c.

	* docs/CHANGES: Updated.

2007-08-08  George Williams  <gww@silcom.com>

	Add `MATH' validating support to otvalid module.

	* include/freetype/tttags.h (TTAG_MATH): New macro.
	* include/freetype/ftotval.h (FT_VALIDATE_MATH): New macro.
	(FT_VALIDATE_OT): Updated.

	* src/otvalid/otmath.c: New file.

	* src/otvalid/otvalid.c: Include otvmath.c.
	* src/otvalid/otvmod.c (otv_validate): Handle `MATH' table.

2007-08-04  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.raw: Add call to AC_LIBTOOL_WIN32_DLL.
	Fixes Savannah bug #20686.

2007-08-03  Werner Lemberg  <wl@gnu.org>

	* src/psnames/psmodule.c: Fix usage of
	FT_CONFIG_OPTION_POSTSCRIPT_NAMES macro.  Reported by Graham Asher.

2007-07-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (open_face_from_buffer): The argument
	`driver_name' is typed as `const char*' to match with the
	callers in FT_New_Face_From_LWFN and FT_New_Face_From_SFNT.
	This is same with open_face_from_buffer in src/base/ftobjs.c.
	Found and fixed by Sean McBride.

2007-07-28  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (count_table): Make it conditional.
	* src/base/ftobjs.c (FT_New_Library): Check FT_RENDER_POOL_SIZE with
	a preprocessor statement.

2007-07-27  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Outline_Translate): Check `outline' before
	first usage.  From Savannah patch #6115.

2007-07-16  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2007-07-16  Derek Clegg  <dclegg@apple.com>

	Add new service for getting the ROS from a CID font.

	* include/freetype/config/ftheader.h (FT_CID_H): New macro.
	* include/freetype/ftcid.h: New file.

	* include/freetype/internal/ftserv.h (FT_SERVIVE_CID_H): New macro.
	* include/freetype/internal/services/svcid.h: New file.

	* src/base/ftcid.c: New file.

	* src/cff/cffdrivr.c: Include FT_SERVICE_CID_H.
	(cff_get_ros): New function.
	(cff_service_cid_info): New service structure.
	(cff_services): Register it.

	* src/cff/cffload.c (cff_font_done): Free registry and ordering.

	* src/cff/cfftypes.h (CFF_FontRec): Add `registry' and `ordering'.

	* modules.cfg (BASE_EXTENSIONS): Add ftcid.c.

2007-07-11  Derek Clegg  <dclegg@apple.com>

	Add support for postscript name service to CFF driver.

	* src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_NAME_H.
	(cff_get_ps_name): New function.
	(cff_service_ps_name): New service structure.
	(cff_services): Register it.

2007-07-07  Werner Lemberg  <wl@gnu.org>

	* src/base/ftglyph.c (FT_Glyph_Copy): Fix initialization of
	`target'.  Reported by Sean McBride.

2007-07-06  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrcmap.c: Include pfrerror.h.

	* src/autofit/afindic.c: Add some external declarations to pacify
	`make multi' compilation.

	* src/cid/cidgload.c (cid_load_glyph): Pacify compiler.

	* src/cff/cffdrivr.c (cff_ps_get_font_info), src/cff/cffobjs.c
	(cff_strcpy), include/freetype/internal/ftmemory.h (FT_MEM_STRDUP),
	src/autofit/aflatin.c (af_latin_hints_compute_edges),
	src/autofit/afcjk.c (af_cjk_hints_compute_edges), src/sfnt/ttmtx.c
	(tt_face_get_metrics), src/base/ftobjs.c (open_face)
	[FT_CONFIG_OPTION_INCREMENTAL]: Fix compilation with C++ compiler.

	* docs/release: Mention test compilation targets.

2007-07-04  Werner Lemberg  <wl@gnu.org>

	* docs/PROBLEMS: Mention that some PS based fonts can't be
	handled correctly by FreeType.

	* src/truetype/ttgload.c (load_truetype_glyph): Always allow a
	recursion depth of 1.  This was the maximum value in TrueType 1.0,
	and some older fonts don't set this field correctly.

	* src/gxvalid/gxvmort1.c
	(gxv_mort_subtable_type1_substTable_validate): Fix tracing message.

2007-07-03  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize
	`round' to pacify compiler.

2007-07-02  Werner Lemberg  <wl@gnu.org>


	* Version 2.3.5 released.
	=========================


	Tag sources with `VER-2-3-5'.

	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
	version number to 2.3.5.

	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj: s/2.3.4/2.3.5/, s/234/235/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.

	* builds/unix/configure.raw (version_info): Set to 9:16:3.

2007-07-01  David Turner  <david@freetype.org>

	* include/freetype/freetype.h, src/base/ftpatent.c
	(FT_Face_SetUnpatentedHinting): New function to dynamically change
	the setting after a face is created.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Fix a small bug
	that created distortions in the bytecode interpreter results.

2007-06-30  David Turner  <david@freetype.org>

	* src/truetype/ttinterp.c (Ins_IUP): Add missing variable
	initialization.

	* src/autofit/aflatin.c (af_latin_metric_init_blues): Get rid of an
	infinite loop in the case of degenerate fonts.

2007-06-26  Rahul Bhalerao  <b.rahul.pm@gmail.com>

	Add autofit module for Indic scripts.  This currently just reuses
	the CJK-specific functions.

	* include/freetype/config/ftoption.h (AF_CONFIG_OPTION_INDIC): New
	macro.
	* devel/ftoption.h: Synchronize with
	include/freetype/config/ftoption.h.

	* src/autofit/afindic.c, src/autofit/afindic.h: New files.

	* src/autofit/afglobal.c, src/autofit/aftypes.h,
	src/autofit/autofit.c: Updated.

	* src/autofit/Jamfile (_sources), * src/autofit/rules.mk
	(AUTOF_DRV_SRC): Updated.

2007-06-23  David Turner  <david@freetype.org>

	* src/truetype/ttgload.c (TT_Load_Simple): Fix change from
	2007-06-16 that prevented the TrueType module from loading most
	glyphs.

2007-06-20  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_slot_load): Fix logic of 2007-05-28
	change.

2007-06-19  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_encoding): Handle one more error.

2007-06-19  Dmitry Timoshkov  <dmitry@codeweavers.com>

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Return error
	FNT_Err_Invalid_File_Format if file format was recognized but
	the file doesn't contain any FNT(NE) or RT_FONT(PE) resources.
	Add verbose debug logs to make it easier to debug failing load
	attempts.
	(FNT_Face_Init): A single FNT font can't contain more than 1 face,
	so return an error if requested face index is > 0.
	Do not do further attempt to load fonts if a previous attempt has
	failed but returned error FNT_Err_Invalid_File_Format, i.e., the
	file format has been recognized but no fonts found in the file.

2007-07-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c: Apply patches proposed by Sean McBride.
	(FT_GetFile_From_Mac_Name): Insert FT_UNUSED macros to fix
	the compiler warnings against unused arguments.
	(FT_ATSFontGetFileReference): Ditto.
	(FT_GetFile_From_Mac_ATS_Name): Ditto.
	(FT_New_Face_From_FSSpec): Ditto.
	(lookup_lwfn_by_fond): Fix wrong comment.
	Replace `const StringPtr' by more appropriate type
	`ConstStr255Param'.
	FSRefMakePathPath always returns UTF8 POSIX pathname in
	Mach-O, thus HFS pathname support is dropped.
	(count_faces): Remove HLock and HUnlock which is not
	required on Mac OS X anymore.
	(FT_New_Face_From_SFNT): Ditto.
	(FT_New_Face_From_FOND): Ditto.
	* builds/mac/ftmac.c: Synchronize to src/base/ftmac.c,
	except of HFS pathname support and HLock/HUnlock.
	They are required on classic CFM environment.

2007-06-18  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psobjs.c (ps_parser_skip_PS_token): Remove incorrect
	assertion.
	(ps_parser_to_bytes): Fix error message.

	* src/type42/t42objs.c (T42_Open_Face): Handle one more error.
	* src/type42/t42parse.c (t42_parse_sfnts): s/alloc/allocated/.
	Don't allow mixed binary and hex strings.
	Handle string_size == 0 and string_buf == 0.
	(t42_parse_encoding): Handle one more error.

2007-06-18  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psobjs.c (ps_tofixedarray, ps_tocoordarray): Fix exit
	logic.
	(ps_parser_load_field) <T1_FIELD_TYPE_BBOX>: Skip delimiters
	correctly.
	(ps_parser_load_field_table): Use `fields->array_max' instead of
	T1_MAX_TABLE_ELEMENTS to limit the number of arguments.

	* src/cff/cffgload.c (cff_decoder_prepare): Fix change from
	2007-06-06.

2007-06-17  Werner Lemberg  <wl@gnu.org>

	* src/tools/ftrandom.c (font_size): New global variable.
	(TestFace): Use it.
	(main): Handle new option `--size' to set `font_size'.
	(Usage): Updated.

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Exit in case of
	invalid font.
	(FNT_Load_Glyph): Protect against invalid bitmap width.

2007-06-16  David Turner  <david@freetype.org>

	* src/smooth/ftgrays.c (gray_find_cell, gray_set_cell, gray_hline):
	Prevent integer overflows when rendering very large outlines.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check the
	well-formedness of the contours array when loading a glyph.

	* src/truetype/ttinterp.c (TT_Load_Context): Initialize `zp0', `zp1',
	and `zp2'.
	(Ins_IP): Check argument ranges to reject bogus operations properly.
	(IUP_WorkerRec): Add `max_points' member.
	(_iup_worker_interpolate): Check argument ranges.
	(Ins_IUP): Ignore empty outlines.

2007-06-16  Dmitry Timoshkov  <dmitry@codeweavers.com>

	* src/winfonts/winfnt.h: Add necessary structures for PE resource
	parsing.
	(WinPE32_HeaderRec): New structure.
	(WinPE32_SectionRec): New structure.
	(WinPE_RsrcDirRec): New structure.
	(WinPE_RsrcDirEntryRec): New structure.
	(WinPE_RsrcDataEntryRec): New structure.
	(FNT_FontRec): Remove unused `size_shift' field.

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Add support for
	loading bitmap .fon files in PE format.

2007-06-15  Dmitry Timoshkov  <dmitry@codeweavers.com>

	* builds/win32/ftdebug.c: Unify debug level handling with other
	platforms.

2007-06-14  Dmitry Timoshkov  <dmitry@codeweavers.com>

	* builds/win32/ftdebug.c (FT_Message): Send debug output to the
	console as well as to the debugger.

2007-06-14  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin.c (af_latin_uniranges): Expand structure to
	cover all ranges which could possibly be handled by the aflatin
	module (since the default fallback for unknown ranges is now the
	afcjk module).  It might be necessary to fine-tune this further by
	splitting off modules for Greek, Cyrillic, or other blocks.

2007-06-11  David Turner  <david@freetype.org>

	* src/autofit/aflatin.c (af_latin_hints_link_segments): Fix
	incorrect segment linking computation.  This was the root cause of
	Savannah bug #19565.


	* src/autofit/* [FT_OPTION_AUTOFIT2]: Some very experimental changes
	to improve the Latin auto-hinter.  Note that the new code is
	disabled by default since it is not stabilized yet.

	* src/autofit/aflatin2.c, src/autofit/aflatin2.h: New files
	(disabled currently).

	* src/autofit/afhints.c: Remove dead code.
	(af_axis_hints_new_edge): Add argument to handle segment directions.
	(af_edge_flags_to_string): New function.
	(af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Handle
	option flags.
	(af_glyph_hints_reload): Add argument to handle inflections.
	Simplify.
	(af_direction_compute): Fine tuning.
	(af_glyph_hints_align_edge_points): Fix logic.
	(af_glyph_hints_align_strong_points): Do linear search for small
	edge counts.
	(af_glyph_hints_align_weak_points): Skip any touched neighbors.
	(af_iup_shift): Handle zero `delta'.

	* src/autofit/afhints.h: Updated.
	(AF_SORT_SEGMENTS): New macro (disabled).
	(AF_AxisHintsRec) [AF_SORT_SEGMENTS]: New member `mid_segments'.

	* src/autofit/afglobal.c (af_face_globals_get_metrics): Add
	argument to pass option flags for handling scripts.
	* src/autofit/afglobal.h: Updated.

	* src/autofit/afcjk.c: Updated.
	* src/autofit/aflatin.c: Updated.
	(af_latin_metrics_scale_dim): Don't reduce scale by 2%.

	(af_latin_hints_compute_segments) [AF_HINT_METRICS]: Remove dead code.
	(af_latin_hints_compute_edges) [AF_HINT_METRICS]: Remove dead code.
	Don't set `edge->dir'
	(af_latin_hint_edges): Add more logging.

	* src/autofit/afloader.c: Updated.

2007-06-11  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Document FT_Face_CheckTrueTypePatents.

2007-06-10  David Turner  <david@freetype.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Slight speed-up to
	the TrueType glyph loader.

	* include/freetype/config/ftoption.h: Clarify documentation
	regarding unpatented hinting.


	Add new `FT_Face_CheckTrueTypePatents' API.

	* include/freetype/freetype.h (FT_Face_CheckTrueTypePatents): New
	declaration.

	* include/freetype/internal/services/svttglyf.h,
	src/base/ftpatent.c: New files.

	* include/freetype/internal/ftserv.h (FT_SERVICE_TRUETYPE_GLYF_H):
	New macro.

	* src/truetype/ttdriver.c: Include FT_SERVICE_TRUETYPE_GLYF_H and
	`ttpload.h'.
	(tt_service_truetype_glyf): New service structure.
	(tt_services): Register it.

	* modules.cfg (BASE_EXTENSIONS), src/base/Jamfile (_sources): Add
	`ftpatent.c'.

2007-06-08  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (sfnt_load_face): Undo change from 2007-04-28.
	Fonts without a cmap must be handled correctly by FreeType (anything
	else would be a bug).


	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	[FT_DEBUG_LEVEL_TRACE]: Improve tracing message.

2007-06-07  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_init,
	tt_sbit_decoder_load_image): Protect against integer overflows.


	* src/pfr/pfrgload.c (pfr_glyph_load_simple): More bounding checks
	for `x_control' and `y_control'.

2007-06-06  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Outline_Decompose): Check `last'.


	* src/pfr/pfrcmap.c (pfr_cmap_init): Convert assertion into normal
	FreeType error.


	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Do a rough check of
	`font_count'.


	* src/type1/t1load.c (parse_font_matrix): Check `temp_scale'.


	* src/cff/cffgload.c (cff_decoder_prepare): Change return type to
	`FT_Error'.
	Check `fd_index'.
	(cff_slot_load): Updated.
	* src/cff/cffgload.h: Updated.

2007-06-05  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrgload.c (pfr_glyph_done): Comment out unused code.
	(pfr_glyph_load_simple): Convert assertion into normal FreeType
	error.
	Check `idx'.
	(pfr_glyph_load_compound, pfr_glyph_curve_to, pfr_glyph_line_to):
	Convert assertion into normal FreeType error.

	* src/pfr/pfrtypes.h (PFR_GlyphRec): Comment out unused code.


	* src/winfonts/winfnt.c (FNT_Face_Init): Check `family_size'.


	* src/psaux/psobjs.c (ps_tocoordarray, ps_tofixedarray): Return -1
	in case of parsing error.
	(ps_parser_load_field): Updated.

	* src/type1/t1load.c (parse_font_matrix): Updated.

2007-06-04  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidgload.c (cid_load_glyph): Check `fd_select'.

	* src/tools/ftrandom/Makefile: Depend on `libfreetype.a'.

2007-06-03  Werner Lemberg  <wl@gnu.org>

	* src/tools/ftrandom/*: Add the `ftrandom' test program written by
	George Williams (with some modifications).

2007-06-03  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (destroy_charmaps), src/type1/t1objs.c
	(T1_Face_Done), src/winfonts/winfnt.c (FNT_Face_Done): Check for
	face == NULL.  Suggested by Graham Asher.

2007-06-03  Ismail Dönmez  <ismail@pardus.org.tr>

	* src/base/ftobjs.c (FT_Request_Metrics): Fix compiler warning.

2007-06-02  Werner Lemberg  <wl@gnu.org>

	* include/freetype/fterrdef.h (FT_Err_Corrupted_Font_Header,
	FT_Err_Corrupted_Font_Glyphs): New error codes for BDF files.

	* src/bdf/bdflib.c (bdf_load_font): Use them.

	* src/bdf/bdflib.c (_bdf_parse_start): Check `FONT' better.

2007-06-01  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Request_Metrics), src/cache/ftccmap.c
	(FTC_CMapCache_Lookup): Remove unused code.

2007-06-01  Sean McBride  <sean@rogue-research.com>

	* src/truetype/ttinterp.c (Null_Vector, NULL_Vector): Removed,
	unused.

2007-06-01  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidparse.c (cid_parser_new): Don't continue second search
	pass for `StartData' if an error has occurred.
	Exit properly if no `StartData' has been seen at all.

	* builds/unix/ftsystem.c (FT_Stream_Open): Don't use ULONG_MAX but
	LONG_MAX to avoid compiler warning.  Suggested by Sean McBride.

2007-05-30  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_subrs, parse_charstrings): Protect
	against too small binary data strings.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Check `STARTCHAR' better.

2007-05-28  David Turner  <david@freetype.org>

	* src/cff/cffgload.c (cff_slot_load): Do not apply the identity
	transformation.  This significantly reduces the loading time of CFF
	glyphs.

	* docs/CHANGES: Updated.

	* src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT): Change default
	hinting script to CJK, since it works well with more scripts than
	latin.  Thanks to Rahul Bhalerao <b.rahul.pm@gmail.com> for pointing
	this out!

2007-05-25  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2007-05-24  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.h (tt_size_ready_bytecode): Move declaration
	into TT_USE_BYTECODE_INTERPRETER preprocessor block.

2007-05-24  Graham Asher  <graham.asher@btinternet.com>

	* src/truetype/ttobjs.c (tt_size_ready_bytecode)
	[!TT_USE_BYTECODE_INTERPRETER]: Removed.  Unused.

2007-05-22  David Turner  <david@freetype.org>

	* src/truetype/ttgload.c (load_truetype_glyph): Fix last change to
	avoid crashes in case the bytecode interpreter is not used.


	Avoid heap blowup with very large .Z font files.  This fixes
	Savannah bug #19910.

	* src/lzw/ftzopen.h (FT_LzwStateRec): Remove `in_cursor',
	`in_limit', `pad', `pad_bits', and `in_buff' members.
	Add `buf_tab', `buf_offset', `buf_size', `buf_clear', and
	`buf_total' members.

	* src/lzw/ftzopen.c (ft_lzwstate_get_code): Rewritten.  It now takes
	only one argument.
	(ft_lzwstate_refill, ft_lzwstate_reset, ft_lzwstate_io): Updated.

2007-05-20  Ismail Dönmez  <ismail@pardus.org.tr>

	* src/pshinter/pshrec.c (ps_mask_table_set_bits): Add `const'.
	(ps_dimension_set_mask_bits): Remove `const'.

2007-05-19  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttmtx.c (tt_face_get_metrics)
	[!FT_CONFIG_OPTION_OLD_INTERNALS]: Another type-punning fix.

2007-05-19  Derek Clegg  <dclegg@apple.com>

	Savannah patch #5929.

	* include/freetype/tttables.h, src/base/ftobjcs.c
	(FT_Get_CMap_Format): New function.

	* include/freetype/internal/services/svttcmap.c (TT_CMapInfo): Add
	`format' member.
	* src/sfnt/ttcmap.c (tt_cmap{0,2,4,6,8,10,12}_get_info): Set
	cmap_info->format.

2007-05-19  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph): Save graphics state
	before handling subglyphs so that it can be reinitialized each time.
	This fixes Savannah bug #19859.

2007-05-16  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftccache.c (ftc_node_mru_link, ftc_node_mru_unlink),
	src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), src/cache/ftcglyph.h
	(FTC_GCACHE_LOOKUP_CMP), src/pshinter/pshmod.c (ps_hinter_init),
	src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_load_hhea,
	tt_face_get_metrics): Fix type-punning issues.

2007-05-15  David Turner  <david@freetype.org>

	* include/freetype/config/ftstdlib.h,
	include/freetype/internal/ftobjs.h: As suggested by Graham Asher,
	ensure that ft_isalnum, ft_isdigit, etc., use hard-coded values
	instead on relying on the locale-dependent functions provided by
	<ctypes.h>.

2007-05-15  Graham Asher  <graham.asher@btinternet.com>

	* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Remove unused
	variable.
	* src/autofit/afloader.c (af_loader_load_g): Ditto.

	* src/base/ftobjs.c (ft_validator_error): Use `ft_jmp_buf'.
	(open_face_from_buffer): Initialize `stream'.
	(FT_Request_Metrics): Remove unused variable.
	Remove redundant `break' statements.
	(FT_Get_Track_Kerning): Remove unused variable.

	* src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs,
	afm_parse_kern_data): Remove redundant
	`break' statements.
	(afm_parser_parse): Ditto.
	Don't use uninitialized variables.

	* src/psnames/psmodule.c (VARIANT_BIT): Define as unsigned long.
	Use `|' operator instead of `^' to set it.
	Update all users.

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Use `ft_jmp_buf'.
	* src/sfnt/ttkern.c (tt_face_load_kern): Remove unused variable.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
	comparison.
	(TT_Process_Simple_Glyph): Use FT_UInt for `n_points' and `i'.
	(TT_Load_Glyph): Remove unused variable.

2007-05-13  Derek Clegg  <dclegg@apple.com>

	* src/base/ftobjs.c (FT_New_Library): Only allocate rendering pool
	if FT_RENDER_POOL_SIZE is > 0.  From Savannah patch #5928.

2007-05-11  David Turner  <david@freetype.org>

	* src/cache/ftbasic.c, include/freetype/ftcache.h
	(FTC_ImageCache_LookupScaler, FTC_SBit_Cache_LookupScaler): Two new
	functions that allow us to look up glyphs using an FTC_Scaler object
	to specify the size, making it possible to use fractional pixel
	sizes.

	* src/truetype/ttobjs.c (tt_size_ready_bytecode): Set
	`size->cvt_ready'.  Reported by Boris Letocha.

2007-05-09  Graham Asher  <graham.asher@btinternet.com>

	* src/truetype/ttinterp.c (Ins_IP), src/autofit/aflatin.c
	(af_latin_metrics_scale_dim): Fix compiler warnings.

2007-05-06  Werner Lemberg  <wl@gnu.org>

	* builds/win32/visualce/freetype.sln: Removed, as requested by
	Vincent.

2007-05-04  Vincent RICHOMME  <richom.v@free.fr>

	* builds/win32/visualce/*: Add Visual C++ project files for Pocket
	PC targets.

	* docs/CHANGES: Document them.

2007-05-04  <harry@kdevelop.org>

	* builds/unix/ftsystem.c (FT_Stream_Open): Handle return value 0 of
	mmap (which might happen on some RTOS).  From Savannah patch #5909.

2007-05-03  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Set_Char_Size): Simplify code.
	* include/freetype/freetype.h (FT_Set_Char_Size): Update
	documentation.

2007-04-28  Victor Stinner  <victor.stinner@inl.fr>

	* src/sfnt/sfobjs.c (sfnt_load_face): Check error code after loading
	`cmap'.

2007-04-27  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check for negative
	number of points in contours.  Problem reported by Victor Stinner
	<victor.stinner@haypocalc.com>.
	(TT_Process_Simple_Glyph): Synchronize variable types.

2007-04-26  Werner Lemberg  <wl@gnu.org>

	* src/base/ftglyph.c (FT_Glyph_Copy): Always set second argument to
	zero in case of error.  This fixes Savannah bug #19689.

2007-04-25  Boris Letocha  <b.letocha@cz.gmc.net>

	* src/truetype/ttobjs.c: Fix a typo that created a speed regression
	in the TrueType bytecode loader.

2007-04-10  Martin Horak  <horakm@centrum.cz>

	* src/sfnt/sfobjs.c (sfnt_load_face) [FT_CONFIG_OPTION_INCREMENTAL]:
	Ignore `hhea' table.  This fixes Savannah bug #19261.

2007-04-09  Werner Lemberg  <wl@gnu.org>


	* Version 2.3.4 released.
	=========================


	Tag sources with `VER-2-3-4'.

	* docs/CHANGES, docs/VERSION.DLL: Update documentation and bump
	version number to 2.3.4.

	* README, Jamfile (RefDoc), builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj: s/2.3.3/2.3.4/, s/233/234/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.

	* builds/unix/configure.raw (version_info): Set to 9:15:3.

2007-04-09  Martin Horak  <horakm@centrum.cz>

	* src/truetype/ttgload.c (load_truetype_glyph): Save and restore
	memory stream to avoid a crash with the incremental memory
	interface (Savannah bug #19260).

2007-04-06  David Turner  <david@freetype.org>

	* src/base/ftbimap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite bug
	(Savannah bug #19536).

2007-04-04  Werner Lemberg  <wl@gnu.org>


	* Version 2.3.3 released.
	=========================


	Tag sources with `VER-2-3-3'.

	* docs/CHANGES: Mention CVE-2007-1351.

2007-04-03  David Turner  <david@freetype.org>

	* src/base/ftobjs.c (FT_Set_Char_Size): As suggested by James Cloos,
	if one of the resolution values is 0, treat it as if it were the
	same as the other value.

2007-04-02  David Turner  <david@freetype.org>

	Add special code to detect `extra-light' fonts and do not snap their
	stem widths too much to avoid bizarre hinting effects.

	* src/autofit/aflatin.h (AF_LatinAxisRec): Add `standard_width' and
	`extra_light' members.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
	them.
	(af_latin_metrics_scale_dim): Set `extra_light'.
	(af_latin_compute_stem_width): Use `extra_light'.

2007-03-28  David Turner  <david@freetype.org>

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix zero-ing of the
	padding.

2007-03-28  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c (setsbit, sbitset): Handle values >= 128
	gracefully.
	(_bdf_set_default_spacing): Increase `name' buffer size to 256 and
	issue an error for longer names.  This fixes CVE-2007-1351.
	(_bdf_parse_glyphs): Limit allowed number of glyphs in font to the
	number of code points in Unicode.

	* builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj, README: s/2.3.2/2.3.3/,
	s/232/233/.

	* docs/CHANGES: Mention ftdiff.

2007-03-26  David Turner  <david@freetype.org>

	* src/truetype/ttinterp.c [FIX_BYTECODE]: Remove it and
	corresponding code.
	(Ins_MD): Last regression fix.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix blues
	computations in order to ignore single-point contours.  These are
	never rasterized and correspond in certain fonts to mark-attach
	points that are very far from the glyph's real outline, ruining the
	computation.

	* src/autofit/afloader.c (af_loader_load_g): In the case of
	monospaced fonts, always set `rsb_delta' and `lsb_delta' to 0.
	Otherwise code that uses them will most certainly ruin the fixed
	advance property.

	* docs/CHANGES, docs/VERSION.DLL, README, Jamfile (RefDoc): Update
	documentation and bump version number to 2.3.3.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.

	* builds/unix/configure.raw (version_info): Set to 9:14:3.

2007-03-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/ftconfig.in: Disable Carbon framework dependency on
	64bit ABI on Mac OS X 10.4.x (ppc & i386).  Found by Sean McBride.
	* builds/vms/ftconfig.h: Ditto.
	* include/freetype/config/ftconfig.h: Ditto.

2007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/ftsystem.c (FT_Stream_Open): Temporary fix to prevent
	32bit unsigned long overflow by 64bit filesize on LP64 platform, as
	proposed by Sean McBride:
	http://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html

2007-03-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/ftconfig.in: Suppress SGI compiler's warning against
	setjmp, proposed by Sean McBride:
	http://lists.gnu.org/archive/html/freetype-devel/2007-03/msg00032.html

2007-03-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Dequote `OS_INLINE' in comment of
	conftest.c, to avoid unexpected shell evaluation.  Possibly it is a
	bug or undocumented behaviour of autoconf.

2007-03-18  David Turner   <david@freetype.org>

	* src/truetype/ttinterp.c (Ins_MDRP): Another bytecode regression
	fix; testing still needed.

	* src/truetype/ttinterp.c (Ins_MD): Another bytecode regression fix.

2007-03-17  David Turner   <david@freetype.org>

	* src/truetype/ttinterp.c (Ins_IP): Fix wrong handling of the
	(undocumented) twilight zone special case.

2007-03-09  Werner Lemberg  <wl@gnu.org>


	* Version 2.3.2 released.
	=========================


	Tag sources with `VER-2-3-2'.

	* builds/win32/visualc/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj, README: s/2.3.1/2.3.2/,
	s/231/232/.

2007-03-08  David Turner  <david@freetype.org>

	* docs/CHANGES, docs/VERSION.DLL: Updated for upcoming release.

	* builds/unix/configure.raw (version_info): Set to 9:13:3.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.

	* README, Jamfile (RefDoc): s/2.3.1/2.3.2/.

	* src/base/ftutil.c (ft_mem_strcpyn): Fix a bug that prevented the
	function to work properly, over-writing user-provided buffers in
	some cases.  Reported by James Cloos <cloos@jhcloos.com>.


2007-03-05  Werner Lemberg  <wl@gnu.org>

	* include/freetype/config/ftstdlib.h (ft_strstr): New wrapper
	macro for `strstr'.

	* src/truetype/ttobjs.c (tt_face_init): Use ft_strstr for scanning
	`trick_names', as suggested by Ivan Nincic.

2007-03-05  David Turner  <david@freetype.org>

	* src/base/ftinit.c (FT_Init_FreeType): Fix a small memory leak in
	case FT_Init_FreeType fails for some reason.  Problem reported by
	Maximilian Schwerin <maximilian.schwerin@buelowssiege.de>.

	* src/truetype/ttobs.c (tt_size_init_bytecode): Clear the `x_ppem'
	and `y_ppem' fields of the `TT_Size.metrics' structure, not those of
	`TT_Size.root.metrics'.  Problem reported by Daniel Glöckner
	<daniel-gl@gmx.net>.

	* src/type1/t1afm.c (T1_Read_PFM): Read kerning values as 16-bit
	signed values, not unsigned ones.  Problem reported by Johannes
	Walther <joh_walt@yahoo.de>.

2007-02-21  David Turner  <david@freetype.org>

	* src/pshinter/pshalgo.c (psh_hint_align): Fix a bug in the hinting
	of small and ghost stems in the Postscript interpreter.

2007-02-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Fix memory
	leak, patch by "Jjgod Jiang" <gzjjgod@gmail.com>.
	* builds/mac/ftmac.c (FT_GetFileRef_From_Mac_ATS_Name): Ditto.

2007-02-16  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_MD): Remove unused variable.
	* src/autofit/aflatin.c (af_latin_hints_link_segments): Ditto.

2007-02-14  David Turner  <david@freetype.org>

	It seems that the following changes fix most of the known
	interpreter problems with my fonts, but more testing is needed,
	though.

	* src/truetype/ttinterp.c (FIX_BYTECODE): Activate.
	(TT_MulFix14): Rewrite.
	(Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Improved and updated.
	(Ins_MIRP): Ditto.

2007-02-12  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Project_x, Project_y): Remove compiler
	warnings.

	* src/pcf/pcfread.c (pcf_interpret_style), src/bdf/bdfdrivr.c
	(bdf_interpret_style): Ditto.

2007-02-12  David Turner  <david@freetype.org>

	Simplify projection and dual-projection code interface.

	* src/truetype/ttinterp.h (TT_Project_Func): Use `FT_Pos', not
	FT_Vector' as argument type.
	* src/truetype/ttinterp.c (CUR_Func_project, CUR_Func_dualproj):
	Updated.
	(CUR_fast_project, CUR_fast_dualproj): New macros.
	(Project, Dual_Project, Project_x, Project_y): Updated.
	(Ins_GC, Ins_SCFS, Ins_MDAP, Ins_MIAP, Ins_IP): Use new `fast'
	macros.


	* src/autofit/afloader.c (af_loader_load_g): Improve spacing
	adjustments for the non-light auto-hinted modes.  Gets rid of
	`inter-letter spacing is too wide' problems.

	* src/autofit/aflatin.c (af_latin_hints_link_segments,
	af_latin_hints_compute_edges): Slight optimization of the segment
	linker and better handling of serif segments to get rid of broken
	`9' in Arial at 9pt (96dpi).


	Introduce new string functions and the corresponding macros to get
	rid of various uses of strcpy and other `evil' functions, as well as
	to simplify a few things.

	* include/freetype/internal/ftmemory.h (ft_mem_strdup, ft_mem_dup,
	ft_mem_strcpyn): New declarations.
	(FT_MEM_STRDUP, FT_STRDUP, FT_MEM_DUP, FT_DUP, FT_STRCPYN): New
	macros.
	* src/base/ftutil.c (ft_mem_dup, ft_mem_strdup, ft_mem_strcpyn): New
	functions.

	* src/bfd/bfddrivr.c (bdf_interpret_style, BDF_Face_Init),
	src/bdf/bdflib.c (_bdf_add_property), src/pcf/pcfread.c
	(pcf_get_properties, pcf_interpret_style, pcf_load_font),
	src/cff/cffdrivr.c (cff_get_glyph_name), src/cff/cffload.c
	(cff_index_get_sid_string), src/cff/cffobjs.c (cff_strcpy),
	src/sfnt/sfdriver.c (sfnt_get_glyph_name), src/type1/t1driver.c
	(t1_get_glyph_name), src/type42/t42drivr.c (t42_get_glyph_name,
	t42_get_name_index): Use new functions and simplify code.

	* builds/mac/ftmac.c (FT_FSPathMakeSpec): Don't use FT_MIN.

2007-02-11  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afloader.c (af_loader_load_g): Don't change width for
	non-spacing glyphs.

2007-02-07  Tom Parker  <palfrey@tevp.net>

	* src/cff/cffdrivr.c (cff_get_name_index): Protect against NULL
	pointer.

2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/ftmac.h (FT_DEPRECATED_ATTRIBUTE):
	Introduce __attribute((deprecated))__ to warn functions
	which use non-ANSI data types in its interfaces.
	(FT_GetFile_From_Mac_Name): Deprecated, using FSSpec.
	(FT_GetFile_From_Mac_ATS_Name): Deprecated, using FSSpec.
	(FT_New_Face_From_FSSpec): Deprecated, using FSSpec.
	(FT_New_Face_From_FSRef): Deprecated, using FSRef.

	* src/base/ftmac.c: Predefine FT_DEPRECATED_ATTRIBUTE as void
	to avoid warning in building FreeType.
	* builds/mac/ftmac.c: Ditto.

2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftbase.c: Fix to use builds/mac/ftmac.c, if configured
	`--with-fsspec' etc.  Replace #include "ftmac.c" with
	#include <ftmac.c>.

2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/ftmac.h (FT_GetFilePath_From_Mac_ATS_Name):
	Introduced as replacement of FT_GetFile_From_Mac_ATS_Name.
	* src/base/ftmac.c (FT_GetFilePath_From_Mac_ATS_Name): Ditto.
	(FT_GetFile_From_Mac_ATS_Name): Rewritten as wrapper of
	FT_GetFilePath_From_Mac_ATS_Name.
	* builds/mac/ftmac.c: Ditto.

2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/ftmac.h: Fixed wrong comment: FSSpec of
	FT_GetFile_From_Mac_Name, FT_GetFile_From_Mac_ATS_Name are
	for passing to FT_New_Face_From_FSSpec.

2007-02-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Check whether Mac OS X system headers
	can be built under ANSI C mode.

	* src/base/ftmac.c (OS_INLINE): Redefine OS_INLINE by a version
	compatible to ANSI C in case system headers are ANSI C incompatible.
	* builds/mac/ftmac.c (OS_INLINE): Ditto.

2007-02-01  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ttnameid.h (TT_MS_LANGID_DZONGHKA_BHUTAN):
	Explain why applications shouldn't use it.  Found by Alexei.

2007-02-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/unix/freetype2.m4 (AC_CHECK_FT2): Fix spelling of warning
	message.

	* src/gxvalid/gxvmort1.c
	(gxv_mort_subtable_type1_substTable_validate): Fix debugging
	message.

2007-01-31  Werner Lemberg  <wl@gnu.org>


	* Version 2.3.1 released.
	=========================


	Tag sources with `VER-2-3-1-FINAL'.

	* builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj: s/230/231/.
	* builds/win32/visualc/index.html: s/221/231/.

	* vms_make.com: Add `ftgasp'.

2007-01-30  David Turner  <david@freetype.org>

	Tag sources with VER-2-3-1 to prepare release.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.

	* docs/VERSION.DLL, docs/release, README, Jamfile (RefDoc):
	s/2.3.0/2.3.1/.

	* builds/unix/configure.raw (version_info): Set to 9:12:3.


	* src/autofit/aftypes.h (AF_USE_WARPER), src/autofit/afloader.c
	(af_loader_load_g): Disable the warper (i.e., the light hinting
	improvements) to make a 2.3.1 bugfix release before introducing a
	new feature.  This should give us more time to tune and improve the
	warper for the next release.

	* docs/CHANGES: Update accordingly.

2007-01-25  David Turner  <david@freetype.org>

	For light auto-hinting, improve glyph advance widths and resurrect
	normal/full hinting to its normal quality.

	* src/autofit/afhints.h (AF_GlyphHintsRec): New members `xmin_delta'
	and `xmax_delta'.
	* src/autofit/afhints.c (af_glyph_hints_reload): Reset `xmin_delta'
	and `xmax_delta'.

	* src/autofit/afloader.c (af_loader_load_g) <AF_USE_WARPER>: Replace
	preprocessor conditional with if-clause, handling both light and
	normal mode.

	* src/autofit/afwarp.c (AF_WarpScore): Fine-tune again.
	(af_warper_compute): Handle `xmin_delta' and `xmax_delta'.

2007-01-25  Werner Lemberg  <wl@gnu.org>

	* docs/release: Updated -- Savannah uses a new uploading scheme.

2007-01-25  David Turner  <david@freetype.org>

	* src/cff/cffload.c (cff_index_get_pointers): Improve previous fix.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_callsubr, cff_op_callgsubr>: Fix sanity check for empty
	functions.

	* docs/CHANGES: Document light auto-hinting improvement.

2007-01-25  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffload.c (cff_index_get_pointers): Handle last entry
	correctly in a sanity check.  Since this function is only used to
	load local and global functions, any charstring that called the last
	local/global function would fail otherwise.  This fixes Savannah bug
	#18867.

	* docs/CHANGES: Document it.

2007-01-23  David Turner  <david@freetype.org>

	* src/truetype/ttobjs.c (tt_size_ready_bytecode): Fix typo that
	prevented compilation when disabling both the unpatented and the
	bytecode interpreter in the TrueType font driver.


	Fix and enable the warper to improve `light' hinting mode.  This is
	not necessarily a final version, but it seems to work well.

	* src/autofit/aflatin.c (af_latin_hints_init) [AF_USE_WARPER]:
	Disable code.
	(af_latin_hints_apply) [AF_USE_WARPER]: Handle FT_RENDER_MODE_LIGHT.
	* src/autofit/aftypes.h: Activate AF_USE_WARPER.

	* src/autofit/afwarp.c (AF_WarpScore): Tune table.
	(af_warper_compute_line_best): Fix array size of `scores'.
	(af_warper_compute): Better handling of border cases.
	* src/autofit/afwarp.h (AF_WarperRec): Remove unused members `X1'
	and `X2'.

2007-01-21  Werner Lemberg  <wl@gnu.org>

	* ChangeLog: Split off older entries into...
	* ChangeLog.22: This new file.

2007-01-21  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Document SHZ fix.

2007-01-21  George Williams  <gww@silcom.com>

	* src/truetype/ttinterp.c (Ins_SHZ): SHZ doesn't move phantom
	points.

2007-01-21  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttmtx.c (tt_face_get_metrics)
	[!FT_CONFIG_OPTION_OLD_INTERNALS]: Fix limit check.

2007-01-17  Werner Lemberg  <wl@gnu.org>


	* Version 2.3.0 released.
	=========================


	Tag sources with `VER-2-3-0-FINAL'.

2007-01-17  Werner Lemberg  <wl@gnu.org>

	* docs/release: Updated.

2007-01-16  David Turner  <david@freetype.org>

	* src/autofit/aflatin.c (af_latin_hints_compute_segments),
	src/cff/cffdriver.c (cff_ps_get_font_info), src/truetype/ttobjs.c
	(tt_face_init), src/truetype/ttinterp.c (Ins_SHC): Fix compiler
	warnings.

2007-01-15  Detlef Würkner  <TetiSoft@apg.lahn.de>

	* builds/amiga/makefile, builds/amiga/makefile.os4,
	builds/amiga/smakefile: Add `ftgasp.c' and `ftlcdfil.c'.

	* builds/amiga/include/freetype/config/ftconfig.h: Synchronize.

2007-01-14  Detlef Würkner  <TetiSoft@apg.lahn.de>

	Fix various compiler warnings.

	* src/truetype/ttdriver.c (tt_size_select), src/cff/cffobjs.h,
	src/cff/cffobjs.c (cff_size_request), src/type42/t42objs.h:
	s/index/strike_index/.
	* src/base/ftobjs.c (FT_Match_Size): s/index/size_index/.

	* src/gxvalid/gxvmorx5.c
	(gxv_morx_subtable_type5_InsertList_validate): s/index/table_index/.

	* src/truetype/ttinterp.c (Compute_Point_Displacement),
	src/pcf/pcfread.c (pcf_seek_to_table_type): Avoid possibly
	uninitialized variables.

2007-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* docs/CHANGES, docs/INSTALL.MAC: Improvements.

2007-01-13  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1afm.c (T1_Read_Metrics): MS Windows allows PFM
	versions up to 0x3FF without complaining.

2007-01-13  Derek Clegg  <dclegg@apple.com>

	Add FT_Get_PS_Font_Info interface to CFF driver.

	* src/cff/cfftypes.h: Include FT_TYPE1_TABLES_H.
	(CFF_FontRec): Add `font_info' field.

	* src/cff/cffload.c: Include FT_TYPE1_TABLES_H.
	(cff_font_done): Free font->font_info if necessary.

	* src/cff/cffdrvr.c (cff_ps_get_font_info): New function.
	(cff_service_ps_info): Register cff_ps_get_font_info.

2007-01-13  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix compilation
	with C++ compiler.

	* src/autofit/afhints.c (af_glyph_hints_dump_segments,
	af_glyph_hints_dump_edges): Ditto.

	* src/base/rules.mk (BASE_SRC): Remove ftgasp.c (it's already in
	`modules.cfg').

	* src/sfnt/ttsbit0.h: Remove.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c.

2007-01-12  David Turner  <david@freetype.org>

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix memory stomping
	bug in the bitmap emboldener if the pitch of the source bitmap is
	much larger than its width.

	* src/truetype/ttinterp.c (Update_Max): Fix aliasing-related
	compilation warning.

2007-01-12  Werner Lemberg  <wl@gnu.org>

	* builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from
	`automake' CVS module from sources.redhat.com.

2007-01-11  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (is_space): Removed.
	(parse_encoding, parse_charstrings): Use IS_PS_DELIM.
	(parse_charstrings): Use IS_PS_TOKEN.


	* autogen.sh: Avoid bash specific syntax.

2007-01-11  David Turner  <david@freetype.org>

	* docs/CHANGES: Small update.

	* builds/unix/configure.raw (version_info): Set to 9:11:3.

	* src/base/ftobjs.c (IsMacResource): Fix a small bug that caused a
	crash with some Mac OS X .dfont files.  Submitted by Masatake
	Yamato.

	* autogen.sh: Small fix to get it working on Mac OS X properly:
	The issue is that GNU libtool is called `glibtool' on this platform,
	and we must call `glibtoolize', since `libtoolize' doesn't exist.

2007-01-10  David Turner  <david@freetype.org>

	* all-sources: Tag all sources with VER-2-3-0-RC1 and
	VER-2-3-0.

	* Jamfile (RefDoc), README, builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj, docs/VERSION.DLL: Update
	version number to 2.3.0.

	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 3.
	(FREETYPE_PATCH): Set to 0.

	* include/freetype/ftchapters.h, include/freetype/ftgasp.h,
	include/freetype/ftlcdfil.h: Update reference documentation with
	GASP support and LCD filtering sections.

	* src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix a typo
	which created an endless loop with some malformed font files.

2007-01-10  Derek Clegg  <dclegg@apple.com>

	* src/type1/t1load.c (T1_Get_MM_Var): Always return fixed-point
	values.

2007-01-08  David Turner  <david@freetype.org>

	* docs/CHANGES: Updated.

	* include/freetype/ftgasp.h, src/base/ftgasp.c: New files which add
	a new API `FT_Get_Gasp' to return entries of the `gasp' table
	corresponding to a given character pixel size.

	* src/sfnt/ttload.c (tt_face_load_gasp): Add version check for the
	`gasp' table, in order to avoid potential problems with later
	versions.

	* include/freetype/config/ftheader.h (FT_GASP_H): New macro for
	<freetype/ftgasp.h>.

	* src/base/rules.mk (BASE_SRC), src/base/Jamfile (_sources),
	modules.cfg (BASE_EXTENSIONS), builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj: Add src/base/ftgasp.c to the
	default build.

2007-01-07  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidparse.c (cid_parser_new): Improve error message for
	Type 11 fonts.
	Scan for `/sfnts' token.

2007-01-07  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidparse.c (cid_parser_new): Reject Type 11 fonts.

2007-01-06  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffload.c (cff_index_init): Remove unused variable.
	(cff_index_read_offset): s/perror/errorp/ to avoid global shadowing.

2007-01-04  David Turner  <david@freetype.org>

	* src/pfr/pfrobjs.c (pfr_face_init): Detect non-scalable fonts
	correctly.  This fixes Savannah bug #17876.


	Do not allocate interpreter-specific tables in memory if we are not
	going to load glyphs with the bytecode interpreter anyway.

	* src/truetype/ttgload.c (tt_loader_init): Load execution context
	only if glyph is hinted.
	Updated.
	* src/truetype/ttobjs.h (TT_SizeRec): Add members `bytecode_ready'
	and `cvs_ready'.
	Add `tt_size_ready_bytecode' declaration.
	* src/truetype/ttobjs.c (tt_size_done_bytecode,
	tt_size_init_bytecode, tt_size_ready_bytecode): New functions.
	(tt_size_init): Move most code into `tt_size_init_bytecode'.
	(tt_size_done): Move most code into `tt_size_done_bytecode'.
	(tt_size_reset): Move some code to `tt_size_ready_bytecode'.


	Don't extract the metrics table from the SFNT font file.  Instead,
	reparse it on each glyph load.  The runtime difference is not
	noticeable, and it can save a lot of heap memory when memory-mapped
	files are not used.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add members
	`horz_metrics_offset' and `vert_metrics_ofset'.
	* src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics):
	Updated.


	* src/sfnt/ttcmap.c (tt_cmap4_validate): Slight optimization.


	Do not load the CFF index offsets into memory, since this wastes a
	*lot* of heap memory with large Asian CFF fonts.  There is no
	significant performance loss.

	* src/cff/cffload.h: Add `cff_charset_cid_to_gindex' declaration.
	* src/cff/cfftypes.h (CFF_IndexRec): Add fields `start' and
	`data_size'.
	(CFF_CharsetRec): Add field `num_glyphs'.

	* src/cff/cffload.c (cff_index_read_offset, cff_index_load_offsets,
	cff_charset_cid_to_gindex): New functions.
	(cff_new_index): Renamed to...
	(cff_index_init): This.  Update all callers.
	Updated -- some code has been moved to `cff_index_load_offsets'.
	(cff_done_index): Renamed to...
	(cff_index_done): This.  Update all callers.
	(cff_index_get_pointers, cff_index_access_element): Updated to use
	stream offsets.
	(cff_charset_compute_cids): Set `num_glyphs' field.
	(cff_encoding_load): Updated.

	* src/cff/cffgload.c (cff_slot_load): Updated.

2007-01-04  David Turner  <david@freetype.org>

	* docs/INSTALL.UNIX: Simplify some parts, add reference to
	autogen.sh and pointer to README.CVS.

	* README.CVS: Add common problem description and solution
	when running autogen.sh.

	* docs/INSTALL: Add reference to MacOS X.

	* docs/MAKEPP, docs/INSTALL.MAC: New documentation files.

	* docs/TODO: Remove obsolete items.

	* src/raster/ftraster.c: (TRaster_Instance): Replace it with...
	(TWorker): This.
	Remove `count_table' and `memory'.
	Make `grays' a pointer.
	(TRaster): New structure.
	(count_table): New static array.
	(RAS_ARGS, RAS_ARG, RAS_VARS, RAS_VAR, FT_UNUSED_RASTER, cur_ras,
	Vertical_Gray_Sweep_Step, ft_black_new, ft_black_done,
	ft_black_set_mode, ft_black_render): Updated.
	(ft_black_init): Don't initialize `count_table'.
	(ft_black_reset): Use the render pool.  This saves about 6KB of
	heap space for each FT_Library instance.

	* src/smooth/ftgrays.c (TRaster): Replaced with...
	(TWorker): This.
	Remove `memory'.
	(TRaster): New structure.

	(RAS_ARG_, RAS_ARG, RAS_VAR_, RAS_VAR, ras, gray_render_line,
	gray_move_to, gray_line_to, gray_conic_to, gray_cubic_to,
	gray_render_span, gray_raster_render): Updated.
	(gray_raster_reset): Use the render pool.  This saves about 6KB of
	heap space for each FT_Library instance.

	* src/sfnt/sfobjs.c, src/sfnt/ttkern.c, src/sfnt/ttkern.h,
	src/sfnt/ttmtx.c, src/sfnt/ttsbit.c, src/sfnt/ttsbit.h,
	src/truetype/ttpload.c, include/freetype/config/ftoption.h: Remove
	FT_OPTIMIZE_MEMORY macro (and code for !FT_OPTIMIZE_MEMORY) since
	the optimization is no longer experimental.

	* src/pshinter/pshalgo.c (psh_glyph_interpolate_normal_points):
	Remove a typo that results in no hinting and a memory leak with some
	large Asian CFF fonts.

	* src/base/ftobjs.c (FT_Done_Library): Remove a subtle memory leak
	which happens when FT_Done_Library is called with still opened
	CFF_Faces in it.  We need to close all faces before destroying the
	modules, or else some bad things (memory leaks) may happen.

2007-01-02  Werner Lemberg  <wl@gnu.org>

	* src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate):
	Remove compiler warning.

2007-01-02  David Turner  <david@freetype.org>

	* src/sfnt/sfobjs.c: Add documentation comment.

2006-12-31  Masatake YAMATO  <jet@gyve.org>

	* src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt0_pairs_validate): New
	function.
	Check uniqueness of the gid pairs.
	(gxv_kern_subtable_fmt0_validate): Move some code to
	`gxv_kern_subtable_fmt0_pairs_validate'.

2006-12-22  David Turner  <david@freetype.org>

	* src/autofit/aflatin.c, src/truetype/ttgload.c: Remove compiler
	warnings.

	* builds/win32/visualc/freetype.vcproj: Add _CRT_SECURE_NO_DEPRECATE
	to avoid deprecation warnings with Visual C++ 8.

2006-12-16  Anders Kaseorg  <anders@kaseorg.com>

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilter)
	[FT_FORCE_LIGHT_LCD_FILTER]: Fix typo.

2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* include/freetype/internal/services/svotval.h: Add `volatile' to
	sync with the modification by Jens Claudius on 2006-08-22; cf.
	  http://cvs.savannah.gnu.org/viewcvs/freetype/freetype2/src/otvalid/otvmod.c?r1=1.4&r2=1.5

2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c: Specialized for Mac OS X only.
	* builds/unix/ftconfig.in: Fixed for ppc64 missing Carbon framework.
	* builds/unix/configure.raw: Ditto.  When explicit switches for
	FSSpec/FSRef/QuickDraw/ATS availability are given to configure,
	builds/mac/ftmac.c is used instead of default src/base/ftmac.c.

2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/mac/ftmac.c: Copied src/base/ftmac.c for legacy system.
	* builds/mac/FreeType.m68k_cfm.make.txt: Fix to use builds/mac/ftmac.c
	instead of src/base/ftmac.c
	* builds/mac/FreeType.ppc_carbon.make.txt: Ditto.
	* builds/mac/FreeType.ppc_classic.make.txt: Ditto.
	* builds/mac/FreeType.m68k_far.make.txt: Ditto, and exclude gxvalid.c
	that cannot be built at present.

2006-12-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c: Improvement of resource fork handler for
	POSIX, cf.
	  http://lists.gnu.org/archive/html/freetype-devel/2006-10/msg00025.html
	(Mac_Read_sfnt_Resource): Count only `sfnt' resource of suitcase font
	format or .dfont, to simulate the face index number counted by ftmac.c.
	(IsMacResource): Return the number of scalable faces correctly.

2006-12-10  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk (version): Protect against `distclean' target.

2006-12-09  Werner Lemberg  <wl@gnu.org>

	* builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat'
	or `type'.

	* builds/freetype.mk (version): Extracted from freetype.h, using
	GNU make's built-in string functions.
	(refdoc): Use $(version) instead of static version number.

2006-12-08  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk (dist): Extract version number from freetype.h.

2006-12-08  Vladimir Volovich  <vvv@vsu.ru>

	* src/tools/apinames.c (State): Remove final comma in structure --
	xlc v5 under AIX 4.3 doesn't like this.

2006-12-07  David Turner  <david@freetype.org>

	* src/autofit/afloader.c (af_loader_load_g): Small adjustment
	to the spacing of auto-fitted glyphs.  This only impacts rare
	cases (e.g., Arial Bold at rather small character sizes).

2006-12-03  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c.

2006-12-01  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfobjs.c (tt_face_get_name): All Unicode strings are
	encoded in UTF-16BE.  Patch from Rajeev Pahuja <rpahuja@esri.com>.
	(tt_name_entry_ascii_from_ucs4): Removed.


	* include/freetype/ftxf86.h: Fix and extend comment so that it
	appears in the documentation.

	* include/freetype/ftchapters.h: Add `font_format' section.


	* src/tools/docmaker/tohtml.py (HtmlFormatter::index_exit): Add link
	to TOC in index page.

2006-11-28  David Turner  <david@freetype.org>

	* src/smooth/ftgrays.c (gray_raster_render): Return 0 when we are
	trying to render into a zero-width/height bitmap, not an error code.

	* src/truetype/ttobjs.c (tt_face_init): Fix typo in previous patch.

	* src/smooth/ftgrays.c: Remove hard-coded error values; use FreeType
	ones instead.

	* src/autofit/afhints.c (af_glyph_hints_dump_segments): Remove unused
	variable.

2006-11-26  Pierre Hanser  <hanser@club-internet.fr>

	* src/truetype/ttobjs.c (tt_face_init): Protect against NULL pointer.

2006-11-25  David Turner  <david@freetype.org>

	* src/autofit/afhints.c	(af_glyph_hints_dump_points,
	af_glyph_hints_dump_segments, af_glyph_hints_dumpedges) [!AF_DEBUG]:
	Add stubs to link the `ftgrid' test program when debugging is
	disabled in the auto-hinter.

2006-11-23  David Turner  <david@freetype.org>

	* src/autofit/afhints.c, src/autofit/afhints.h, src/autofit/aflatin.c,
	src/autofit/aftypes.h: Miscellaneous auto-hinter improvements.

	* src/autofit/afhints.c (af_glyph_hints_dump_segments) [AF_DEBUG]:
	Emit more sensible information.

	* src/autofit/afhints.h (AF_SegmentRec): Add `height' member.

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Improve
	rounding of blue values.
	(af_latin_hints_compute_segments): Hint segment heights.
	(af_latin_hints_link_segments): Reduce `len_score' value.
	(af_latin_hints_compute_edges): Increase `segment_length_threshold'
	value and use `height' member for comparisons.
	(af_latin_hint_edges): Extend logging message.
	Improve handling of remaining edges.

2006-11-22  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #15553.

	* src/truetype/ttgload.c (tt_loader_init): Re-execute the CVT
	program after a change from mono to grayscaling (and vice versa).
	Use correct constant for comparison to get `exec->grayscale'.

2006-11-18  Werner Lemberg  <wl@gnu.org>

	Because FT_Load_Glyph expects CID values for CID-keyed fonts, the
	test for a valid glyph index must be deferred to the font drivers.
	This patch fixes Savannah bug #18301.

	* src/base/ftobjs.c (FT_Load_Glyph): Don't check `glyph_index'.
	* src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/cff/cffgload.c
	(cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph),
	src/pcf/pcfdrivr.c (PCF_Glyph_Load), src/pfr/pfrobjs.c
	(pfr_slot_load), src/truetype/ttdriver.c (Load_Glyph),
	src/type1/t1gload.c (T1_Load_Glyph), src/winfonts/winfnt.c
	(FNT_Load_Glyph): Check validity of `glyph_index'.

2006-11-13  David Turner  <david@freetype.org>

	* src/truetype/ttinterp.c (FIX_BYTECODE): Undefine.  The interpreter
	`enhancements' are still too buggy for general use.

	* src/base/ftlcdfil.c: Add support for FT_FORCE_LIGHT_LCD_FILTER and
	FT_FORCE_LEGACY_LCD_FILTER at compile time.  Define these macros
	when building the library to change the default LCD filter to be
	used.  This is only useful for experimentation.

	* include/freetype/ftlcdfil.h: Update documentation.

2006-11-10  David Turner  <david@freetype.org>

	* src/smooth/ftsmooth.c: API change for the LCD
	filter.  The FT_LcdFilter value is an enumeration describing which
	filter to apply, with new values FT_LCD_FILTER_LIGHT and
	FT_LCD_FILTER_LEGACY (the latter implements the LibXft original
	algorithm which produces strong color fringes for everything
	except very-well hinted text).

	* include/freetype/ftlcdfil.h (FT_Library_SetLcdFilter): Change
	second parameter to an enum type.

	* src/base/ftlcdfil.c (USE_LEGACY): Define.
	(_ft_lcd_filter): Rename to...
	(_ft_lcd_filter_fir): This.
	Update parameters.
	(_ft_lcd_filter_legacy) [USE_LEGACY]: New filter function.
	(FT_Library_Set_LcdFilter): Update parameters.
	Handle new filter modes.

	* include/internal/ftobjs.h: Include FT_LCD_FILTER_H.
	(FT_Bitmap_LcdFilterFunc): Change third argument to `FT_Library'.
	(FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add filtering
	callback and update other fields.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Update.
	Other minor improvements.

	* src/autofit/aflatin.c: Various tiny improvements that drastically
	improve the handling of serif fonts and of LCD/LCD_V hinting modes.
	(af_latin_hints_compute_edges): Fix typo.
	(af_latin_compute_stem_width): Take better care of diagonal stems.

2006-11-09  David Turner  <david@freetype.org>

	* src/pshinter/pshalgo.c (psh_glyph_compute_inflections): Fix
	typo which created a variable-used-before-initialized bug.

2006-11-07  Zhe Su  <james.su@gmail.com>

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle vertical layout
	also.

2006-11-03  Werner Lemberg  <wl@gnu.org>

	* src/base/ftcalc.c: Don't use `long long' but `FT_Int64'.

2006-11-02  David Turner  <david@freetype.org>

	Add a few tweaks to better handle serif fonts.
	Add more debugging messages.

	* src/autofit/aflatin.c (af_latin_hints_compute_edges): Ignore
	segments that are less than 1.5 pixels high.  This gets rid of
	*many* corner cases with serifs.
	(af_latin_align_linked_edge): Add logging message.
	(af_latin_hint_edges): Use AF_HINTS_DO_BLUES.
	Add logging messages.
	Handle AF_EDGE_FLAG flag specially.

	* src/autofit/afmodule.c [AF_DEBUG]: Add _af_debug,
	_af_debug_disable_blue_hints, and _af_debug_hints variables.

	* src/autofit/aftypes.h (AF_LOG) [AF_DEBUG]: Use _af_debug.
	Update external declarations.
	(af_corner_orientation, af_corner_is_flat): Replaced by...

	* include/freetype/internal/ftcalc.h (ft_corner_orientation,
	ft_corner_is_flat): These declarations.

	* src/autofit/afangles.c (af_corner_orientation, af_corner_is_flat):
	Comment out.  Replaced by...

	* src/base/ftcalc.h (ft_corner_orientation, ft_corner_is_flat):
	These functions.  Update all callers.
	(FT_Add64) [!FT_LONG64]: Simplify.

	* src/autofit/afhints.c: Include FT_INTERNAL_CALC_H.
	(af_direction_compute): Add a missing FT_ABS call.  This bug caused
	production of garbage by missing lots of segments.

	* src/autofit/afhints.h (AF_HINTS_DO_BLUES): New macro.

	* src/autofit/afloader.c (af_loader_init, af_loader_done)
	[AF_DEBUG]: Set _af_debug_hints.


	* src/pshinter/pshalgo.c: Include FT_INTERNAL_CALC_H.
	(psh_corner_is_flat, psh_corner_orientation): Use ft_corner_is_flat
	and ft_corner_orientation.


	* src/gzip/inftrees.c (huft_build): Remove compiler warning.

2006-10-24  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffload.c (cff_encoding_load): Remove unused variable.

	* src/base/ftobjs.c (FT_Select_Charmap): Disallow FT_ENCODING_NONE
	as argument.

2006-10-23  Zhe Su  <zsu@novell.com>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Re-implement to
	better deal with broken Asian fonts with strange glyphs, having
	self-intersections and other peculiarities.  The used algorithm is
	based on the nonzero winding rule.

2006-10-23  David Turner  <david@freetype.org>

	Speed up the CFF font loader.  With some large CFF fonts,
	FT_Open_Face is now more than three times faster.

	* src/cff/cffload.c (cff_get_offset): Removed.
	(cff_new_index): Inline functionality of `cff_get_offset'.
	(cff_charset_compute_cids, cff_charset_free_cids): New functions.
	(cff_charset_done): Call `cff_charset_free_cids'.
	(cff_charset_load): Call `cff_charset_compute_cids'.
	(cff_encoding_load) <Populate>: Ditto, to replace inefficient loop.

	* src/sfnt/ttmtx.c (tt_face_load_hmtx): Replace calls to FT_GET_XXX
	with FT_NEXT_XXX.


	Speed up the Postscript hinter, with more than 100% speed increase
	on my machine.

	* src/pshinter/pshalgo.c (psh_corner_is_flat,
	psh_corner_orientation): New functions.
	(psh_glyph_compute_inflections): Merge loops for efficiency.
	Use `psh_corner_orientation'.
	(psh_glyph_init): Use `psh_corner_is_flat'.
	(psh_hint_table_find_strong_point): Renamed to...
	(psh_hint_table_find_strong_points): This.
	Rewrite, adding argument to handle all points at once.
	Update all callers.
	(PSH_MAX_STRONG_INTERNAL): New macro.
	(psh_glyph_interpolate_normal_points): Rewrite for efficiency.

2006-10-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (FT_New_Face_From_FOND): Initialize variable
	`error' with FT_Err_Ok.

2006-10-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* docs/INSTALL.CROSS: New document file for cross-building.

	* builds/unix/configure.raw: Preliminary cross-building support.
	Find native C compiler and pass it by CC_BUILD, and
	find suffix for native executable and pass it by EXEEXT_BUILD.
	Also suffix for target executable is passed by EXEEXT.

	* builds/unix/unix-cc.in (CCraw_build, E_BUILD): New variables to
	build `apinames' which runs on building system.  They are set by
	CC_BUILD and EXEEXT_BUILD.

	* builds/exports.mk (APINAMES_EXE): Change the extension for
	apinames from the suffix for target (E) to that for building host
	(E_BUILD).

2006-10-12  Werner Lemberg  <wl@gnu.org>

	* docs/INSTALL.UNX, docs/UPGRADE.UNX: Renamed to...
	* docs/INSTALL.UNIX, docs/UPGRADE.UNIX: This.  Update all documents
	which reference those files.

2006-10-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw (FT2_EXTRA_LIBS): New variable.  It is
	embedded in freetype2.pc and freetype-config.  Use it to record
	Carbon dependency of MacOSX.

	* builds/unix/freetype2.in: Embed FT2_EXTRA_LIBS.

	* builds/unix/freetype-config.in: Ditto.

2006-10-11  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h (FT_CONFIG_OPTION_SUBPIXEL_RENDERING): Define for
	development.

2006-10-03  Jens Claudius  <jens.claudius@yahoo.com>

	* include/freetype/config/ftstdlib.h: Cast away volatileness from
	argument to ft_setjmp.

	* include/freetype/internal/ftvalid.h: Add comment that
	ft_validator_run must not be used.

2006-10-01  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbase.c: Undo change from 2006-09-30.

	* src/base/rules.mk (BASE_SRC): Remove `ftlcdfil.c'.

2006-09-30  David Turner  <david@freetype.org>

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
	s/unpatented_hinting/ignore_unpatented_hinter/.
	Update all callers.

	* src/base/ftobjs.c (FT_Load_Glyph): Refine the algorithm whether
	auto-hinting shall be used or not.

	* src/truetype/ttobjs.c (tt_face_init): Ditto.

2006-09-30  Werner Lemberg  <wl@gnu.org>

	* src/base/rules.mk (BASE_SRC): Remove `ftapi.c' (which is no longer
	in use).

	* src/base/ftbase.c: Include `ftlcdfil.c'.

2006-09-29  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Fix algorithm for
	overlapping segments.  Bug reported by Stefan Koch.

2006-09-28  David Turner  <david@freetype.org>

	Fix a bug in the automatic unpatented hinting support which prevents
	normal bytecode hinting to work properly.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec):
	s/force_autohint/unpatented_hinting/.  Update all callers.

	* src/base/ftobjs.c (FT_Load_Glyph): Updated code.

	* src/autofit/aftypes.h (AF_DEBUG): Undefine to get rid of traces.

2006-09-27  David Turner  <david@freetype.org>

	* include/freetype/freetype.h (FT_FREETYPE_PATCH): Set to 2.


	Add a new API to support color filtering of subpixel glyph bitmaps.
	In a default build, the function `FT_Library_SetLcdFilter' returns
	`FT_Err_Unimplemented_Feature'; you need to #define
	FT_CONFIG_OPTION_SUBPIXEL_RENDERING in ftoption.h to compile the
	real implementation.

	* include/freetype/ftlcdfil.h, src/base/ftlcdfil.c: New files.

	* include/freetype/internal/ftobjs.h (FT_Bitmap_LcdFilterFunc): New
	typedef.
	(FT_LibraryRec) [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: New members
	`lcd_filter_weights' and `lcd_filter'.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove arguments
	`hmul' and `vmul'.

	Handle subpixel rendering.
	Simplify function.
	(ft_smooth_render_lcd): Use `FT_RENDER_MODE_LCD'.
	(ft_smooth_render_lcd_v): Use `FT_RENDER_MODE_LCD_V'.

	* include/freetype/config/ftheader.h (FT_LCD_FILTER_H): New macro,
	pointing to <freetype/ftlcdfil.h>.

	* src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC),
	vms_make.com: Add `ftlcdfil.c' to the list of compiled source files.

	* modules.cfg (BASE_EXTENSIONS): Add ftlcdfil.c.

2006-09-26  David Bustin

	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Skip adjustment bytes
	correctly.  Reported as Savannah bug #17843.

2006-09-26  David Turner  <david@freetype.org>

	* src/autofit/afhints.h (AF_HINTS_DO_HORIZONTAL,
	AF_HINTS_DO_VERTICAL, AF_HINTS_DO_ADVANCE): New macros to disable
	horizontal and vertical hinting for the purpose of debugging the
	auto-fitter.

	* src/autofit/afmodule.c (_af_debug_disable_horz_hints,
	_af_debug_disable_vert_hints) [AF_DEBUG]: New global variables.

	* src/autofit/aftypes.h [AF_DEBUG]: Declare above variables.

	* include/freetype/config/ftoption.h, devel/ftoption.h
	(FT_CONFIG_OPTION_SUBPIXEL_RENDERING): New macro to control whether
	we want to compile LCD-optimized rendering code (à la ClearType) or
	not.  The macro *must* be disabled in default builds of the library
	for patent reasons.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Disable
	LCD-specific rendering when FT_CONFIG_OPTION_SUBPIXEL_RENDERING
	isn't defined at compile time.  This only changes the content of the
	rendered glyph to match the one of normal gray-level rendering,
	hence clients should not need to be modified.

	* docs/CHANGES: Updated.

2006-09-18  Garrick Meeker  <garrick@digitalanarchy.com>

	* src/base/ftmac.c (FT_New_Face_From_FOND): Fall back to SFNT if
	LWFN fails and both are available.

2006-09-11  David Turner  <david@freetype.org>

	* src/sfnt/sfobjs.c (tt_face_get_name): Support some fonts which
	report their English names through an Apple Roman
	(platform,encoding) pair, with language_id != English.

	If the font uses another name entry with language_id == English, it
	will be selected correctly, though.

	* src/truetype/ttobjs.c (tt_face_init): Add unpatented hinting
	selection for `mingli.ttf'.

2006-09-05  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttpload.c (tt_face_load_hdmx): Handle `record_size'
	values which have the upper two bytes set to 0xFF instead of 0x00
	(as it happens in at least two CJKV fonts, `HAN NOM A.ttf' and
	`HAN NOM B.ttf').

	* src/smooth/ftgrays.c [GRAYS_USE_GAMMA]: Really remove all code.

2006-09-05  David Turner  <david@freetype.org>

	Minor source cleanups and optimizations.

	* src/smooth/ftgrays.c (GRAYS_COMPACT): Removed.
	(TRaster): Remove `count_ex' and `count_ey'.
	(gray_find_cell): Remove 2nd and 3rd argument.
	(gray_alloc_cell): Merged with `gray_find_cell'.
	(gray_record_cell): Simplify.
	(gray_set_cell): Rewrite.
	(gray_start_cell): Apply offsets to `ras.ex' and `ras.ey'.
	(gray_render_span): Don't use FT_MEM_SET for small values.
	(gray_dump_cells) [DEBUG_GRAYS]: New function.
	(gray_sweep): Avoid buffer overwrites when to drawing the end of a
	bitmap scanline.
	(gray_convert_glyph): Fix speed-up.

2006-09-04  David Turner  <david@freetype.org>

	* src/smooth/ftgrays.c (gray_convert_glyphs): Make it work with
	64bit processors.

2006-09-03  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h: Synchronize with
	include/freetype/config/ftoption.h.

	* src/smooth/ftgrays.c (gray_record_cell): Remove shadowing
	variable declaration.
	(gray_convert_glyph): Fix compiler warnings.

2006-09-01  David Turner  <david@freetype.org>

	* src/truetype/ttobjs.c (tt_face_init): Update the TrueType loader
	to recognize a few fonts that require the automatic unpatented
	loader.

	* src/smooth/ftgrays.c: Optmize the performance of the anti-aliased
	rasterizer.  The speed improvement is between 15% and 25%, depending
	on the font data.

	(GRAYS_USE_GAMMA, GRAYS_COMPACT): Removed, and all associated code.
	(TCell): Redefine.
	(TRaster): New members `buffer', `buffer_size', `ycells', `ycount'.
	(gray_init_cells): Updated.
	(gray_find_cell, gray_alloc_cell): New functions.
	(gray_record_cell): Rewritten to use `gray_find_cell' and
	`gray_alloc_cell'.
	(PACK, LESS_THAN, SWAP_CELLS, DEBUG_SORT, QUICK_SORT, SHELL_SORT,
	QSORT_THRESHOLD):
	Removed.
	(gray_shell_sort, gray_quick_sort, gray_check_sort,
	gray_dump_cells): Removed.
	(gray_sweep): Rewritten.
	(gray_convert_glyph): Rewrite code which used one of the sorting
	functions.
	(gray_raster_render): Updated.

2006-08-29  Dr. Werner Fink  <werner@suse.de>

	* configure: Make it possible to handle configure options which
	have strings containing spaces.

2006-08-27  David Turner  <david@freetype.org>

	* include/freetype/config/ftoption.h (TT_USE_BYTECODE_INTERPRETER):
	New macro, defined if either TT_CONFIG_OPTION_BYTECODE_INTERPRETER
	or TT_CONFIG_OPTION_UNPATENTED_HINTING is defined.

	* include/freetype/internal/ftcalc.h, src/base/ftcalc.c,
	src/truetype/truetype.c, src/truetype/ttdriver.c,
	src/truetype/ttgload.c, src/truetype/ttgload.h,
	src/truetype/ttinterp.c, src/truetype/ttobjs.c,
	src/truetype/ttobjs.h, src/truetype/ttpload.c, src/type42/t42drivr.c:
	s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
	member `force_autohint'.

	* src/base/ftobjs.c (FT_Load_Glyph): Use `force_autohint'.

	* src/truetype/ttobjs.c (tt_face_init): Prepare code for testing
	against a list of font names which need the bytecode interpreter.

2006-08-27  Jens Claudius  <jens.claudius@yahoo.com>

	Fix miscellaneous compiler warnings.

	* include/freetype/internal/ftobjs.h: Close comment with `*/' to
	avoid `/* in comment' compiler warning.

	* src/base/ftdbgmem.c (ft_mem_table_get_source): Turn cast
	`(FT_UInt32)(void*)' into `(FT_UInt32)(FT_PtrDist)(void*)' since on
	64-bit platforms void* is larger than FT_UInt32.

	* src/base/ftobjs.c (t_validator_error): Cast away
	volatileness of argument to ft_longjmp.  Spotted by Werner
	`Putzfrau' Lemberg.

	* src/bdf/bdflib.c (bdf_load_font): Initialize local
	variable `lineno'.

	* src/gxvalid/gxvmod.c (classic_kern_validate): Mark local variable
	`error' as volatile.

2006-08-27  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ftconfig.in: Synchronize with main ftconfig.h.
	Reported by Jens.

2006-08-22  Jens Claudius  <jens.claudius@yahoo.com>

	Fix for previous commit, which caused many compiler warnings/errors
	about addresses of volatile objects passed as function arguments as
	non-volatile pointers.

	* include/freetype/internal/ftvalid.h: Make FT_Validator typedef a
	pointer to a volatile object.

	* src/gxvalid/gxvmod.c (gxv_load_table): Make function argument
	`table' a pointer to a volatile object.

	* src/otvalid/otvmod.c (otv_load_table): Make function argument
	`table' a pointer to a volatile object.

2006-08-18  Jens Claudius  <jens.claudius@yahoo.com>

	* src/gxvalid/gxvmod.c (GXV_TABLE_DECL): Mark local variable `_sfnt'
	as volatile since it must keep its value across a call to ft_setjmp.
	(gxv_validate): Same for local variables `memory' and `valid'.
	(classic_kern_validate): Same for local variables `memory',
	`ckern', and `valid'.

	* src/otvalid/otvmod.c (otv_validate): Same for function parameter
	`face' and local variables `base', `gdef', `gpos', `gsub', `jstf',
	and 'valid'.

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Same for local variable
	`cmap'.

2006-08-16  David Turner  <david@freetype.org>

	* src/cid/cidgload.c (cid_slot_load_glyph): Remove compiler
	warnings.

	* src/base/ftobjs.c (ft_validator_run): Disable function; it is
	buggy by design.  Always return -1.


	Improvements to native TrueType hinting.  This is a first try,
	controlled by the FIX_BYTECODE macro in src/truetype/ttinterp.c.

	* include/freetype/internal/ftgloadr.h (FT_GlyphLoadRec): Add member
	`extra_points2'.

	* include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add member
	`orus'.

	* src/base/ftgloadr.c (FT_GlyphLoader_Reset,
	FT_GlyphLoader_Adjust_Points, FT_GlyphLoader_CreateExtra,
	FT_GlyphLoader_CheckPoints, FT_GlyphLoader_CopyPoints): Updated to
	handle `extra_points2'.

	* src/truetype/ttgload.c (tt_prepare_zone): Handle `orus'.
	Remove compiler warning.
	(cur_to_arg): Remove macro.
	(TT_Hint_Glyph): Updated.
	(TT_Process_Simple_Glyph): Handle `orus'.

	* src/truetype/ttinterp.c (FIX_BYTECODE): New macro.
	(Ins_MD, Ins_MDRP, Ins_IP) [FIX_BYTECODE]: Handle `orus'.
	(LOC_Ins_IUP): Renamed to...
	(IUP_WorkerRec): This.
	Add `orus' member.
	(Shift): Renamed to...
	(_iup_worker_shift): This.
	Updated.
	(Interp): Renamed to...
	(_iup_worker_interpolate): This.
	Updated to handle `orus'.
	(Ins_IUP): Updated.

	* src/truetype/ttobjs.c (tt_glyphzone_done, tt_glyphzone_new):
	Handle `orus'.

2006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to
	build ftvalid in ft2demos.  This has been inadvertedly changed
	2006-08-13.

2006-08-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	`ft_validator_run' wrapping `setjmp' can cause a crash, as found by
	Jens:
	http://lists.gnu.org/archive/html/freetype-devel/2006-08/msg00004.htm.

	* src/otvalid/otvmod.c: Replace `ft_validator_run' by `ft_setjmp'.
	It reverts the change introduced on 2005-08-20.

	* src/gxvalid/gxvmod.c: Ditto.

2006-08-13  Jens Claudius  <jens.claudius@yahoo.com>

	* finclude/freetype/internal/psaux.h: (T1_TokenType): Add
	T1_TOKEN_TYPE_KEY.
	(T1_FieldRec): Add `dict'.
	(T1_FIELD_DICT_FONTDICT, T1_FIELD_DICT_PRIVATE): New macros.
	(T1_NEW_XXX, T1_FIELD_XXX): Update to take the dictionary where a PS
	keyword is expected as an additional argument.

	* src/cid/cidload.c: (cid_field_records): Adjust invocations of
	T1_FIELD_XXX.

	* src/cid/cidtoken.h: Adjust invocations of T1_FIELD_XXX.

	* src/psaux/psobjs.c: Add macro FT_COMPONENT for tracing.
	(ps_parser_to_token): Report a PostScript key as T1_TOKEN_TYPE_KEY,
	not T1_TOKEN_TYPE_ANY.
	(ps_parser_load_field): Make sure a token that should be a string or
	name is really a string or name.
	Avoid memory leak if a keyword has been already encountered and its
	value is overwritten.
	* src/type1/t1load.c: (t1_keywords): Adjust invocations of
	T1_FIELD_XXX.
	(parse_dict): Ignore keywords that occur in the wrong dictionary
	(e.g., in `Private' instead of `FontDict').

	* src/type1/t1tokens.h: Adjust invocations of T1_FIELD_XXX.

	* src/type42/t42parse.c: (t42_keywords): Adjust invocations of
	T1_FIELD_XXX.

2006-07-18  Jens Claudius  <jens.claudius@yahoo.com>

	Move creation of field `buildchar' of T1_DecoderRec out of
	`t1_decoder_init' and let the caller of `t1_decoder_init' take care
	of it.

	Call the finisher for T1_Decoder in `cid_face_compute_max_advance'
	and `T1_Compute_Max_Advance'.

	* include/freetype/internal/psaux.h (T1_DecoderRec): Remove field
	`face', add `len_buildchar'.

	* include/freetype/internal/t1types.h (T1_FaceRec): Add field
	`buildchar'.

	* src/cid/cidgload.c (cid_face_compute_max_advance): Call finisher
	for T1_Decoder.
	(cid_slot_load_glyph): Do not ignore failure when initializing the
	T1_Decoder.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Updated.
	(t1_decoder_init): Remove initialization of fields `buildchar' and
	`len_buildchar'.
	(t1_decoder_done): Remove deallocation of field `buildchar'.

	* freetype/src/type1/t1gload.c (T1_Compute_Max_Advance): Initialize
	T1_Decoder's `buildchar' and `len_buildchar'; call finisher for
	T1_Decoder.
	(T1_Load_Glyph): Initialize T1_Decoder's `buildchar' and
	`len_buildchar'; make sure to call finisher for T1_Decoder even in
	case of error.

	* src/type1/t1load.c (T1_Open_Face): Allocate new field `buildchar'
	of T1_FaceRec.

	* src/type1/t1objs.c (T1_Face_Done): Free new field `buildchar' of
	T1_FaceRec.

2006-07-14  Jens Claudius  <jens.claudius@yahoo.com>

	* include/freetype/internal/psaux.h: New macros IS_PS_NEWLINE,
	IS_PS_SPACE, IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT,
	and IS_PS_BASE85 (from src/psaux/psconv.h).
	(T1_FieldLocation): Add T1_FIELD_LOCATION_LOADER,
	T1_FIELD_LOCATION_FACE, and T1_FIELD_LOCATION_BLEND.
	(T1_DecoderRec): New fields `buildchar' and `face'.
	(IS_PS_TOKEN): New macro.

	* include/freetype/internal/t1types.h (T1_FaceRec): New fields
	`ndv_idx', `cdv_idx', and `len_buildchar'.

	* include/freetype/t1tables.h (PS_BlendRec): New fields
	`default_design_vector' and `num_default_design_vector'.

	* src/psaux/psconv.h: Move macros IS_PS_NEWLINE, IS_PS_SPACE,
	IS_PS_SPECIAL, IS_PS_DELIM, IS_PS_DIGIT, IS_PS_XDIGIT, and
	IS_PS_BASE85 to include/freetype/internal/psaux.h.

	* src/psaux/psobjs.c (ps_parser_to_token_array): Allow `token'
	argument to be NULL if we want only to count the number of tokens.
	(ps_tocoordarray): Allow `coords' argument to be NULL if we just
	want to skip the array.
	(ps_tofixedarray): Allow `values' argument to be NULL if we just
	want to skip the array.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add support
	for (partially commented out) othersubrs 19-25, 27, and 28.
	(t1_decoder_init): Initialize new fields `face' and `buildchar'.
	(t1_decoder_done): Release new field `buildchar'.

	* src/type1/t1load.c (parse_buildchar, parse_private): New
	functions.
	(t1_keywords): Register them.
	(t1_allocate_blend): Updated.
	(t1_load_keyword): Handle field types T1_FIELD_LOCATION_LOADER,
	T1_FIELD_LOCATION_FACE and T1_FIELD_LOCATION_BLEND.
	(parse_dict): Remove `keyword_flags' argument.
	Use new macro IS_PS_TOKEN.
	Changed function so that later PostScript definitions override
	earlier ones.
	(t1_init_loader): Initialize new field `keywords_encountered'.
	(T1_Open_Face): Initialize new fields `ndv_idx', `cdv_idx', and
	`len_buildchar'.
	Remove `keywords_flags'.

	* src/type1/t1load.h (T1_LoaderRect): New field
	`keywords_encountered'.
	(T1_PRIVATE, T1_FONTDIR_AFTER_PRIVATE): New macros.

	* src/type1/t1tokens.h [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: New
	entries for parsing /NDV, /CDV, and /DesignVector.

2006-07-07  Werner Lemberg  <wl@gnu.org>

	Add many checks to protect against malformed PCF files.

	* src/pcf/pcfdrivr.c (PCF_Face_Done): Protect against NULL pointers.
	(PCF_Face_Init): Add calls to PCF_Face_Done in case of errors.

	* src/pcf/pcfread.c (pcf_read_TOC): Protect against malformed table
	data and check that tables don't overlap (using a simple
	bubblesort).
	(PCF_METRIC_SIZE, PCF_COMPRESSED_METRIC_SIZE, PCF_PROPERTY_SIZE):
	New macros which give the size of data structures in the data
	stream.
	(pcf_get_properties): Use rough estimates to get array size limits.
	Assign `face->nprops' and `face->properties' earlier so that a call
	to PCF_Face_Done can do the clean-up in case of error.
	Protect against invalid string offsets.
	(pcf_get_metrics): Clean up code.
	Adjust tracing message levels.
	Use rough estimate to get array size limit.
	(pcf_get_bitmaps): Clean up code.
	Adjust tracing message levels.
	Use rough estimates to get offset limits.
	(pcf_get_encodings): Adjust tracing message level.
	(pcf_get_accel): Clean up code.

2006-06-26  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Handle fonts correctly which
	don't have a POINT_SIZE property.  This fixes Savannah bug #16914.

2006-06-26  Jens Claudius  <jens.claudius@yahoo.com>

	* src/psaux/t1decode.c (T1_Operator, t1_args_count): Add opcode 15.
	(t1_decoder_parse_charstrings): Operator with
	opcode 15 pops its two arguments.
	Handle the case where the pops of an othersubr may be part of a
	subroutine.
	Handle unknown othersubrs gracefully: count their operands and let
	the following pop operators push the operands as the results onto
	the Type1 stack.
	Improve handling of setcurrentpoint opcode.

2006-06-25  Jens Claudius  <jens.claudius@yahoo.com>

	The Type 1 parser now skips over top-level procedures as required
	for a `Simplified Parser'.  This makes the parser more robust as it
	doesn't poke around in PostScript code.  Additionally, it makes the
	FontDirectory hackery in src/type1/t1load.c unnecessary.

	* src/psaux/psobjs.c (IS_OCTAL_DIGIT): New macro.
	(skip_literal_string): Add FT_Error as return value.
	Handle escapes better.
	(skip_string): Add FT_Error as return value.
	Don't set `parser->error' but return error code directly.
	(skip_procedure): New function.
	(ps_parser_skip_PS_token): Handle procedures.
	Update code.
	(ps_parser_to_token): Update code.
	(ps_parser_load_field_table): Handle bbox entries also.

	* src/type1/t1load.c (parse_dict): Remove FontDirectory hackery.
	Add commented-out code for synthetic fonts.

2006-06-24  Eugeniy Meshcheryakov  <eugen@univ.kiev.ua>

	Fix two hinting bugs as reported in
	http://lists.gnu.org/archive/html/freetype-devel/2006-06/msg00057.html.

	* include/freetype/internal/tttypes.h (TT_GlyphZoneRec): Add
	`first_point' member.

	* src/truetype/ttgload.c (tt_prepare_zone): Initialize
	`first_point'.
	(TT_Process_Composite_Glyph): Always untouch points.

	* src/truetype/ttinterp.c (Ins_SHC): Fix computation of
	`first_point' and `last_point' in case of composite glyphs.
	(Ins_IUP): Fix computation of `end_point'.

2006-06-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Insert EndianS16_BtoN and EndianS32_BtoN as workaround for Intel
	Mac.  The original patch was written by David Sachitano and Lawrence
	Coopet, and modified by Sean McBride for MPW compatibility.  Only
	required data are converted; unused data are left in big endian.

	* src/base/ftmac.c: Include <Endian.h> for byteorder macros for non
	Mac OS X platforms.
	(OS_INLINE): Undefine before definition.
	(count_faces_sfnt): Insert EndianS16_BtoN to parse the header of
	FontAssociation table in FOND resource.
	(count_faces_scalable): Insert EndianS16_BtoN to parse the header
	and fontSize at each entry of FontAssociation table in FOND
	resource.
	(parse_fond): Insert EndianS16_BtoN and EndianS32_BtoN to parse
	ffStylOff of FamilyRecord header of FOND resource, the header,
	fontSize, fontID at each entry of FontAssociation table, and
	StyleMapping table.
	(count_faces): Call `HUnlock' after all FOND utilization.

2006-06-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Public API of TrueTypeGX, OpenType, and classic kern table validator
	should return `FT_Err_Unimplemented_Feature' if validation service
	is unavailable (disabled in `modules.cfg').  It is originally
	suggested by David Turner, cf.
	http://lists.gnu.org/archive/html/freetype-devel/2005-11/msg00078.html

	* src/base/ftgxval.c (FT_TrueTypeGX_Validate): Return
	FT_Err_Unimplemented_Feature if TrueTypeGX validation service is
	unavailable.
	(FT_ClassicKern_Validate): Return FT_Err_Unimplemented_Feature if
	classic kern table validation service is unavailable.

	* src/base/ftotval.c (FT_OpenType_Validate): Return
	FT_Err_Unimplemented_Feature if OpenType validation service is
	unavailable.

2006-06-08  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c (bdf_load_font): Fix memory leaks in case of
	errors.

2006-06-07  David Turner  <david@freetype.org>

	* src/type1/t1afm.c (KERN_INDEX): Make it more robust.
	(T1_Read_Metrics): Fix memory leak which happened when the metrics
	file doesn't have kerning pairs.  This fixes Savannah bug #16768.

2006-06-06  David Turner  <david@freetype.org>

	Fix memory leak described in Savannah bug #16759.

	We change `ps_unicodes_init' so that it also takes a
	`free_glyph_name' callback to release the glyph names returned by
	`get_glyph_name'

	* include/freetype/internal/services/svpscmap.h (PS_Glyph_NameFunc):
	Renamed to ...
	(PS_GetGlyphNameFunc): This.
	(PS_FreeGlyphNameFunc): New typedef.
	(PS_Unicodes_InitFunc): Add variable for PS_FreeGlyphNameFunc.

	* src/cff/cffcmap.c (cff_sid_to_glyph_name): Use `TT_Face' for first
	argument.
	(cff_sid_free_glyph_name): New function.
	(cff_cmap_unicode_init): Updated.

	* src/psaux/t1cmap.c (t1_cmap_unicode_init): Updated.

	* src/psnames/psmodule.c (ps_unicodes_init): Add variable for
	PS_FreeGlyphNameFunc and use it.


2006-06-04  David Turner  <david@freetype.org>

	* src/base/ftutil.c (ft_mem_qrealloc): Fix the function to accept
	`item_size == 0' as well -- though this sounds weird, it can
	theoretically happen.  This fixes Savannah bug #16669.

	* src/pfr/pfrobjs.c (pfr_face_init): Fix the computation
	of `face->num_glyphs' which missed the last glyph, due to
	the offset-by-1 computation, since the PFR format doesn't
	guarantee that glyph index 0 corresponds to the `missing
	glyph.  This fixes Savannah bug #16668.

2006-05-25  Werner Lemberg  <wl@gnu.org>

	* builds/unix/unix-cc.in (LINK_LIBRARY): Don't comment out
	`-no-undefined'.  Reported by Christian Biesinger.

2006-05-19  Brian Weed  <bw@imaginengine.com>

	* builds/win32/visualc/freetype.dsp: Release libraries no longer
	have debug information, and debug libraries use `C7 compatible'
	debug info.

2006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Apply patch by Derek Clegg to fix two memory leaks in the MacOS
	resource fork handler.  This fixes Savannah bug #16631.

	* src/base/ftobjs.c (load_face_in_embedded_rfork): Replace
	`FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.

	* src/base/ftrfrk.c (raccess_guess_linux_double_from_file_name):
	Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak.

2006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* build/unix/configure.raw: Add a fallback to disable Carbon
	dependency, if configured with no options on Mac OS X.

2006-05-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftmac.c (open_face_from_buffer): Deallocate stream when
	its content cannot be parsed as supported font.  This fixes
	the second part of Savannah bug #16590.

2006-05-18  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph)
	[FT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Make it compilable again.

2006-05-17  David Turner  <david@freetype.org>

	This is a major patch used to drastically improve the performance of
	loading glyphs.  This both speeds up loading the glyph vectors
	themselves and the auto-fitter module.

	We now use inline assembler code with GCC to implement `FT_MulFix',
	which is probably the most important function related to the
	engine's performance.

	The resulting speed-up is about 25%.


	* include/freetype/internal/tttypes.h (TT_LoaderRec): Add fields
	`cursor' and `limit'.

	* src/autofit/afangles.c (af_corner_is_flat, af_corner_orientation):
	New functions.
	(AF_ATAN_BITS, af_arctan, af_angle_atan): Comment out.
	[TEST]: Remove.

	* src/autofit/afcjk.c (AF_Script_UniRangeRec): Comment out test
	code.

	* src/autofit/afhints.c (af_axis_hints_new_segment): Don't call
	`FT_ZERO'
	(af_direction_compute, af_glyph_hints_compute_inflections): Rewritten.
	(af_glyph_hints_reload: Rewrite recognition of weak points.

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Move
	constant values out of the loops.

	* src/autofit/aftypes.h: Updated.

	* src/base/ftcalc.c (FT_MulFix): Use inline assembler code.

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use vector
	product to get orientation.

	* src/gzip/ftgzip.c (ft_get_uncompressed_size): New function.
	(FT_Stream_OpenGzip): Use it to handle small files directly in
	memory.

	* src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_ConvEexecDecode):
	Improve performance.

	* src/truetype/ttgload.c (TT_Access_Glyph_Frame): Set `cursor' and
	`limit'.

	(TT_Load_Glyph_Header, TT_Load_Simple_Glyph,
	TT_Load_Composite_Glyph): Updated.  Add threshold to protect against
	exceedingly large values of number of contours.  Speed up by
	reducing the number of loops.

	* src/type1/t1gload.c (T1_Load_Glyph): Don't apply unit matrix.


	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Change the threshold
	used to detect rogue clients from 4 to 16.  This is to prevent some
	segmentation faults with fonts like `KozMinProVI-Regular.otf' which
	comes from the Japanese Adobe Reader Asian Font pack.

2007-05-17  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffload.c (cff_font_done): Deallocate subfont array.  This
	fixes the first part of Savannah bug #16590.

2006-05-16  Werner Lemberg  <wl@gnu.org>

	* docs/PROBLEMS: Updated icl issues.

----------------------------------------------------------------------------

Copyright 2006-2015 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:
