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

	* Version 2.4.12 released.
	==========================


	Tag sources with `VER-2-4-12'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.11/2.4.12/, s/2411/2412/.

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

	* builds/unix/configure.raw (version_info): Set to 16:1:10.

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

	* docs/CHANGES: Updated.

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

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Typo.

2013-05-05  Werner Lemberg  <wl@gnu.org>

	Synchronize `ftconfig.h'.

	* builds/unix/ftconfig.in: Updated.

2013-05-05  Werner Lemberg  <wl@gnu.org>

	Fix compilation with C++.

	* src/base/md5.c (body): Use proper cast.

2013-05-05  Werner Lemberg  <wl@gnu.org>

	Fix 64bit compilation issues.

	* include/freetype/config/ftconfig.h [FT_LONG64]: Typedef
	`FT_Int64' here.

	* src/base/ftcalc.c: Remove typedef of `FT_Int64'.
	(FT_DivFix): Fix cast.
	* src/base/fttrigon.c: Remove typedef of `FT_Int64'.

2013-05-05  Werner Lemberg  <wl@gnu.org>

	[raster] Fix clang issues.

	Fix suggested by <octoploid@yandex.com>.

	* src/raster/ftraster.c (ULong): New typedef.
	(SCALED): Add proper cast.

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

	Fix clang fixes.

	* src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate): Use
	correct types.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <default>: Force
	unsigned for computations.
	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Ditto.
	* src/cff/cffparse.c (cff_parse_integer): Ditto.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.

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

	[cff] Make Adobe CFF engine work correctly on 64bit hosts.

	Reported by numerous people on the `freetype-devel' list.  Without
	this fix, glyphs aren't properly aligned on a common baseline.

	On 64bit systems, `FT_Pos' expands to `long int', having a width of
	64bit.  `CF2_Fixed' expands to `int' which is normally 32bit wide on
	64bit hosts also.  Wrong casts filled up the blues arrays with
	incorrect values.  Note that all blues values are accessed with the
	`cf2_blueToFixed' macro which handles the 64bit to 32bit conversion.

	* src/cff/cf2ft.h (cf2_getBlueValues, cf2_getOtherBlues,
	cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Use `FT_Pos' for
	`data', not `CF2_Fixed'.
	* src/cff/cf2ft.c (cf2_getBlueValues, cf2_getOtherBlues,
	cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated.
	* src/cff/cf2blues.c (cf2_blues_init): Updated.

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

	More fixes for clang's `sanitize' feature.

	* src/base/ftcalc.c (FT_DivFix): Use unsigned values for
	computations which use the left shift operator and convert to signed
	as the last step.
	* src/base/fttrigon.c (ft_trig_prenorm, FT_Vector_Rotate,
	FT_Vector_Length, FT_Vector_Polarize): Ditto.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Simplify.
	* src/cff/cffload.c (cff_subfont_load): Fix constant.
	* src/cff/cffparse.c (cff_parse_integer, cff_parse_real, do_fixed,
	cff_parse_fixed_dynamic): Use unsigned values for computations which
	use the left shift operator and convert to signed as the last step.

	* src/cid/cidload.c (cid_get_offset): Ditto.

	* src/psaux/psconv.c (PS_Conv_ToFixed): Ditto.
	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.

	* src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Ditto.

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

	Fix errors reported by clang's `sanitize' feature.

	* include/freetype/internal/ftstream.h: Simplify and fix integer
	extraction macros.
	(FT_INT8_, FT_BYTE_I16, FT_BYTE_I32, FT_INT8_I16, FT_INT8_I32,
	FT_INT8_I32, FT_INT8_U32): Removed.
	(FT_PEEK_SHORT, FT_PEEK_LONG, FT_PEEK_OFF3, FT_PEEK_SHORT_LE,
	FT_PEEK_LONG_LE, FT_PEEK_OFF3_LE): Use unsigned values for
	computations and convert to signed as the last step.

	* src/cff/cf2fixed.h (cf2_intToFixed, cf2_fixedToInt,
	cf2_fracToFixed): Avoid shifts of negative values.
	(cf2_intToFrac, cf2_fixedToFrac, cf2_fixedTo26Dot6): Removed,
	unused.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdEXTENDEDNMBR,
	default>: Use unsigned values for computations and convert to signed
	as the last step.
	Use proper types in tracing messages.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Use unsigned
	values for computation of operands and convert to signed as the last
	step.
	Use proper type in tracing message.

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

	* src/cff/cf2blues.c: Remove dead code.

2013-05-02  Chris Liddell  <chris.liddell@artifex.com>

	* src/cff/cffgload.c: Include FT_CFF_DRIVER_H.

2013-04-27  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.
	* README: Improved.

2013-04-13  Werner Lemberg  <wl@gnu.org>

	[cff] Add a new Type 2 interpreter and hinter.

	This work, written by Dave Arnold <darnold@adobe.com> and fully
	integrated into FreeType by me, is a donation by Adobe in
	collaboration with Google.  It is vastly superior to the old CFF
	engine, and it will replace it soon.  Right now, it is still off by
	default, and you have to explicitly select it using the new
	`hinting-engine' property of the cff driver.

	For convenience, (most of) the new files are committed separately.

	* include/freetype/config/ftheader.h (FT_CFF_DRIVER_H): New macro.
	* include/freetype/ftcffdrv.h: New file to access CFF driver
	properties.
	* include/freetype/fterrdef.h (FT_Err_Glyph_Too_Big): New error
	code.
	* include/freetype/internal/fttrace.h: Add `cf2blues', `cf2hints',
	and `cf2interp'.

	* src/cff/cffgload.h (CFF_SubFont): New member `current_subfont'.
	* src/cff/cffobjs.h (CFF_DriverRec): New members `hinting_engine'
	and `no_stem_darkening'.
	* src/cff/cfftypes.h (CFF_FontRec): New member `cf2_instance'.

	* src/cff/cff.c: Include new files.
	* src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
	`hinting-engine' and `no-stem-darkening' properties (only the Adobe
	engine listens to them).
	* src/cff/cffgload.c: Include `cf2ft.h'.
	(cff_decoder_prepare): Initialize `current_subfont'.
	(cff_build_add_point): Handle Adobe engine which uses 16.16
	coordinates.
	(cff_slot_load): Handle FT_LOAD_NO_SCALE and FT_LOAD_NO_HINTING
	separately.
	Choose rendering engine based on `hinting_engine' property.
	* src/cff/cffload.c (cff_font_done): Call finalizer of the Adobe
	engine.
	* src/cff/cffobjs.c: Include FT_CFF_DRIVER_H.
	(cff_driver_init): Set default property values.

	* src/cff/rules.mk (CFF_DRV_SRC, CFF_DRV_H): Add new files.

	* src/cff/cf2*.*: New files, containing the Adobe engine.

2013-04-12  Werner Lemberg  <wl@gnu.org>

	[cff] Minor code administration issues.

	* src/cff/cffgload.c (check_points): Rename to...
	(cff_check_points): ...this and make it FT_LOCAL.
	(cff_builder_add_point, cff_builder_add_point1,
	cff_builder_start_point, cff_builder_close_contour,
	cff_lookup_glyph_by_stdcharcode, cff_get_glyph_data,
	cff_free_glyph_data): Make them FT_LOCAL.

	* src/cff/cffgload.h: Updated.

2013-04-12  Werner Lemberg  <wl@gnu.org>

	Add output bitmap checksums.

	Use `FT2_DEBUG=bitmap:3' for tracing.

	* src/base/md5.c, src/base/md5.h: New files, taken from

	  https://openwall.info/wiki/people/solar/software/public-domain-source-code/md5

	* include/freetype/internal/fttrace.h: Add `bitmap'.

	* src/base/ftobjs.c [FT_DEBUG_LEVEL_TRACE]: Include `md5.c'

	(FT_Render_Glyph_Internal) [FT_DEBUG_LEVEL_TRACE]: For tracing,
	convert resulting bitmap to a uniform format and compute a checksum.
	Use `bitmap' category for the tracing message.

	* src/base/rules.mk (BASE_H): Updated.

	* docs/LICENSE.TXT: Updated.

2013-04-12  Werner Lemberg  <wl@gnu.org>

	[cff] Add framework for CFF properties.

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

	* src/cff/cffdrivr.c: Include FT_SERVICE_PROPERTIES_H.
	(cff_property_set, cff_property_get): New functions, still empty.
	Define `cff_service_properties' service.
	Update `cff_services'.

	* src/cff/cffpic.h: Include FT_SERVICE_PROPERTIES_H.
	(CFF_SERVICE_PROPERTIES_GET): New macro.
	(CffModulePIC): Add `cff_service_properties'.

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

	[bdf] Fix Savannah bug #38589.

	* src/bdf/bdflib.c (_bdf_readstream): Thinko.

2013-03-31  Werner Lemberg  <wl@gnu.org>

	* configure: Use egrep, not grep.

	Problem reported Mojca Miklavec <mojca.miklavec.lists@gmail.com>.

2013-03-29  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftlcdfil.h: Add description of color filtering.

	Based on a contribution from Antti S. Lankila <alankila@bel.fi>
	(Savannah bug #38607).

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

	[autofit] Minor.

	* src/autofit/afmodule.c (af_property_set): Typo.
	(af_autofitter_init, af_autofitter_done): Use cast.

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

	* configure: Automatically test for `gmake' also.

	Suggested by Mojca Miklavec <mojca.miklavec.lists@gmail.com>.

2013-03-21  Peter Breitenlohner  <peb@mppmu.mpg.de>

	Respect CONFIG_SHELL from the environment.

	Some large packages using FreeType have to use a broken (deficient)
	/bin/sh.  The configure scripts (as generated by Autoconf) are
	clever enough to find a better shell and put that one into the
	environment variable CONFIG_SHELL.  If that environment variable is
	already set the script skips the test and assumes to be already
	running under a good shell.

	* builds/unix/detect.mk: Honour CONFIG_SHELL.
	* builds/unix/unix-def.in (SHELL): Define.

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

	Fix Savannah patch #7971.

	* configure: Handle MAKE environment variable also.

2013-03-17  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #38538.

	* builds/amiga/src/base/ftdebug.c, builds/win32/ftdebug.c,
	builds/wince/ftdebug.c (FT_Throw): Add function.

2013-03-17  Werner Lemberg  <wl@gnu.org>

	[raster] Remove dead code.

	* src/raster/rastpic.c (ft_raster1_renderer_class_pic_init)
	src/smooth/ftspic.c (ft_smooth_renderer_class_pic_init): Do it.

2013-03-17  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshpic.h (GET_PIC): Use correct container.

2013-03-15  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftmoderr.h: Fix commit from 2013-03-11.

	The previous version was not backward compatible.  Reported by
	Behdad.

2013-03-14  Werner Lemberg  <wl@gnu.org>

	*/*: Use FT_ERR_EQ, FT_ERR_NEQ, and FT_ERR where appropriate.

	FT_Err_XXX and friends are no longer directly used in the source
	code.

2013-03-14  Werner Lemberg  <wl@gnu.org>

	New error management macros.

	* include/freetype/fterrors.h (FT_ERR_XCAT, FT_ERR_CAT): Move to...
	* include/freetype/fttypes.h: ... this file.
	(FT_ERR, FT_ERR_EQ, FT_ERR_NEQ, FT_MODERR_EQ, FT_MODERR_NEQ): New
	macros.

	* include/freetype/freetype.h: Updated.

2013-03-14  Werner Lemberg  <wl@gnu.org>

	*/*: Use FT_Err_Ok only.

	This is a purely mechanical conversion.

2013-03-14  Werner Lemberg  <wl@gnu.org>

	*/*: Use `FT_THROW'.

	This is essentially a mechanical conversion, adding inclusion of
	`FT_INTERNAL_DEBUG_H' where necessary, and providing the macros for
	stand-alone compiling modes of the rasterizer modules.

	To convert the remaining occurrences of FT_Err_XXX and friends it is
	necessary to rewrite the code.  Note, however, that it doesn't harm
	if some cases are not handled since FT_THROW is a no-op.

2013-03-13  Werner Lemberg  <wl@gnu.org>

	Introduce `FT_THROW' macro.

	The idea is to replace code like

	  return FT_Err_Foo_Bar;

	or

	  return CFF_Err_Foo_Bar;

	with

	  return FT_THROW( Foo_Bar );

	The FT_THROW macro has two functions:

	  . It hides the module specific prefix.

	  . In debug mode, it calls the empty function `FT_Throw' which can
	    be thus used to set a breakpoint.

	* include/freetype/internal/ftdebug.h (FT_THROW): New macro.
	(FT_Throw): New prototype.
	* src/base/ftdebug.c (FT_Throw): New function.

2013-03-12  Werner Lemberg  <wl@gnu.org>

	Remove `FT_KEEP_ERR_PREFIX'.

	The idea is to always have FT_ERR_PREFIX available internally.

	* include/freetype/fterrors.h: Use FT2_BUILD_LIBRARY to guard
	undefinition of FT_ERR_PREFIX

	* src/gxvalid/gxverror.h, src/otvalid/otverror.h,
	src/sfnt/sferrors.h: Updated.

2013-03-11  Werner Lemberg  <wl@gnu.org>

	[gxvalid] Fix module error.

	* src/gxvalid/gxverror.h (FT_ERR_BASE): Define as
	FT_Mod_Err_GXvalid.
	* include/freetype/ftmoderr.h: Add module error for `GXvalid'.

2013-03-11  Werner Lemberg  <wl@gnu.org>

	Always use module related error codes.

	* src/cff/cffobjs.c (cff_face_init), src/type1/t1objs.c
	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Use
	`FT_ERROR_BASE'.

	* src/type1/t1load.c (parse_encoding): Use
	T1_Err_Unknown_File_Format.

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

	[cff] Set `linear{Hori,Vert}Advance' for embedded bitmaps also.

	Problem reported by Khaled Hosny <khaledhosny@eglug.org>.

	* src/cff/cffgload.c (cff_slot_load): Implement it.

2013-02-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix commit ab02d9e8.

	* src/base/ftbbox.c (BBox_Cubic_Check): Change scaling to msb of 22.

2013-02-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] New bisecting BBox_Cubic_Check (disabled).

	* src/base/ftbbox.c (BBox_Cubic_Check): New bisecting algorithm
	for extremum search built around simple condition that defines
	which half contains the extremum.

2013-02-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[tools] Update BBox testing tool.

	* src/tools/test_bbox.c: Add another cubic outline with exact BBox.
	(REPEAT): Increase the number of benchmarking cycles.
	(profile_outline): Tweak output formatting.

2013-02-02  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #38235.

	* builds/unix/configure.raw: Don't generate `freetype-config' and
	`freetype.pc'.

	* builds/unix/unix-def.in (FT2_EXTRA_LIBS, LIBBZ2, LIBZ,
	build_libtool_libs, ft_version): New variables to be substituted.
	(freetype-config, freetype.pc): New rules to generate those files.

	* builds/unix/freetype-config.in: Remove code for handling `rpath'.
	The use of $rpath has been accidentally removed in a patch from
	2009-12-22, and apparently noone has missed it since.
	Use `%' instead of `@' as a variable substitution marker.
	Use quotes.

	* builds/unix/freetype.in: Use `%' instead of `@' as a variable
	substitution marker.
	Use quotes.

2013-02-07  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.c (tt_size_run_prep): Reset more GS variables.

	BTW, Greg agrees that the OpenType specification is missing the list
	of GS variables which will always be reset to the default values
	after the `prep' table has been executed.

2013-02-06  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.c (tt_size_run_prep): Reset reference points.

	Up to now, we simply took a snapshot of the Graphics State after the
	`prep' table has been executed, and right before a glyph's bytecode
	was run it got reloaded.  However, as Greg Hitchcock has told us in
	private communication, reference points get reset to zero in the MS
	rasterizer and we follow in due course.  While reasonable, this is
	undocumented behaviour.

	Most notably, this fixes the rendering of Arial's `x' glyph in
	subpixel hinting mode.

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

	[truetype] A better fix for Savannah bug #38211.

	* src/truetype/ttinterp.c (Ins_IP): Implement identical behaviour to
	MS rasterizer if rp1 == rp2 (confirmed by Greg Hitchcock).

2013-02-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Streamline parsing of PCF encoding table.

	* src/pcf/pcfread.c (pcf_get_encodings): Use simpler double for-loop.
	Reallocate array instead of using temporary storage.

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

	Fix Savannah bug #38227.

	* builds/unix/freetype-config.in: Set LC_ALL.

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

	Fix Savannah bug #38221.

	This complements commit 83c0ebab.

	* src/base/ftcalc.c (FT_MulDiv_No_Round): Don't enclose with
	`TT_USE_BYTECODE_INTERPRETER'.

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

	[truetype] Fix Savannah bug #38211.

	* src/truetype/ttinterp.c (Ins_IP): Make FreeType behave identical
	to other interpreters if rp1 == rp2 (which is invalid).

2013-01-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Small optimization of BBox calculation.

	* src/base/ftbbox.c (BBox_Cubic_Check): Use FT_MSB function in
	scaling algorithm.

2013-01-26  Infinality  <infinality@infinality.net>

	[truetype] Minor formatting fix.

	* src/truetype/ttinterp.c: Updated.
	(DO_RS): Fix indentation.

2013-01-26  Infinality  <infinality@infinality.net>

	[truetype] Fix rasterizer_version logic in sph.

	* src/truetype/ttsubpix.c: Updated.
	(ALWAYS_SKIP_DELTAP_Rules): Remove rule for Trebuchet MS.
	(sph_set_tweaks): Fix `rasterizer_version' logic.

2013-01-26  Infinality  <infinality@infinality.net>

	[truetype] Align more to ClearType whitepaper for sph.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add flags
	for detected opcode patterns and compatibility mode.

	* src/truetype/ttgload.c (tt_loader_init): Complete conditional.

	* src/truetype/ttinterp.c: Updated.
	Remove SPH_DEBUG and replace with FT_TRACE7.
	(DO_RS): More conditions.
	(Ins_FDEF): Add more opcode detection patterns.
	More specific conditions when flagging an fdef.
	Make compatibility mode only turn on when delta fdefs are found.
	(Ins_CALL, Ins_LOOPCALL): Set flags for currently executed fdef.
	(Ins_SHPIX): Remove logic to handle ttfautohinted fonts.
	Simplify conditionals where possible.
	Use `&' instead of `%' operator for dumb compilers.
	(Ins_MIAP): Adjust twilight zone conditional.
	Ensure `ignore_x_mode' is on when testing sph conditionals.
	(Ins_MIRP): Ensure `ignore_x_mode' is on when testing sph
	conditionals.
	Do cvt cutin always when `ignore_x_mode' is active.
	Remove test for ttfautohinted fonts.
	(Ins_DELTAP): Ensure `ignore_x_mode' is on when testing sph
	conditionals.
	Do cvt cutin always when `ignore_x_mode' is active.
	Remove test for ttfautohinted fonts.
	Use `&' instead of `%' operator for dumb compilers.
	(Ins_GETINFO): Remove SPH_DEBUG and replace with FT_TRACE7.

	* src/truetype/ttinterp.h: Updated.
	(TT_ExecContextRec): Remove compatibility_mode variable.
	Add variable to indicate when executing in special fdefs for sph.

	* src/truetype/ttobjs.h: Updated.
	(TT_DefRecord): Add flags to identify special fdefs for sph.
	(TT_SizeRec): Remove unnecessary ttfautohinted variable.

	* src/truetype/ttsubpix.c: Updated.
	(COMPATIBILITY_MODE_Rules): Remove all.  Auto-detected now.
	(PIXEL_HINTING_Rules): Remove all.  Unnecessary after fixes.
	(SKIP_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
	(SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Arial Bold `N'.
	(SKIP_OFFPIXEL_Y_MOVES_Rules): Remove all.  Happens automatically
	now.
	(ROUND_NONPIXEL_Y_MOVES_Rules): Remove Ubuntu.
	(ROUND_NONPIXEL_Y_MOVES_Rules_Exceptions): Remove all.
	(NORMAL_ROUND_Rules): Remove Verdana.
	(NO_DELTAP_AFTER_IUP_Rules): Remove all.
	(sph_set_tweaks): Performance fix.  Don't run prep always.
	Adjust conditional for sph_compatibility_mode.

	* src/truetype/ttsubpix.h: Add new fdef flags for sph.

2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix broken emboldening at small sizes.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to
	normalize zero-length vectors.

2013-01-25  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #38167.

	This fixes commit 83c0ebab from 2012-06-27.

	* src/truetype/ttinterp.h:
	s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.

2013-01-25  Xi Wang  <xi.wang@gmail.com>

	[sfnt] Fix broken pointer overflow checks.

	Many compilers such as gcc and clang optimize away pointer overflow
	checks `p + n < p', because pointer overflow is undefined behavior.
	Use a safe form `n > p_limit - p' instead.

	Also avoid possible integer overflow issues, for example, using
	`num_glyphs > ( p_limit - p ) / 2' rather than `num_glyphs * 2'
	given a large `num_glyphs'.

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Implement it.

2013-01-25  Werner Lemberg  <wl@gnu.org>

	[base] Fix `make multi'.

	* src/base/ftoutln.c, src/base/fttrigon.c: Include
	FT_INTERNAL_CALC_H.

2013-01-25  David 'Digit' Turner  <digit@google.com>

	[truetype] Fix C++ compilation.

	* src/truetype/ttsubpix.h: Updated.
	(SPH_X_SCALING_RULES_SIZE): Moved and renamed to...
	* src/truetype/ttsubpix.c (X_SCALING_RULES_SIZE): This.
	(sph_X_SCALING_Rules): Removed.
	(scale_test_tweak): Make function static.
	(sph_test_tweak_x_scaling): New function.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Updated.

2013-01-23  Werner Lemberg  <wl@gnu.org>

	[base] Make `FT_Hypot' really internal.

	* include/freetype/fttrigon.h (FT_Hypot): Move to...
	* include/freetype/internal/ftcalc.h: This file.

	* src/base/fttrigon.c (FT_Hypot): Move to...
	* src/base/ftcalc.c: This file.
	Include FT_TRIGONOMETRY_H.

	* src/truetype/ttgload.c: Don't include FT_TRIGONOMETRY_H.

2013-01-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Revert change from 2013-01-22.

	FreeType's `height' value is the baseline-to-baseline distance...

	* src/truetype/ttobjs.c (tt_size_reset): Undo.

2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base, truetype] New internal `FT_Hypot' function.

	* include/freetype/fttrigon.h (FT_Hypot): Declare it.
	* src/base/fttrigon.c (FT_Hypot): Define it.
	* src/truetype/ttgload.c (TT_Process_Composite_Component): Use it
	instead of explicit expressions.
	* src/truetype/ttinterp.c (Current_Ratio, Normalize): Use it instead
	of TT_VecLen.
	(TT_VecLen): Removed.

2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix integer overflow.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Normalize incoming and
	outgoing vectors and use fixed point arithmetic.

2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix integer overflow.

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Scale the
	coordinates down to avoid overflow.

2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Split out MSB function.

	* src/base/fttrigon.c (ft_trig_prenorm): Borrow from here.
	* include/freetype/internal/ftcalc.h (FT_MSB): Declare here.
	* src/base/ftcalc.c (FT_MSB): Define here.

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

	[truetype] Fix font height.

	* src/truetype/ttobjs.c (tt_size_reset): The Windows rendering
	engine uses rounded values of the ascender and descender to compute
	the TrueType font height.

2013-01-16  Behdad Esfahbod  <behdad@behdad.org>

	[sfnt] Fix optimized sbit loader.

	It was not taking bit_depth into consideration when blitting!

	* src/sfnt/ttsbit0.c (tt_sbit_decoder_load_byte_aligned,
	* tt_sbit_decoder_load_bit_aligned): Handle bit
	depth.

2013-01-16  David 'Digit' Turner  <digit@google.com>

	[truetype] Improve subpixel code.

	This patches fixes many issues with the ttsubpix implementation.

	1. Data tables are defined, instead of declared, in the header, and
	   thus copied into each source file that includes it.

	2. These tables were defined as global, mutable, visible variables,
	   and thus costing private RAM to every process that loads the
	   library (> 50 KB / process, this is huge!).

	   Additionally, this also made the library export the symbols
	   completely needlessly.

	3. Missing `sph_' and `SPH_' prefixes to some of the definitions.

	Note that this doesn't try to fix the incredibly inefficient storage
	format for the data tables used by the code.  This one will require
	another pass in the future.

	* src/truetype/ttinterp.h (MAX_NAME_SIZE, MAX_CLASS_MEMBERS):
	Renamed to...
	(SPH_MAX_NAME_SIZE, SPH_MAX_CLASS_MEMBERS): This.
	Update all users.

	(SPH_TweakRule, SPH_ScaleRule): Decorate with `const' where
	appropriate.

	(Font_Class): Rename to...
	(SPH_Font_Class): This.  Decorate with `const' where appropriate.

	* src/truetype/ttsubpix.h (scale_test_tweak, sph_test_tweak):
	Decorate arguments with `const' where appropriate.

	Move font tweaking tables to...

	* src/truetype/ttsubpix.c: This file and decorate them with `static'
	and `const' where appropriate.

	(X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to...
	(sph_X_SCALING_Rules, SPH_X_SCALING_RULES_SIZE): This.
	Update all users.

2013-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Improve accuracy of normalization of short vectors.

	Unit vector components are stored as 2.14 fixed-point numbers. In
	order to calculate all 14 bits accurately, a short vector to be
	normalized has to be upscaled to at least 14 bits before its length
	is calculated. This has been safe since accurate CORDIC algorithms
	were adopted.

	* src/truetype/ttinterp.c (Normalize): Scale short vectors by 0x4000.

2013-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Kill very old vector normalization hacks.

	Back in the days, vector length calculations were not very accurate
	and the vector normalization function, Normalize, had to meticulously
	correct the errors for long vectors [commit b7ef2b096867]. It was no
	longer necessary after accurate CORDIC algorithms were adopted, but
	the code remained. It is time to kill it.

	* src/truetype/ttinterp.c (Normalize): Remove error compensation.
	(TT_VecLen): Remove any mention of old less accurate implementation.

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

	Disable FT_CONFIG_OPTION_OLD_INTERNALS.

	After the next release we are going to remove the code completely.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(FT_CONFIG_OPTION_OLD_INTERNALS): Comment out.
	* docs/CHANGES: Document it.

2013-01-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Update the overflow protection bit.

	The recent optimizations of CORDIC iterations drastically reduce the
	expansion factor.  Vector components with MSB of 29 are now safe
	from overflow.

	* src/base/fttrigon.c (FT_TRIG_SAFE_MSB): New macro.
	(ft_trig_prenorm): Use it and remove dead code.

2013-01-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base, pshinter] Use FT_ABS, FT_MIN, and FT_MAX for readability.

	* src/base/ftbbox.c: Updated.
	* src/base/ftobjs.c: Updated.
	* src/base/fttrigon.c: Updated.
	* src/pshinter/pshalgo.c: Updated.
	* src/pshinter/pshrec.c: Updated.

2013-01-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Clean up trigonometric core.

	* src/base/fttrigon.c: Document the algorithm in a large comment.
	(FT_TRIG_COSCALE): Remove macro.
	(FT_Tan: Use `FT_TRIG_SCALE' instead.
	(FT_Cos, FT_Vector_Unit): Ditto and round the return values.

2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Use rounding in CORDIC iterations.

	* src/base/fttrigon.c (ft_trig_pseudo_rotate,
	ft_trig_pseudo_polarize): Improve accuracy by rounding.

2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Reduce trigonometric algorithms.

	After we get within 45 degrees by means of true 90-degree rotations,
	we can remove initial 45-degree CORDIC iteration and start from
	atan(1/2) pseudorotation, reducing expansion factor thereby.

	* src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macros.
	(ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Update.

	* src/tools/cordic.py: Bring up to date with trigonometric core.

	* docs/CHANGES: Old typo.

2013-01-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/pshinter/pshalgo.h: Remove unused code.

2012-12-27  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (tt_loader_init): Add more tracing.

2012-12-23  Werner Lemberg  <wl@gnu.org>

	[type1] Fix handling of /FontBBox in MM fonts.
	Problem reported by Del Merritt <del@alum.mit.edu>

	If we have

	  /FontBBox { { 11 12 13 14 15 16 17 18 }
	              { 21 22 23 24 25 26 27 28 }
	              { 31 32 33 34 35 36 37 38 }
	              { 41 42 43 44 45 46 47 48 } }

	in the /Blend dictionary,  then the first BBox is { 11 21 31 41 },
	the second { 12 22 32 42 }, etc.

	* include/freetype/internal/psaux.h (T1_FieldType): Add
	`T1_FIELD_TYPE_MM_BBOX' (for temporary use).

	* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
	Implement it.

2012-12-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/tools/cordic.py: Bring up to date with trigonometric core.

2012-12-21  Werner Lemberg  <wl@gnu.org>

	Check parameters of `FT_Outline_New'.
	Problem reported by Robin Watts <robin.watts@artifex.com>.

	* src/base/ftoutln.c (FT_Outline_New_Internal): Ensure that
	`numContours' and `numPoints' fit into FT_Outline's `n_points' and
	`n_contours', respectively.

2012-12-20  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.11 released.
	==========================


	Tag sources with `VER-2-4-11'.

	* docs/CHANGES, docs/release: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.11.

	* 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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.10/2.4.11/, s/2410/2411/.

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

	* builds/unix/configure.raw (version_info): Set to 16:0:10.

	* builds/toplevel.mk (dist): Don't include `.mailmap'.

2012-12-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Improve trigonometric core.

	FreeType used to rely on a 24-step iteration CORDIC algorithm to
	calculate trigonometric functions and rotate vectors. It turns out
	that once the vector is in the right half-plane, the initial rotation
	by 63 degrees is not necessary. The algorithm is perfectly capable
	to converge to any angle starting from the second 45 degree rotation.
	This patch removes the first rotation and makes it a 23-step CORDIC
	algorithm.

	* src/base/fttrigon.c (FT_TRIG_SCALE, FT_TRIG_COSCALE): Update macro
	values.
	(ft_trig_pseudo_rotate, ft_trig_pseudo_polarize): Remove initial
	rotation.

2012-12-19  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (ft_property_do): Fix compiler warning.

2012-12-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftrfork.c (FT_Raccess_Guess): Switch to FT_Int counters.

2012-12-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Clean up trigonometric core.

	* src/base/fttrigon.c (ft_trig_pseudo_polarize): Align algorithm
	with `ft_trig_pseudo_rotate'.

2012-12-18  Infinality  <infinality@infinality.net>

	[truetype] Minor performance enhancement.

	* src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Use FT_MulFix
	instead of FT_MulDiv.

2012-12-17  Infinality  <infinality@infinality.net>

	[truetype] Remove unused code and variables.

	* src/truetype/ttinterp.c: Updated.
	(Ins_FDEF): Remove opcode patterns that are not being used.

2012-12-16  Werner Lemberg  <wl@gnu.org>

	Various compiler warning fixes.

	* include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Use
	`logical not' operator instead of negation.  The idea is that `~'
	returns exactly the data type enforced by the cast to a pointer (be
	it 32bit or 64bit or whatever), while a negative integer has not
	this flexibility.
	* src/cache/ftccmap.c (FTC_CMAP_UNKNOWN): Ditto.
	* src/truetype/ttgxvar.c (ALL_POINTS, TT_Get_MM_Var): Ditto.
	* src/type/t1load.c (T1_Get_MM_Var): Ditto.
	(parse_blend_axis_types): Use cast.
	* src/bdf/bdflib.c (_bdf_readstream): Use cast.

2012-12-16  Infinality  <infinality@infinality.net>

	[truetype] Remove unused code and variables.  Add minor fixes.

	* src/truetype/ttsubpix.h: Updated.
	(SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Trebuchet MS.
	(ALLOW_X_DMOVEX_Rules): Remove Arial characters.
	(ALLOW_X_DMOVE_Rules): Remove Arial characters.
	(RASTERIZER_35_Rules): Verdana no longer needs to be here.
	(SKIP_IUP_Rules): Formatting fix.
	(DELTAP_SKIP_EXAGGERATED_VALUES_Rules): Remove Segoe UI.
	(COMPATIBLE_WIDTHS_Rules): Add Monaco and Trebuchet MS.
	(X_SCALING_Rules): Add misc. corrective fixes.

	* src/truetype/ttgload.c: (TT_Process_Simple_Glyph): Adjust correction
	factor for emboldening during scaling.

	* src/truetype/ttinterp.h: Updated.
	(TT_ExecContextRec): Remove unused variables.

	* src/truetype/ttobjs.h: Updated.
	(TT_SizeRec): Add ttfautohinted variable.

	* src/truetype/ttinterp.c: Updated.
	(Ins_FDEF): Rework code to fix bugs and add more detection.
	(Ins_CALL): Remove unused code.
	(Ins_LOOPCALL): Remove unused code.
	(TT_RunIns): Remove unused code.
	(Ins_SHPIX): Add logic to handle ttfautohinted fonts.
	(Ins_MIRP): Don't round x in cut-in calculation.  Add logic to handle
	ttfautohinted fonts.

2012-12-16  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #37936.

	* src/sfnt/ttload.c (tt_face_load_gasp): Avoid memory leak.

2012-12-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix 11-year old bug.

	Since the initial commit (ebe85f59) the value of FT_TRIG_SCALE has
	always been slightly less than the correct value, which has been
	given in the comment as a hexadecimal. As a result, vector lengths
	were underestimated and rotated vectors were shortened.

	* src/base/fttrigon.c (FT_TRIG_SCALE): Fix macro value.

2012-12-15  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #37907.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
	negative second parameter of `ENCODING' field also.

2012-12-15  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #37906.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Use correct array
	size for checking `glyph_enc'.

2012-12-15  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #37905.

	* src/bdf/bdflib.c (_bdf_parse_start) <STARTPROPERTIES>: Reset
	`props_size' to zero in case of allocation error; this value gets
	used in a loop in `bdf_free_font'.

2012-12-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Scale F_dot_P down.

	The dot product between freeVector and projVector or cosine of
	the angle between these FT_F2Dot14 unit vectors used to be scaled up
	by 4 and routinely occupied 32 bits in an FT_Long field F_dot_P.
	This patch scales the value down by 2^14 instead, which simplifies
	its use throughout the bytecode interpreter.

	This does not lead to the loss of precision because the lower bits
	are unreliable anyway. Consider two unit vectors (1,0) and (.6,.8)
	for which the true value of F_dot_P is .6 * 0x40000000 = 0x26666666.
	These vectors are stored as (0x4000,0) and (0x2666,0x3333) after
	rounding and F_dot_P is assigned 0x26660000. The lower bits were
	already lost while rounding the unit vector components.

	Besides code simplification, this change can lead to better
	performance when FT_MulDiv with the scaled-down F_dot_P is less
	likely to use the costly 64-bit path. We are not changing the type
	of F_dot_P to FT_F2Dot14 at this point.

	* src/truetype/ttinterp.c (Compute_Funcs): Scale F_dot_P down by 14
	bits and modify its use accordingly.
	(Direct_Move, Direct_Move_Orig, Compute_Point_Displacement): Modify
	the use of F_dot_P field.
	* src/truetype/ttobjs.c (tt_size_run_fpgm): Change arbitrary
	assignment of F_dot_P to its theoretical maximum in case we decide
	to scale back its type later.

2012-12-09  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>

	[type1] Another fix for 2012-09-17 commit.

	* src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
	`limit' value.

2012-12-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Tweak the previous commit.

	* src/truetype/ttinterp.c (Current_Ratio): Put unit vector
	components as the second TT_MulFix14 arguments. This is required
	on 16-bit systems.

2012-12-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Microoptimizations in bytecode interpreter.

	* src/truetype/ttinterp.c (TT_DivFix14): New macro.
	(Normalize): Use it here.
	(Current_Ratio): Use TT_MulFix14 instead of FT_MulDiv.
	(Ins_SHPIX): Cancel out two TT_MulFix14 calls.

2012-12-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Cosmetic improvement in bytecode interpreter.

	* src/truetype/ttinterp.c: Use explicit calls to FT_MulDiv,
	FT_MulFix, and FT_DivFix instead of macros.

2012-12-03  John Tytgat  <John.Tytgat@esko.com>

	[pshinter] Clamp BlueScale value.

	This is Savannah bug #37856.

	* src/pshinter/pshglob.c (psh_calc_max_height): New function.
	(psh_globals_new): Use it to limit BlueScale value to
	`1 / max_of_blue_zone_heights'.

2012-12-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype, type1] Revise the use of FT_MulDiv.

	* src/truetype/ttgxvar.c: Updated.
	* src/truetype/ttobjs.c: Updated.
	* src/type1/t1load.c: Updated.

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

	[configure] Preserve customized `ftoption.h'.

	Problem reported by Del Merritt <del@alum.mit.edu>.

	* builds/unix/configure.raw <cpp computation of bit length>: Don't
	remove existing FreeType configuration files.

2012-11-29  John Tytgat  <John.Tytgat@esko.com>

	[type1] Fix Savannah bug #37831.

	The bug report also contains a patch.

	* src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Really fix
	change from 2012-09-17.

2012-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Fix formatting and typo.

2012-11-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cid, type1, type42] Clean up units_per_EM calculations.

	* src/cid/cidload.c (cid_parse_font_matrix): Updated.
	* src/type1/t1load.c (t1_parse_font_matrix): Updated.
	* src/type42/t42parse.c (t42_parse_font_matrix): Updated.

2012-11-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftstroke] Minor improvement.

	* src/base/ftstroke.c: Replace nested FT_DivFix and FT_MulFix with
	FT_MulDiv.

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

	* src/base/fttrigon.c (ft_trig_downscale): Make 64bit version work.

2012-11-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix integer overflows in dd5718c7d67a.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Use FT_MulDiv.

2012-11-15  Werner Lemberg  <wl@gnu.org>

	[autofit] Trace stem widths.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Add some
	FT_TRACE calls.

2012-11-13  Werner Lemberg  <wl@gnu.org>

	[cff] Add support for OpenType Collections (OTC).

	* src/cff/cffload.c (cff_font_load): Separate subfont and face
	index handling to load both pure CFFs with multiple subfonts and
	OTCs (with multiple faces where each face holds exactly one
	subfont).
	* src/cff/cffobjs.c (cff_face_init): Updated.

2012-11-12  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor improvement.

	* src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Fix
	loop.

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

	[autofit] Improve tracing.

	* src/autofit/aflatin.c (af_latin_hint_edges)
	[FT_DEBUG_LEVEL_TRACE]: Count number of actions and emit something
	if there weren't any.

2012-11-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fortify emboldening code against egregious distortions.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Threshold emboldening
	strength when it leads to segment collapse.

2012-11-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Clean up emboldening code and improve comments there.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Replace sequential
	calls to FT_MulFix and FT_DivFix with FT_MulDiv.
	Mention that bisectors are used to figure out the shift direction.

2012-10-24  Werner Lemberg  <wl@gnu.org>

	[autofit] Add standard character to `AF_ScriptClassRec' structure.

	* src/autofit/aftypes.h (AF_ScriptClassRec): Add `standard_char'
	member.
	(AF_DEFINE_SCRIPT_CLASS): Updated.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Use it.
	(af_latin_metrics_init, af_latin_script_class): Updated.

	* src/autofit/aflatin.c (af_latin2_metrics_init_widths): Use it.
	(af_latin2_metrics_init, af_latin2_script_class): Updated.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths): Use it.
	(af_cjk_metrics_init, af_cjk_script_class): Updated.

	* src/autofit/afindic.c (af_indic_metrics_init,
	af_indic_script_class): Updated.

	* src/autofit/afcjk.h, src/autofit/aflatin.h: Updated.

	* src/autofit/afdummy.c: Updated.

2012-10-24  Werner Lemberg  <wl@gnu.org>

	[autofit] Only use Unicode CMap.

	* src/autofit/aflatin.c (af_latin_metrics_init): Implement it, to be
	in sync with `af_face_globals_compute_script_coverage'.

2012-10-21  Werner Lemberg  <wl@gnu.org>

	[psaux] Improve parsing of invalid numbers.

	* src/psaux/psconv.c (PS_Conv_Strtol): Always parse complete number,
	even in case of overflow.
	(PS_Conv_ToInt): Only increase cursor if parsing was successful.
	(PS_Conv_ToFixed): Ditto.
	Trace underflow and data error.

2012-10-21  Werner Lemberg  <wl@gnu.org>

	[smooth] Improve tracing.

	* src/smooth/ftgrays.c (gray_sweep): Trace last sweep line of
	current band also.

2012-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Cheaper way to threshold angles between vectors.

	* src/truetype/ttinterp.c (Ins_ISECT): Thresholding tangent is a lot
	cheaper than thresholding sine.

2012-10-20  Werner Lemberg  <wl@gnu.org>

	[cff] Improve parsing of invalid real numbers.

	* src/cff/cffparse.c (cff_parse_real): Always parse complete number,
	even in case of overflow or underflow.
	Also trace one more underflow.

2012-10-20  Andreas Pehnack  <andreas.pehnack@me.com>

	[sfnt] Load pure CFF fonts wrapped in SFNT container.

	Such fonts only have a `cmap' and a `CFF' table.

	* src/sfnt/ttload.c (tt_face_load_font_dir): Don't call
	`check_table_dir' if font signature is `OTTO'.

2012-10-20  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix some value overflows and improve tracing.

	* src/psaux/psconv.c: Include FT_INTERNAL_DEBUG_H.
	(FT_COMPONENT): Define.
	(PS_Conv_Strtol): Return FT_Long.
	Handle bad data and overflow.
	Emit some tracing messages in case of error.
	(PS_Conv_ToInt): Return FT_Long.
	(PS_Conv_ToFixed): Updated.
	* src/psaux/psconv.h: Updated.

	* include/freetype/internal/fttrace.h: Add `psconv'.

2012-10-20  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix `make multi CC=c++'.

	* src/autofit/aflatin.c, src/autofit/aflatin2.c: Include
	`afglobal.h'.
	* src/autofit/afloader.c: Fix order of header files.
	* src/autofit/afmodule.c: Include `afglobal.h' and `aferrors.h'.

2012-10-19  Werner Lemberg  <wl@gnu.org>

	[cff] Fix more value errors and improve tracing.

	* src/cff/cffparse.c (cff_parse_integer): Emit tracing message in
	case of error.
	(cff_parse_real): Handle and trace overflow, underflow, and bad data
	consistently.
	(do_fixed): New helper function, handling and tracing overflow.
	(cff_parse_fixed, cff_parse_fixed_scaled): Use `do_fixed'.

2012-10-17  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix some value overflows.

	* src/psaux/psconv.c (PS_Conv_ToFixed): Implement it.

2012-10-17  Bram Tassyns  <BramT@enfocus.com>

	[cff] Fix value overflow.

	* src/cff/cffparse.c (cff_parse_fixed_scaled): Implement it.

2012-10-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #37572.

	* src/truetype/ttinterp.c (Ins_ISECT): Use angle between vectors to
	avoid grazing intersections.  The previous threshold was too coarse,
	incorrectly rejecting short but valid vectors.

2012-09-30  Gilles Espinasse  <g.esp@free.fr>

	Remove useless `rm' detection.

	`rm -f' is directly used in the `configure' script created by
	autoconf, thus no availability test is necessary.

	* builds/unix/configure.raw (RMF): Remove test.
	* builds/unix/unix-def.in (DELETE): Updated.

2012-09-29  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor optimization.

	* src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
	Add loop condition.

2012-09-29  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix thinko.

	* src/autofit/aftypes.h (AF_SCRIPT):
	s/AF_SCRIPT_NONE/AF_SCRIPT_DUMMY/.  We already use `AF_SCRIPT_NONE'
	as a bit mask.

	* src/autofit/afdummy.c: Updated.

2012-09-18  Werner Lemberg  <wl@gnu.org>

	[autofit] Implement `increase-x-height' property.

	* include/freetype/ftautoh.h (FT_Prop_IncreaseXHeight): New
	structure.

	* include/autofit/afmodule.c (af_property_get_face_globals): New
	function, re-using code from `af_property_get'.
	(af_property_set, af_property_get): Handle `increase-x-height'.
	Updated.

2012-09-18  Werner Lemberg  <wl@gnu.org>

	[autofit] Implement Infinality's `increase glyph heights'.

	This is an improved version of a similar fix contained in the
	so-called `Infinality patch', taken from

	  http://www.infinality.net/fedora/linux/zips/freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2

	which addresses various enhancements of the auto-hinter.  Without
	properties to control a module's metadata it wasn't possible to
	adapt the patches because everything was originally controlled by
	environment variables which I consider not suitable in general.

	A patch to control `increase_x_height' follows.

	* src/autofit/afglobal.h (AF_PROP_INCREASE_X_HEIGHT_MIN,
	AF_PROP_INCREASE_X_HEIGHT_MAX): New macros.
	(AF_FaceGlobalsRec): Add `increase_x_height' member.
	* src/autofit/afglobal.c (af_face_globals_new): Initialize it.

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim),
	* src/autofit/aflatin2.c (af_latin2_metrics_scale_dim): Implement
	handling of `increase_x_height'.

2012-09-18  Werner Lemberg  <wl@gnu.org>

	[autofit] Add hierarchical property access to some structures.

	* src/autofit/afglobal.h: Include `afmodule.h'.
	(AF_FaceGlobalsRec): Add `module' member.
	(AF_FaceGlobals): Typedef moved to...
	* src/autofit/aftypes.h: Here.
	(AF_ScriptMetricsRec): Add `globals' member.

	* src/autofit/afglobal.c (af_face_globals_new,
	af_face_globals_compute_script_coverage,
	af_face_globals_get_metrics): Updated.

	* src/autofit/afloader.c (af_loader_reset), src/autofit/afmodule.c
	(af_property_get): Updated.

2012-09-17  Werner Lemberg  <wl@gnu.org>

	[type1] Fix Savannah bug #37350.

	* src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Check for ASCII
	storage only if we actually have at least four bytes.

2012-09-15  Werner Lemberg  <wl@gnu.org>

	[autofit] Implement `fallback-script' property.

	* src/autofit/afglobal.c: s/default_script/fallback_script/.
	* src/autofit/afglobal.h: s/AF_SCRIPT_DEFAULT/AF_SCRIPT_FALLBACK/.

	* src/autofit/afmodule.c: s/default_script/fallback_script/.
	(af_property_set, af_property_get): Implement `fallback-script'.
	* src/autofit/afmodule.h: s/default_script/fallback_script/.

	* include/freetype/ftautoh.h: Document it.

2012-09-15  Werner Lemberg  <wl@gnu.org>

	[autofit] Correct previous Unicode 6.1.0 change.

	The auto-hinter's latin module only handles latin ligatures in the
	`Alphabetical Presentation Forms' block.

	* src/autofit/aflatin.c (af_latin_uniranges): Fix it.

2012-09-15  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afmodule.c: s/FT_Err_/AF_Err_/.

2012-09-15  Werner Lemberg  <wl@gnu.org>

	[autofit] Make default script a global property.

	* src/autofit/afmodule.h (AF_ModuleRec): Add `default_script' field.

	* src/autofit/afglobal.c (af_face_globals_compute_script_coverage,
	af_face_globals_new), src/autofit/afloader.c (af_loader_reset),
	src/autofit/afmodule.c (af_property_get) <glyph-to-script-map>,
	af_autofitter_init:
	Handle default script.

	* src/autofit/afglobal.h: Updated.

2012-09-15  Werner Lemberg  <wl@gnu.org>

	Use `FT_Module' instead of `FT_Library' argument in property funcs.

	This internal change simplifies access to global module data.

	* include/freetype/internal/services/svprop.h
	(FT_Properties_SetFunc, FT_Properties_GetFunc): Change accordingly.

	* src/base/ftobjs.c (ft_property_do), src/autofit/afmodule.c
	(af_property_set, af_property_get): Updated.

2012-09-14  Werner Lemberg  <wl@gnu.org>

	[autofit] Update to Unicode 6.1.0.

	* src/autofit/afcjk.c (af_cjk_uniranges), src/autofit/aflatin.c
	(af_latin_uniranges): Add and fix ranges.

2012-09-14  Werner Lemberg  <wl@gnu.org>

	[autofit] Pass `AF_Module' instead of `AF_Loader'.

	We want to access the (not yet existing) module's global data later
	on.

	* src/autofit/afloader.c: Include `afmodule.h'.
	(af_loader_init, af_loader_reset, af_loader_done,
	af_loader_load_glyph): Change accordingly.
	* src/autofit/afmodule.c (AF_ModuleRec): Move to `afmodule.h'.
	Updated.

	* src/autofit/afmodule.h: Include `afloader.h'.
	(AF_ModuleRec): Define here.
	* src/autofit/afloader.h (AF_Module): Define here.
	Updated.

2012-09-14  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix `make multi'.

	* include/freetype/internal/fttrace.h: Add `afmodule'.
	* src/autofit/afmodule.c: Include FT_INTERNAL_DEBUG_H.
	(FT_COMPONENT): Define.

2012-09-14  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afmodule.c: s/FT_Autofitter/AF_Module/.

2012-09-12  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor reorganization.

	* src/autofit/afglobal.c (AF_SCRIPT_LIST_DEFAULT,
	AF_SCRIPT_LIST_NONE, AF_DIGIT): Move to...
	* src/autofit/afglobal.h (AF_SCRIPT_DEFAULT, AF_SCRIPT_LIST_NONE,
	AF_DIGIT): This and update code.

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

	[autofit] Implement `glyph-to-script-map' property.

	* include/freetype/ftautoh.h: New public header file.
	* include/freetype/config/ftheader.h (FT_AUTOHINTER_H): New macro.

	* src/autofit/afglobal.c (AF_FaceGlobalsRec): Move structure to...
	* src/autofit/afglobal.h: This header file.
	* src/autofit/afmodule.c: Include FT_AUTOHINTER_H.
	(af_property_get): Handle `glyph-to-script-map'.

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

	[autofit] Implement properties service framework.

	No properties are added yet.

	* src/autofit/afmodule.c: Include FT_SERVICE_PROPERTIES_H.
	(af_property_set, af_property_get): New dummy functions.
	(af_service_properties, af_services, af_get_interface): Provide
	service setup.
	(autofit_moduleclass): Add service interface.

	* src/autofit/afpic.c: Add necessary forward declarations.
	(autofit_module_class_pic_init): Add code for service addition.
	(autofit_module_pic_free): Add code for service removal.
	* src/autofit/afpic.h (AF_SERVICES_GET, AF_SERVICE_PROPERTIES_GET):
	New macros which provide necessary syntactical sugar for PIC
	support.

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

	Implement properties to control FreeType modules.

	* include/freetype/fterrdef.h (FT_Err_Missing_Property): New error
	code.
	* include/freetype/ftmodapi.h (FT_Property_Set, FT_Property_Get):
	New API.

	* include/freetype/internal/services/svprop.h: New file.
	* include/freetype/internal/ftserv.h (FT_SERVICE_PROPERTIES_H): New
	macro.

	* src/base/ftobjs.c: Include FT_SERVICE_PROPERTIES_H.
	(ft_property_do, FT_Property_Set, FT_Property_Get): New functions.

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

	[docmaker] Allow `-' in tags and identifiers.

	* src/tools/docmaker/content.py (re_identifier),
	src/tools/docmaker/sources.py (re_markup_tag1, re_markup_tag2,
	re_crossref): Add `-' in patterns.

2012-08-27  Werner Lemberg  <wl@gnu.org>

	[FT_CONFIG_OPTION_PIC] Fix g++ 4.6.2 compiler warnings.

	* include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER),
	include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
	FT_DEFINE_MODULE), include/freetype/internal/ftserv.h
	(FT_DEFINE_SERVICEDESCREC1, FT_DEFINE_SERVICEDESCREC2,
	FT_DEFINE_SERVICEDESCREC3, FT_DEFINE_SERVICEDESCREC4,
	FT_DEFINE_SERVICEDESCREC5, FT_DEFINE_SERVICEDESCREC6),
	src/autofit/afpic.c (autofit_module_class_pic_init),
	src/base/basepic.c (ft_base_pic_init), src/base/ftinit.c
	(ft_create_default_module_classes), src/cff/cffparse.c
	(FT_Create_Class_cff_field_handlers), src/cff/cffpic.c
	(cff_driver_class_pic_init), src/pshinter/pshpic.c
	(pshinter_module_class_pic_init), src/psnames/pspic.c
	(psnames_module_class_pic_init), src/raster/rastpic.c
	(ft_raster1_renderer_class_pic_init), src/sfnt/sfntpic.c
	(sfnt_module_class_pic_init), src/sfnt/ttcmap.c
	(FT_Create_Class_tt_cmap_classes), src/smooth/ftspic.c
	(ft_smooth_renderer_class_pic_init), src/truetype/ttpic.c
	(tt_driver_class_pic_init): Initialize allocation variable.

2012-08-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix compilation warning.

	* src/truetype/ttgload.c (IS_HINTED): Move macro to...
	* src/truetype/ttobjs.h: This header file.

2012-08-27  Werner Lemberg  <wl@gnu.org>

	[autofit, cff, pshinter, psnames] More renamings for orthogonality.

	* src/autofit/afmodule.c, src/autofit/afpic.h:
	s/AF_AUTOFITTER_/AF_/.

	* src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffparse.c,
	src/cff/cffpic.h: s/FT_CFF_/CFF_/.

	* src/pshinter/pshmod.c, src/pshinter/pshpic.h:
	s/FT_PSHINTER_/PSHINTER_/.

	* src/psnames/psmodule.c, src/psnames/pspic.h:
	s/FT_PSCMAPS/PSCMAPS_/.

2012-08-27  Werner Lemberg  <wl@gnu.org>

	[sfnt, truetype] More renamings for orthogonality.

	* src/sfnt/sfdriver.c, src/sfnt/sfntpic.h, src/sfnt/ttcmap.c,
	src/truetype/ttdriver.c, src/truetype/ttpic.h: s/FT_SFNT_/SFNT_/,
	s/FT_TT_/TT_/, s/GET_CMAP_INFO_GET/CMAP_INFO_GET/.

2012-08-27  Werner Lemberg  <wl@gnu.org>

	[autofit] Some macro and variable renamings for orthogonality.

	* include/freetype/internal/autohint.h, src/base/ftobjs.c,
	src/autofit/afmodule.c, src/autofit/afpic.c, src/autofit/afpic.h:
	s/SERVICE/INTERFACE/, s/service/interface/, s/Service/Interface/.

2012-08-26  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #37178.

	* src/base/ftobjs.c (FT_Open_Face): Initialize `error' with
	`FT_Err_Missing_Module' before loop to indicate `no valid drivers'.

2012-08-17  Werner Lemberg  <wl@gnu.org>

	* src/base/ftsynth.c (FT_GlyphSlot_Oblique): Fix shear angle.

	The old value was far too large (more than 20°).  The new one
	corresponds to 12°, quite common in typography.

2012-08-12  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix Savannah bug #37017.

	* src/smooth/ftgrays.c (gray_render_cubic): Use a different set of
	checks when detecting super curvy splines to be split.

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

	[autofit] Improve recognition of flat segments.

	Problem reported by Brad Dunzer <BDunzer@extensis.com>.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): We have
	a flat segment if the horizontal distance of best on-points is
	larger than a given threshold.

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

	[autofit] Variable renamings.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Replace
	`glyph' with `outline'.
	s/best_first/best_contour_first/.
	s/best_last/best_contour_last/.

2012-07-31  Werner Lemberg  <wl@gnu.org>

	[type1] Fix Savannah bug #37000.

	* src/type1/t1load.c (parse_encoding): Fix order of checks.

2012-07-17  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix Savannah bug #36833.

	* src/psaux/t1decode.c (t1operator_seac): `seac' is not a valid
	operator if we want metrics only.

2012-07-16  Werner Lemberg  <wl@gnu.org>

	[type1] Fix Savannah bug #36832.

	* src/type1/t1load.c (parse_charstrings): Reject negative number of
	glyphs.

2012-07-13  Werner Lemberg  <wl@gnu.org>

	[type1] Fix Savannah bug #36829.

	* src/type1/t1load.c (parse_encoding): Check cursor position after
	call to T1_Skip_PS_Token.

2012-07-12  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Revert the last commit 45337b07.

	* src/base/ftstroke.c (FT_Stroker_New): Revert the previous change.

2012-07-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftstroke] Fix uninitialized return value.

	* src/base/ftstroke.c (FT_Stroker_New): Return FT_Err_Ok instead.

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

	[smooth] Avoid memory leak in case of failure.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Use flags to
	indicate what to clean up after finishing the function, with and
	without errors.

2012-07-09  Werner Lemberg  <wl@gnu.org>

	Fix compilation with MSVC 5.0.

	Problem reported by Peter Breitenlohner and Akira Kakuto.

	* include/freetype/config/ftstdlib.h (ft_setjmp): Updated.
	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove cast.

2012-07-09  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve debugging messages; do some code cleanup.

	* src/autofit/aflatin.c (af_latin_align_linked_edge,
	af_latin_hint_edges): Synchronize with formatting used in the
	ttfautohint project.

2012-07-07  Gilles Espinasse  <g.esp@free.fr>

	Fix strict-aliasing warning.

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Avoid double cast.

2012-07-07  Dave Thomas  <dave.thomas@metaforic.com>

	[ARM] Fix FT_MulFix_arm.

	* include/freetype/config/ftconfig.h (FT_MulFix_arm) [__arm__]:
	Avoid ADDS instruction to clobber condition codes.

2012-07-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Do some code cleanup.

	* src/autofit/afglobal.c (af_face_globals_new): Simplify.

	* src/autofit/afhints.c: Use `FT_TRACE7' instead of `printf'
	everywhere.
	(FT_COMPONENT): New macro.
	(af_glyph_hints_done): Simplify.

	* include/freetype/internal/fttrace.h: Updated.

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

	[autofit] Improve output of debugging information.

	* src/autofit/afhints.c (af_glyph_hints_dump_segments): Print more
	data; report no data.
	(af_glyph_hints_dump_edges): Report no data.

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

	[autofit] Fix Savannah bug #36091.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues),
	src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Change the
	constraint for testing round vs. flat segment: Accept either a
	small distance or a small angle.

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

	[autofit] Beautify blue zone tracing.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues),
	src/autofit/aflatin2.c (af_latin2_metrics_init_blues): Implement it.

2012-07-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Quantize stem widths.

	* src/autofit/afangles.c (af_sort_widths): Rename to...
	(af_sort_and_quantize_widths): This.
	Add code to avoid stem widths which are almost identical.
	* src/autofit/aftypes.h, src/autofit/aflatin.c, src/autofit/afcjk.c:
	Updated.

2012-07-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor speed-up.

	* src/autofit/afangles (af_sort_pos, af_sort_widths): Don't swap
	elements if they are equal.

2012-06-30  Gilles Espinasse  <g.esp@free.fr>

	Fix `checking if gcc static flag -static works' test.

	On my linux build tree, I receive yes answer in every package I
	build except FreeType for this test checking if gcc static flag
	`-static' works

	In FreeType, no is received, unless bzip2 and zlib are disabled using

	  ./configure --without-bzip2 --without-zlib

	The reason is that bzip2 and zlib tests add `-lz' and `-lbz2' to
	LDFLAGS and this broke static flag test.

	* builds/unix/configure.raw: Update CFLAGS and LDFLAGS only after
	LT_INIT has run.

2012-06-28  Infinality  <infinality@infinality.net>

	[truetype] Fix various artifacts.

	Verdana was broken in the original Infinality commit.  Also
	includes other minor fixes.

	* src/truetype/ttsubpix.h: Updated.  Removed unused macros.
	(RASTERIZER_35_Rules): Add Verdana.
	(SKIP_NONPIXEL_Y_MOVES_Rules): Add Tahoma `s'.
	(MIRP_CVT_ZERO_Rules): Remove Verdana.
	(ALWAYS_SKIP_DELTAP_Rules): Add Russian char 0x438.
	(COMPATIBLE_WIDTHS_Rules): Rearrange some rules.
	(X_SCALING_Rules): Adjust Verdana `a' at 12 and 13 ppem.

	* src/truetype/ttsubpix.c: Updated.
	(sph_set_tweaks): Re-execute fpgm always.

2012-06-28  Gilles Espinasse  <g.esp@free.fr>

	Fix CFLAGS and LDFLAGS share configure test.

	* builds/unix/configure.raw: Fix typo.

2012-06-28  Werner Lemberg  <wl@gnu.org>

	[truetype] Set the `subpixel_positioned' flag unconditionally.

	This is how the code currently behaves.

	* src/truetype/ttgload.c (tt_loader_init): Do it.

2012-06-27  Werner Lemberg  <wl@gnu.org>

	Fix conditional compilation.

	* src/base/basepic.c: Use FT_CONFIG_OPTION_MAC_FONTS.

2012-06-27  Werner Lemberg  <wl@gnu.org>

	Fix conditional compilation.

	* include/freetype/internal/ftcalc.h (FT_MulDiv_No_Round): Don't
	enclose with `TT_USE_BYTECODE_INTERPRETER'; we now need the function
	elsewhere also.

	* src/autofit/afcjk.h: Use AF_CONFIG_OPTION_CJK.

	* src/truetype/ttgload.c (tt_loader_init): Fix compiler warning.

	* src/truetype/ttinterp.c (Ins_MSIRP): Fix compiler warning.

	* src/truetype/ttinterp.h: Use
	TT_CONFIG_OPTION_BYTECODE_INTERPRETER.

2012-06-26  Infinality  <infinality@infinality.net>

	[truetype] Remove unused rounding functionality.

	The subpixel hinting patch contained the concept of an adjustable
	number of gridlines per pixel.  This is no longer used due to x
	being completely ignored instead.  This will return some of the
	code to its existing state prior to the original Infinality
	commit.

	* include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
	FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): Removed.

	* src/truetype/ttinterp.c: Updated.
	(Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
	Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
	SetSuperRound): Remove parameter to handle the number of grid lines per
	pixel.
	(SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
	(DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
	(DO_ROUND, DO_NROUND): Updated.
	(Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
	Ins_MDRP, Ins_MIRP): Perform Round_None instead of calling a modified
	rounding function.  Remove gridlines_per_pixel.  Create a local
	variable to store control value cutin. Simplify the conditional for
	ignore_x_mode.  Adjust rounding calls to pass only two values.

2012-06-25  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #36705.

	Handle numbers like 2.001 correctly.

	* src/cff/cffparse.c (cff_parse_real): Avoid negative values for
	`shift'.

2012-06-18  Infinality  <infinality@infinality.net>

	[truetype] Support subpixel hinting.

	This is the large, famous `Infinality' patch to support ClearType
	bytecode which has been available from
	http://www.infinality.net/blog/ for some time, and which has been
	refined over the last years.  While still experimental, it is now
	mature enough to be included directly into FreeType.

	Most of the code is based on the ClearType whitepaper written by
	Greg Hitchcock

	  https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx

	which gives a detailed overview of the necessary changes to the
	Microsoft rasterizer so that older fonts are supported.  However, a
	lot of details are still missing, and this patches provides a
	framework to easily handle rendering issues down to the glyph level
	of certain fonts.

	Note that ClearType support is not completely implemented!  In
	particular, full support for the options `compatible_widths',
	`symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
	instruction) is missing.

	* src/truetype/ttsubpix.c: New file, providing code to handle
	`tweaks', this is, rules for certain glyphs in certain fonts
	(including wildcards) which need a special treatment.

	* src/truetype/ttsubpix.h: New file, holding the tweaking rules.

	* include/freetype/config/ftoption.h, src/devel/ftoption.h
	(TT_CONFIG_OPTION_SUBPIXEL_HINTING): New macro.

	* include/freetype/internal/ftobjs.h (FT_PIX_FLOOR_GRID,
	FT_PIX_ROUND_GRID, FT_PIX_CEIL_GRID): New macros.

	* src/truetype/truetype.c [TT_USE_BYTECODE_INTERPRETER]: Include
	`ttsubpix.c'.

	* src/truetype/ttgload.c: Include `ttsubpix.h'.
	[All changes below are guarded by TT_CONFIG_OPTION_SUBPIXEL_HINTING.]

	(tt_get_metrics): Set tweak flags.
	(TT_Hint_Glyph): Call `FT_Outline_EmboldenXY' if necessary.
	(TT_Process_Simple_Glyph): Compensate emboldening if necessary.
	(compute_glyph_metrics): Handle `compatible widths' option.
	(tt_loader_init): Handle ClearType GETINFO information bits.

	* src/truetype/rules.mk (TT_DRV_SRC): Updated.

	* src/truetype/ttinterp.c: Include `ttsubpix.h'.
	[Where necessary, changes below are guarded by
	TT_CONFIG_OPTION_SUBPIXEL_HINTING.]

	(Direct_Move, Direct_Move_X): Extended.
	(Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid,
	Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, Round_Super_45,
	SetSuperRound): Add parameter to handle the number of grid lines per
	pixel.
	(SET_SuperRound, ROUND_None, CUR_Func_round): Updated.
	(DO_SROUND, DOS45ROUND, DO_ODD, DO_EVEN): Updated.
	(DO_ROUND, DO_NROUND): Updated.
	(DO_RS): Take care of `Typeman' bytecode patterns.
	(Ins_FDEF): Add some debugging code.  Commented out.
	(Ins_ENDF): Restore state.
	(Ins_CALL, Ins_LOOPCALL): Handle inline delta functions.
	(Ins_MD): Handle `Vacuform' rounds.
	(Move_Zp2_Point, Ins_SHPIX, Ins_MSIRP, Ins_MDAP, Ins_MIAP,
	Ins_MDRP, Ins_MIRP): Handle tweaks.
	(Ins_ALIGNRP): Add tweak guard.
	(Ins_IUP, Ins_DELTAP): Handle tweaks.
	(Ins_GETINFO): Handle new ClearType bits.
	(TT_RunIns): Handle tweaks.

	* src/truetype/ttinterp.h: Updated.
	(SPH_TweakRule, SPH_ScaleRule): New structures for tweaks.
	(TT_ExecContextRec): Add members for subpixel hinting support.

	* src/truetype/ttobjs.h (TT_DefRecord): Add `inline_delta' member.

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

	* Version 2.4.10 released.
	=========================


	Tag sources with `VER-2-4-10'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.10.

	* 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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.9/2.4.10/, s/249/2410/.

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

	* builds/unix/configure.raw (version_info): Set to 15:0:9.

2012-06-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing.

	* docs/CHANGES: Updated.

2012-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS.

	to pass special compiler/linker flags under cross development.
	Suggested by Savannah bug #36367.

	ChangeLog on 2010-07-15 saying as they were removed was wrong
	for the official trunk of FreeType2.  This commit is the first
	introduction of them.

2012-06-14  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2012-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Add new versions of NEC FA family to tricky font list.

	NEC FA family dated in 1996 have different checksum.
	Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>; see

	  https://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html

	* src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets
	of fpgm & prep table checksums for FA-Gothic, FA-Minchou,
	FA-RoundedGothicM, FA-RoundedGothicB are added.  The family
	names in sample PDF are truncated, thus the list of the
	family names in tt_check_trickyness_family() is not updated yet.

2012-06-06  Werner Lemberg  <wl@gnu.org>

	[ftraster] Fix rounding issue causing visual artifacts.

	Problem reported by jola <hans-jochen.lau@lhsystems.com>; see

	  https://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html

	* src/raster/ftraster.c (SMulDiv_No_Round): New macro.
	(Line_Up): Use it.
	* src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'.

2012-05-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify.

	We now use the cross product of the direction vectors to compute the
	outline's orientation.

2012-05-28  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2012-05-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	New function FT_Outline_EmboldenXY.

	* include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a
	simplified emboldening algorithm.
	(FT_Outline_Embolden): Make it a special case of
	`FT_Outline_EmboldenXY'

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

	[type1] Fix Savannah bug #36386.

	* src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is
	not valid.

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

	Remove compiler warning.

	* src/truetype/ttgload.c (TT_Load_Glyph)
	[!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly.

2012-03-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Properly copy scaler flags to script metrics object.

	Without this patch, only the dummy and cjk autohinter modules get
	them (since they copy the whole scaler object).

	* src/autofit/aflatin.c (af_latin_metrics_scale),
	src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it.

2012-03-22  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdflib] Remove redundant macro.

	* src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which
	is exactly the same.

2012-03-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[configure] Fix Savannah bug #35644.

	* builds/unix/configure.raw: Check `-ansi' flag works even if gcc
	is used.  Bionic libc headers for Android lose the consistency
	when they are parsed with __STDC_VERSION__ older than 199901L or
	__STRICT_ANSI__.

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

	[bdf] Improvement to Savannah bug #35656.

	* src/bdf/bdflib.c (isdigok): Add cast, as suggested in report.

2012-03-17  Chris Liddell  <chris.liddell@artifex.com>

	[type1] Fix Savannah bug #35847.

	* src/type1/t1load.c (parse_subrs): Fix the loop exit condition;
	we want to exit when we have run out of data.

2012-03-16  Werner Lemberg  <wl@gnu.org>

	[bdf] Really fix Savannah bug #35658.

	* src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer.

2012-03-14  Yann Droneaud  <yann@droneaud.fr>

	[sfnt] Make arrays static like all others.

	* src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2),
	src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame
	fields.

2012-03-14  Huw Davies  <huw@codeweavers.com>

	[sfnt] A refinement of the previous commit.

	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
	tt_name_entry_ascii_from_other): Stop at null byte.

2012-03-14  Huw Davies  <huw@codeweavers.com>

	[sfnt] Add `name' table compatibility to MS Windows.

	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
	tt_name_entry_ascii_from_other): Don't replace `\0' with question
	marks when converting strings.

2012-03-14  Werner Lemberg  <wl@gnu.org>

	[type1] Fix Savannah bug #35833.

	Based on the patch given in the bug report.

	* src/type1/t1load.c (IS_INCREMENTAL): New macro.
	(read_binary_data): Add parameter `incremental'.
	Update all callers using `IS_INCREMENTAL'.

2012-03-11  Werner Lemberg  <wl@gnu.org>

	[autofit] Return correct linear advance width values.

	This was quite a subtle bug which accidentally showed up with glyph
	`afii10023' of arial.ttf (version 2.76).  This glyph is a composite;
	the first component, `E', has an advance width of 1366 font units,
	while the advance width of the composite itself (which looks like
	uppercase `E' with dieresis) is 1367 font units.  I think this is
	actually a bug in the font itself, because there is no reason that
	this glyph has not the same width as uppercase `E' without the
	dieresis.  Anyway, it helped identify this problem.

	Using the TrueType hinter, the correct value (1367) of `afii10023'
	was returned, but the autohinter mysteriously returned 1366.

	Digging in the code showed that the autohinter recursively calls
	FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load
	flag.  However, the `linearHoriAdvance' field is still returned as a
	scaled value.  To avoid scaling twice, the old code in autofit reset
	`linearHoriAdvance', using the `horiAdvance' field.  This seemed to
	work since FT_LOAD_NO_SCALE was in use, but it failed actually,
	because `horiAdvance' is defined as the distance of the first
	subglyph's phantom points, which in turn are initialized using the
	advance width of the first subglyph.  And as the given example
	shows, these widths can differ.

	* src/autofit/afloader.c (af_loader_load_g): Temporarily set
	FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled
	values for the linear advance widths.

2012-03-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix SSW instruction.

	* src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units.  For
	verification, it took some time to find a font which actually uses
	this instruction.

2012-03-09  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation.

	* include/freetype/freetype.h: Swap order of preprocessor blocks.

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

	* Version 2.4.9 released.
	=========================


	Tag sources with `VER-2-4-9'.

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.9.

	* 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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.8/2.4.9/, s/248/249/.

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

	* builds/unix/configure.raw (version_info): Set to 14:1:8.

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

	[bdf] Add missing overflow check.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <BITMAP>: Add threshold for
	`glyph->bpr'.

2012-03-07  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation.

	* src/autofit/aferrors.h, src/bdf/bdferror.h, src/bzip2/ftbzip2.c,
	src/cache/ftcerror.h, src/cff/cfferrs.h, src/cid/ciderrs.h,
	src/gxvalid/gxverror.h, src/gzip/ftgzip.c, src/lzw/ftlzw.c,
	src/otvalid/otverror.h, src/pcf/pcferror.h, src/pfr/pfrerror.h,
	src/psaux/psauxerr.h, src/pshinter/pshnterr.h,
	src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h,
	src/smooth/ftsmerrs.h, src/truetype/tterrors.h,
	src/type1/t1errors.h, src/type42/t42error.h, src/winfonts/fnterrs.h:
	Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX.

2012-03-03  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #35660.

	For some divisions, we use casts to 32bit entities.  Always guard
	against division by zero with these casts also.

	* src/base/ftcalc.c (ft_div64by32): Remove redundant cast.
	(FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast.
	(FT_DivFix): Add 32bit cast (this omission triggered the bug).

2012-03-03  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix handling of track kerning.

	* src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign
	for `min_kern'.  It is indeed quite common that track kerning
	*increases* spacing for very small sizes.

2012-03-02  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #35689.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline
	point.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #35656.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity
	of nibble characters instead of accessing `a2i' array.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[winfonts] Fix Savannah bug #35659.

	* src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #35658.

	* src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements
	properly.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix Savannah bug #35657.

	If in function `skip_spaces' the routine `skip_comment' comes to the
	end of buffer, `cur' is still increased by one, so we need to check
	for `p >= limit' and not `p == limit'.

	* src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed,
	PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #35646.

	* src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages.  The
	code is now in sync with the other operators (e.g. MSIRP) which
	modify twilight points.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #35643.

	* src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with
	comment before `_bdf_list_split', this is, really allocate at least
	five `field' elements.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #35641.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <DWIDTH, BBX>: Abort if
	_BDF_ENCODING isn't set.  We need this because access to the `glyph'
	variable might be undefined otherwise.

2012-03-01  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #35640.

	* src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check
	for NPUSHB and NPUSHW instructions.

2012-02-29  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #35601.

	* src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of
	last point for loop.
	Also remove redundant boundary check.

2012-02-29  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove redundant check.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant
	second check for ordered contour start points.

2012-02-29  Werner Lemberg  <wl@gnu.org>

	[truetype] Make SHC instruction behave similar to MS rasterizer.

	* src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in
	twilight zone.

2012-02-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Avoid modulo operators against a power-of-two denominator.

	* src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c
	(ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_vvcurveto, cff_op_hhcurveto, cff_op_hvcurveto>,
	src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE),
	src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with
	`&' operator.

2012-02-29  Werner Lemberg  <wl@gnu.org>

	[autofit] Don't synchronize digit widths for light rendering mode.

	We don't hint horizontally in this mode.

	* src/autofit/afloader.c (af_loader_load_g) <Hint_Metrics>:
	Implement it.

2012-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type42] Minor code optimization (again).

	* src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change.

2012-02-26  Mateusz Jurczyk  <mjurczyk@google.com>
	    Werner Lemberg  <wl@gnu.org>

	[smooth] Fix Savannah bug #35604.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos'
	instead of `FT_UInt' for some variables and update comparisons
	accordingly.  A detailed analysis can be found in the bug report.

2012-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type42] Minor code optimization.

	* src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of
	modulo operator.

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

	* docs/CHANGES: Updated.

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

	[type1] Fix Savannah bug #35608.

	* src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short
	dictionaries.

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

	[bdf] Support `ENCODING -1 <n>' format.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Implement it.

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

	[bdf] Fix Savannah bug #35607.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <ENCODING>: Normalize
	negative encoding values.

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

	[type1] Fix Savannah bug #35606.

	* src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'.

	* src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message
	only if cur < limit.

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

	[pcf] Fix Savannah bug #35603.

	* src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in
	`strings' array.

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

	[type42] Fix Savannah bug #35602.

	* src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more
	thoroughly.

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

	[bdf] Fix Savannah bugs #35599 and #35600.

	* src/bdf/bdflib.c (ACMSG16): New warning message.
	(_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length.

2012-02-24  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bugs #35597 and #35598.

	* src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value.

2012-02-24  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation (6/6).

	* src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/.

	* src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/.
	s/t1_init_loader/cid_init_loader/.
	s/t1_done_loader/cid_done_loader/.

	* src/psaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/.

	* src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/.

	* src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/.

2012-02-24  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation (5/6).

	* include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after
	using it.

2012-02-22  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation (4/6).

	* src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG,
	RAS_ARGS, RAS_VAR, and RAS_VARS before defining it.

	* src/smooth/ftgrays.c: s/TRaster/black_TRaster/,
	s/PRaster/black_PRaster/.
	* src/raster/ftraster.c: s/TRaster/gray_TRaster/,
	s/PRaster/gray_PRaster/.

2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation (3/6).

	* src/smooth/ftgrays.c: s/TWorker/black_TWorker/,
	s/PWorker/black_PWorker/.
	* src/raster/ftraster.c: s/TWorker/gray_TWorker/,
	s/PWorker/gray_PWorker/.

2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation (2/6).

	* src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR,
	CEILING, TRUNC, and SCALED before defining it.

2012-02-20  Vinnie Falco  <vinnie.falco@gmail.com>

	Prepare source code for amalgamation (1/6).

	See discussion starting at

	  https://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html

	* src/smooth/ftgrays.c: s/TBand/gray_TBand/.
	* src/raster/ftraster.c: s/TBand/black_TBand/.

2012-02-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[autofit] Fix outline flags.

	* src/autofit/afloader.c (af_loader_load_g): Don't reassign
	`outline.flags' so that this information is preserved.  See
	discussion starting at

	  https://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html

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

	[truetype] Fix Savannah bug #35466.

	Jump instructions are now bound to the current function.  The MS
	Windows rasterizer behaves the same, as confirmed by Greg Hitchcock.

	* src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element.
	* src/truetype/ttobjs.h (TT_DefRecord): Add `end' element.

	* src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper
	bound of jump address.
	(Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated.

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

	We don't use `extensions'.

	* include/freetype/internal/ftobjs.h (FT_DriverRec): Remove
	`extensions' field.

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

	Clean up `generic' fields.

	* include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec):
	Remove `generic' field since users can't access it.

	* src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as
	advertised in the documentation of FT_Generic.
	(Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'.

2012-02-07  Werner Lemberg  <wl@gnu.org>

	[autofit] Harmonize function arguments.

	* src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for
	`load_flags'.

2012-02-07  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts.

2012-01-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix Savannah bug #35286.

	Patch submitted by anonymous reporter.

	* src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup):
	gxv_set_length_by_ulong_offset() must be called with 3, not 4,
	the number of the subtables in the state tables; classTable,
	stateArray, entryTable.

2012-01-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[raccess] Modify for PIC build.

	Based on the patch provided by Erik Dahlstrom <ed@opera.com>,
	https://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html

	Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()'
	are renamed with `ft_' suffixes.

	* src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed
	to `ft_raccess_rule_by_darwin_vfs()'.
	* src/base/ftobjs.c: Ditto.

	* src/base/ftrfork.c: Declarations of FT_RFork_Rule,
	raccess_guess_rec, are moved to...
	* include/freetype/internal/ftrfork.h: Here.

	* include/freetype/internal/ftrfork.h:
	FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined
	to replace raccess_guess_table[] in both of PIC and non-PIC
	modes.
	* src/base/ftrfork.c: raccess_guess_table[] array is rewritten
	by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}.

	* src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table'
	storage.  (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve
	the function pointer from `ft_raccess_guess_table' storage in
	`BasePIC' structure.
	* src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with
	FT_RACCESS_GUESS_TABLE_GET.
	(raccess_get_rule_type_from_rule_index): Add `library' as the
	first argument to the function, to retrieve the storage of
	`ft_raccess_guess_table' from it.  Also `raccess_guess_table'
	is replaced by FT_RACCESS_GUESS_TABLE_GET.
	(ft_raccess_rule_by_darwin_vfs): Ditto.

2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Remove trailing spaces.

2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Formatting PIC related sources.

	* src/autofit/afpic.c: Harmonize to FT2 coding conventions.
	* src/base/basepic.c: Ditto.
	* src/base/ftpic.c: Ditto.
	* src/cff/cffpic.c: Ditto.
	* src/pshinter/pshpic.c: Ditto.
	* src/psnames/pspic.c: Ditto.
	* src/raster/rastpic.c: Ditto.
	* src/sfnt/sfntpic.c: Ditto.
	* src/smooth/ftspic.c: Ditto.
	* src/truetype/ttpic.c: Ditto.

2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autofit] Fix the inclusion of `aflatin2.h' in PIC file.

	* src/autofit/afpic.c: Include `aflatin2.h' when
	FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so.
	Unconditionally inclusion causes declared but unimplemented
	warning by GCC 4.6.

2012-01-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cff] Remove redundant declarations of cff_cmap_XXX_class_rec.

	* src/cff/cffpic.c: The declarations of
	FT_Init_Class_cff_cmap_encoding_class_rec() and
	FT_Init_Class_cff_cmap_unicode_class_rec() are removed.
	They can be obtained by the inclusion of cffcmap.h.
	cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares
	FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode.

2012-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix redundant declaration warning in PIC mode.

	Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were
	designed to declare xxx_pic_{free,init} by themselves.
	Because these macros are used at the end of the module
	interface (e.g. ttdriver.c) and the wrapper source to build
	a module as a single object (e.g. truetype.c) includes
	the PIC file (e.g. ttpic.c) before the module interface,
	these macros are expanded AFTER xxx_pic_{free,init} body
	when the modules are built as single object.
	The declaration after the implementation causes the redundant
	declaration warnings, so the declarations are moved to module
	PIC headers (e.g. ttpic.h).  Separating to other header files
	are needed for multi build.

	* include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER):
	Remove class_##_pic_free and class_##_pic_init declarations.
	* include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER,
	FT_DEFINE_MODULE): Ditto.

	* src/base/basepic.h: Insert a comment and fix coding style.
	* src/autofit/afpic.h: Declare autofit_module_class_pic_{free,
	init}.
	* src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}.
	* src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free,
	init}.
	* src/psnames/pspic.h: Declare psnames_module_class_pic_{free,
	init}.
	* src/raster/rastpic.h: Declare
	ft_raster{1,5}_renderer_class_pic_{free,init}
	* src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}.
	* src/smooth/ftspic.h: Declare
	ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}.
	* src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}.

2012-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Make pspic.c to include module error header to fix multi build.

	* src/psnames/pspic.c: Include `psnamerr.h'.

2012-01-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[base] Fix a dereference of uninitialized variable in PIC mode.

	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be
	set before dereferring to obtain `library'.  The initialization
	of `clazz', `glyph', `library' and NULL pointer check are
	reordered to minimize PIC conditionals.

2012-01-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[base] Insert explicit cast for GCC 4.6 in PIC mode.

	* src/base/ftinit.c (FT_Add_Default_Modules): Under PIC
	configuration, FT_DEFAULT_MODULES_GET returns
	FT_Module_Class** pointer, GCC 4.6 warns that
	const FT_Module_Class* const* variable is warned as
	inappropriate to store it.  To calm it, explicit cast is
	inserted.  Also `library' is checked to prevent the NULL
	pointer dereference in FT_DEFAULT_MODULES_GET.

2012-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6.

	Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET
	take no arguments but derefer the variable named `library'
	internally.

	* src/cff/cffdrivr.c (cff_get_interface): Declare `library' and
	set it if non-NULL driver is passed.
	* src/truetype/ttdriver.c (tt_get_interface): Ditto.

	* src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library'
	under PIC configuration, and set it if non-NULL module is given.
	* src/psnames/psmodule.c (psnames_get_interface): Ditto.

2012-01-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Make PIC files include module error headers, to use the error codes
	with per-module prefix.

	* src/autofit/afpic.c: Include `aferrors.h'.
	* src/cff/cffpic.c: Include `cfferrs.h'.
	* src/pshinter/pshpic.c: Include `pshnterr.h'.
	* src/raster/rastpic.c: Include `rasterrs.h'.
	* src/sfnt/sfntpic.c: Include `sferrors.h'.
	* src/smooth/ftspic.c: Include `ftsmerrs.h'.
	* src/truetype/ttpic.c: Include `tterrors.h'.

2012-01-04  Tobias Ringström  <tobias@ringis.se>

	[truetype] Fix IP instruction if x_ppem != y_ppem.

	* src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates
	properly.

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

	Fix tracing message for `loca' table.

	* src/truetype/ttpload.c (tt_face_get_location): Don't emit a
	warning message if the last `loca' entry references an empty glyph.

2011-12-10  Werner Lemberg  <wl@gnu.org>

	Add some variable initializations.
	Reported by Richard COOK <rscook@unicode.org>.

	* src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'.
	* src/smooth/ftgrays.c (gray_render_conic): Initialize `levels'
	earlier.

2011-12-08  Werner Lemberg  <wl@gnu.org>

	Fix serious scaling bug in `FT_Get_Advances'.

	* src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by
	`FT_Load_Glyph' must be simply multiplied by 1024.

2011-12-08  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing.

2011-12-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH.

	Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON
	was a configurable macro to disable Carbon-dependent code.  Because
	now configure script sets DARWIN_NO_CARBON by default and disables
	Darwin & Carbon-dependent codes, these macros can be unified.
	FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON
	(defined by default) is removed, because DARWIN_NO_CARBON violates
	FT_XXX naming convention of public macros, and a macro configured by
	default is not portable for the building without configure (e.g.
	make devel).

	* builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based
	old Mac font support is requested and Carbon is available.
	* builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support
	for Mac OS X without Carbon (e.g.  Mac OS X 10.4 for ppc64) is
	requested.
	* include/freetype/config/ftconfig.in: Ditto.
	* builds/vms/ftconfig.h: Ditto.

	* src/base/ftbase.h: Remove DARWIN_NO_CARBON.
	* src/base/ftbase.c: Ditto.
	* src/base/ftobjs.c: Ditto.
	* src/base/ftrfork.c: Ditto.

	* src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined
	(same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c).
	* builds/mac/ftmac.c: Ditto.

	* builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH.
	* builds/mac/FreeType.m68k_far.make.txt: Ditto.
	* builds/mac/FreeType.ppc_classic.make.txt: Ditto.
	* builds/mac/FreeType.ppc_carbon.make.txt: Ditto.

2011-11-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #34728 (`make devel' on Mac OS X).

	* builds/toplevel.mk: Check `/dev/null' to identify the Unix-
	like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4).
	* builds/unix/detect.mk: Ditto.

2011-11-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[apinames] Fix the overflow of signed integer hash.

	* src/tools/apinames.c (names_add): Change the type of `h' from
	int to unsigned int, to prevent undefined behaviour in the
	overflow of signed integers (overflow of unsigned int is defined
	to be wrap around).  Found by clang test suggested by Sean
	McBride.

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

	[winfonts] Remove casts.

	* src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and
	update affected functions.
	(FNT_Size_Select): Fix number of arguments.

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

	[type42] Remove casts.

	* src/type42/t42drivr.c (t42_driver_class): Remove all casts and
	update affected functions.

	* src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42 driver
	changes.

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

	[type1] Remove casts.

	* src/type1/t1driver.c (t1_driver_class): Remove all casts and
	update affected functions.

	* src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c:
	Updated for t1driver changes.
	src/type1/t1objs.h (T1_Driver): Remove unused typedef.
	Updated for t1driver changes.

2011-11-27  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #34896.

	ENCODING now covers the whole Unicode range.

	Note, however, that this change is quite expensive since it
	increases the size of three arrays by almost 400kByte in total.  The
	right fix is to replace the logic with something smarter.
	Additionally, there exist very old BDFs for three-byte CCCII
	encoding which exceeds the range of Unicode (another reason to have
	a smarter logic).

	* src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod'
	arrays.
	* src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array.

2011-11-27  Werner Lemberg  <wl@gnu.org>

	[bdf] Improve tracing.

	* src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros.
	(_bdf_parse_glyphs): Use them.

2011-11-26  Werner Lemberg  <wl@gnu.org>

	Improve tracing.

	* src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c
	(PCF_Face_Done): Remove tracing message.

	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c
	(cff_face_init), src/cid/cidobjs.c (cid_face_init),
	src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c
	(sfnt_init_face), src/truetype/ttobjs.c (tt_face_init),
	src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c
	(T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add
	`greeting' message.

	* src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c
	(T42_Open_Face): Improve tracing.

2011-11-26  Werner Lemberg  <wl@gnu.org>

	[cid] Fix error code.

	* src/cid/cidparse.c (cid_parser_new): Do it.

2011-11-26  Werner Lemberg  <wl@gnu.org>

	[cff] Fix error code.

	* src/cff/cffload.c (cff_font_load): Do it.

2011-11-26  Werner Lemberg  <wl@gnu.org>

	Add new error code FT_Err_Missing_Module.

	Previously, FreeType misleadingly returned
	FT_Err_Unknown_File_Format if a module was missing (or a test was
	missing completely).

	* include/freetype/fterrdef.h (FT_Err_Missing_Module): Define.

	* src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c
	(cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init),
	src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c
	(tt_face_init), src/type1/t1objs.c (T1_Face_Init),
	src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated.

	* src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c
	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now
	redundant test for `psaux'.

2011-11-25  Werner Lemberg  <wl@gnu.org>

	[bdf] Add more error messages.

	* src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
	Add line number argument.
	Update all callers.
	(ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros.
	(_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property,
	_bdf_parse_glyphs, _bdf_parse_start): Add error messages.

2011-11-24  Werner Lemberg  <wl@gnu.org>

	* include/freetype/fterrors.h: Remove dead code.

2011-11-15  Werner Lemberg  <wl@gnu.org>

	* docs/releases: Updated.

2011-11-15  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.8 released.
	=========================


	Tag sources with `VER-2-4-8'.

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.8.

	* 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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.7/2.4.8/, s/247/248/.

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

	* builds/unix/configure.raw (version_info): Set to 14:0:8.

2011-11-13  Chris Liddell  <chris.liddell@artifex.com>

	Add FT_Get_PS_Font_Value() API.

	This allows a Type 1 font face to be interrogated to retrieve most
	of the dictionary keys (keys not relevant to FreeType's Type 1
	interpreter are not available).

	* include/freetype/internal/services/svpsinfo.h
	(PS_GetFontValueFunc): New typedef.
	(PSInfo): Add `ps_get_font_value'.
	(FT_DEFINE_SERVICE_PSINFOREC): Updated.

	* include/freetype/internal/t1types.h (T1_EncodingType): Moved to...
	* include/freetype/t1tables.h: Here.
	(PS_Dict_Keys): New enumeration.
	(FT_Get_PS_Font_Value): New declaration.

	* src/base/fttype1.c (FT_Get_PS_Font_Value): New function.

	* src/type1/t1driver.c (t1_ps_get_font_value): This new function
	does the real job.
	(t1_service_ps_info): Add it.

	* src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c
	(cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info):
	Updated.

2011-11-08  Braden Thomas  <bthomas@apple.com>

	[cid] Various loading fixes.

	* src/cid/cidload.c (cid_load_keyword) <default>,
	(parse_font_matrix, parse_expansion_factor): Correctly check number
	of dictionaries.
	(cid_read_subrs): Protect against invalid values of `num_subrs'.
	Assure that the elements of the `offsets' array are ascending.

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

	* README: We use copyright ranges also.

	According to

	  https://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html

	this should be mentioned explicitly.

2011-10-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[raccess] Supplement for previous fix.

	* src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare
	it on native Mac OS X.
	* src/base/ftrfork.c (raccess_get_rule_type_from_rule_index):
	Hide raccess_get_rule_type_from_rule_index() on native Mac OS X
	too.

2011-10-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X.

	* src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not
	compile on native Mac OS X because it is not used.

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

	[truetype] Fix MD instruction for twilight zone.

	* src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD
	instruction applied to original coordinates of twilight points
	always returns zero.

2011-10-18  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.7 released.
	=========================


	Tag sources with `VER-2-4-7'.

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.7.

	* 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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.6/2.4.7/, s/246/247/.

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

	* builds/unix/configure.raw (version_info): Set to 13:2:7.

2011-10-15  Kal Conley  <kcconley@gmail.com>

	Fix handling of transformations if no renderer is present.

	* src/base/ftobjs.c (FT_Load_Glyph): Thinko.

2011-10-15  Kal Conley  <kcconley@gmail.com>

	Fix conditions for autohinting.

	* src/base/ftobjs.c (FT_Load_Glyph): Handle
	FT_LOAD_IGNORE_TRANSFORM.

2011-10-07  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix a bug to detect too large offset in morx table.

	* src/gxvalid/gxvmorx2.c
	(gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
	that too large positive offset cannot be detected.

2011-10-01  Braden Thomas  <bthomas@apple.com>

	Handle some border cases.

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

	* src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
	value of `target->rows'.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
	flex start.

	* src/raster/ftrend1.c (ft_raster1_render): Check `width' and
	`height'.

	* src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
	invalid values in `localpoints' array.

2011-10-01  Werner Lemberg  <wl@gnu.org>

	[psnames] Handle zapfdingbats.
	Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.

	* src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
	`zapfdingbats.txt' file.

	* src/psnames/pstables.h: Regenerated.

2011-09-27  Simon Bünzli  <zeniko@gmail.com>

	[type1] Fix Savannah bug #34189.

	* src/type1/t1load.c (T1_Open_Face): Initialize
	`face->len_buildchar'.

2011-09-26  Werner Lemberg  <wl@gnu.org>

	[cff] Dump SIDs while tracing.

	* src/cff/cffobjs.c (cff_face_init): Do it.

	* src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
	<cff_kind_string>: Identify as SID.

2011-09-17  Werner Lemberg  <wl@gnu.org>

	Remove unused FT_ALIGNMENT macro.

	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Do it.

2011-09-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Slightly optimize conic and cubic flatteners.

	* src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
	out some code from the main loop to speed it up.

2011-09-11  Tomas Hoger  <thoger@redhat.com>

	Slightly improve LZW_CLEAR handling.

	* src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_CODE>:
	Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
	handled as clear codes.  This also re-sets old_code and old_char to
	predictable values, which is a little better than using `random'
	ones if the code following LZW_CLEAR is invalid.

2011-09-11  Tomas Hoger  <thoger@redhat.com>

	Add explicit LZW decompression stack size limit.

	Stack larger than 1<<LZW_MAX_BITS is never needed if prefix table is
	constructed correctly.  It's even less than that, see e.g.
	libarchive code comment for a better size upper bound:

	  http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121

	This patch adds explicit stack size limit, enforced when stack is
	realloced.

	An alternative is to ensure that code < state->prefix[code - 256]
	when traversing prefix table.  Such check is less efficient and
	should not be required if prefix table is constructed correctly in
	the first place.

	* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.

2011-09-11  Tomas Hoger  <thoger@redhat.com>

	Protect against loops in the prefix table.

	LZW decompressor did not sufficiently check codes read from the
	input LZW stream.  A specially-crafted or corrupted input could
	create a loop in the prefix table, which leads to memory usage
	spikes, as there's no decompression stack size limit.

	* src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_START>: First
	code in valid LZW stream must be 0..255.
	<FT_LZW_PHASE_CODE>: In the special KwKwK case, code == free_ent,
	code > free_ent is invalid.

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

	Better tracing of metrics.

	* src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
	FT_TRACE.

2011-09-07  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #33816.

	* src/cff/cfftypes.h (CFF_FontRecDictRec): New member
	`has_font_matrix'.
	* src/cff/cffparse.c (cff_parse_font_matrix): Set it.
	Update tracing output.
	* src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
	can be removed.

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

	Better tracing of metrics.

	* src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
	Decorate with FT_TRACE.

2011-08-25  Werner Lemberg  <wl@gnu.org>

	[cff] Better tracing of the parsing process.

	* src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
	FT_TRACE.

	* src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
	cff_parse_private_dict, cff_parse_cid_ros): Updated.
	(CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
	CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
	CFF_FIELD_DELTA): Add argument for ID.
	(cff_parser_run): Decorate with FT_TRACE.

	* src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
	`id' member.

	* src/cff/cfftoken.h: Add IDs to all fields.

2011-08-16  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #34022.

	* README, docs/INSTALL: Remove references to UPGRADE.UNIX.

2011-08-15  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #34018.

	* docs/UPGRADE.UNIX: Removed.  Obsolete.

2011-08-15  David Bevan  <david.bevan@pb.com>

	Fix Savannah bug #33992.

	* src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.

2011-08-12  Werner Lemberg  <wl@gnu.org

	[truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.

	* src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
	(Ins_SDPVTL): Handle v1 == v2 specially.

2011-08-09  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #33975.

	* src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.

2011-07-29  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.6 released.
	=========================


	Tag sources with `VER-2-4-6'.

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.6.

	* 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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.5/2.4.6/, s/245/246/.

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

	* builds/unix/configure.raw (version_info): Set to 13:1:7.

2011-07-29  Werner Lemberg  <wl@gnu.org>

	[cff] Add some more tracing infos.

	* src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
	cff_parse_cid_ros): Add tracing.

2011-07-22  Dirk Müller  <dmueller@suse.de>

	[psaux, type1] Fix null pointer dereferences.

	Found with font fuzzying.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check
	`decoder->buildchar'.

	* src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'.

2011-07-20  Chris Morgan  <cmorgan@cybexintl.com>

	Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT.

	Useful for embedded systems which don't need file stream support.

	* src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement
	it.

2011-07-20  Elton Chung  <elton328@gmail.com>

	* src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo.

2011-07-16  Steven Chu  <steven.f.chu@gmail.com>

	[truetype] Fix metrics on size request for scalable fonts.

	* src/truetype/ttdriver.c (tt_size_request): Fix copying metrics
	from TT_Size to FT_Size if scalable font.

	See

	  https://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html

	for some comparison images.

2011-07-14  Matthias Drochner  <M.Drochner@fz-juelich.de>.

	[psaux] Fix potential sign extension problems.

	When shifting right a signed value, it is not defined by the
	C standard whether one gets a sign extension or not.  Use a macro to
	do an explicit cast from a signed short (assuming that this is
	16bit) to an int.

	* src/psaux/t1decode.c (Fix2Int): New macro.
	Use it where appropriate.

2011-07-14  Werner Lemberg  <wl@gnu.org>

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<op_callothersubr>: Better handling of subroutine index 0.
	From Matthias Drochner <M.Drochner@fz-juelich.de>.

2011-07-10  Алексей Подтележников  <apodtele@gmail.com>

	[psaux] Optimize previous commit.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<op_callothersubr>: Move error check down to avoid testing twice for
	good cases.

2011-07-08  Werner Lemberg  <wl@gnu.org>

	[psaux] Add better argument check for `callothersubr'.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<op_callothersubr>: Reject negative arguments.

2011-07-07  Werner Lemberg  <wl@gnu.org>

	[sfnt] Try harder to find non-zero values for ascender and descender.

	* src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case
	the `hhea' table's values are zero.

2011-07-03  Werner Lemberg  <wl@gnu.org>

	Fix previous commit.

	We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap
	strikes in the font.

	* src/truetype/ttobjs.c (tt_face_init): Implement it.

	* docs/CHANGES: Updated.

2011-07-02  Just Fill Bugs  <mozbugbox@yahoo.com.au>

	[truetype] Fix Savannah bug #33246.

	* src/truetype/ttobjs.c (tt_check_single_notdef): New function.
	(tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE.

2011-07-02  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2011-07-02  David Bevan  <david.bevan@pb.com>

	[ftstroke] Major revision.

	The main problems
	-----------------

	  o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter
	    joins (not bevel joins) were generated.  Indeed, the meanings of
	    `miter' and `bevel' were incorrectly reversed (consistently) in
	    both the code and comments.

	  o The way bevel joins were constructed (whether specified
	    explicitly, or created as a result of exceeding the miter limit)
	    did not match what is required for stroked text in PostScript or
	    PDF.

	The main fixes
	--------------

	  o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.

	  o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been
	    introduced to support PostScript and PDF miter joins.

	  o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
	    alias for FT_STROKER_LINEJOIN_MITER.

	Additionally, a variety of stroking errors have been fixed.  These
	would cause various artifacts (including points `at infinity'),
	especially when stroking poor quality fonts.

	See

	  https://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html

	for example documents.  The FreeType stroker now produces results
	very similar to that produced by GhostScript and Distiller for these
	fonts.

	Other problems
	--------------

	The following problems have been resolved:

	  o Inside corners could be generated incorrectly.  Intersecting the
	    inside corner could cause a missing triangular area and other
	    effects.

	    The intersection point can only be used if the join is between
	    two lines and both lines are long enough.  The `optimization'
	    condition in `ft_stroker_inside' has been corrected; this
	    requires the line length to be passed into various functions and
	    stored in `FT_StrokerRec'.

	  o Incorrect cubic curves could be generated.  The angle
	    calculations in `FT_Stroker_CubicTo' have been corrected to
	    handle the case of the curve crossing the +/-PI direction.

	  o If the border radius was greater than the radius of curvature of
	    a curve, then the negative sector would end up outside (not
	    inside) the border.  This situation is now recognized and the
	    negative sector is circumnavigated in the opposite direction.
	    (If round line joins are being used, this code is disabled
	    because the line join will always cover the negative sector.)

	  o When a curve is split, the arcs may not join smoothly (especially
	    if the curve turns sharply back on itself).  Changes in
	    direction between adjacent arcs were not handled.  A round
	    corner is now added if the deviation from one arc to the next is
	    greater than a suitable threshold.

	  o The current direction wasn't retained if a the outline contained
	    a zero length lineto or a curve that was determined to be
	    `basically a point'.  This could cause a spurious join to be
	    added.

	  o Cubics with close control points could be mishandled.  All eight
	    cases are now distinguished correctly.

	Other improvements
	------------------

	o Borders for cubic curves could be too `flat'.
	  FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent
	  this.

	o The handling and use of movable points has been simplified a
	  little.

	o Various values are now computed only if the results are actually
	  needed.

	o The directions of the outer and inner borders have been swapped,
	  as recommended by Graham Asher.

	* src/base/ftstroke.c: Revised.
	* include/freetype/ftstroke.h: Updated.

2011-06-30  İsmail Dönmez  <ismail@namtrac.org>

	* builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'.

2011-06-29  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #33663.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for
	ENCODING correctly.

	* docs/CHANGES: Document it.

2011-06-24  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.5 released.
	=========================


	Tag sources with `VER-2-4-5'.

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.5

	* 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/vc2010/freetype.vcxproj, builds/win32/vc2010/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.4.4/2.4.5/, s/244/245/.

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

	* builds/unix/configure.raw (version_info): Set to 13:0:7.

2011-06-20  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change
	from 2011-05-04.

2011-06-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] make the `prop' validation tracing verbose.

	* src/gxvalid/gxvprop.c: Add tracing messages for errors.

2011-06-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autogen.sh] Reflect environment variable LIBTOOLIZE.

2011-06-18  Werner Lemberg  <wl@gnu.org>

	Update license documentation.

	* docs/GPL.TXT: Renamed to...
	* docs/GPLv2.TXT: This.

	* docs/LICENSE.TXT: Updated.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix g++4.6 compiler warnings in module drivers.

	The background is same with previous commit.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints):
	Init `points'.  (TT_Vary_Get_Glyph_Deltas): Init
	`delta_xy'.  (TT_Get_MM_Var): Init `mmvar'.
	* src/type1/t1load.c (T1_Get_MM_Var): Ditto.
	* src/cff/cffdrivr.c (cff_ps_get_font_info): Init
	`font_info'.
	* src/cff/cffload.c (cff_index_get_pointers): Init `t'.
	(cff_font_load): Init `sub'.
	* src/cff/cffobjs.c (cff_size_init): Init `internal'.
	(cff_face_init): Init `cff'.
	* src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps):
	Init `snaps'.
	* src/pcf/pcfread.c (pcf_get_properties): Init `properties'.
	(pcf_get_bitmaps): Init `offsets'.  (pcf_get_encodings):
	Init `tmpEncoding'.
	* src/sfnt/ttload.c (tt_face_load_gasp): Init `gaspranges'.
	* src/sfnt/ttsbit.c (Load_SBit_Image): Init `components'.
	* src/cache/ftcmru.c (FTC_MruList_New): Init `node'.
	* src/gzip/ftgzip.c (FT_Stream_OpenGzip): Init `zip' and
	`zip_buff'.
	* src/lzw/ftlzw.c (FT_Stream_OpenLZW): Init `zip'.
	* src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Init `zip'.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[base] Fix g++4.6 compiler warnings in src/base/*.c.

	Passing uninitialized pointer to FT_NEW() families is
	not problematic theoretically (as far as the returned
	pointer is checked before writing), but g++4.6 dislikes
	it and warns by -Wuninitialized.  Initialize them by NULL.

	* src/base/ftobjs.c (FT_Stream_New): Init `stream'.
	(new_memory_stream): Ditto.
	(FT_New_GlyphSlot): Init `slot'.
	(FT_CMap_New): Init `cmap'.
	(open_face_PS_from_sfnt_stream): Init `sfnt_ps'.
	(Mac_Read_POST_Resource): Init `pfb_data'.
	(Mac_Read_sfnt_Resource): Init `sfnt_data'.
	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets):
	Init `offsets_internal' and `ref'.
	(raccess_guess_darwin_hfsplus): Init `newpath'.
	(raccess_guess_darwin_newvfs): Ditto.
	* src/base/ftbitmap.c (ft_bitmap_assure_buffer):
	Init `buffer'.
	* src/base/ftstroke.c (FT_Stroker_New): Init `stroker'.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Cleanup.

	Some invalid, overrunning, unrecommended non-zero values
	are cared in paranoid validation mode only.  There are
	many lines looking like:

	  if ( valid->root->level >= FT_VALIDATE_PARANOID )
	    FT_INVALID_xxx;

	To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is
	introduced for more paranoid validation in future.

	* src/gxvalid/gxvcommn.h (IS_PARANOID_VALIDATION):
	New macro to assure valid->root->level is more or
	equal to FT_VALIDATE_PARANOID.  (GXV_SET_ERR_IF_PARANOID):
	New macro to raise an error if in paranoid validation.
	* src/gxvalid/gxvcommn.c: Use GXV_SET_ERR_IF_PARANOID().
	* src/gxvalid/gxvfeat.c: Ditto.
	* src/gxvalid/gxvjust.c: Ditto.
	* src/gxvalid/gxvkern.c: Ditto.
	* src/gxvalid/gxvmort.c: Ditto.
	* src/gxvalid/gxvmort0.c: Ditto.
	* src/gxvalid/gxvmort1.c: Ditto.
	* src/gxvalid/gxvmort2.c: Ditto.
	* src/gxvalid/gxvmorx1.c: Ditto.
	* src/gxvalid/gxvmorx2.c: Ditto.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c.

	* src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate):
	Check different entries pointing same tracking value.
	(gxv_trak_validate): Remove unused variable `table_size'.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c.

	* src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate):
	Conditionalize unvalidated variable `subFeatureFlags'.
	(gxv_morx_chain_validate): Conditionalize unvalidated
	variable `defaultFlags'.

	* src/gxvalid/gxvmorx0.c
	(gxv_morx_subtable_type0_entry_validate):
	Conditionalize unvalidated variables; `markFirst',
	`dontAdvance', `markLast', `verb'.

	* src/gxvalid/gxvmorx1.c
	(gxv_morx_subtable_type1_entry_validate): Conditionalize
	unvalidated variables; `setMark', `dontAdvance'.

	* src/gxvalid/gxvmorx2.c
	(gxv_morx_subtable_type2_ligActionOffset_validate):
	Conditionalize unvalidated variables; `last', `store'.
	Checking for overrunning offset is added.
	(gxv_morx_subtable_type2_entry_validate):
	Conditionalize unvalidated variables; `setComponent',
	`dontAdvance', `performAction'.
	(gxv_morx_subtable_type2_ligatureTable_validate):
	Check if the GID for ligature does not exceed the
	max GID in `maxp' table.

	* src/gxvalid/gxvmort5.c
	(gxv_morx_subtable_type5_InsertList_validate):
	Conditionalize unvalidated loading of `insert_glyphID'
	array.  (gxv_morx_subtable_type5_entry_validate):
	Conditionalize unvalidated variables; `setMark',
	`dontAdvance', `currentIsKashidaLike',
	`markedIsKashidaLike', `currentInsertBefore',
	`markedInsertBefore'.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c.

	* src/gxvalid/gxvmort.c (gxv_mort_subtables_validate):
	Conditionalize unvalidated variable `subFeatureFlags'.
	(gxv_mort_chain_validate): Conditionalize unvalidated
	variable `defaultFlags'.

	* src/gxvalid/gxvmort0.c
	(gxv_mort_subtable_type0_entry_validate): Check the
	conflict of the marks for the glyphs.

	* src/gxvalid/gxvmort1.c
	(gxv_mort_subtable_type1_offset_to_subst_validate):
	Local variables `min_gid', `max_gid' are replaced by
	variables in the validator.
	(gxv_mort_subtable_type1_entry_validate): Conditionalize
	unvalidated variables; `setMark', `dontAdvance'.
	(gxv_mort_subtable_type1_substTable_validate):
	Validate the GID by the min/max GIDs in the validator.

	* src/gxvalid/gxvmort2.c
	(gxv_mort_subtable_type2_ligActionOffset_validate):
	Conditionalize unvalidated variables; `last', `store'.
	Checking for overrunning offset is added.
	(gxv_mort_subtable_type2_entry_validate):
	Conditionalize unvalidated variables; `setComponent',
	`dontAdvance'.
	(gxv_mort_subtable_type2_ligatureTable_validate):
	Check if the GID for ligature does not exceed the
	max GID in `maxp' table.

	* src/gxvalid/gxvmort5.c
	(gxv_mort_subtable_type5_InsertList_validate):
	Conditionalize unvalidated loading of `insert_glyphID'
	array.  (gxv_mort_subtable_type5_entry_validate):
	Conditionalize unvalidated variables; `setMark',
	`dontAdvance', `currentIsKashidaLike',
	`markedIsKashidaLike', `currentInsertBefore',
	`markedInsertBefore'.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c.

	* src/gxvalid/gxvkern.c
	(gxv_kern_subtable_fmt0_pairs_validate): Conditionalize
	unvalidated variable `kernValue'.
	(gxv_kern_subtable_fmt1_entry_validate): Conditionalize
	unvalidated variables; `push', `dontAdvance', `kernAction',
	`kernValue'.
	(gxv_kern_coverage_new_apple_validate): Conditionalize
	trace-only variables; `kernVertical', `kernCrossStream',
	`kernVariation'.
	(gxv_kern_coverage_classic_apple_validate): Conditionalize
	trace-only variables; `horizontal', `cross_stream'.
	(gxv_kern_coverage_classic_microsoft_validate):
	Conditionalize trace-only variables; `horizontal',
	`minimum', `cross_stream', `override'.
	(gxv_kern_subtable_validate): Conditionalize trace-only
	variables; `version', `tupleIndex'.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c.

	* src/gxvalid/gxvjust.c (gxv_just_check_max_gid):
	New function to unify the checks of too large GID.
	(gxv_just_wdp_entry_validate): Conditionalize unvalidated
	variables; `beforeGrowLimit', `beforeShrinkGrowLimit',
	`afterGrowLimit', `afterShrinkGrowLimit', `growFlags',
	`shrinkFlags'.  Additional check for non-zero values in
	unused storage `justClass' is added.
	(gxv_just_actSubrecord_type0_validate): Conditionalize
	unvalidated variable `order'.  GID is checked by
	gxv_just_check_max_gid().  Additional check for upside-down
	relationship between `lowerLimit' and `upperLimit' is added.
	(gxv_just_actSubrecord_type1_validate): GID is checked by
	gxv_just_check_max_gid().
	(gxv_just_actSubrecord_type2_validate): Conditionalize
	unvalidated variable `substThreshhold'.  GID is checked by
	gxv_just_check_max_gid().
	(gxv_just_actSubrecord_type5_validate): GID is checked by
	gxv_just_check_max_gid().
	(gxv_just_classTable_entry_validate): Conditionalize
	unvalidated variables; `setMark', `dontAdvance',
	`markClass', `currentClass'.

2011-06-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Preparation to fix gcc4.6 compiler warnings.

	* src/gxvalid/gxvcommn.h (GXV_LOAD_TRACE_VARS): New macro to
	conditionalize the variable which is only used for trace messages.
	Automatically set by FT_DEBUG_LEVEL_TRACE.
	(GXV_LOAD_UNUSED_VARS): New macro to conditionalize the loading of
	unvalidated variables.  Undefined by default to calm gcc4.6 warning.
	(GXV_ValidatorRec.{min_gid,max_gid}): New variables to hold defined
	GID ranges, for the comparison of GID ranges in different subtables.

2011-06-08  Werner Lemberg  <wl@gnu.org>

	[autofit] Remove unused structure member.

	* src/autofit/afhints.h (AF_SegmentRec): Remove `contour'.
	* src/autofit/aflatin.c (af_latin_hints_compute_segments),
	src/autofit/aflatin2.c (af_latin2_hints_compute_segments): Updated.

2011-05-30  Werner Lemberg  <wl@gnu.org>

	Fix g++ 4.6 compilation.

	* src/autofit/afhints.c (af_glyph_hints_dump_segments,
	af_glyph_hints_dump_edges): Use cast.

2011-05-30  Werner Lemberg  <wl@gnu.org>

	Fix gcc 4.6 compiler warnings.

	* src/autofit/afcjk.c (af_cjk_metrics_init_blues): Use casts and
	remove unused variables.
	* src/autofit/aflatin.c (af_latin_hints_compute_edges): Comment out
	`up_dir'.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `height_org'
	and `width_org' conditionalized.

2011-05-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[mac] Conditionalize the inclusion of `AvailabilityMacros.h'.

	The native SDK on earliest Mac OS X (10.0-10.1) did not have
	`AvailabilityMacros.h'.  To prevent the inclusion of missing
	header file, ECANCELED (introduced in 10.2) in POSIX header
	file <errno.h> is checked to detect the system version.

	* include/freetype/config/ftconfig.h: Conditionalize the
	inclusion of `AvailabilityMacros.h'.
	* builds/unix/ftconfig.in: Ditto.
	* builds/vms/ftconfig.h: Ditto.

2011-05-27  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve tracing of hinting process.

	* src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message
	`ADJUST'.

2011-05-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix trace message.

	* src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in
	tracing message.

2011-05-24  Daniel Zimmermann  <netzimme@googlemail.com>

	Reduce warnings for MS Visual Studio 2010.

	* src/autofit/afhints.c (af_glyph_hints_get_num_segments,
	af_glyph_hints_get_segment_offset) [!FT_DEBUG_AUTOFIT]: Provide
	return value.
	* src/cff/cffgload.c (cff_slot_load): Add cast.
	* src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Use proper
	loop variable type.

2011-05-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Automake component `builds/unix/install-sh' is removed.

	* builds/unix/install-sh: Removed.  It is not needed to
	include repository, because autogen.sh installs it.
	* builds/unix/.gitignore: Register install-sh.

2011-05-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autofit] Make trace message for CJK bluezone more verbose.

2011-05-08  Just Fill Bugs  <mozbugbox@yahoo.com.au>
            suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autofit] Add bluezones for CJK Ideographs.

	To remove extrema of vertical strokes of CJK Ideographs at
	low resolution and make the top and bottom horizontal stems
	aligned, bluezones for CJK Ideographs are calculated from
	sample glyphs.  At present, vertical bluezones (bluezones
	to align vertical stems) are disabled by default.  For detail, see
	https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html
	https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html
	https://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html

	* include/freetype/internal/fttrace.h: New trace component `afcjk'.
	* src/autofit/afcjk.h (AF_CJK{Blue,Axis,Metric}Rec): Add CJK version
	for AF_Latin{Blue,Axis,Metric}Rec.
	(af_cjk_metrics_check_digits): Ditto, shared with Indic module.
	(af_cjk_metrics_init_widths): Ditto.
	(af_cjk_metrics_init): Take AF_CJKMetric instead of AF_LatinMetric.
	(af_cjk_metrics_scale): Ditto (declaration).
	(af_cjk_hints_init): Ditto (declaration).
	(af_cjk_hints_apply): Ditto (declaration).
	* src/autofit/afcjk.c (af_cjk_metrics_scale): Ditto (body).
	(af_cjk_hints_init): Ditto (body).
	(af_cjk_hints_apply): Ditto (body).
	(af_cjk_metrics_init_widths): Duplicate af_latin_metrics_init_widths.
	(af_cjk_metrics_check_digits): Duplicate af_latin_metrics_check_digits.
	(af_cjk_metrics_init): Call CJK bluezone initializer.
	(af_cjk_metrics_scale_dim): Add code to scale bluezones.
	(af_cjk_hints_compute_blue_edges): New function, CJK version of
	af_latin_hints_compute_blue_edges.
	(af_cjk_metrics_init_blues): New function, CJK version of
	af_latin_metrics_init_blues.
	(af_cjk_hint_edges): Add code to align the edge stems to blue zones.

	* src/autofit/afindic.c (af_indic_metrics_init): Take AF_CJKMetric
	instead of AF_LatinMetric, and initialize as af_cjk_metrics_init.
	However bluezones are not initialized.
	(af_indic_metrics_scale): Take AF_CJKMetric instead of AF_LatinMetric.
	(af_indic_hints_init): Ditto.
	(af_indic_hints_apply): Ditto.

	* docs/CHANGES: Note about CJK bluezone support.

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

	[autofit] Remove unused struct member.

	* src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'.

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

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify.

2011-05-01  Just Fill Bugs  <mozbugbox@yahoo.com.au>
            Werner Lemberg  <wl@gnu.org>

	[autofit] Add more debugging functions.

	* src/autofit/afhints.c (af_glyph_hints_get_num_segments,
	af_glyph_hints_get_segment_offset): New functions.

2011-05-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Add new option `--disable-mmap' to configure script.

	* builds/unix/configure.raw: New option `--disable-mmap'
	is added.  It is for the developers to simulate the systems
	without mmap() (like 4.3BSD, minix etc) on POSIX systems.

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

	[truetype] Always recalculate the sfnt table checksum.

	* src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate
	the sfnt table checksum even if non-zero value is written in
	the TrueType font header.  Some bad PDF generators write
	wrong values.  For details see examples and benchmark tests
	of the latency by recalculation:
	https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
	https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html

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

	[truetype] Register a set of tricky fonts, NEC FA family.

	* src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids):
	Add 8 checksum sets for NEC FA family.  For the tricky fonts
	without some tables (e.g. NEC FA fonts lack cvt table),
	extra check is added to assure that a zero-length table in the
	registry is not included in the font.

2011-04-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Fix a bug in the sfnt table checksum getter.

	* src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the
	return value of face->goto_table() correctly.

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

	[autofit] Improve tracing messages.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues,
	af_latin_align_linked_edge, af_latin_hint_edges): Do it.

2011-04-25  Kan-Ru Chen  <kanru@kanru.info>

	[truetype] Always check the checksum to identify tricky fonts.

	Because some PDF generators mangle the family name badly,
	the trickyness check by the checksum should be invoked always.
	For sample PDF, see
	https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html

	* src/truetype/ttobjs.c (tt_check_trickyness): Even when
	tt_check_trickyness_family() finds no trickyness,
	tt_check_trickyness_sfnt_ids() is invoked.

2011-04-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autofit] Add more Indic scripts with hanging baseline.

	* src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu,
	Sundanese, Meetei Mayek, Syloti Nagri and Sharada scripts are
	added.

2011-04-21  Behdad Esfahbod  <behdad@behdad.org>

	Always ignore global advance.

	This makes FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH redundant,
	deprecated, and ignored.  The new behavior is what every major user
	of FreeType has been requesting.  Global advance is broken in many
	CJK fonts.  Just ignoring it by default makes most sense.

	* src/truetype/ttdriver.c (tt_get_advances),
	src/truetype/ttgload.c (TT_Get_HMetrics, TT_Get_VMetrics,
	tt_get_metrics, compute_glyph_metrics, TT_Load_Glyph),
	src/truetype/ttgload.h: Implement it.

	* docs/CHANGES: Updated.

2011-04-21  rainy6144  <rainy6144@gmail.com>

	[autofit] Blur CJK stems if too many to preserve their gaps.

	When there are too many stems to preserve their gaps in the
	rasterization of CJK Ideographs at a low resolution, blur the
	stems instead of showing clumped stems.  See
	https://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html
	https://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html
	for details.

	* src/autofit/afcjk.c (af_cjk_hint_edges): Store the position of
	the previous stem by `has_last_stem' and `last_stem_pos', and skip
	a stem if the current and previous stem are too near to preserve
	the gap.

2011-04-18  Werner Lemberg  <wl@gnu.org>

	Integrate autofitter debugging stuff.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(FT_DEBUG_AUTOFIT): New macro.

	* include/freetype/internal/fttrace.h: Add trace components for
	autofitter.

	* src/autofit/aftypes.h (AF_LOG): Removed.
	(_af_debug): Removed.

	* src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/.
	s/AF_LOG/FT_TRACE5/.
	Define FT_COMPONENT where necessary.

2011-04-18  Werner Lemberg  <wl@gnu.org>

	Synchronize config files.

	* builds/unix/ftconfig.in: Copy missing assembler routines from
	include/freetype/config/ftconfig.h.

2011-04-13  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix Savannah bug #33047.

	Patch submitted by anonymous reporter.

	* src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer
	difference.

2011-04-11  Kan-Ru Chen  <kanru@kanru.info>

	Fix reading of signed integers from files on 64bit platforms.

	Previously, signed integers were converted to unsigned integers, but
	this can fail because of sign extension.  For example, 0xa344a1eb
	becomes 0xffffffffa344a1eb.

	We now do the reverse which is always correct because the integer
	size is the same during the cast from unsigned to signed.

	* include/freetype/internal/ftstream.h, src/base/ftstream.c
	(FT_Stream_Get*): Replace with...
	(FT_Stream_GetU*): Functions which read unsigned integers.
	Update all macros accordingly.

	* src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated.

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

	Update Unicode ranges for CJK autofitter; in particular, add Hangul.

	* src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0.

2011-04-04  Werner Lemberg  <wl@gnu.org>

	Fix formatting of autofit debug dumps.

	* src/autofit/afhints.c (af_glyph_hints_dump_points,
	af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Adjust
	column widths.

2011-03-30  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aftypes.h (AF_OutlineRec): Removed, unused.

2011-03-24  Werner Lemberg  <wl@gnu.org>

	* src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 256.
	This limit is given on p. 37 of Adobe Technical Note #5014.

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

	* src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning.

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

	* src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts.

2011-03-19  Werner Lemberg  <wl@gnu.org>

	More C++ compilation fixes.

	* src/autofit/afhints.c (af_glyph_hints_dump_points,
	af_glyph_hints_dump_segments, af_glyph_hints_dump_edges)
	[__cplusplus]: Protect with `extern "C"'.

2011-03-18  Werner Lemberg  <wl@gnu.org>

	C++ compilation fixes.

	* src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c
	(af_cjk_hints_apply): Use cast for `dim'.

2011-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	A better fix for Savannah bug #32671.

	* src/smooth/ftgrays.c (gray_render_conic): Clean up code and
	replace WHILE loop with a more natural DO-WHILE construct.

2011-03-16  Werner Lemberg  <wl@gnu.org>.

	* src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field.
	Suggested by Graham Asher.

2011-03-09  Werner Lemberg  <wl@gnu.org>

	Make FT_Sfnt_Table_Info return the number of SFNT tables.

	* src/sfnt/sfdriver.c (sfnt_table_info): Implement it.
	* include/freetype/tttables.h: Update documentation.
	* docs/CHANGES: Updated.

2011-03-07  Bram Tassyns  <bramt@enfocus.be>

	[cff] Fix Savannah bug #27988.

	* src/cff/cffobjs.c (remove_style): New function.
	(cff_face_init): Use it to strip off the style part of the family
	name.

2011-03-07  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2011-03-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Quick fix for Savannah bug #32671.

	This isn't the optimal solution yet, but it restores the previous
	rendering quality (more or less).

	* src/smooth/ftgrays.c (gray_render_conic): Do more splitting.

2011-03-06  Werner Lemberg  <wl@gnu.org>

	Fix autohinting fallback.

	* src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs,
	ignoring CFF-based OTFs.

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

	Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(AF_CONFIG_OPTION_USE_WARPER): New macro.
	* src/autofit/aftypes.h (AF_USE_WARPER): Remove.

	* src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/.

	* src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy
	variable assignment with a typedef.

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

	[autofit] Slight simplifications.

	* src/autofit/aflatin.c (af_latin_hints_link_segments): Remove
	test which always returns false.
	(af_latin_hints_compute_blue_edges): Remove redundant assignment.

2011-02-24  Werner Lemberg  <wl@gnu.org>

	* docs/PROBLEMS: Mention rendering differences on different
	platforms.
	Suggested and worded by Jason Owen <jason.a.owen@gmail.com>.

2011-02-24  Werner Lemberg  <wl@gnu.org>

	[autofit] Comment out unused code.

	* src/autofit/aflatin.c, src/autofit/aflatin2.c
	(af_latin_hints_compute_edges): Do it.

2011-02-24  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afhints.h (AF_GlyphHints): Remove unused field.

2011-02-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'.
	Found by <ychen1392001@yahoo.com.cn>, see detail in

	  https://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html

	* src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node
	buckets[cache->p + cache->mask] too.

2011-02-19  Kevin Kofler  <kevin.kofler@chello.at>

	Fall back to autohinting if a TTF/OTF doesn't contain any bytecode.
	This is Savannah patch #7471.

	* src/base/ftobjs.c (FT_Load_Glyph): Implement it.

2011-02-19  John Tytgat  <John.Tytgat@esko.com>

	[cff] Fix subset prefix removal.
	This is Savannah patch #7465.

	* src/cff/cffobjs.c (remove_subset_prefix): Update length after
	subset prefix removal.

2011-02-13  Bradley Grainger  <bgrainger@logos.com>

	Add inline assembly version of FT_MulFix for MSVC.

	* include/freetype/config/ftconfig.h: Ported the FT_MulFix_i386
	function from GNU inline assembly syntax (see #ifdef __GNUC__ block
	above) to MASM syntax for Microsoft Visual C++.

2011-02-13  Bradley Grainger  <bgrainger@logos.com>

	Add project and solution files in Visual Studio 2010 format.

	* builds/win32/.gitignore: Ignore user-specific cache files.
	* builds/win32/vc2010/: Add VS2010 project & solution files, created
	by upgrading builds/win32/vc2008/freetype.vcproj.
	* objs/.gitignore: Ignore Visual Studio output files.

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

	* src/autofit/afdummy.c: Include `aferrors.h'.
	Problem reported by Chris Liddell <chris.liddell@artifex.com>.

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

	[cff] Ignore unknown operators in charstrings.
	Patch suggested by Miles.Lau <sunliang_liu@foxitsoftware.com>.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Emit tracing
	message for unknown operators and continue instead of exiting with a
	syntax error.

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

	[truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also.

	* src/truetype/ttgload.c (tt_loader_init): Handle
	`FT_LOAD_PEDANTIC'.
	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
	tt_size_init_bytecode, tt_size_ready_bytecode): New argument to
	handle pedantic mode.
	* src/truetype/ttobjs.h: Updated.

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

	[truetype] Protect jump instructions against endless loops.

	* src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error
	if offset is zero.

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

	[truetype] Improve handling of invalid references.

	* src/truetype/interp.c: Set even more TT_Err_Invalid_Reference
	error codes only if pedantic hinting is active.  At the same time,
	try to provide sane values which hopefully allow useful
	continuation.  Exception to this is CALL and LOOPCALL – due to
	possible stack corruption it is necessary to bail out.

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

	[truetype] Improve handling of stack underflow.

	* src/truetype/ttinterp.c (TT_RunIns, Ins_FLIPPT, Ins_DELTAP,
	Ins_DELTAC): Exit with error only if `pedantic_hinting' is set.
	Otherwise, try to do something sane.

2011-01-30  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message.

2011-01-30  LIU Sun-Liang  <sunliang_liu@foxitsoftware.com>

	[truetype]: Fix behaviour of MIAP for invalid arguments.

	* src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in
	case of error.

2011-01-18  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix handling of MIRP instruction.

	Thanks to Greg Hitchcock who explained the issue.

	* src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with
	`>' since the description in the specification is incorrect.
	This fixes, for example, glyph `two' in font `Helvetica Neue LT Com
	65 medium' at 15ppem.

2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix ARM assembly code in include/freetype/config/ftconfig.h.

	* include/freetype/config/ftconfig.h (FT_MulFix_arm):
	Copy the maintained code from builds/unix/ftconfig.in.
	Old GNU binutils could not accept the reduced syntax
	`orr %0, %2, lsl #16'.  Un-omitted syntax like RVCT,
	`orr %0, %0, %2, lsl #16' is better.  Reported by
	Johnson Y. Yan.  The bug report by Qt developers is
	considered too.

	https://bugreports.qt.io/browse/QTBUG-6521

2011-01-15  Werner Lemberg  <wl@gnu.org>

	[raster] Make bbox handling the same as with Microsoft's rasterizer.

	Right before B/W rasterizing, the bbox gets simply rounded to
	integers.  This fixes, for example, glyph `three' in font `Helvetica
	Neue LT Com 65 Medium' at 11ppem.

	Thanks to Greg Hitchcock who explained this behaviour.

	* src/raster/ftrend1.c (ft_raster1_render): Implement it.

2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS.

	* builds/unix/configure.raw: Consider recent gcc-standard
	flags to specify architecture in CFLAGS & LDFLAGS
	harmonization.  Requested by Savannah bug #32114, to
	support multilib feature of BuildRoot SDK correctly.

2011-01-15  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer.

	* builds/unix/configure.raw: Some important options that
	included in CFLAGS but not in LDFLAGS are copied to
	LDFLAGS, but the last option in CFLAGS was not checked.

2011-01-13  Werner Lemberg  <wl@gnu.org>

	[raster] Add undocumented drop-out rule to the other bbox side also.

	* src/raster/ftraster.c (Vertical_Sweep_Drop,
	Horizontal_Sweep_Drop): Implement it.

2011-01-13  Werner Lemberg  <wl@gnu.org>

	[raster] Reduce jitter value.

	This catches a rendering problem with glyph `x' from Tahoma at
	10ppem.  It seems that the increase of the precision in the change
	from 2009-06-11 makes a larger jitter value unnecessary.

	* src/raster/ftraster.c (Set_High_Precision): Implement it.

2011-01-13  Werner Lemberg  <wl@gnu.org>

	[raster] Handle drop-outs at glyph borders according to Microsoft.

	If a drop-out rule would switch on a pixel outside of the glyph's
	bounding box, use the right (or top) pixel instead.  This is an
	undocumented feature, but some fonts like `Helvetica Neue LT Com 65
	Medium' heavily rely on it.

	Thanks to Greg Hitchcock who explained this behaviour.

	* src/raster/ftraster.c (Vertical_Sweep_Drop,
	Horizontal_Sweep_Drop): Implement it.

2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Fix Savannah bug #31923, patch drafted by Harsha.

	When a node comparator changes the cached nodes during the
	search of a node matching with queried properties, the
	pointers obtained before the function should be updated to
	prevent the dereference to freed or reallocated nodes.
	To minimize the rescan of the linked list, the update is
	executed when the comparator notifies the change of cached
	nodes. This change depends previous change:
	38b272ffbbdaae276d636aec4ef84af407d16181

	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Rescan the
	top node if the cached nodes are changed.
	* src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.

2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Notice if a cache query induced the node list change.

	Some node comparators (comparing the cache node contents and the
	properties specified by the query) can flush the cache node to
	prevent the cache inflation.  The change may invalidate the pointers
	to the node obtained before the node comparison, so it should be
	noticed to the caller.  The problem caused by the cache node
	changing is reported by Harsha, see Savannah bug #31923.

	* src/cache/ftccache.h (FTC_Node_CompareFunc): Add new argument
	`FT_Bool* list_changed' to indicate the change of the cached nodes
	to the caller.
	(FTC_CACHE_LOOKUP_CMP): Watch the change of the cached nodes by
	`_list_changed'.
	(FTC_CACHE_TRYLOOP_END): Take new macro argument `_list_changed'
	and update it when `FTC_Manager_FlushN' flushes any nodes.

	* src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new
	FTC_Node_CompareFunc type.
	(ftc_gnode_compare): Ditto.

	* src/cache/ftcbasic.c: Include FT_INTERNAL_OBJECTS_H to use
	TRUE/FALSE macros.
	(ftc_basic_gnode_compare_faceid): New argument `FT_Bool*
	list_changed' to indicate the change of the cache nodes (anyway, it
	is always FALSE).

	* src/cache/ftccmap.c: Include FT_INTERNAL_OBJECTS_H to use
	TRUE/FALSE macros.
	(ftc_cmap_node_compare): New argument `FT_Bool* list_changed' to
	indicate the change of the cache nodes (anyway, it is always FALSE).
	(ftc_cmap_node_remove_faceid): Ditto.

	* src/cache/ftccache.c (FTC_Cache_NewNode): Pass a NULL pointer to
	`FTC_CACHE_TRYLOOP_END', because the result is not needed.
	(FTC_Cache_Lookup): Watch the change of the cache nodes by
	`list_changed'.
	(FTC_Cache_RemoveFaceID): Ditto.

	* src/cache/ftcglyph.c: Include FT_INTERNAL_OBJECTS_H to use
	TRUE/FALSE macros.
	(ftc_gnode_compare): New argument `FT_Bool* list_changed' to
	indicate the change of the cache nodes (anyway, it is always FALSE).
	(FTC_GNode_Compare): New argument `FT_Bool* list_changed' to be
	passed to `ftc_gnode_compare'.
	* src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.

	* src/cache/ftcsbits.c (ftc_snode_compare): New argument `FT_Bool*
	list_changed' to indicate the change of the cache nodes, anyway.  It
	is updated by `FTC_CACHE_TRYLOOP'.
	(FTC_SNode_Compare): New argument `FT_Bool* list_changed' to be
	passed to `ftc_snode_compare'.
	* src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.

2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'.

	* src/cache/ftcglyph.h (FTC_GNode_Compare): Add the 3rd
	argument `FTC_Cache  cache' to fit FTC_Node_CompareFunc
	prototype.
	* src/cache/ftcglyph.c (FTC_GNode_Compare): Ditto. Anyway,
	`cache' is not used by its child `ftc_gnode_compare'.

2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Deduplicate the code to get the top node by a hash.

	There are several duplicated code fragments getting the top node
	from a cache by a given hash, like:

	    idx = hash & cache->mask;
	    if ( idx < cache->p )
	      idx = hash & ( cache->mask * 2 + 1 );
	    pnode = cache->buckets + idx;

	To remove duplication, a cpp-macro to do same work
	`FTC_NODE__TOP_FOR_HASH' is introduced.  For non-inlined
	configuration, non-`ftc_get_top_node_for_hash' is also introduced.

	* src/cache/ftccache.h (FTC_NODE__TOP_FOR_HASH): Declare
	and implement inlined version.
	(FTC_CACHE_LOOKUP_CMP): Use `FTC_NODE__TOP_FOR_HASH'.
	* src/cache/ftccache.c (ftc_get_top_node_for_hash): Non-inlined
	version.
	(ftc_node_hash_unlink): Use `FTC_NODE__TOP_FOR_HASH'.
	(ftc_node_hash_link): Ditto.
	(FTC_Cache_Lookup): Ditto.

2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] inline-specific functions are conditionalized.

	* src/cache/ftcglyph.c (FTC_GNode_Compare): Conditionalized for
	inlined configuration.  This function is a thin wrapper of
	`ftc_gnode_compare' for inlined `FTC_CACHE_LOOKUP_CMP' (see
	`nodecmp' argument).  Under non-inlined configuration,
	`ftc_gnode_compare' is invoked by `FTC_Cache_Lookup', via
	`FTC_Cache->clazz.node_compare'.

	* src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto.
	* src/cache/ftcsbits.c (FTC_SNode_Compare): Ditto, for
	`ftc_snode_compare'.
	* src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto.

2011-01-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Correct a type mismatch under non-inlined config.

	* src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): `FTC_GCache_Lookup'
	takes the node via a pointer `FTC_Node*', differently from cpp-macro
	`FTC_CACHE_LOOKUP_CMP'.

2011-01-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Update Jamfile to include Bzip2 support.

	* Jamfile: Include src/bzip2 to project.
	Comments for lzw, gzip, bzip2 are changed to clarify that
	they are for compressed PCF fonts, not others.
	(e.g. compressed BDF fonts are not supported yet)

2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Update Symbian project files to include Bzip2 support.

	Currently, it provides `FT_Stream_OpenBzip2' that returns
	unimplemented error always, to prevent unresolved symbol
	error for the applications designed for Unix systems.

	* builds/symbian/bld.inf: Include ftbzip2.h.
	* builds/symbian/freetype.mmp: Include ftbzip2.c.

2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Update classic MacOS makefiles to include Bzip2 support.

	Currently, it provides `FT_Stream_OpenBzip2' that returns
	unimplemented error always, to prevent unresolved symbol
	error for the applications designed for Unix systems.

	* builds/mac/FreeType.m68k_cfm.make.txt: Include ftbzip2.c.o.
	* builds/mac/FreeType.m68k_far.make.txt: Ditto.
	* builds/mac/FreeType.ppc_carbon.make.txt: Include ftbzip2.c.x.
	* builds/mac/FreeType.ppc_classic.make.txt: Ditto.

2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Update Amiga makefiles to include Bzip2 support.

	Currently, it provides `FT_Stream_OpenBzip2' that returns
	unimplemented error always, to prevent unresolved symbol
	error for the applications designed for Unix systems.

	* builds/amiga/makefile: Include bzip2.ppc.o built from ftbzip2.c.
	* builds/amiga/makefile.os4: Include bzip2.o built from ftbzip2.c.
	* builds/amiga/smakefile: Ditto.

2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Update pkg-config tools to reflect Bzip2 support.

	* builds/unix/freetype-config.in: Include `-lbz2' to
	--libs output, if built with Bzip2 support.
	* builds/unix/freetype2.in: Ditto.

2011-01-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro.

	SYSTEM_ZLIB is used to switch the builtin zlib source
	or system zlib source out of FreeType2.  But ftbzip2
	module has no builtin bzip2 library and always requires
	system bzip2 library.  Thus SYSTEM_BZ2LIB is always yes,
	it is not used.

2011-01-03  Werner Lemberg  <wl@gnu.org>

	*/rules.mk: Handle `*pic.c' files.

2010-12-31  Werner Lemberg  <wl@gnu.org>

	* src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64.
	Problem reported by Tom Bishop <wenlin@wenlin.com>.

2010-12-31  Werner Lemberg  <wl@gnu.org>

	Improve bzip2 support.

	* include/freetype/ftmoderr.h: Add bzip2.

	* docs/INSTALL.ANY, docs/CHANGES: Updated.

	* src/pcf/README: Updated.
	* include/freetype/internal/pcftypes.h: Obsolete, removed.

2010-12-31  Joel Klinghed  <the_jk@yahoo.com>

	Add bzip2 compression support to handle *.pcf.bz2 files.

	* builds/unix/configure.raw: Test for libbz2 library.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(FT_CONFIG_OPTION_USE_BZIP2): Define.
	* include/freetype/config/ftheader.h (FT_BZIP2_H): Define.

	* include/freetype/ftbzip2.h: New file.

	* src/bzip2/*: New files.

	* src/pcf/pcf.h: s/gzip_/comp_/.
	* src/pcf/pcfdrivr.c: Include FT_BZIP2_H.
	s/gzip_/comp_/.
	(PCF_Face_Init): Handle bzip2 compressed files.

	* docs/formats.txt, modules.cfg: Updated.

2010-12-25  Harsha  <mm.harsha@gmail.com>

	Apply Savannah patch #7422.

	If we encounter a space in a string then the sbit buffer is NULL,
	height and width are 0s.  So the check in ftc_snode_compare will
	always pass for spaces (comparison with 255).  Here the comments
	above the condition are proper but the implementation is not.  When
	we create an snode I think it is the proper way to initialize the
	width to 255 and then put a check for being equal to 255 in snode
	compare function.

	* src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with
	value 255.
	(ftc_snode_compare): Fix condition.

2010-12-13  Werner Lemberg  <wl@gnu.org>

	Fix parameter handling of `FT_Set_Renderer'.
	Reported by Kirill Tishin <siege@bk.ru>.

	* src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'.

2010-12-09  Werner Lemberg  <wl@gnu.org>

	[cff] Allow `hlineto' and `vlineto' without arguments.

	We simply ignore such instructions.  This is invalid, but it doesn't
	harm; and indeed, there exist such subsetted fonts in PDFs.

	Reported by Albert Astals Cid <aacid@kde.org>.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	[cff_op_hlineto]: Ignore instruction if there aren't any arguments
	on the stack.

2010-11-28  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.4 released.
	=========================


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

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.4

	* 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.4.3/2.4.4/, s/243/244/.

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

	* builds/unix/configure.raw (version_info): Set to 12:2:6.

2010-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftsmooth]: Minor code simplification.

	* src/smooth/ftgrays (gray_render_cubic): Do only one comparison
	instead of two.

2010-11-26  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>

	[truetype] Better multi-threading support.

	* src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone
	references.

2010-11-23  John Tytgat  <John.Tytgat@esko.com>

	* src/psaux/t1decode.c (t1_decoder_parse_charstring): Expand
	start_point, check_points, add_point, add_point1, close_contour
	macros.
	Remove add_contour macro.
	Return error code from t1_builder_start_point and
	t1_builder_check_points when there was one (instead of returning 0).

2010-11-22  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Identify the tricky fonts by cvt/fpgm/prep checksums.
	Some Latin TrueType fonts are still expected to be unhinted.
	Fix Savannah bug #31645.

	* src/truetype/ttobjs.c (tt_check_trickyness): Divided to...
	(tt_check_trickyness_family): this checking family name, and
	(tt_check_trickyness_sfnt_ids): this checking cvt/fpgm/prep.
	(tt_get_sfnt_checksum): Function to retrieve the sfnt checksum
	for specified subtable even if cleared by lazy PDF generators.
	(tt_synth_sfnt_checksum): Function to calculate the checksum.

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

	[truetype] Fix `loca' handling for inconsistent number of glyphs.
	Reported by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.

	* src/truetype/ttpload.c (tt_face_load_loca): While sanitizing,
	handle case where `loca' is the last table in the font.

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

	[sfnt] Ignore all errors while loading `OS/2' table.
	Suggested by Johnson Y. Yan <yinsen_yan@foxitsoftware.com>.

	* src/sfnt/sfobjs.c (sfnt_load_face): Do it.

2010-11-18  Johnson Y. Yan  <yinsen_yan@foxitsoftware.com>

	[type1] Fix matrix normalization.

	* src/type1/t1load.c (parse_font_matrix): Handle sign of scaling
	factor.

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

	[type1] Improve guard against malformed data.
	Based on a patch submitted by Johnson Y. Yan
	<yinsen_yan@foxitsoftware.com>

	* src/type1/t1load.c (read_binary_data): Check `size'.

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

	[sfnt] While tracing, output table checksums also.

	* src/sfnt/ttload.c (tt_face_load_font_dir): Do it.

2010-11-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[UVS] Fix `find_variant_selector_charmap', Savannah bug #31545.

	Since 2010-07-04, `find_variant_selector_charmap' returns
	the first cmap subtable always under rogue-compatible
	configuration, it causes NULL pointer dereference and
	make UVS-related functions crashed.

	* src/base/ftobjs.c (Fix find_variant_selector_charmap):
	Returns UVS cmap correctly.

2010-11-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftsmooth] Improve rendering.

	* src/smooth/ftsmooth.c (gray_render_conic): Since version 2.4.3,
	cubic deviations have been estimated _after_ UPSCALE, whereas
	conic ones have been evaluated _before_ UPSCALE, which produces
	inferior rendering results.  Fix this.
	Partially undo change from 2010-10-15 by using ONE_PIXEL/4; this has
	been tested with demo images sent to the mailing list.  See

	  https://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html

	and later mails in this thread.

2010-10-28  Werner Lemberg  <wl@gnu.org>

	[ftraster] Minor fixes.

	Reported by Tom Bishop <wenlin@wenlin.com>.

	* src/raster/ftraster.c (ULong): Remove unused typedef.
	(TWorker): Remove unused variable `precision_mask'.

2010-10-28  Werner Lemberg  <wl@gnu.org>

	[ftraster] Fix rendering.

	Problem reported by Tom Bishop <wenlin@wenlin.com>; see
	thread starting with

	  https://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html

	* src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv
	since the involved multiplication exceeds 32 bits.

2010-10-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'.

	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Revert
	the type of `_idx' from FT_PtrDist (by previous change)
	to original FT_UFast, to match with FT_CacheRec.

2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Change the hash types to FT_PtrDist.

	On LLP64 platforms (e.g. Win64), FT_ULong (32-bit)
	variables are inappropriate to calculate hash values
	from the memory address (64-bit).  The hash variables
	are extended from FT_ULong to FT_PtrDist and new
	hashing macro functions are introduced.  The hash
	values on 16-bit memory platforms are changed, but
	ILP32 and LP64 are not changed.  The hash value in
	the cache subsystem is not reverted to the memory
	address, so using signed type FT_PtrDist is safe.

	* src/cache/ftccache.h (_FTC_FACE_ID_HASH): New hash
	function to replace `FTC_FACE_ID_HASH' for portability.
	* src/cache/ftcmanag.h (FTC_SCALER_HASH): Replace
	`FTC_FACE_ID_HASH' by `_FTC_FACE_ID_HASH'.
	* src/cache/ftccmap.c (FTC_CMAP_HASH): Ditto.

	* src/cache/ftccache.h (FTC_NodeRec): The type of the
	member `hash' is changed from FT_UInt32 to FT_PtrDist.

	* src/cache/ftccache.h (FTC_Cache_Lookup): The type of the
	argument `hash' is changed from FT_UInt32 to FT_PtrDist.
	(FTC_Cache_NewNode): Ditto.
	* src/cache/ftccache.c (ftc_cache_add): Ditto.
	(FTC_Cache_Lookup): Ditto.  (FTC_Cache_NewNode): Ditto.
	* src/cache/ftcglyph.h (FTC_GCache_Lookup): Ditto.
	* src/cache/ftcglyph.c (FTC_GCache_Lookup): Ditto.

	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): The type
	of the internal variable `hash' is changed to FT_PtrDist
	from FT_UInt32.  (FTC_ImageCache_LookupScaler): Ditto.
	(FTC_SBitCache_Lookup): Ditto.
	(FTC_SBitCache_LookupScaler): Ditto.
	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto.
	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Ditto.
	Also the type of the internal variable `_idx' is changed to
	FT_PtrDist from FT_UFast for better pointer calculation.

2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Hide internal macros incompatible with LLP64.

	`FT_POINTER_TO_ULONG', `FTC_FACE_ID_HASH', and
	`FTC_IMAGE_TYPE_HASH' are enclosed by
	FT_CONFIG_OPTION_OLD_INTERNALS and hidden from
	normal clients.

	For the history of these macros, see the investigation:
	https://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html

2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist.

	On LLP64 platforms (e.g. Win64), unsigned long (32-bit)
	cannot cover the memory address (64-bit).  `FT_MEM_VAL' is
	used for hashing only and not dereferred, so using signed
	type FT_PtrDist is safe.

	* src/base/ftdbgmem.c (FT_MEM_VAL): Change the type of the
	return value from FT_ULong to FT_PtrDist.
	(ft_mem_table_resize): The type of hash is changed to
	FT_PtrDist.  (ft_mem_table_get_nodep): Ditto.

2010-10-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Replace "%lx" for memory address by "%p", LLP64 platforms.

	On LLP64 platforms (e.g. Win64), long (32-bit) cannot cover
	the memory address (64-bit).  Also the casts from the pointer
	type to long int should be removed to preserve the address
	correctly.

	* src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p".
	(End_Profile) Ditto.
	* src/truetype/ttinterp.c (Init_Context): Ditto.

2010-10-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Fix thinko in spline flattening.

	FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL.

	* src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and
	replace it everywhere with ONE_PIXEL/8.

2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[raccess] Skip unrequired resource access rules by Darwin VFS.

	When a resource fork access rule by Darwin VFS could open the
	resource fork but no font is found in it, the rest of rules
	by Darwin VFS are skipped.  It reduces the warnings of the
	deprecated resource fork access method by recent Darwin kernel.
	Fix MacPorts ticket #18859:
		https://trac.macports.org/ticket/18859

	* src/base/ftobjs.c (load_face_in_embedded_rfork):
	When `FT_Stream_New' returns FT_Err_Cannot_Open_Stream, it
	means that the file is possible to be `fopen'-ed but zero-sized.
	Also there is a case that the resource fork is not zero-sized,
	but no supported font exists in it.  If a rule by Darwin VFS
	falls into such cases, there is no need to try other Darwin VFS
	rules anymore.  Such cases are marked by vfs_rfork_has_no_font.
	If it is TRUE, the Darwin VFS rules are skipped.

2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[raccess] Grouping resource access rules based on Darwin VFS.

	MacOS X/Darwin kernel supports a few tricky methods to access
	a resource fork via ANSI C or POSIX interface.  Current resource
	fork accessor tries all possible methods to support all kernels.
	But if a method could open a resource fork but no font is found,
	there is no need to try other methods older than tested method.
	To determine whether the rule index is for Darwin VFS, a local
	function `ftrfork.c::raccess_rule_by_darwin_vfs' is introduced.
	To use this function in ftobjs.c etc but it should be inlined,
	it is exposed by ftbase.h.

	* src/base/ftrfork.c (FT_RFork_Rule): New enum type to identify
	the rules to access the resource fork.
	(raccess_guess_rec): New structure to bind the rule function and
	rule enum type.
	(FT_Raccess_Guess): The list of the rule functions is replaced by
	(raccess_guess_table): This.  This is exposed to be used by other
	intra module functions.
	(raccess_rule_by_darwin_vfs): A function to return a boolean
	if the rule specified by the rule index is based on Darwin VFS.

2010-10-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Prevent to open a FT_Stream for zero-sized file on non-Unix.

	builds/unix/ftsystem.c prevents to open an useless stream from
	zero-sized file and returns FT_Err_Cannot_Open_Stream, but the
	stream drivers for ANSI C, Amiga and VMS return useless streams.
	For cross-platform consistency, all stream drivers should act
	same.

	* src/base/ftsystem.c (FT_Stream_Open): If the size of the opened
	file is zero, FT_Err_Cannot_Open_Stream is returned.
	* builds/amiga/src/base/ftsystem.c (FT_Stream_Open): Ditto.
	* src/vms/ftsystem.c (FT_Stream_Open): Ditto.

2010-10-12  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #31310.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against
	invalid `runcnt' values.

2010-10-08  Chris Liddell  <chris.liddell@artifex.com>

	[sfnt] Fix Savannah bug #31275.

	* src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H.

2010-10-06  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve error handling of `SHZ' bytecode instruction.
	Problem reported by Chris Evans <scarybeasts@gmail.com>.

	* src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'.

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

	Fix Savannah bug #31253.
	Patch submitted by an anonymous reporter.

	* configure: Use `awk' instead of `sed' to manipulate output of `ls
	-id'.

2010-10-03  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.3 released.
	=========================


	Tag sources with `VER-2-4-3'.

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.3

	* 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.4.2/2.4.3/, s/242/243/.

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

	* builds/unix/configure.raw (version_info): Set to 12:1:6.

2010-10-03  Werner Lemberg  <wl@gnu.org>

	Avoid `configure' issues with symbolic links.
	Based on a patch from Alexander Stohr <Alexander.Stohr@gmx.de>.

	* configure: Compare directories using `ls -id'.
	Check existence of `reference' subdirectory before creating it.

2010-10-02  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #31088 (sort of).

	* src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64
	function entries.

2010-10-02  Werner Lemberg  <wl@gnu.org>

	[smooth] Fix splitting of cubics for negative values.

	Reported by Róbert Márki <gsmiko@gmail.com>; see
	https://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html.

	* src/smooth/ftgrays.c (gray_render_cubic): Fix thinko.

2010-10-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Fix Savannah bug #31040.

	* src/truetype/ttinterp.c (free_buffer_in_size): Remove.
	(TT_RunIns): Updated.

2010-09-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[sfnt] Make error message filling NULL names less verbose.

	* src/sfnt/ttpost.c (load_format_20): Showing 1 summary message
	when we fill `post' names by NULL, instead of per-entry message.

2010-09-20  Graham Asher  <graham.asher@btinternet.com>
	    David Bevan  <david.bevan@pb.com>

	[smooth] Fix and improve spline flattening.

	This fixes the flattening of cubic, S-shaped curves and speeds up
	the handling of both the conic and cubic arcs.

	See the discussions on the freetype-devel mailing list in late
	August and September 2010 for details.

	* src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): New macro.
	(TWorker): Remove `conic_level' and `cubic_level' elements.
	(gray_render_conic): Simplify algorithm.
	(gray_render_cubic): New algorithm; details are given in the code
	comments.
	(gray_convert_glyph): Remove heuristics.

2010-09-19  Werner Lemberg  <wl@gnu.org>

	Minor fixes.

	* src/cff/cffload.c (cff_charset_compute_cids): `charset->sids[i]'
	is `FT_UShort'.
	(cff_index_access_element): Don't use additions in comparison.
	* src/sfnt/ttpost.c (load_format_20): Make `post_limit' of type
	`FT_Long'.
	Don't use additions in comparison.
	Improve tracing messages.
	(load_format_25, load_post_names): Make `post_limit' of type
	`FT_Long'.

2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cff] Truncate the element length at the end of the stream.
	See Savannah bug #30975.

	* src/cff/cffload.c (cff_index_access_element): `off2', the offset
	to the next element is truncated at the end of the stream to prevent
	invalid I/O.  As `off1', the offset to the requested element has
	been checked by `FT_STREAM_SEEK', `off2' should be checked
	similarly.

2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cff] Ignore CID > 0xFFFFU.
	See Savannah bug #30975.

	* src/cff/cffload.c (cff_charset_compute_cids): Ignore CID if
	greater than 0xFFFFU.  CFF font spec does not mention maximum CID in
	the font, but PostScript and PDF spec define that maximum CID is
	0xFFFFU.

2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cff] Make trace message in` cff_charset_load' verbose.
	See Savannah bug #30975.

	* src/cff/cffload.c (cff_charset_load): Report the original `nleft'
	and truncated `nleft'.

2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cff] Correct `max_cid' from CID array length to max CID.
	See Savannah bug #30975.

	* src/cff/cffload.c (cff_charset_compute_cids): Don't increment
	max_cid after detecting max CID.  The array CFF_Charset->cids is
	allocated by max_cid + 1.
	(cff_charset_cid_to_gindex): Permit CID is less than or equal to
	CFF_Charset->max_cid.
	* src/cff/cffobjs.c (cff_face_init): FT_Face->num_glyphs is
	calculated as CFF_Charset->max_cid + 1.

2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Sanitize the broken offsets in `loca'.
	See Savannah bug #31040.

	* src/truetype/ttpload.c (tt_face_get_location): If `pos1', the
	offset to the requested entry in `glyf' exceeds the end of the
	table, return offset=0, length=0.  If `pos2', the offset to the next
	entry in `glyf' exceeds the end of the table, truncate the entry
	length at the end of `glyf' table.

2010-09-19  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[sfnt] Prevent overrunning in `post' table parser.
	See Savannah bug #31040.

	* src/sfnt/ttpost.c (load_post_names): Get the length of `post'
	table and pass the limit of `post' table to `load_format_20' and
	`load_format_25'.
	(load_format_20): Stop the parsing when we reached at the limit of
	`post' table.  If more glyph names are required, they are filled by
	NULL names.

2010-09-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Don't duplicate size->twilight structure to be freed.
	See Savannah bug #31040 for detail.

	* src/truetype/ttinterp.c (free_buffer_in_size): Don't duplicate
	FT_GlyphZoneRec size->twilight to be freed.  If duplicated,
	`FT_FREE' erases the duplicated pointers only and leave original
	pointers.  They can cause the double-free crash when the burst
	errors occur in TrueType interpreter and `free_buffer_in_size' is
	invoked repeatedly.

2010-09-15  Werner Lemberg  <wl@gnu.org>

	Make bytecode debugging with FontForge work again.

	* src/truetype/ttinterp.c (TT_RunIns): Don't call
	`free_buffer_in_size' in case of error if a debugger is active.

2010-09-14  Werner Lemberg  <wl@gnu.org>

	Improve tracing messages.

	* src/truetype/ttinterp.c (TT_RunIns): Improve wording of tracing
	message.
	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Add
	tracing message.
	* src/truetype/ttgload.c (tt_loader_init): Add tracing message.
	* src/cache/ftcsbits.c (ftc_snode_load): Emit tracing message if
	glyph doesn't fit into a small bitmap container.

2010-09-13  Werner Lemberg  <wl@gnu.org>

	Fix minor issues reported by <muktha.narayan@wipro.com>.

	* src/autofit/aflatin.c (af_latin_compute_stem_width): Remove
	redundant conditional check.
	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Ditto.
	* src/cff/cffload.c (cff_encoding_load): Remove conditional check
	which always evaluates to `true'.
	* src/pshinter/pshalgo.c (ps_glyph_interpolate_strong_points):
	Ditto.
	* src/truetype/ttinterp.c (Ins_IUP): Ditto.
	* src/cid/cidgload.c (cid_slot_load_glyph): Don't check for NULL if
	value is already dereferenced.
	* src/winfonts/winfnt.c (FNT_Load_Glyph): Fix check of `face'.

2010-08-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Ignore the environmental setting of LIBTOOL.
	Patch is suggested by Adrian Bunk, to prevent unexpected
	reflection of environmental LIBTOOL.  See:
	https://savannah.nongnu.org/patch/?7290

	* builds/unix/unix-cc.in: LIBTOOL is unconditionally set to
	$(FT_LIBTOOL_DIR)/libtool.  FT_LIBTOOL_DIR is set to $(BUILD_DIR)
	by default.
	* configure: When configured for the building out of source tee,
	FT_LIBTOOL_DIR is set to $(OBJ_DIR).

2010-08-31  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Decrease the trace level catching the interpreter error.

	* src/truetype/ttinterp.c (TT_RunIns): Decrease the trace level
	showing the error when the interpreter returns with an error,
	from` FT_TRACE7' to `FT_TRACE1'.

2010-08-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Prevent bytecode reuse after the interpretation error.

	* src/truetype/ttinterp.c (free_buffer_in_size): New function to
	free the buffer allocated during the interpretation of this glyph.
	(TT_RunIns): Unset FT_Face->size->{cvt_ready,bytecode_ready} if
	an error occurs in the bytecode interpretation.  The interpretation
	of invalid bytecode may break the function definitions and referring
	them in later interpretation is danger.  By unsetting these flags,
	`fpgm' and `prep' tables are executed again in next interpretation.

	This fixes Savannah bug #30798, reported by Robert Święcki.

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

	[ftraster] Pacify compiler.

	* src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is
	not used.

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

	[cff] Allow SIDs >= 65000.

	* src/cff/cffload.c (cff_charset_load): Fix change from 2009-03-20:
	The threshold for SIDs is not applicable here.  I misinterpreted the
	`SID values 65000 and above are available for implementation use'
	sentence in the CFF specification.

	Problem reported by Ivan Ninčić <inincic@pdftron.com>.

2010-08-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Force hinting when the font lacks its familyname.

	In Type42 or Type11 font embedded in PostScript & PDF, TrueType sfnt
	stream may lack `name' table because they are not required.  Hinting
	for nameless fonts is safer for PDFs including embedded Chinese
	fonts.  Written by David Bevan, see:

	https://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html
	https://lists.freedesktop.org/archives/poppler/2010-August/006310.html

	* src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by
	nameless font is given, TRUE is returned to enable hinting.

2010-08-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Register yet another tricky TrueType font.

	* src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?',
	a Kaishu typeface paired with `HuaTianSongTi?' by Huatian
	Information Industry.

2010-08-17  Teijo Kinnunen  <Teijo.Kinnunen@nuance.com>

	[cache] Fix Savannah bug #30788.

	* src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for
	NULL too.

2010-08-10  Werner Lemberg  <wl@gnu.org>

	Try to fix Savannah bug #30717 (and probably #30719 too).

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another
	overflow test for `width' and `height'.

2010-08-06  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.2 released.
	=========================


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

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.2

	* 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.4.1/2.4.2/, s/241/242/.

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

	* builds/unix/configure.raw (version_info): Set to 12:0:6.

2010-08-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #30648.

	* src/base/ftobjs.c (FT_Done_Library): Specify the order of font
	drivers during the face closing process.  Type42 faces should be
	closed before TrueType faces, because a Type42 face refers to
	another internal TrueType face which is created from sfnt[] array on
	the memory.

2010-08-06  Yuriy Kaminskiy  <yumkam@mail.ru>

	[raster] Fix valgrind warning.

	* src/raster/ftraster.c (Decompose_Curve) <default>: Access point[0]
	only if we don't hit `limit'.

2010-08-06  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #30658.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Check that the total
	length of collected POST segments does not overrun the allocated
	buffer.

2010-08-06  Yuriy Kaminskiy  <yumkam@mail.ru>

	Fix conditional usage of FT_MulFix_i386.
	With -ansi flag, gcc does not define `i386', only `__i386__'.

	* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in:
	s/i386/__i386__/.

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

	[truetype] Fix Savannah bug #30657.

	* src/truetype/ttinterp.c (BOUNDSL): New macro.
	Change `BOUNDS' to `BOUNDSL' where appropriate.

	* src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of
	`cvtSize'.

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

	[type42] Fix Savannah bug #30656.

	* src/type42/t42parse.c (t42_parse_sfnts): Protect against negative
	string_size.
	Fix comparison.

2010-08-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cff] Don't use any values in decoder after parsing error.

	* src/cff/cffgload.c (cff_slot_load): Skip the evaluations
	of the values in decoder, if `cff_decoder_parse_charstrings'
	returns any error.

2010-08-04  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #30644.

	* src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison.

2010-08-04  Werner Lemberg  <wl@gnu.org>

	`make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set.

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

2010-08-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cff] Improve stack overflow test.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack
	after execution of operations too.

2010-07-18  Werner Lemberg  <wl@gnu.org>

	Add reference counters and to FT_Library and FT_Face objects.

	* include/freetype/freetype.h (FT_Reference_Face): New function.
	* include/freetype/ftmodapi.h (FT_Reference_Library): New function.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec,
	FT_LibraryRec): New field `refcount'.

	* src/base/ftobjs.c (FT_Open_Face, FT_New_Library): Handle
	`refcount'.
	(FT_Reference_Face, FT_Reference_Library): Implement new functions.
	(FT_Done_Face, FT_Done_Library): Handle `refcount'.

	* docs/CHANGES: Updated.

2010-07-18  Werner Lemberg  <wl@gnu.org>

	* Version 2.4.1 released.
	=========================


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

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.1.

	* 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.4.0/2.4.1/, s/240/241/.

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

	* builds/unix/configure.raw (version_info): Set to 11:1:5.

2010-07-17  Werner Lemberg  <wl@gnu.org>

	[cff] Final try to fix `hintmask' and `cntrmask' limit check.

	Problem reported by Tobias Wolf <towolf@gmail.com>.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_hintmask>: Sigh.  I'm apparently too silly to fix this
	correctly in less than three tries.

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

	* Version 2.4.0 released.
	=========================


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

	* docs/CHANGES: Updated.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.4.0.

	* 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.12/2.4.0/, s/2312/240/.

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

	* builds/unix/configure.raw (version_info): Set to 11:0:5.

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

	Remove C++ warnings.

	*/*: Initialize pointers where necessary to make g++ happy.

2010-07-12  malc  <av1474@comtv.ru>
	    Richard Henderson  <rth@redhat.com>

	Fix type-punning issues with C++.

	* include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]:
	Emulate a `typeof' operator with an inline template which uses
	`static_cast'.

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

	Fix C++ compilation issue.

	* src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Fix
	type of `dot' variable.

2010-07-10  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix another case reported in Savannah bug #30373.
	Permit a face for Type1, Type42 and CFF without charmap,
	patch by Tor Andersson.

	* src/type1/t1objs.c (T1_Face_Init): Reset the error if it
	is FT_Err_No_Unicode_Glyph_Name.
	* src/type42/t42objs.c (T42_Face_Init): Ditto.
	* src/cff/cffobjs.c (cff_face_init): Ditto.

2010-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Use defined macros to set {platform,encoding}_id.

	* src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to
	set charmap.{platform,encoding}_id.
	* src/pcf/pcfdrivr.c: Ditto.
	* src/winfonts/winfnt.c: Ditto.
	* src/type1/t1objs.c: Ditto.
	* src/type42/t42objs.c: Ditto.
	* src/cff/cffobjs.c: Ditto.
	* src/pfr/pfrobjs.c: Ditto.

2010-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #30373.
	Too serious check of errors by `FT_CMap_New' since 2010-07-04
	is fixed. Reported by Tor Andersson.

	* include/freetype/fterrdef.h
	(PSnames_Err_No_Unicode_Glyph_Name): New error code to
	indicate the Unicode charmap synthesis failed because
	no Unicode glyph name is found.

	* src/psnames/psmodule.c (ps_unicodes_init): Return
	PSnames_Err_No_Unicode_Glyph_Name when no Unicode glyph name
	is found in the font.
	* src/cff/cffcmap.c (cff_cmap_unicode_init): Return
	CFF_Err_No_Unicode_Glyph_Name when no SID is available.

	* src/type1/t1objs.c (T1_Face_Init): Proceed if `FT_CMap_New'
	is failed by the lack of Unicode glyph name.
	* src/type42/t42objs.c (T42_Face_Init): Ditto.
	* src/cff/cffobjs.c (cff_face_init): Ditto.

2010-07-09  Ken Sharp  <ken.sharp@artifex.com>

	Make ftraster.c compile in stand-alone mode with MSVC compiler.

	* src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef
	since there is no `inttypes.h' for MSVC.

2010-07-08  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #30361.

	* src/truetype/ttinterp.c (Ins_IUP): Fix bounds check.

2010-07-06  Werner Lemberg  <wl@gnu.org>

	Pacify compiler.

	* src/cff/cffload.c (cff_index_get_pointers): Initialize
	`new_bytes'.

2010-07-05  Eugene A. Shatokhin  <spectre@ispras.ru>

	Fix Savannah bug #27648.

	* src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call
	`raster_done' only if we have an outline glyph format.

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

	Fix Savannah bug #30030.

	* builds/win32/*/freetype.vcproj: Add ftxf86.c.

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

	[cff] Next try to fix `hintmask' and `cntrmask' limit check.

	Problem reported by malc <av1474@comtv.ru>.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_hintmask>: It is possible that there is just a single byte
	after the `hintmask' or `cntrmask', e.g., a `return' instruction.

2010-07-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Restrict the number of the charmaps in a rogue-compatible mode.
	Fix for Savannah bug #30059.

	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Replace `16' the
	minimum character code passed by a legacy rogue client by...
	* include/freetype/config/ftoption.h (FT_MAX_CHARMAP_CACHEABLE):
	This.  It is undefined when FT_CONFIG_OPTION_OLD_INTERNALS is
	undefined (thus the rogue client compatibility is not required).

	* src/cff/cffobjs.c (cff_face_init): Abort the automatic
	selection or synthesis of Unicode cmap subtable when the charmap
	index exceeds FT_MAX_CHARMAP_CACHEABLE.
	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Issue error message
	when the charmap index exceeds FT_MAX_CHARMAP_CACHEABLE.

	* src/base/ftobjs.c (find_unicode_charmap): When Unicode charmap
	is found after FT_MAX_CHARMAP_CACHEABLE, ignore it and search
	earlier one.
	(find_variant_selector_charmap): When UVS charmap is found after
	FT_MAX_CHARMAP_CACHEABLE, ignore it and search earlier one.
	(FT_Select_Charmap): When a charmap matching with requested
	encoding but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
	earlier one.
	(FT_Set_Charmap): When a charmap matching with requested
	charmap but after FT_MAX_CHARMAP_CACHEABLE, ignore and search
	earlier one.
	(FT_Get_Charmap_Index): When a requested charmap is found
	after FT_MAX_CHARMAP_CACHEABLE, return the inverted charmap
	index.

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

	TrueType hinting is no longer patented.

	* include/freetype/config/ftoption.h, devel/ftoption.h
	(TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define.
	(TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine.

	* docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated.
	* docs/TRUETYPE, docs/PATENTS: Removed.

2010-07-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Check error value by `FT_CMap_New'.

	* src/cff/cffobjs.c (cff_face_init): Check error value by
	`FT_CMap_New'.
	* src/pfr/pfrobjs.c (pfr_face_init): Ditto.
	* src/type1/t1objs.c (T1_Face_Init): Ditto.
	* src/type42/t42objs.c (T42_Face_Init): Ditto.

2010-07-03  Werner Lemberg  <wl@gnu.org>

	Make ftgrays.c compile stand-alone again.

	* src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'.
	(FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define.

2010-07-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Additional fix for Savannah bug #30306.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): If the type of the
	POST fragment is 0, the segment is completely ignored.  The declared
	length of the segment is not cared at all.  According to Adobe
	Technical Note 5040, type 0 segment is a comment only and should not
	be loaded for the interpreter.  Reported by Robert Święcki.

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

	[truetype] Protect against code range underflow.

	* src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow
	negative IP values.

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

	[truetype] Add rudimentary tracing for bytecode instructions.

	* src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New
	array.
	(TT_RunIns): Trace opcodes.

2010-06-30  Werner Lemberg  <wl@gnu.org>

	[smooth] Fix Savannah bug #30263.

	* src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned
	int' to avoid integer overflow.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Use smaller
	threshold values for `width' and `height'.  This is not directly
	related to the bug fix but makes sense anyway.

2010-07-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Initial fix for Savannah bug #30306.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Check `rlen', the
	length of fragment declared in the POST fragment header, and prevent
	an underflow in length calculation.  Some fonts set the length to
	zero in spite of the existence of a following 16bit `type'.
	Reported by Robert Święcki.

2010-07-01  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Additional fix for Savannah bug #30248 and #30249.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Check the buffer size
	during gathering PFB fragments embedded in LaserWriter PS font for
	Macintosh.  Reported by Robert Święcki.

2010-06-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Minor optimizations by avoiding divisions.

	* src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning):
	Replace divisions with multiplication in comparisons.

2010-06-29  Werner Lemberg  <wl@gnu.org>

	Fix minor tracing issues.

	* src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels.

2010-06-27  Werner Lemberg  <wl@gnu.org>

	[cff] Really fix `hintmask' and `cntrmask' limit check.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_hintmask>: Fix thinko and handle tracing also.

2010-06-27  Werner Lemberg  <wl@gnu.org>

	Fix valgrind warning.

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize
	`result' array.

2010-06-27  Werner Lemberg  <wl@gnu.org>

	[cff] Fix memory leak.

	* src/cff/cffgload.c (cff_operator_seac): Free charstrings even in
	case of errors.

2010-06-27  Werner Lemberg  <wl@gnu.org>

	[cff] Protect against invalid `hintmask' and `cntrmask' operators.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_hintmask>: Ensure that we don't exceed `limit' while parsing
	the bit masks of the `hintmask' and `cntrmask' operators.

2010-06-26  Werner Lemberg  <wl@gnu.org>

	Fix PFR change 2010-06-24.

	* src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against
	invalid indices.

2010-06-26  Werner Lemberg  <wl@gnu.org>

	Improve PFR tracing messages.

	* src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for
	simple and compound glyph offsets.

2010-06-26  Werner Lemberg  <wl@gnu.org>

	Fix last PFR change.

	* src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic.

2010-06-26  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #30262.

	* src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth'
	arbitrarily to 100 to avoid stack exhaustion.

2010-06-26  Werner Lemberg  <wl@gnu.org>

	Add some memory checks (mainly for debugging).

	* src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error
	if the frame size is larger than the stream size.

	* src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if
	seeking a position larger than the stream size.

2010-06-25  Werner Lemberg  <wl@gnu.org>

	[pfr] Fix Savannah bug #30261.

	* src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain
	neither outline nor bitmap glyphs.

2010-06-25  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #30254.

	* src/cff/cffload.c (cff_index_get_pointers): Do sanity check for
	first offset also.

2010-06-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Initial fix for Savannah bug #30248 and #30249.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Check the error during
	reading a PFB fragment embedded in LaserWriter PS font for Macintosh.
	Reported by Robert Święcki.

2010-06-24  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix Savannah bug #30247.

	* src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with
	zero metrics.

2010-06-24  Graham Asher  <graham.asher@btinternet.com>

	* src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm.
	The previous version was too aggressive, as demonstrated in
	https://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html.

2010-06-24  Werner Lemberg  <wl@gnu.org>

	*/*: Use module specific error names where appropriate.

2010-06-24  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #30236.

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer
	to `cmap_table'.

2010-06-24  Werner Lemberg  <wl@gnu.org>

	[pfr] Fix Savannah bug #30235.

	* src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
	invalid indices if there aren't any coordinates for indexing.

2010-06-24  Werner Lemberg  <wl@gnu.org>

	[bdf]: Font properties are optional.

	* src/bdf/bdflib.c (_bdf_readstream): Use special error code to
	indicate a redo operation.
	(_bdf_parse_start): Handle `CHARS' keyword here too and pass current
	input line to `_bdf_parse_glyph'.

2010-06-23  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #30220.

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

	* src/bdf/bdflib.c (_bdf_parse_start): Check for missing
	`FONTBOUNDINGBOX' field.
	Avoid memory leak if there are multiple `FONT' lines (which is
	invalid but doesn't hurt).

2010-06-21  Werner Lemberg  <wl@gnu.org>

	[pfr] Fix Savannah bug #30168.

	* src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of
	subglyphs to avoid endless recursion.

2010-06-20  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix Savannah bug #30145.

	* src/psaux/psobjs.c (t1_builder_add_contour): Protect against
	`outline == NULL' which might happen in invalid fonts.

2010-06-19  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #30135.

	* src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static
	string `empty'.
	(_bdf_parse_glyph): Avoid memory leak in case of error.

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

	[autofit] Fix Savannah bug #30108.

	* src/autofit/afglobal.c (af_face_globals_compute_script_coverage):
	Properly mask AF_DIGIT bit in comparison.

2010-06-11  Werner Lemberg  <wl@gnu.org>

	[pshinter] Fix Savannah bug #30106.

	Point numbers for FreeType's implementation of hinting masks are
	collected before the final number of points of a glyph has been
	determined; in particular, the code for handling the `endchar'
	opcode can reduce the number of points.

	* src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that
	`end_point' is not larger than `glyph->num_points'.

2010-06-11  Werner Lemberg  <wl@gnu.org>

	[cff]: Improve debugging output.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_hintmask>: Implement it.

2010-06-10  Graham Asher  <graham.asher@btinternet.com>

	ftgrays: Speed up rendering of small cubic splines.

	* src/smooth/ftgrays.c (gray_render_cubic): Implement new,
	simplified algorithm to find out whether the spline can be replaced
	with two straight lines.  See this thread for more:

	  https://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html

2010-06-09  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #30082.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_callothersubr>: Protect against stack underflow.

2010-06-08  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #30053.

	* src/cff/cffparse.c (cff_parse_real): Handle border case where
	`fraction_length' has value 10.

2010-06-07  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #30052.
	This bug has been introduced with commit 2415cbf3.

	* src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Protect
	against endless loop in case of corrupted font header data.

2010-05-26  Werner Lemberg  <wl@gnu.org>

	Remove unused variable.
	Found by Graham.

	* src/autofit/afhints.c (af_glyph_hints_reload): Remove unused
	variable `first' in first block.

2010-05-22  Werner Lemberg  <wl@gnu.org>

	Fix various memory problems found by linuxtesting.org.

	* src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free),
	src/base/ftotval.c (FT_OpenType_Free), src/base/ftpfr.c
	(ft_pfr_check): Check `face'.

	* src/base/ftobjs.c (FT_Get_Charmap_Index): Check `charmap' and
	`charmap->face'.
	(FT_Render_Glyph): Check `slot->face'.
	(FT_Get_SubGlyph_Info): Check `glyph->subglyphs'.

2010-05-22  Werner Lemberg  <wl@gnu.org>

	autofit: Remove dead code.
	Suggested by Graham.

	* src/autofit/afhints.c (af_glyph_hints_compute_inflections):
	Removed.
	(af_glyph_hints_reload): Remove third argument.
	Update all callers.

2010-05-21  Bram Tassyns  <bramt@enfocus.be>

	[cff] Fix Savannah bug #27987.

	* src/cff/cffobjs.c (remove_subset_prefix): New function.
	(cff_face_init): Use it to adjust `cffface->family_name'.

2010-05-20  Werner Lemberg  <wl@gnu.org>

	TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'.

	Acroread does the same.

	* src/truetype/ttgload.c (TT_Process_Composite_Glyph): Call
	`Update_Max' to adjust size of instructions array if necessary and
	add a rough safety check.

	(load_truetype_glyph): Save `loader->byte_len' before recursive
	call.

	* src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max):
	Declare it as FT_LOCAL.

2010-05-18  Hongbo Ni  <hongbo@njstar.com>

	Apply Savannah patch #7196.

	* src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont
	index is out of range.

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

	* docs/formats.txt: Give pointer to PCF documentation.
	Information provided by Alan Coopersmith
	<alan.coopersmith@oracle.com>.

2010-05-10  Ken Sharp  <ken.sharp@artifex.com>

	[psaux] Fix Savannah bug #29846.

	Previously we discovered fonts which used `setcurrentpoint' to set
	the initial point of a contour to 0,0.  This caused FreeType to
	raise an error, because the `setcurrentpoint' operator is only
	supposed to be used with the results from an OtherSubr subroutine.

	This was fixed by simply ignoring the error and carrying on.

	Now we have found a font which uses setcurrentpoint to actually
	establish a non-zero point for a contour during the course of a
	glyph program.  FWIW, these files may be produced by an application
	called `Intaglio' on the Mac, when converting TrueType fonts to
	Type 1.

	The fix allows the new invalid behaviour, the old invalid behaviour
	and real proper usage of the operator to work the same way as Adobe
	interpreters apparently do.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make
	`setcurrentpoint' use the top two elements of the stack to establish
	unconditionally the current x and y coordinates.

	Make the `flex' subroutine handling (OtherSubr 0) put the current
	x,y coordinates onto the stack, instead of two dummy uninitialised
	values.

2010-04-14  Ken Sharp  <ken.sharp@artifex.com>

	[psaux] Fix Savannah bug #29444.

	* src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid)
	`lineto' immediately after `hsbw', in accordance with Acrobat, GS,
	and others.

2010-04-14  Michał Cichoń  <thedmd@artifexmundi.com>

	[psaux] Fix Savannah bug #27999.

	* src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove
	selected entry, not all.

2010-04-06  Jonathan Kew  <jfkthame@gmail.com>

	[truetype] Add overflow check to `fvar' table.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance
	count.

2010-04-05  Ken Sharp  <ken.sharp@artifex.com>

	[raster] Fix Savannah bug #29335.

	* src/raster/ftraster.c (Line_Up): Use slow multiplication to
	prevent overflow.  This shouldn't have any serious impact on speed,
	however.

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

	Add new function `FT_Library_SetLcdFilterWeights'.

	This is based on code written by Lifter
	<https://unixforum.org/index.php?showuser=11691>.  It fixes
	FreeDesktop bug #27386.

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New
	function.

	* include/freetype/ftlcdfil.h: Updated.

	* docs/CHANGES: Updated.

2010-04-01  John Tytgat  <John.Tytgat@esko.com>

	[truetype] Fix Savannah bug #29404.

	* src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1
	of `head' table of TrueType fonts).

2010-03-14  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix `multi build' for Tytgat's CFF driver improvement.

	* src/base/cffload.h (cff_index_get_name): Added.

2010-03-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c.

	* src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'.

2010-03-11  Chris Liddell  <chris.liddell@artifex.com>

	[raster] Fix Savannah bug #27442.

	* src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'.

2010-03-09  Werner Lemberg  <wl@gnu.org>

	[cff] Remove unused variable.
	Reported by Graham.

	* src/cff/cffparse.c (cff_parse_real): Remove `rest'.

2010-03-02  John Tytgat  <John.Tytgat@esko.com>

	[cff] Improve CFF string (especially glyphname) lookup performance.

	We do this by avoiding memory allocation and file I/O.  This is
	Savannah patch #7104.

	* src/cff/cfftypes.h: Include PS cmaps service and
	FT_INTERNAL_POSTSCRIPT_HINTS_H.
	(CFF_SubFontRec): Remove `num_local_subrs'.
	(CFF_FontRec): Add `num_strings', `strings', and `string_pool'
	fields.
	Remove `string_index' and `num_global_subrs' fields.
	Use real types instead of `void' for `pshinter' and `psnames' fields.

	* src/cff/cffload.c: Don't include PS cmaps service.
	(cff_index_get_pointers): Add `pool' parameter which allows inserting
	an extra NUL character for each String INDEX entry.
	(cff_index_get_name): Make it a local function.
	(cff_index_get_string): New function.
	(cff_subfont_load): Updated.
	(cff_font_load): Initialize `num_strings', `strings', and
	`string_pool' fields in the `CFF_FontRec' structure.
	(cff_index_get_sid_string): Use `cff_index_get_string' instead of
	`cff_index_get_name'.
	(cff_font_done): Updated.

	* src/cff/cffload.h: Don't include PS cmaps service.
	(cff_index_get_string): Added.
	(cff_index_get_sid_string): Updated.

	* src/cff/cffobjs.c: Don't include PS cmaps service and
	FT_INTERNAL_POSTSCRIPT_HINTS_H.
	(cff_size_get_globals_funcs, cff_slot_init): Updated.
	(cff_face_init): Follow `cff_index_get_name',
	`cff_index_get_string', and `cff_index_get_sid_string' changes.

	* src/cff/cffcmap.c (cff_sid_free_glyph_name): Removed.
	(cff_sid_to_glyph_name): Use `cff_index_get_cid_string'.
	(cff_cmap_unicode_init): Updated.

	* src/cff/cffdrivr.c: Don't include PS cmap service.
	(cff_get_glyph_name): Avoid unnecessary lookup for POSTSCRIPT_CMAPS
	service.
	(cff_get_glyph_name, cff_ps_get_font_info, cff_get_ros): Follow API
	`cff_index_get_sid_string' change.
	(cff_get_name_index): Use `cff_index_get_string' instead of
	`cff_index_get_name'.

	* src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H.
	(cff_decoder_init, cff_decoder_prepare): Updated.

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

	Simplify code.
	Suggested by Behdad.

	* src/base/ftobjs.c (FT_Get_First_Char): Don't use a loop since we
	call FT_Get_Next_Char anyway if necessary.

2010-02-26  Behdad Esfahbod  <behdad@behdad.org>

	Improve handling of invalid glyph indices in char->index functions.

	* src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a
	loop.

2010-02-18  Chris Liddell  <chris.liddell@artifex.com>

	[truetype] Fix Savannah bug #28905.

	Initialize phantom points before calling the incremental interface
	to update glyph metrics.

	* src/truetype/ttgload.c (tt_get_metrics_incr_overrides)
	[FT_CONFIG_OPTION_INCREMENTAL]: New function, split off from...
	(tt_get_metrics): This.
	Updated.
	(load_truetype_glyph): Use tt_get_metrics_incr_overrides.

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

Copyright (C) 2010-2020 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:
