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/ftobjs.c: 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_Load_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.  Explicit 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->nmetrics 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 explicit 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/ftadvanc.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/bdfdrivr.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 convention.
	(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 explicitly.

	* 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
	`property_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 unconditionally.
	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
	dimensional 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
	dimensional 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 referred using macros defined 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 verify 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 dimensional 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 destroy it.
	* include/freetype/internal/ftserv.h add macros to allocate and
	destroy 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 destroy 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 struct 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/ftobjs.c, 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  David Bevan  <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@gnu.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@gnu.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 tttags.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
	tttags.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/psaux/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: Updated.

	* 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  Werner 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/otvcommn.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_SERVICE_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/ftobjs.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/ftcbasic.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/ftbitmap.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/ttobjs.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/bdf/bdfdrivr.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/cffdrivr.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/cffdrivr.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_offset'.
	* 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 inadvertently 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_LoaderRec): 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/ftrfork.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_Conv_EexecDecode):
	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-2016 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:
