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:
