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): Don't #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_Decoder->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_PhyFont->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_DecoderRec.buildchar is matched with
	T1_DecoderRec.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.
	(t1operator_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_lcdv_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_lcdv_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
	ApplicationServices 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_LZW'.  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/otvmath.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_metrics_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 of 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_SetLcdFilter): 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: Optimize 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)
	[TT_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-2017 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This file is part of the FreeType project, and may only be used, modified,
and distributed under the terms of the FreeType project license,
LICENSE.TXT.  By continuing to use, modify, or distribute this file you
indicate that you have read the license and understand and accept it
fully.


Local Variables:
version-control: never
coding: utf-8
End:
