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

	  http://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

	  http://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 embolding 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>

	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/pxaux/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

	  http://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

	  http://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>,
	http://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 derefering to obtain `library'.  The initialization
	of `clazz', `glyph', `library' and NULL pointer check are
	reordered to minimize PIC conditonals.

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/t42driver.c (t42_driver_class): Remove all casts and
	update affected functions.

	* src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver
	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

	  http://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>

	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 flatterners.

	* 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>

	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>

	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

	  http://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>

	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

	  http://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>

	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 traking 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/gxmorx0.c
	(gxv_morx_subtable_type0_entry_validate):
	Conditionalize unvalidated variables; `markFirst',
	`dontAdvance', `markLast', `verb'.

	* src/gxvalid/gxmorx1.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/gxmort0.c
	(gxv_mort_subtable_type0_entry_validate): Check the
	conflict of the marks for the glyphs.

	* src/gxvalid/gxmort1.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 extremas 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
	http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html
	http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html
	http://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_hints_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:
	http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html
	http://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
	http://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 Mayak, 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
	http://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html
	http://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>

	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>

	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

	  http://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.

	http://bugreports.qt.nokia.com/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/pcfdrvr.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 (comparision 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

	  http://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

	  http://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:
	http://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:
		http://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>

	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>

	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>

	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
	http://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>

	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:
	http://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:

	http://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html
	http://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>

	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>

	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>

	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_Rererence_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.{platfom,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>

	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/t1jobjs.c (T1_Face_Init): Ditto.
	* src/type42/t42jobjs.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>

	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>

	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>

	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>

	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>

	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
	http://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>

	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>

	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>

	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>

	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>

	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>

	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>

	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>

	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:

	  http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html

2010-06-09  Werner Lemberg  <wl@gnu.org>

	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>

	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>

	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>

	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.

	(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>

	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>

	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>

	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>

	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
	<http://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>

	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>

	Fix Savannah bug #27442.

	* src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'.

2010-03-09  Werner Lemberg  <wl@gnu.org>

	Remove unused variable.
	Reported by Graham.

	* src/cff/cffparse.c (cff_parse_real): Remove `rest'.

2010-03-02  John Tytgat  <John.Tytgat@esko.com>

	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 to
	insert 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>

	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 2010-2012 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:
