2016-07-12  Werner Lemberg  <wl@gnu.org>

	* Version 2.6.5 released.
	=========================


	Tag sources with `VER-2-6-5'.

	This commit immediately follows `[mac] Fix ftexport.sym target in
	Jamfile.' on a separate branch, which was then merged with master
	after the release.

	* include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out.

	* docs/VERSION.TXT: Add entry for version 2.6.5.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/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.6.4/2.6.5/, s/264/265/.

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

	* builds/unix/configure.raw (version_info): Set to 18:5:12.
	* CMakeLists.txt (VERSION_PATCH): Set to 5.

	* docs/CHANGES: Updated.

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

	Conditionally compile environment support.

	* include/freetype/internal/ftobjs.h, src/autofit/afmodule.c,
	src/base/ftobjs.c, src/cff/cffdrivr.c, src/truetype/ttdriver.c:
	Decorate with `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' where
	necessary.

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

	Handle properties in `FREETYPE_PROPERTIES' environment variable.

	This commit covers the most important one.

	* src/autofit/afmodule.c (af_property_set): Handle `warping',
	`darkening-parameters', and `no-stem-darkening'.

	* src/cff/cffdrivr.c (cff_property_set): Handle
	`darkening-parameters', `hinting-engine', and `no-stem-darkening'.

	* src/truetype/ttdriver.c (tt_property_set): Handle
	`interpreter-version'.

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

	Replace calls to `atol' with `strtol'.

	We later on need strtol's `endptr' feature.

	* include/freetype/config/ftstdlib.h (ft_atol): Replace with...
	(ft_strtol): ... this.

	* src/base/ftdbgmem.c (ft_mem_debug_init): Updated.
	* src/cid/cidparse.c (cid_parser_new): Ditto.
	* src/type42/t42drivr.c (t42_get_name_index), src/type42/t42objs.c
	(T42_GlyphSlot_Load): Ditto.

2016-07-10  Werner Lemberg  <wl@gnu.org>

	Implement handling of `FREETYPE_PROPERTIES' environment variable.

	Recognizing properties follows in another commit.

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

	* include/freetype/config/ftstdlib.h (ft_getenv): New macro.

	* src/base/ftinit.c (ft_set_default_properties): New function to
	parse `FREETYPE_PROPERTIES' and calling `ft_property_string_set'.
	(FT_Init_FreeType): Updated.

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

	Add function `ft_property_string_set'.

	This is a preparation for handling an `FREETYPE_PROPERTIES'
	environment variable to control (some) driver properties.

	No change in functionality.

	* src/base/ftobjs.c (ft_property_do): Add `value_is_string'
	parameter.
	(ft_property_string_set): New function.
	(FT_Property_Set, FT_Property_Get): Updated.

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

	* include/freetype/internal/services/svprop.h
	(FT_Properties_SetFunc): Add `value_is_string' parameter.

	* src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c
	(cff_property_set), src/truetype/ttdriver.c (tt_property_set):
	Updated, emitting an error currently if `value_is_string' is set.

2016-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[mac] Fix ftexport.sym target in Jamfile.

	* Jamfile: Update the directories of the header files scanned for
	ftexport.sym.  They were incorrect since the migration of the
	header files, on 2015-06-22.  Either inexisting include/cache
	(removed on 2006-03-20) is not needed to be listed explicitly.
	Now ftmac.h is scanned only in the case of Mac OS & Mac OS X.

2016-07-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Sub-banding protocol revision.

	Rasterization sub-banding is utilized at large sizes while using a
	rather small fixed memory pool.  Indeed it is possible to make an
	educated guess how much memory is necessary at a given size for a
	given glyph.  It turns out that, for a large majority of European
	glyphs, you should store about 8 times more boundary pixels than
	their height.  Or, vice versa, if your memory pool can hold 800
	pixels the band height should be 100 and you should sub-band
	anything larger than that.  Should you still run out of memory,
	FreeType bisects the band but you have wasted some time.  This is
	what has been implemented in FreeType since the beginning.

	It was overlooked, however, that the top band could grow to twice
	the default band size leading to unnecessary memory overflows there.
	This commit fixes that.  Now the bands are distributed more evenly
	and cannot exceed the default size.

	Now the magic number 8 is really suitable for rather simple European
	scripts.  For complex Chinese logograms the magic number should be
	13 but that is subject for another day.

	* src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding
	protocol.

2016-07-07  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[mac] Fix Savannah bug #48417.

	Mac OS X linker throws errors when `-exported_symbol_list' input
	file includes non-existing symbols.  Reported by Ryan Schmidt.

	* builds/exports.mk: Exclude ftmac.h from the headers for apinames
	by default.  Include it when ftmac.c would be compiled.

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

	* src/truetype/ttinterp.c (TInstruction_Function): Removed, unused.

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

	* Version 2.6.4 released.
	=========================


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

	* docs/VERSION.TXT: Update documentation and bump version number to
	2.6.4.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/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.6.3/2.6.4/, s/263/264/.

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

	* builds/unix/configure.raw (version_info): Set to 18:4:12.
	* CMakeLists.txt (VERSION_PATCH): Set to 4.

	* docs/CHANGES: Updated.

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

	* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning.

2016-07-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Variable type revision (part 2).

	* src/smooth/ftgrays.c (TArea): Restore original definition as `int'.
	(gray_render_line) [FT_LONG64]: Updated.
	(gray_convert_glyph): 32-bit band bisection stack should be 32 bands.
	(gray_convert_glyph_inner): Trace successes and failures.

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

	[autofit] Handle single-point contours as segments.

	Doing so allows us to link them to edges – some fonts like
	`NotoSansGurmukhi-Regular' have such isolated points sitting exactly
	on other outlines.

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't
	ignore one-point contours but handle them specially as one-point
	segments.
	(af_latin_hints_compute_edges): Append one-point segments to edges
	if possible.

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

	[autofit] Remove unused structure members.

	* src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove
	`num_linked'.

	* src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated.

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

	[autofit] Update to Unicode 9.0.0.

	* src/autofit/afranges.c (af_arab_nonbase_uniranges,
	af_cyrl_uniranges): Add new data.

2016-07-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Variable type revision (part 1).

	This patch restores original `TCoord' definition as `int' so that the
	rendering pool is used more efficiently on LP64 platforms (unix).

	* src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some
	fields to `TCoord'.
	(gray_find_cell, gray_render_scanline, gray_render_line, gray_hline,
	gray_sweep, gray_convert_glyph): Updated.

2016-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Minor clean-ups.

	* src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'.
	(gray_sweep, gray_convert_glyph, gray_dump_cells): Updated.

2016-06-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Minor clean-ups.

	* src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile
	qualifier.
	(gray_raster_render): Move span initializations from here.
	(gray_sweep): ... to here and remove unused `target' argument.

2016-06-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Fix handling of very large fonts (#47708).

	* src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an
	unsigned short.
	Only reject `0xFFFF' as an invalid encoding offset.

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

	[truetype] Really fix deallocation in case of error (#47726).

	* src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize
	`outline.points' also.

2016-06-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Consolidate memory management.

	* src/smooth/ftgrays.c (gray_init_cells): Remove function.
	(gray_TWorker): Remove fields that become local variables.
	(gray_raster_render): Move rendering buffer declaration from here.
	(gray_convert_glyph): ... to here and update accordingly.

2016-06-22  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Consolidate boundary checks.

	Removing the checks from `gray_hline' shaves 1% off rendering speed.

	* src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'.
	(gray_TWorker): No need to store `clip_box'.
	(gray_hline): Remove unnecessary boundary checks.
	(gray_convert_glyph): Move boundary checks from here.
	(gray_raster_render): ... to here and consolidate.

2016-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Use `FT_Outline_Get_CBox'.

	* src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'.
	(gray_compute_cbox): Remove this function.
	(gray_convert_glyph): Update to use `FT_Outline_Get_CBox'.

2016-06-20  Werner Lemberg  <wl@gnu.org>

	[smooth] Remove compiler warnings.

	* src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang.

2016-06-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Sanitize memory management.

	* src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up.

2016-06-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Remove `band_shoot' that never worked.

	* src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'.
	(gray_convert_glyph): Updated.

2016-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster, smooth] Handle FT_RENDER_POOL_SIZE better.

	* src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro.
	(ft_black_render): Updated.
	* src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro.
	(gray_raster_render): Updated.

2016-06-16  Werner Lemberg  <wl@gnu.org>

	* src/base/md5.c: Updated to recent version.

2016-06-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_hline): Optimize if-condition.

2016-06-13  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Cherokee script.

	* src/autofit/afblue.dat: Add blue zone data for Cherokee.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Cherokee standard characters.

	* src/autofit/afranges.c: Add Cherokee data.

	* src/autofit/afstyles.h: Add Cherokee data.

2016-06-09  David Capello  <davidcapello@gmail.com>

	[cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files.

	* CMakeLists.txt: Each time cmake is run those files are
	modified and the whole FreeType library is recompiled.  With this
	change we change the files only if there are real modifications, so
	we can avoid recompilations.

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

	[bdf] Check number of properties (#48166).

	* src/bdf/bdflib.c (_bdf_parse_start): Implement.

2016-06-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Re-enable new line renderer on 64-bit archs.

	* src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new
	implementation, where it is safe from overflows.

2016-06-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Minor clean-ups.

	* src/smooth/ftgrays.c (gray_dump_cells): Move out of the way.
	(gray_render_span): Remove spurious casts and streamline.

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

	[autofit] Add support for Ethiopic script.

	* src/autofit/afblue.dat: Add blue zone data for Ethiopic.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Ethiopic standard characters.

	* src/autofit/afranges.c: Add Ethiopic data.

	* src/autofit/afstyles.h: Add Ethiopic data.

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

	[autofit] Fix compilation with VS2016 (#48126).

	This compiler doesn't recognize the end-of-comment sequence `*/' if
	it immediately follows non-ASCII characters.

	* src/autofit/afscript.h: Ensure whitespace before `*/'.

2016-06-04  Werner Lemberg  <wl@gnu.org>

	Fix a test for named instances (#48122).

	This was missed while giving negative face indices an extended
	meaning.

	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement.

2016-05-31  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Let SHPIX move points in the twilight zone in v40.

	* src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in
	the twilight zone.  Otherwise, treat SHPIX the same as DELTAP.
	Unbreaks various fonts such as older versions of Rokkitt and DTL
	Argo T Light that would glitch severely after calling ALIGNRP after a
	blocked SHPIX.

2016-05-30  Werner Lemberg  <wl@gnu.org>

	[type42] Support `CharStrings' entry format as created by LilyPond.

	* src/type42/t42parse.c (t42_parse_charstrings): Handle entries
	having the format

	  (foo) cvn 12345 def

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

	* src/autofit/afranges.c: Remove `UL' postfix from hex numbers.

	Suggested by Alexei.  `UL' is only needed for 16bit compilers, but
	it seems noone is using this anymore (and we no longer test whether
	FreeType compiles in such an environment).  Otherwise, it is easy to
	add the postfix to the `AF_UNICODE_RANGE' macro.

2016-05-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Shrink bisection stack.

	The convergence of Bézier flatteners is fast with the deviation
	from straight line being asymptotically cut 4-fold on each bisection.
	This justifies smaller bisection stack size.

	* src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'.
	(gray_render_conic): Create and use conic `bez_stack'. Move back the
	band analysis from...
	(gray_conic_to): ... here.
	(gray_render_cubic): Create and use cubic `bez_stack'. Move back the
	band analysis from...
	(gray_cubic_to): ... here.
	(gray_move_to): Updated.

2016-05-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Fixes for Armenian and Gujarati ranges.

	* src/autofit/afranges.c (af_armn_uniranges): Corrected.
	(af_guru_nonbase_uniranges): Make U+0A3E a base character.

2016-05-24  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Armenian script.

	* src/autofit/afblue.dat: Add blue zone data for Armenian.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Armenian standard characters.

	* src/autofit/afranges.c: Add Armenian data.

	* src/autofit/afstyles.h: Add Armenian data.

2016-05-23  Werner Lemberg  <wl@gnu.org>

	* builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'.

	This was commented about 10 years ago – I think the reason then to
	disable libtool's `-export-symbols' option was to give some badly
	programmed applications access to internal FreeType functions.

	I believe that we should no longer take care of such programs; the
	number of symbols exported should be rather restricted as much as
	possible.

2016-05-22  Werner Lemberg  <wl@gnu.org>

	[autofit] Add blue-zone support for Gurmukhi script.

	This essentially moves the Gurmukhi script from the `Indic' hinter to
	the `Latin' hinter.

	* src/autofit/afblue.dat: Add blue zone data for Gurmukhi.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Gurmukhi standard characters and move
	data out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Gurmukhi data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Gurmukhi data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2016-05-21  Werner Lemberg  <wl@gnu.org>

	Minor clang++ fixes.

	* src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c
	(ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add
	initializer.

	* src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit
	conversion from NULL to boolean.

2016-05-21  Werner Lemberg  <wl@gnu.org>

	Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955).

	* include/freetype/internal/ftmemory.h (cplusplus_typeof): Use
	braces for `extern "C++"'.

2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].

	* src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
	(tt_loader_set_pp): ... this new function.
	Update all callers.

2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] New implementation of v38 bytecode interpreter [2/3].

	This patch actually modifies the bytecode interpreter.

	See added comments in `ttinterp.h' for more information on this and
	the following commit in the series.

	* src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by...
	(NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY,
	SUBPIXEL_HINTING_MINIMAL): ...new macros.
	(Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backward
	compatibility.
	Updated.
	(Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD):
	Updated.
	(Ins_INSTCTRL): Handle native ClearType mode flag.
	Updated.
	(Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backward
	compatibility.
	(Move_Zp2_Point): Ditto.
	(Ins_SHP): Updated.
	(Ins_SHPIX): Handle backward compatibility.
	Updated.
	(Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated.
	(Ins_ALIGNRP): Updated.
	(Ins_IUP, Ins_DELTAP): Handle backward compatibility.
	Updated.
	(Ins_GETINFO): Handle v38 flags.
	Updated.
	(TT_RunIns): Handle backward compatibility mode.
	Updated.

2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] New implementation of v38 bytecode interpreter [1/3].

	This patch prepares data structures and the like.

	See added comments in `ttinterp.h' for more information on this and
	the following commits in the series.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate
	between subpixel versions.
	(TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY,
	TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros.

	* include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Updated.

	* src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields
	`subpixel_hinting_lean', `vertical_lcd_lean',
	`backward_compatibility', `iupx_called', iupy_called', and
	`grayscale_cleartype' for new hinting mode.

	* src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40
	interpreters conditionally.

	* src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless
	in v38 backward compatibility mode.
	Updated.
	(compute_glyph_metrics): Add v38 backward compatibility mode
	constraint for adjusting advance widths.
	Updated.
	(tt_loader_init): Handle new flags `subpixel_hinting_lean',
	`grayscale_cleartype', and `vertical_lcd_lean'.
	Updated.
	(tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP):
	Updated.

	* src/truetype/ttobjs.c (tt_driver_init): Conditionally set
	default interpreter version number.

	* src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.

2016-05-17  Werner Lemberg  <wl@gnu.org>

	[cff] Fix matrix scaling (#47848).

	* include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro.

	* src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling
	value of all matrix coefficients to scale matrix.

	* src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for
	matrix normalization if `matrix->yy' is zero.

2016-05-16  Werner Lemberg  <wl@gnu.org>

	[base] Reject invalid sfnt Mac resource (#47891).

	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity
	of `CID ' and `TYPE1' table offset and length.

2016-05-16  Werner Lemberg  <wl@gnu.org>

	[cid] Fix scanning for `StartData' and `/sfnts' (#47892).

	* src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN):
	New macros.
	(cid_parser_new): Fix and document algorithm.

2016-05-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Improve the recursive reference detector.

	The previous fix for #46372 misunderstood a composite glyph referring
	same component twice as a recursive reference.  See the discussion

	  https://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html

	Thanks to Khaled Hosny for finding this issue.

	* src/truetype/ttgload.c (ft_list_get_node_at): A function to get
	the i-th node from FT_List.
	(load_truetype_glyph): In the traversal scan of the reference tree
	in the composite glyph, we clear the nodes filled by previous
	sibling chain.

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

	[cache] Allow value 0 for face ID.

	We never dereference `face_id', and some implementations might use a
	running number instead of a pointer.  Additionally, disallowing
	value zero was undocumented.

	* src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c
	(FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for
	`face_id'.

2016-05-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] More efficient accounting of conic splits and draws.

	A single decrement counter of segments to draw, instead of an array,
	contains all the information necessary to decide when to split and
	when to draw a conic segment. The number of splits before each draw is
	equal to the number of trailing zeros in the counter.

	* src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'.
	(gray_render_conic): Updated to use decrement counter of segments.

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

	[cff, truetype] Fix logic for `FT_Property_Set'.

	Otherwise some properties could be set to arbitrary values, which is
	harmless, but querying could give wrong positive results.

	* src/cff/cffdrivr.c (cff_property_set) [hinting-engine],
	* src/truetype/ttdriver.c (tt_property_set) [interpreter-version]:
	Only allow defined values.

2016-04-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Add blue-zone support for Gujarati script.

	This essentially moves the Gujarati script from the `Indic' hinter to
	the `Latin' hinter.

	* src/autofit/afblue.dat: Add blue zone data for Gujarati.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Gujarati standard characters and move
	data out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Gujarati data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Gujarati data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2016-04-24  Werner Lemberg  <wl@gnu.org>

	Minor.

	* include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro
	argument with parentheses.

2016-04-24  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix deallocation in case of error (#47726).

	* src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
	`outline' that are going to be deallocated in case of error.

2016-04-23  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve Georgian blue zone characters.

	Suggested by Akaki Razmadze <razmadzekoko@gmail.com>.

	* src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM):
	Updated.

	* src/autofit/afblue.c: Regenerated.

2016-04-16  David Capello  <davidcapello@gmail.com>

	[cmake] Honor SKIP_INSTALL_* settings (as used in zlib).

	As FreeType depends on zlib, if we don't install zlib (e.g., because
	we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too
	(cmake triggers an error saying that FreeType cannot be installed
	because zlib target isn't in the export set).

	* CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS',
	`SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings.

2016-04-16  Behdad Esfahbod  <behdad@behdad.org>

	[truetype] Another fix for non-intermediate GX tuples.

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing
	cases.

2016-04-12  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Remove forgotten macro.

	* include/freetype/internal/internal.h
	[FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove.

2016-04-09  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Georgian scripts.

	Georgian is problematic, since `uppercase' forms of Mkhedruli
	(called Mtavruli) are not yet defined in Unicode, which means that
	proper blue zones can't be defined.  However, there is already a
	proposal submitted to Unicode; see

	  https://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf

	Additionally, due to historical reasons, Unicode treats Khutsuri as
	the same script as Mkhedruli, and so does OpenType.  However, since
	the two scripts have completely different shapes it can happen that
	blue zones differ considerably.  The tag `geok' used here (derived
	from ISO 15924) to differentiate the two scripts is not an OpenType
	tag in use.  If we now have a font that contains both glyphs for
	Mkhedruli and Khutsuri, and it uses OpenType features for both also,
	HarfBuzz unavoidably treats all glyphs as `geor'.  As a consequence,
	blue zones for `geok' are not used for glyphs involved in the
	OpenType features.

	An issue not yet resolved is which OpenType feature should be used
	to access Mtavruli glyph shapes; right now, FreeType doesn't set up
	support for them, but it is easy to add them later on as soon as
	more information is available.

	* src/autofit/afblue.dat: Add blue zone data for Georgian.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Georgian standard characters.

	* src/autofit/afranges.c: Add Georgian data.

	* src/autofit/afstyles.h: Add Georgian data.

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

	[autofit] Provide dummy blue zone for pseudo script `none'.

	Even if the dummy hinter is used as the handler for `none' (which
	doesn't use blue zones), it is more consistent than the old value
	(which was 0), pointing to Arabic...

	* src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.

2016-03-30  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).

2016-03-30  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.

2016-03-30  Werner Lemberg  <wl@gnu.org>

	* src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).

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

	* src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift.

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

	[pfr] Fix binary search (#47514).

	* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
	conditions correctly.

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

	[pfr] Minor.

	* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left',
	`right', and `middle' with `min', `max', and `mid' as used in other
	FreeType binary search code.
	(pfr_load_bitmap_metrics): Fix invalid left shift.

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

	* src/pfr/pfrtypes.h: Replace all enums with macros.

	We need `~FOO' to unset bits, and only with unsigned values (which
	`enum' isn't normally) this works cleanly.

2016-03-26  Werner Lemberg  <wl@gnu.org>

	[pfr] Robustify bitmap strike handling (#47514).

	We did a binary search for a charcode without ensuring that the
	searched data is ordered.  Validating the order is now done lazily,
	this is, the first access to a bitmap glyph triggers the order check
	in the corresponding bitmap strike.

	* src/pfr/pfrtypes.h (PFR_BitmapFlags): New values
	`PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'.

	* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument
	a pointer.  Handle new PFR_BITMAP_XXX flags.
	(pfr_slot_load_bitmap): Updated.

2016-03-26  Werner Lemberg  <wl@gnu.org>

	[pfr] Fix handling of compound glyphs.

	Extra items are indicated with different bit positions.

	* src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace
	`PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and
	`PFR_GLYPH_COMPOUND_EXTRA_ITEMS'.

	* src/pfr/pfrgload.c (pfr_glyph_load_simple,
	pfr_glyph_load_compound): Use them.

2016-03-25  Werner Lemberg  <wl@gnu.org>

	[pfr] Minor.

	* src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of
	bare numbers.

2016-03-25  Werner Lemberg  <wl@gnu.org>

	[pfr] Various clang sanitizer fixes.

	* src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle
	signed nibbles.
	(pfr_slot_load_bitmap): Correctly exit frame in case of error.
	Fix invalid left shifts.

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

	Rename `VERSION.DLL' (#47472).

	* docs/VERSION.DLL: Renamed to...
	* docs/VERSIONS.TXT: ...this.

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

	[raster, smooth] Directly test outline size (#47500).

	This improves stand-alone compilation.

	* src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to...

	* src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c
	(gray_raster_render): ...these functions.

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

	[raster, smooth] Fix some clang sanitizer runtime issues.

	* src/raster/ftraster.c (ft_black_reset, ft_black_set_mode,
	ft_black_render): Harmonize signatures with `ftimage.h'.

	* src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset):
	Ditto.

2016-03-22  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor.

	This fixes an AddressSanitizer issue:

	  ttgload.c:430:7: runtime error: null pointer passed as argument 1,
	                   which is declared to never be null

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

	* src/autofit/afhints.c (af_glyph_hints_reload): Thinko.

	This fixes the previous commit to this file.

2016-03-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Partly revert recent changes.

	* src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework
	conditions to fix rendering issues.

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

	[autofit] Show `near' points in tracing.

	* src/autofit/afhints.h (AF_FLAG_NEAR): New macro.

	* src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it.
	(af_glyph_hints_reload): Handle AF_FLAG_NEAR.

2016-03-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Minor refactoring and microoptimizations.

	* src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
	band clipping from here.
	(gray_conic_to, gray_cubic_to): ... to here.
	(gray_render_line, gray_render_scanline): Initialize variables closer
	to their use.

2016-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Minor refactoring.

	* src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
	upscaling from here.
	(gray_conic_to, gray_cubic_to): ... to here.

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

	* src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.

2016-03-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Temporarily revert 6eb6158dd787 (#47114).

	* src/smooth/ftgrays.c (gray_render_line): Old implementation.

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

	[ftfuzzer] Improve coverage of rasterfuzzer.

	* src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
	input data for `tags' array also.
	Trim input data to get more positive hits.

2016-03-11  Pavlo Denysov  <paul.kiev+savannah@gmail.com>

	Fix CMake issues for iOS (patch #8941).

	* CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory.
	* builds/cmake/iOS.cmake: No longer enforce gcc.

2016-03-09  Behdad Esfahbod  <behdad@behdad.org>

	[truetype] Fix handling of non-intermediate GX tuples.

	We probably did not notice this as all fonts we tested had only
	tuple_coords[i] be +1 or -1 for non-intermediate tuples.

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.

2016-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Refuse to render enormous outlines (#47114).

	The goal is to avoid integer overflows in the rendering algorithms.
	The limit is chosen arbitrarily at some 2^18 pixels, which should be
	enough for modern devices including printers.

	* src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject
	enormous outlines.

2016-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Replace left shifts with multiplications (#47114).

	* src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.

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

	[autofit] Avoid excessive stem length rounding (#25392).

	* src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument
	to pass difference between hinted and unhinted position of base
	point; use this to adjust the stem width depending on the PPEM so
	that it doesn't become too large under certain circumstances.
	Update all callers using value 0 for this argument except...
	(af_latin_align_linked_edge): Pass position delta of base point to
	`af_latin_compute_stem_width'.

2016-03-05  J Raynor  <jxraynor@gmail.com>

	Make FreeType compile on AIX out of the box.

	* builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on
	AIX.

2016-03-01  Werner Lemberg  <wl@gnu.org>
	    Kostya Serebryany  <kcc@google.com>

	[ftfuzzer] Add unit for testing smooth and black rasterizers.

	* src/tools/ftfuzzer/rasterfuzzer.cc: New file.

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

	[autofit] Fix reallocation error introduced in 2016-02-27 (#47310).

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign
	`prev_segment' after reallocation.

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

	Fix clang warnings.

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
	FT_UShort for `min_flags' and `max_flags'.
	Initialize `prev_*' variables.

	* src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
	types of local variables.

	* src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
	Update `printf' format string.

	* src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
	(LLVMFuzzerTestOneInput): Fix loop type.

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

	[autofit] Add blue-zone support for Sinhala script.

	This essentially moves the Sinhala script from the `Indic' hinter to
	the `Latin' hinter.

	* src/autofit/afblue.dat: Add blue zone data for Sinhala.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Sinhala standard character and move data
	out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Sinhala data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Sinhala data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2016-02-27  Werner Lemberg  <wl@gnu.org>

	[autofit] Properly handle spikes pointing to the x-axis.

	An example that gets better rendered is glyph `uusignTaml' (glyph
	index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem.

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly
	handle segments where the last point of the first segment is
	identical to the first point in the second one.  This can happen for
	malformed fonts or spikes.  We either merge the new segment with the
	previous one (both segments point into the same direction), or we
	discard the shorter segment if they point into different directions.

2016-02-27  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor code clean-up.

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Change
	some local variable names to better differentiate between values
	along a segment and values orthogonal to it.

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

	[autofit] Improve BOUND action.

	In complex glyph shapes, the original logic was too simple to cater
	for situations that would actually need something similar to PS Hint
	masks.  This fix should alleviate the worst cases.

	* src/autofit/aflatin.c (af_latin_hint_edges): Don't allow
	complete disappearance of stems.

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

	[autofit] Add blue-zone support for Tamil script.

	This essentially moves the Tamil script from the `Indic' hinter to
	the `Latin' hinter.

	* src/autofit/afblue.dat: Add blue zone data for Tamil.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Tamil standard character and move data
	out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Tamil data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Tamil data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2016-02-18  Werner Lemberg  <wl@gnu.org>

	[autofit] Add blue-zone support for Malayalam script.

	This essentially moves the Malayalam script from the `Indic' hinter
	to the `Latin' hinter.

	* src/autofit/afblue.dat: Add blue zone data for Malayalam.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Malayalam standard characters and move
	data out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Malayalam data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Malayalam data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2016-02-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix integer overflow (#47114).

	* src/smooth/ftgrays.c (TArea): Make it unconditionally `long'.

2016-02-15  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing.

2016-02-15  Werner Lemberg  <wl@gnu.org>

	[cff] Handle T2 operator only with old CFF engine (#47157).

	* src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with
	#ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif.

2016-02-15  Werner Lemberg  <wl@gnu.org>

	[cff] Partially handle `load' and `store' ops in old CFF engine.

	Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be
	displayed.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store,
	cff_op_load>: Partially implement it.

	* src/cff/cffparse.c (cff_parser_init): Add new parameter to pass
	the number of Multiple Master axes.
	Update all callers.
	(cff_parse_multiple_master): Get number of axes.
	(cff_parser_run) <opcode 31>: Updated.
	* src/cff/cffparse.h: Updated.
	(CFF_ParserRec): Add `num_axes' field.

	* src/cff/cffload.c: Updated.

	* src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field.

2016-02-15  Werner Lemberg  <wl@gnu.org>

	[cff] Correctly trace SIDs that contain NULL bytes.

	We need this to properly trace Multiple Master CFFs, which contain
	two SIDs that are charstrings.

	This commit makes FreeType also show the last SID, omitted
	previously due to a bug.

	* src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field.

	* src/cff/cffload.c (cff_index_get_pointers): Add argument to return
	the pool size.
	Update all callers.

	* src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly
	access `cff->strings' to display the non-default strings.

2016-02-14  Werner Lemberg  <wl@gnu.org>

	* src/base/fthash.c: Include FT_INTERNAL_MEMORY_H.

2016-02-14  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffparse.c: Include `cffgload.h'.

	Problem reported by Colin Walters <walters@verbum.org>.

2016-02-14  Werner Lemberg  <wl@gnu.org>

	[cff] Make old CFF engine show MM CFFs (without variations).

	The new code only displays the first master in the font.

	* src/cff/cffgload.c (cff_decode_parse_charstrings): Add new
	parameter to allow function calls from dictionaries also.
	<cff_op_blend>: Partially implement it.
	Update all callers.
	* src/cff/cffgload.h: Updated.

	* src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the
	number of Multiple Master designs.
	Update all callers.
	(cff_parse_multiple_master): New function to rudimentarily parse
	operator.
	(cff_parser_run): Handle `T2' operator.
	* src/cff/cffparse.h: Updated.
	(CFF_ParserRec): Add `num_designs' field.

	* src/cff/cffload.c: Updated.

	* src/cff/cfftoken.h: Handle `MultipleMaster' operator.

	* src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field.

	* src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for
	MM CFFs.

2016-02-09  Werner Lemberg  <wl@gnu.org>

	[docmaker] Don't emit trailing newlines.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code):
	Use `rstrip'.

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

	* Version 2.6.3 released.
	=========================


	Tag sources with `VER-2-6-3'.

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

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/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.6.2/2.6.3/, s/262/263/.

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

	* builds/unix/configure.raw (version_info): Set to 18:3:12.
	* CMakeLists.txt (VERSION_PATCH): Set to 3.

	* docs/CHANGES: Updated.

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

	Fix another runtime error found by clang's sanitizer (#47082).

	* src/base/ftstroke.c (ft_stroke_border_export): Properly handle
	empty input buffer.

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

	Fix runtime errors found by clang's sanitizer (#47082).

	* src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
	(FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap):
	Properly handle empty input buffer.

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

	[cff] Minor.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>:
	Remove dead code.

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

	[cff] Implement missing operators in new engine (except `random').

	* src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro.

	* src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the
	following operators: abs, add, and, div, drop, dup, eq, exch, get,
	ifelse, index, mul, neg, not, or, put, roll, sqrt, sub.

	* src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New
	auxiliary function for `roll' operator.

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

	[cff] Fix some Type 2 operators in old CFF engine.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq'
	operator, add `not' and (unsupported) `blend' operators.

2016-02-05  Sebastian Rasmussen  <sebras@gmail.com>

	Make direct call of `make install' work (#47072).

	* builds/unix/unix-def.in (freetype-config): Make sure
	`freetype-config' is generated for both make targets (`all' and
	`install').

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

	[base] Fix advance width loading for MM and GX fonts (#47064).

	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
	MM and GX fonts.
	Update callers.

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

	[cff] Fix handling of face_index == -1 for pure CFF.

	* src/cff/cffobjs.c (cff_face_init): Return correct number of faces.

2016-01-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor tracing improvement.

	* src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline
	at the start of a new contour.

2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>

	Remove unpatented hinter (3/3).

	* include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
	`ignore_unpatented_hinter' field.
	Update users.
	(FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove.
	Update users.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Remove
	`unpatented_hinting' field.
	Update users.

	* src/base/ftpatent.c (_tt_check_patents_in_range,
	_tt_check_patents_in_table, _tt_face_check_patents): Remove.
	(FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting):
	Replace code with dummies.

	* src/truetype/ttobjs.c (tt_face_init): Remove now defunct code.
	* src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis'
	field.

2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>

	Remove unpatented hinter (2/3).

	* devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.

2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>

	Remove unpatented hinter (1/3).

	* src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]:
	Remove all code related to this macro.

2016-01-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Add blue-zone support for Kannada script.

	This essentially moves the Kannada script from the `Indic' hinter to
	the `Latin' hinter.

	* src/autofit/afblue.dat: Add blue zone data for Kannada.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Kannada standard characters and move
	data out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Kannada data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Kannada data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2016-01-22  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Better access to 64-bit integers for C99 compilers.

	* include/freetype/config/ftconfig.h [FT_LONG64]: Use
	__STDC_VERSION__ to define 64-bit integers.
	* builds/unix/ftconfig.in [FT_LONG64]: Ditto.
	* builds/vms/ftconfig.h [FT_LONG64]: Ditto.

2016-01-21  Werner Lemberg  <wl@gnu.org>

	[gxvalid] Remove commented out code.

	* src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it.

2016-01-20  Werner Lemberg  <wl@gnu.org>

	[autofit] Complete last autofit commit.

	Problem reported by Kostya Serebryany <kcc@google.com>.

	* src/autofit/afshaper.c (af_shaper_get_coverage)
	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature.

2016-01-20  Werner Lemberg  <wl@gnu.org>

	Still handle `__FTERRORS_H__'.

	We need this for backward compatibility.

	Problem reported by John Emmas <johne53@tiscali.co.uk>.

	* include/freetype/fterrors.h: Fix inclusion guard so that
	undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as
	expected.

2016-01-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix handling of default script.

	Patch taken from ttfautohint, commit
	071ae2c00e0d67f9d19418f4fade1c23d27dc185.

	There were two bugs.

	  - We now use non-standard script tags like `khms' for special
	    purposes.  However, HarfBuzz maps such tags to `DFLT', and
	    without this commit the associated lookups were incorrectly
	    assigned to the non-standard tags.

	  - Let's assume we have a Bengali font, and the font's `DFLT'
	    script tag handles the necessary lookups for Bengali, too.
	    Without this commit, the `DFLT' lookups were assigned to
	    ttfautohint's default script (usually `latn') before the
	    standard lookups for Bengali were handled.

	    We now have the following order while searching for covered
	    glyph indices.

	      special features of scripts (e.g. `sups' for Cyrillic)
	      Unicode mappings of scripts
	      remaining features of scripts (especially important for Indic
	        scripts)
	      default features of default script

	* src/autofit/afshaper.c, src/autofit/afshaper.h
	(af_shaper_get_coverage): Add boolean parameter to indicate default
	script.
	Update all callers.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
	Fix search order for coverages.

2016-01-19  Werner Lemberg  <wl@gnu.org>

	Various minor clang fixes.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths),
	src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
	`ch'.

	* src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast.

	* src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast.

	* src/base/fthash.c (hash_num_lookup): Add cast.

	* src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast.

	* src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out
	redundant code.

	* src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add
	cast.

	* src/type1/t1load.c (parse_subrs): Fix type of `count'.

2016-01-19  Derek B. Noonburg  <derekn@glyphandcog.com>

	[truetype] Add another tricky font.

	* src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase.
	(sfnt_id): Add variant of `DFKaiShu'.

2016-01-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Empower `FT_Library_SetLcdFilterWeights'.

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter
	in addition to setting weights.
	(FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and
	FT_FORCE_LEGACY_LCD_FILTER.
	* include/freetype/ftlcdfil.h: Documentation update.

2016-01-12  Werner Lemberg  <wl@gnu.org>

	Don't use macro names that start with `_[A-Z]' [3/3].

	Such macro names are reserved for both C and C++.

	* src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/.
	Update all callers.
	(FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'.
	* src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto.

2016-01-12  Werner Lemberg  <wl@gnu.org>

	Don't use macro names that start with `_[A-Z]' [2/3].

	Such macro names are reserved for both C and C++.

	* include/freetype/ftimage.h, src/raster/ftraster.c,
	src/smooth/ftgrays.c, src/smooth/ftgrays.h:
	s/_STANDALONE_/STANDALONE_/.

2016-01-12  Werner Lemberg  <wl@gnu.org>

	Don't use macro names that start with `_[A-Z]' [1/3].

	Such macro names are reserved for both C and C++.

	* src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with
	`BDF_XXX_'.

2016-01-12  Werner Lemberg  <wl@gnu.org>

	Don't use macro names that contain `__' [2/2].

	Such macro names are reserved for both C and C++.

	* src/cache/*: s/__/_/.

2016-01-12  Werner Lemberg  <wl@gnu.org>

	Don't use macro names that contain `__' [1/2].

	Such macro names are reserved for both C and C++.

	* */*: Replace macros of the form `__XXX_H__' with `XXX_H_'.

2016-01-10  Jered Gray  <jegray@google.com>

	[cff] Fix usage of `|' operator.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR,
	default]: `|' is not guaranteed to be processed from left to right
	by the compiler.  However, the code repeatedly calls
	`cf2_buf_readByte' to get the arguments to `|' ...  Fix this.

2015-12-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Make top-to-bottom hinting work in latin auto-hinter.

	This improves rendering of scripts like Bengali or Devanagari.

	* src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to
	pass top-to-bottom hinting flag.  This makes the function sort edges
	in descending vertical position.

	* src/autofit/afhints.c: Updated.

	* src/autofit/aflatin.c (af_latin_hints_compute_edges,
	af_latin_hint_edges): Use `top_to_bottom_hinting' flag.

	* src/autofit/afcjk.c (af_cjk_hints_compute_edges),
	src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated.

2015-12-24  Werner Lemberg  <wl@gnu.org>

	[autofit] Add hinting direction to `AF_ScriptClassRec'.

	Still unused.

	* src/autofit/afglobal.c (SCRIPT): Handle hinting direction.

	* src/autofit/aftypes.h (AF_ScriptClassRec): Add
	`top_to_bottom_hinting' field.
	(AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros.
	(AF_DEFINE_SCRIPT_CLASS): Updated.

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

	[autofit] Start implementing hinting direction (up/down, down/up).

	Right now, it does nothing.

	* src/autofit/afscript.h: Add another parameter to `SCRIPT',
	specifying hinting direction.

	* src/autofit/afglobal.c, src/autofit/afglobal.h,
	src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c,
	src/autofit/aftypes.h: Extend `SCRIPT' definitions.

2015-12-22  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1load.c (parse_subrs): Fix memory leak (#46744).

2015-12-22  Werner Lemberg  <wl@gnu.org>

	[base] Make hash interface symmetric.

	Use `num' and `str' infixes everywhere.

	* src/base/fthash.c (ft_hash_init): Renamed to...
	(hash_init): ... This.
	(ft_hash_str_init, ft_hash_num_init): New functions.
	(ft_hash_free): Renamed to...
	(ft_hash_str_free): ... This.

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

	* src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated.

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

	[type1] Avoid shift of negative numbers (#46732).

	* src/type1/t1load.c (parse_subrs): Do it.

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

	[type1, psaux] Handle large values of num_subrs correctly (#46692).

	We now use a hash to map from subr indices to array elements holding
	the subroutines, if necessary.

	* include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H.
	(T1_FontRec): Add `subrs_hash' field.

	* include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H.
	(T1_DecoderRec): Add `subrs_hash' field.

	* src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field.

	* src/type1/t1driver.c: Include FT_INTERNAL_HASH_H.
	(t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary.

	* src/type1/t1load.c: Include FT_INTERNAL_HASH_H.
	(parse_subrs): Use hash for subr indices that exceed the allocated
	number of subr slots.
	(t1_init_loader): Remove unnecessary code.
	(t1_done_loader, T1_Open_Face): Updated.

	* src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances,
	T1_Load_Glyph): Updated.

	* src/type1/t1objs.c (T1_Face_Done): Updated.

	* src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H.
	(t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if
	necessary.

	* src/cid/cidgload.c (cid_load_glyph): Updated.

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

	[base] Thinko: Remove free function pointer.

	We don't copy keys or values while hashing.

	* include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed.
	(FT_HashRec): Remove `free' field.

	* src/base/fthash.c (hash_str_free): Removed.
	(ft_hash_init, ft_hash_free): Updated.

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

	[base, bdf] Don't expose `FT_Hashnode' in hash functions.

	* src/base/fthash.c (hash_lookup, ft_hash_str_lookup,
	ft_hash_num_lookup): Return pointer to `size_t' instead of
	`FT_Hashnode'.

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

	* src/bdf/bdflib.c (bdf_get_property, _bdf_add_property,
	bdf_get_font_property): Updated.

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

	[base, bdf] Add number hashing.

	* src/base/fthash.c (hash_num_lookup, hash_num_compare): New
	functions.
	(ft_hash_init): Add argument to select between number and string
	hashing.
	(ft_hash_num_insert, ft_hash_num_lookup): New functions.

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

	* src/bdf/bdflib.c (_bdf_parse_start): Updated.

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

	[base] Introduce hash lookup, compare, and free function pointers.

	* include/freetype/internal/fthash.c (FT_Hash_LookupFunc,
	FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs.
	(FT_HashRec): Add `lookup', `compare', and `free' fields.

	* src/base/fthash.c (hash_str_lookup, hash_str_compare,
	hash_str_free): New functions.
	(ft_hash_init): Set function pointers.
	(hash_bucket, ft_hash_free): Use them.

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

	[base, bdf] Use a union as a hash key.

	We want to support both an integer and a string key later on.

	* include/freetype/internal/fthash.h (FT_Hashkey): New union.
	(FT_HashnodeRec): Updated.
	(ft_hash_insert, ft_hash_lookup): Renamed to ...
	(ft_hash_str_insert, ft_hash_str_lookup): ... this.

	* src/base/fthash.c (hash_bucket): Updated.
	(ft_hash_insert, ft_hash_lookup): Renamed to ...
	(hash_insert, hash_lookup): ... this.
	(ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions.

	* src/bdf/bdflib.c: Updated.

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

	[bdf] Use new hash functions.

	* src/bdf/bdf.h: Include FT_INTERNAL_HASH_H.
	(hashnode, hashtable): Removed.
	(bdf_font_t): Use `FT_HashRec' type for `proptbl'.

	* src/bdf/bdflib.c: Remove all hash functions.
	Update code for new hash structure and function names.

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

	[bdf, base] Lift hash functions from bdf driver to base module.

	* src/base/fthash.c, include/freetype/internal/fthash.h: New files,
	containing (massaged) code from `bdflib.c' and `bdf.h'.

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

	* src/base/ftbase.c: Include `fthash.c'.

	* src/base/Jamfile (_sources): Add `fthash'.

	* src/base/rules.mk (BASE_SRC): Add `fthash.c'.

	* docs/LICENSE.TXT: Updated.

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

	[autofit] Add blue-zone support for Bengali script.

	This essentially moves the Bengali script from the `Indic' hinter to
	the `Latin' hinter.

	* src/autofit/afblue.dat: Add blue zone data for Bengali.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Bengali standard characters and move
	data out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Bengali data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Bengali data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2015-12-14  Ben Wagner  <bungeman@gmail.com>

	[bdf] Remove dead code (#46625).

	The BDF specification only allows decimal numbers, no octal or
	hexadecimal decoding is needed.

	* src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous,
	_bdf_atos): Remove unused code and parameters.
	Update all callers.
	(odigits): Remove.

2015-12-14  Werner Lemberg  <wl@gnu.org>

	[base] Fix calls to `FT_Stream_Seek'.

	* src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set
	`error'.

2015-12-14  Ben Wagner  <bungeman@gmail.com>

	[base] Check error when seeking to data supplied offset (#46635).

	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream):
	`ft_lookup_PS_in_sfnt_stream' returns offset and length from
	user supplied data.  Use of this these values must be checked.

2015-12-13  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Myanmar script.

	* src/autofit/afblue.dat: Add blue zone data for Myanmar.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Myanmar standard characters.

	* src/autofit/afranges.c: Add Myanmar data.

	* src/autofit/afstyles.h: Add Myanmar data.

2015-12-12  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor.

2015-12-12  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afscript.h: Avoid potential crash.

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

	[autofit] Restore OpenType feature check.

	This was removed while rewriting the HarfBuzz interface.

	* src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to
	hold internal HarfBuzz buffer, needed for feature comparison.

	* src/autofit/afglobal.c (af_face_globals_new,
	af_face_globals_free): Initialize and destroy `hb_buf'.

	* src/autofit/afshaper.c (af_shaper_get_cluster): Compare character
	(cluster) with and without applied feature.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing
	message.

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

	[autofit] Remove redundant code.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it.

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

	[autofit] Thinko.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count
	empty blue zones (bug introduced 2015-12-06).

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

	[autofit] Introduce subscript top blue zones.

	This feature is mainly for Khmer: The idea is to avoid a clash
	between the top of subscript glyphs and the bottom of normal
	baseline glyphs.

	This only works for character clusters mapped to multiple glyphs.

	* src/autofit/afblue.dat: Add subscript top blue zone for Khmer.

	* src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New
	macro.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE,
	AF_LATIN_BLUE_SUB_TOP): New macros.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new
	blue zone property.
	Update tracing messages.
	(af_latin_metrics_scale_dim): Handle new blue zone property.
	(af_latin_hints_compute_blue_edges): Updated.

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

	[autofit] Fix tracing message.

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display
	inactive blue zones also.

2015-12-06  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afblue.dat: Add more Khmer clusters.

	Some fonts have incorrect ligatures; we need more samples to get a
	good mean value.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

2015-12-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Typos.

	* src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem)
	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile.

2015-12-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Khmer script.

	We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
	`Khmer symbols' (`khms', U+19E0-U+19FF).

	* src/autofit/afblue.dat: Add blue zone data for Khmer.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Khmer standard characters.

	* src/autofit/afranges.c: Add Khmer data.

	* src/autofit/afstyles.h: Add Khmer data.

2015-12-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Rewrite HarfBuzz interface to support character clusters.

	Scripts like Khmer have blue zones that can't be directly
	represented by Unicode characters.  Instead, it is necessary to let
	HarfBuzz convert character clusters into proper glyph representation
	forms, then deriving the blue zone information from the resulting
	glyphs.

	* src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by...
	* src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new
	files, providing a new API to access HarfBuzz.

	The new API manages a HarfBuzz buffer with `af_shaper_buf_create'
	and `af_shaper_buf_destroy'.  The buffer receives a UTF8 encoded
	string with function `af_shaper_get_cluster', and the resulting
	glyph data (indices, advance widths, vertical offsets) can be
	iteratively accessed with function `af_shaper_get_elem'.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues, af_latin_metrics_check_digits):
	Updated.

	* include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/.

	* src/autofit/afglobal.c: s/hbshim.h/afshaper.h/.
	(af_face_globals_compute_style_coverage): Updated.

	* src/autofit/afglobal.h: s/hbshim.h/afshaper.h/.

	* src/autofit/autofit.c: s/hbshim.c/afshaper.c/.

	* src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC):
	Updated.

2015-12-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Prepare forthcoming changes.

	This makes it easier to control the commits.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy
	loop.  No functional change.

2015-12-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Use string of standard characters.

	This is more flexible; additionally, it would allow character
	clusters.

	* src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated.
	(AF_ScriptClassRec): Replace `standard_char[123]' with
	`standard_charstring'.

	* src/autofit/afscript.h: Replace last three character arguments
	of the `SCRIPT' calls with a string parameter, holding the standard
	characters (in UTF-8 encoding) separated with spaces.

	* src/autofit/afglobal.c, src/autofit/afglobal.h,
	src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c
	(SCRIPT): Updated.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths),
	src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated.

2015-12-05  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afblue.dat: Separate blue zone characters with spaces.

	Another preparation for character cluster support.

	* src/autofit/afblue.c, src/autofit.afblue.h: Regenerated.

2015-12-05  Werner Lemberg  <wl@gnu.org>

	* src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.

	Instead, reduce multiple spaces to a single one.  We need this later
	for supporting character clusters in `afblue.dat'.

2015-12-05  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.

	* src/autofit/afblue.h: Regenerated.

2015-12-05  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/.

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

	* builds/unix/install.mk (install): Remove stale `ft2build.h'.

2015-12-01  Werner Lemberg  <wl@gnu.org>

	[type1] Avoid dangling pointer (#46572).

	* src/type1/t1afm.c (T1_Read_Metrics): Properly reset
	`face->afm_data'.

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

	* include/freetype/ftlcdfil.h: Documentation tweak.

2015-11-28  Werner Lemberg  <wl@gnu.org>

	* Version 2.6.2 released.
	=========================


	Tag sources with `VER-2-6-2'.

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

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/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.6.1/2.6.2/, s/261/262/.

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

	* builds/unix/configure.raw (version_info): Set to 18:2:12.
	* CMakeLists.txt (VERSION_PATCH): Set to 2.

	* docs/CHANGES: Updated.

2015-11-28  Werner Lemberg  <wl@gnu.org>

	Fix C++ compilation.

	* src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.

	* src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.

2015-11-28  Nikolaus Waxweiler  <madigens@gmail.com>

	Change default LCD filter to be normalized and color-balanced.

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
	`default_filter'.

2015-11-28  Werner Lemberg  <wl@gnu.org>

	[docmaker] Allow references to section names.

	In the reference, we show the section's title enclosed in single
	quotes.

	* src/tools/docmaker/formatter.py (Formatter::__init__): Collect
	section names as identifiers.

	* src/tools/docmaker/tohtml.py (section_title_header): Split into...
	(section_title_header1, section_title_header2): ... these two
	strings.
	(HtmlFormatter::make_block_url, make_html_word, html_source_quote):
	Handle sections.
	(HtmlFormatter::section_enter): Updated to add `id' HTML attribute.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	[cmake] Add script to test the config module.

	* builds/cmake/testbuild.sh: New file.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	* CMakeLists.txt: Create `freetype-config.cmake' config module.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	* CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	[cmake] Add better control of library dependencies.

	* CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
	ZLIB/BZip2/PNG/HarfBuzz.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	[cmake] Make `FindHarfBuzz' observe the REQUIRED option.

	* builds/cmake/FindHarfBuzz.cmake: Implement it.

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

	[cmake] Collect files specific to cmake in `builds/cmake'.

	* builds/FindHarfBuzz.cmake: Move to ...
	* builds/cmake/FindHarfBuzz.cmake: ... this place.

	* CMakeLists.txt (CMAKE_MODULE_PATH): Updated.

2015-11-27  Alexander Bock  <alexander.j.bock@nasa.gov>

	CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.

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

	[docmaker] Allow `foo[bar]' as identifier.

	We need this to handle equally named properties in different
	modules.

	* src/tools/docmaker/content.py (re_identifier),
	src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
	HtmlFormatter::index_exit, HtmlFormatter::section_enter,
	HtmlFormatter::block_enter): Handle `foo[bar]'.

2015-11-25  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).

	(_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
	contents.

2015-11-21  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftcalc.h: Don't use `register' keyword.

	This fixes compiler warnings.

	Reported by Behdad.

2015-11-20  Werner Lemberg  <wl@gnu.org>

	Add `FT_LCD_FILTER_LEGACY1' enum value.

	This does the same as `FT_LCD_FILTER_LEGACY'.

	See

	  https://bugs.freedesktop.org/show_bug.cgi?id=92981

	for the reasoning.

	* include/freetype/ftlcdfil.h (FT_LcdFilter): New value
	`FT_LCD_FILTER_LEGACY1'.

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.

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

	* src/autofit/afhints.c (af_get_segment_index): Fix it.

	The old code was too simple, returning invalid values in most cases
	where a segment crosses the contour start.

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

	* src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).

2015-11-11  Werner Lemberg  <wl@gnu.org>

	[cff, autofit] Switch off stem darkening by default.

	* src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
	(cff_driver_init): Do it.

2015-11-10  Jan Alexander Steffens (heftig)  <jan.steffens@gmail.com>

	Allow native CFF hinter in FT_RENDER_MODE_LIGHT.

	Both the native CFF hinter and the auto-hinter now have a very
	similar rendering style.

	* include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
	longer implies FT_LOAD_FORCE_AUTOHINT.

	* include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
	macro.

	* include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
	macro.

	* src/cff/cffdrivr.c (cff_driver_class): Use it.

	* src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
	logic.

2015-11-09  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).

2015-11-09  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove integer to pointer conversion compiler warning.

	Problem reported by Alexei.

	* src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
	in the glib library to fix the issue.

2015-11-08  Behdad Esfahbod  <behdad@behdad.org>

	[sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.

	* src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.

2015-11-08  Philipp Knechtges  <philipp-dev@knechtges.com>

	[autofit] Don't distort (latin) glyphs too much (#46195).

	* src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
	`descender' fields.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect
	ascender and descender data for blue zones.
	(af_latin_metrics_scale_dim): Reject vertical scaling values that
	change the result by more than two pixels.

2015-11-05  Werner Lemberg  <wl@gnu.org>

	[sfnt] Ignore embedded bitmaps with zero size (#46379).

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
	it.

2015-11-04  Werner Lemberg  <wl@gnu.org>

	[truetype] Catch infinite recursion in subglyphs (#46372).

	* include/freetype/internal/tttypes.h (TT_LoaderRec): New field
	`composites'.

	* src/truetype/ttgload.c: Include FT_LIST_H.
	(load_truetype_glyph): Add composite subglyph index to a list;
	abort if index is already in list.
	(tt_loader_init): Updated.
	(tt_loader_done): New function.
	(TT_Load_Glyph): Call `tt_loader_done'.

2015-11-04  Werner Lemberg  <wl@gnu.org>

	[truetype] Better tracing of composite glyphs.

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph,
	load_truetype_glyph): Implement it.

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

	[sfnt] Protect against zero-size bitmaps (#46345).

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
	`glyph_size'.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	* src/autofit/afloader.c (af_loader_load_g): Implement emboldening.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Implement darkening computation function.

	This is a crude adaption of the original `cf2_computeDarkening'
	function.

	* src/autofit/afloader.c (af_intToFixed, af_fixedToInt,
	af_floatToFixed): New macros, taken from `cf2fixed.h'.
	(af_loader_compute_darkening): New function.
	* src/autofit/afloader.h: Updated.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Add functions to get standard widths for writing systems.

	We need the computed standard horizontal and vertical widths for the
	emboldening calculation.  This method provides a convenient way to
	extract it from writing-system-specific metrics structures, which
	all script definitions must implement.

	* src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New
	function type.
	(AF_WritingSystemClassRec): New member `style_metrics_getstdw'.
	(AF_DEFINE_WRITING_SYSTEM_CLASS): Updated.

	* src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
	(af_cjk_writing_system_class): Updated.
	* src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
	* src/autofit/afindic.c (af_cjk_get_standard_width): New function.
	(af_indic_writing_system_class): Updated.
	* src/autofit/aflatin.c (af_latin_get_standard_width): New function.
	(af_indic_writing_system_class): Updated.
	* src/autofit/aflatin.c (af_latin_get_standard_width): New function.
	(af_indic_writing_system_class): Updated.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.

	* src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.

	* src/autofit/afglobal.c (af_face_globals_new): Initialize new
	fields.
	(af_face_globals_free): Reset new fields.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Add stem-darkening properties.

	Actual code follows in a later commit.

	* include/freetype/ftautoh.h: Document `no-stem-darkening' and
	`darkening-parameters'.

	* src/autofit/afmodule.h: New fields `no_stem_darkening' and
	`darken_params'.

	* src/autofit/afmodule.c (af_property_set, af_property_get):
	Handle them.
	(af_autofitter_init): Initialize them.

2015-11-02  Ben Wagner  <bungeman@gmail.com>

	[ftfuzzer] Add support for multiple files (patch #8779).

	Currently, libFuzzer only supports mutation of a single file.  We
	circumvent this problem by using an uncompressed tar archive as
	multiple-file input for the fuzzer.

	This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
	a constructed tarball should contain a font file as the first
	element, and files to be attached as further elements.

	* src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
	(archive_read_entry_data, parse_data): New functions.
	(LLVMFuzzerTestOneInput): Updated.

	* src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
	mutator for libFuzzer that can mutate tarballs in a sensible way.

2015-10-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix cmap 14 validation (#46346).

	* src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before
	accessing `numRanges' and `numMappings'.
	Fix size check for non-default UVS table.

2015-10-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Handle infinite recursion in bitmap strikes (#46344).

	* src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc,
	tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned,
	tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add
	argument for recursion depth.
	(tt_sbit_decoder_load_compound): Add argument for recursion depth.
	Increase recursion counter for recursive call.
	(tt_sbit_decoder_load_image): Add argument for recursion depth.
	Check recurse depth.
	(tt_face_load_sbit_image): Updated.

2015-10-29  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.

2015-10-29  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.

	Problem reported by David Capello <davidcapello@gmail.com>; see

	  https://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html

	for details.

2015-10-27  Werner Lemberg  <wl@gnu.org>

	[pfr] Add some safety guards (#46302).

	* src/pfr/pfrload.h (PFR_CHECK): Rename to...
	(PFR_CHECK_SIZE): ... this.
	(PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE.

	* src/pfr/pfrload.c (pfr_log_font_count): Check `count'.
	(pfr_extra_item_load_kerning_pairs): Remove tracing message.
	(pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate.
	Allocate `chars' after doing a size checks.

	* src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid
	bitmap format to...
	(pfr_slot_load_bitmap): ... this function.
	Check bitmap size.

2015-10-26  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix sanitizing logic for `loca' (#46223).

	* src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an
	incorrect adjustment of the number of glyphs, most often using far
	too large values.

2015-10-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve tracing.

	* src/autofit/afhints.c (af_print_idx, af_get_segment_index,
	af_get_edge_index): New functions.

	(af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'.
	Add segment and edge index for each point.
	Slightly change printing order of some elements.
	Don't print `-1' but `--' for missing elements.

	(af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
	unnecessary `|', `[', and `]'.
	Don't print `-1' but `--' for missing elements.

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

	[sfnt] Sanitize bitmap strike glyph height.

	Problem reported by Nikolay Sivov <bunglehead@gmail.com>.

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
	for `metrics->height' by applying some heuristics.

2015-10-22  Werner Lemberg  <wl@gnu.org>

	[sfnt, type42] Fix clang compiler warnings.

	* src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.

	* src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.

2015-10-22  Dave Arnold  <darnold@adobe.com>
	    Werner Lemberg  <wl@gnu.org>

	[cff] Avoid overflow/module arithmetic.

	This modifies the addition of subroutine number to subroutine bias
	from unsigned to signed, but does not change any results.

	* src/cff/cf2ft.c (cf2_initGlobalRegionBuffer,
	cf2_initLocalRegionBuffer): Change variable names from (unsigned)
	`idx' to (signed) `subrNum', since it is not an index until after
	the bias is added.
	* src/cff/cf2ft.h: Updated.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
	Updated similarly.

2015-10-22  Werner Lemberg  <wl@gnu.org>

	[cid] Better check of `SubrCount' dictionary entry (#46272).

	* src/cid/cidload.c (cid_face_open): Add more sanity tests for
	`fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.

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

	[base] Pacify compiler (#46266).

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
	`anchor'.

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

	[type42] Fix heap buffer overflow (#46269).

	* src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
	bounds checking.

2015-10-21  Dave Arnold  <darnold@adobe.com>

	[cff] Fix limit in assert for max hints.

	* src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
	limit (96 bits).

2015-10-21  Dave Arnold  <darnold@adobe.com>

	[cff] Remove an assert (#46107).

	* src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
	in wrong order.

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

	[sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).

	* src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
	only after thorough checks.
	Add tracing messages.

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

	[type42] Better check invalid `sfnts' array data (#46255).

	* src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
	checked individually against available data size.

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

	[cid] Add a bunch of safety checks.

	* src/cid/cidload.c (parse_fd_array): Check `num_dicts' against
	stream size.
	(cid_read_subrs): Check largest offset against stream size.
	(cid_parse_dict): Move safety check to ...
	(cid_face_open): ... this function.
	Also test length of binary data and values of `SDBytes',
	`SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'.

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

	[cid] Avoid segfault with malformed input (#46250).

	* src/cid/cidload.c (cid_read_subrs): Return a proper error code for
	unsorted offsets.

2015-10-20  StudioEtrange  <nomorgan@gmail.com>

	* CMakeLists.txt: Enable shared library builds on MinGW (#46233).

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

	* src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).

2015-10-19  Ben Wagner  <bungeman@gmail.com>

	[cid] Better handle invalid glyph stream offsets (#46221).

	* src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
	length.

2015-10-18  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix tracing of negative numbers.

	Due to incorrect casting negative numbers were shown as very large
	(positive) integers on 64bit systems.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
	Use division instead of shift.

2015-10-18  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).

	* devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
	with #ifndef ... #endif, as suggested in the tracker issue.

2015-10-18  Werner Lemberg  <wl@gnu.org>

	[truetype] Better protection against malformed `fpgm' (#46223).

	* src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
	malformed `fpgm' table more than once.

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

	* src/cid/cidgload.c (cid_load_glyph): Fix memory leak.

	Reported by Kostya Serebryany <kcc@google.com>.

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

	[bdf] Prevent memory leak (#46217).

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
	_BDF_GLYPH_BITS.

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

	[bdf] Use stream size to adjust number of glyphs.

	* src/bdf/bdflib.c (ACMSG17): New message macro.
	(_bdf_parse_t): Add member `size'.
	(bdf_load_font): Set `size'.
	(_bdf_parse_glyphs): Adjust `cnt' if necessary.

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

	* src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.

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

	* src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).

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

	[psaux] Fix heap buffer overflow (#46221).

	* src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
	Fix limit check.

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

	* src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).

2015-10-15  Kostya Serebryany  <kcc@google.com>

	[ftfuzzer] Add README.

	* src/tools/ftfuzzer/README: New file.

2015-10-15  Ben Wagner  <bungeman@gmail.com>

	[bdf] Fix memory leak (#46213).

	* src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
	case of error.

2015-10-15  Werner Lemberg  <wl@gnu.org>

	[truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.

	* src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
	(TT_RunIns): Updated.

2015-10-15  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.

	The used indices were off by 1.

2015-10-15  Ben Wagner  <bungeman@gmail.com>
	    Werner Lemberg  <wl@gnu.org>

	* src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).

2015-10-15  Werner Lemberg  <wl@gnu.org>

	[base] Compute MD5 checksums only if explicitly requested.

	This improves profiling accuracy.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.

2015-10-14  Werner Lemberg  <wl@gnu.org>

	[base] Use `FT_' namespace for MD5 functions (#42366).

	* src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
	Undefine HAVE_OPENSSL.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[type1] Correctly handle missing MM axis names (#46202).

	* src/type1/t1load.c (T1_Get_MM_Var): Implement it.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[pcf] Quickly exit if font index < 0.

	Similar to other font formats, this commit makes the parser no
	longer check the whole PCF file but only the header and the TOC if
	we just want to get the number of available faces (and a proper
	recognition of the font format).

	* src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
	Exit quickly if face_index < 0.

	* src/pcfread.c (pcf_load_font): Add `face_index' argument.
	Exit quickly if face_index < 0.

	* src/pcf/pcf.h: Updated.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[ftfuzzer] Handle TTCs and MM/GX variations.

	This patch also contains various other improvements.

	* src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
	pre-C++11 compilers.
	(FT_Global): New class.  Use it to provide a global constructor and
	destructor for the `FT_Library' object.
	(setIntermediateAxis): New function to select an (arbitrary)
	instance.
	(LLVMFuzzerTestOneInput): Loop over all faces and named instances.
	Also call `FT_Set_Char_Size'.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Refine some GX sanity tests.

	Use the `gvar' table size instead of the remaining bytes in the
	stream.

	* src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
	(ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
	`size'.
	(tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Another GX sanity test.

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
	`tupleCount'.
	Add tracing message.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix memory leak for broken GX fonts (#46188).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
	deallocation.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix commit from 2015-10-10.

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
	handling body to condition.

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

	[unix] Make MKDIR_P actually work.

	* builds/unix/configure.raw: Fix underquoting of `INSTALL' and
	`MKDIR_P'.

	Problem reported by Dan Liddell <lddll@yahoo.com>.

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

	[sfnt] Improve extraction of number of named instances.

	* src/sfnt/sfobjs.c (sfnt_init_face)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
	`fvar' table size.

2015-10-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
	(#46149).

2015-10-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix infinite loops with broken cmaps (#46167).

	* src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
	of border conditions (i.e., if the loops exit naturally).

2015-10-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More sanity tests for GX handling.

	These tests should mainly help avoid unnecessarily large memory
	allocations in case of malformed fonts.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints,
	ft_var_readpackeddeltas): Check number of points against stream
	size.
	(ft_var_load_avar): Check `pairCount' against table length.
	(ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
	against table length.
	(tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
	Fix trace.
	(TT_Vary_Apply_Glyph_Deltas): Fix trace.
	Free `sharedpoints' to avoid memory leak.

2015-10-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Better protection against malformed GX data (#46166).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
	handle empty `localpoints' array.

2015-10-10  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).

2015-10-09  Werner Lemberg  <wl@gnu.org>

	* src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[pcf] Protect against invalid number of TOC entries (#46159).

	* src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
	against size of data stream.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[type42] Protect against invalid number of glyphs (#46159).

	* src/type42/t42parse.c (t42_parse_charstrings): Check number of
	`CharStrings' dictionary entries against size of data stream.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix some signed overflows (#46149).

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
	<TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[type1] Protect against invalid number of subroutines (#46150).

	* src/type1/t1load.c (parse_subrs): Check number of
	`Subrs' dictionary entries against size of data stream.

2015-10-07  Kostya Serebryany  <kcc@google.com>

	[ftfuzzer] Add support for LLVM's LibFuzzer.

	* src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.

2015-10-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Faster alternative line renderer.

	This implementation renders the entire line segment at once without
	subdividing it into scanlines.  The main speed improvement comes from
	reducing the number of divisions to just two per line segment, which
	is a bare minimum to calculate cell coverage in a smooth rasterizer.
	Notably, the progression from cell to cell does not itself require any
	divisions at all.  The speed improvement is more noticeable at larger
	sizes.

	* src/smooth/ftgrays.c (gray_render_line): New implementation.

2015-10-06  Werner Lemberg  <wl@gnu.org>

	[cff] Return correct PS names from pure CFF (#46130).

	* src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
	SFNT.

2015-10-04  Werner Lemberg  <wl@gnu.org>

	[base] Replace left shifts with multiplication (#46118).

	* src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.

2015-10-04  Werner Lemberg  <wl@gnu.org>

	* Version 2.6.1 released.
	=========================


	Tag sources with `VER-2-6-1'.

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

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/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.6/2.6.1/, s/26/261/.

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

	* builds/unix/configure.raw (version_info): Set to 18:1:12.
	* CMakeLists.txt (VERSION_PATCH): Set to 1.

	* src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
	dumping functions.

2015-10-04  Werner Lemberg  <wl@gnu.org>

	[bzip2, gzip] Avoid access of uninitialized memory (#46109).

	* src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
	(ft_gzip_file_fill_input): In case of an error, adjust the limit to
	avoid copying uninitialized memory.

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

	[bzip2, gzip] Avoid access of uninitialized memory (#46109).

	* src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
	(ft_gzip_file_fill_output): In case of an error, adjust the limit to
	avoid copying uninitialized memory.

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

	[smooth] Clean up worker.

	* src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.

2015-10-01  Werner Lemberg  <wl@gnu.org>

	[sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
	border conditions (i.e., if the loop exits naturally).

2015-10-01  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
	They should be a subset of `af_deva_uniranges'.

2015-10-01  Werner Lemberg  <wl@gnu.org>

	[sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
	reject too large glyph indices.

2015-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Clean up worker.

	* src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
	(gray_start_cell, gray_render_line): Update.

2015-09-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Replace `no-base' with `non-base'.

	* src/autofit/*: Do it.

2015-09-30  Werner Lemberg  <wl@gnu.org>

	[sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
	skip invalid segments.
	If searching the next character, provide a more efficient logic to
	speed up the code.

2015-09-30  Werner Lemberg  <wl@gnu.org>

	[truetype] Adjust number of glyphs for malformed `loca' tables.

	* src/truetype/ttpload.c (tt_face_load_loca): Implement it.

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

	[pshinter] Avoid harmless overflow (#45984).

	* src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.

2015-09-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Lao script.

	Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
	characters!

	* src/autofit/afblue.dat: Add blue zone data for Lao.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Lao standard characters.

	* src/autofit/afranges.c: Add Lao data.

	* src/autofit/afstyles.h: Add Lao data.

2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[base] Fix a leak by broken sfnt-PS or resource fork (#46028).

	open_face_from_buffer() frees passed buffer if valid font
	is not found.  But if copying to the buffer is failed,
	the allocated buffer should be freed within the caller.

	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
	the buffer `sfnt_ps' if an error caused before calling
	open_face_from_buffer().
	(Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
	an error caused before calling open_face_from_buffer();

2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[mac] Fix buffer size calculation for LWFN font.

	* src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
	to prevent confused copy by too large chunk size.

2015-09-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.

2015-09-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor tracing improvement.

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
	blue zones header line if there are no blue zones.

2015-09-26  Werner Lemberg  <wl@gnu.org>

	[bzip2, gzip, lzw] Harmonize function signatures with prototype.

	Suggested by Hin-Tak Leung.

	* src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
	(ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.

2015-09-26  Hin-Tak Leung  <htl10@users.sourceforge.net>

	Add new FT_LOAD_COMPUTE_METRICS load flag.

	* include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
	* src/truetype/ttgload.c (compute_glyph_metrics): Usage.

2015-09-26  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.

2015-09-25  Werner Lemberg  <wl@gnu.org>

	[type1] Protect against invalid number of glyphs (#46029).

	* src/type1/t1load.c (parse_charstrings): Check number of
	`CharStrings' dictionary entries against size of data stream.

2015-09-23  Werner Lemberg  <wl@gnu.org>

	[sfnt] Better checks for invalid cmaps (2/2) (#46019).

	While the current code in `FT_Get_Next_Char' correctly rejects
	out-of-bounds glyph indices, it can be extremely slow for malformed
	cmaps that use 32bit values.  This commit tries to improve that.

	* src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
	tt_cmap12_char_map_binary, tt_cmap13_next,
	tt_cmap13_char_map_binary): Reject glyph indices larger than or
	equal to the number of glyphs.

2015-09-23  Werner Lemberg  <wl@gnu.org>

	[base, sfnt] Better checks for invalid cmaps (1/2).

	* src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
	glyph indices.
	(FT_Get_First_Char): Updated.

	* src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
	codes greater than 0xFFFF.

	(tt_cmap8_char_index): Avoid integer overflow in computation of
	glyph index.
	(tt_cmap8_char_next): Avoid integer overflows in computation of
	both next character code and glyph index.

	(tt_cmap10_char_index): Fix unsigned integer logic.
	(tt_cmap10_char_next): Avoid integer overflow in computation of
	next character code.

	(tt_cmap12_next): Avoid integer overflows in computation of both
	next character code and glyph index.
	(tt_cmap12_char_map_binary): Ditto.
	(tt_cmap12_char_next): Simplify.

	(tt_cmap13_char_map_binary): Avoid integer overflow in computation
	of next character code.
	(tt_cmap13_char_next): Simplify.

2015-09-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[base] Check too long POST and sfnt resource (#45919).

	* src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
	resource fork for Mac OS.  Resource forks larger than 16 MB can be
	written but can't be handled correctly, at least in Carbon routine.
	See https://support.microsoft.com/en-us/kb/130437.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
	prefix for `%p' formatter.

	* src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
	total size of the concatenated POST resource before buffer
	allocation.
	(Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
	before buffer allocation.

	* src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
	total resource size before buffer allocation.

2015-09-19  Werner Lemberg  <wl@gnu.org>

	[sfnt] Improve handling of invalid SFNT table entries (#45987).

	This patch fixes weaknesses in function `tt_face_load_font_dir'.

	- It incorrectly assumed that valid tables are always at the
	  beginning.  As a consequence, some valid tables after invalid
	  entries (which are ignored) were never seen.

	- Duplicate table entries (this is, having the same tag) were not
	  rejected.

	- The number of valid tables was sometimes too large, leading to
	  access of invalid tables.

	* src/sfnt/ttload.c (check_table_dir): Add argument to return number
	of valid tables.
	Add another tracing message.
	(tt_face_load_font_dir): Only allocate table array for valid
	entries as returned by `check_table_dir'.
	Reject duplicate tables and adjust number of valid tables
	accordingly.

2015-09-19  Werner Lemberg  <wl@gnu.org>

	[pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).

	* src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
	then take the absolute value.
	Also apply FT_ABS to `height'.

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

	[type42] Fix memory leak (#45989).

	* src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
	`CharStrings' array.

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

	[psaux] Fix memory leak (#45986).

	* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
	Free `temp' in case of error.

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

	[psaux] Improve tracing message.

	* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
	Handle plural correctly.

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

	[pcf] Fix integer overflows (#45985).

	* src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.

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

	[pcf] Use FT_ABS for some property values (#45893).

	* src/pcf/pcfread.c (pcf_load_font): Take absolute values for
	AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
	RESOLUTION_Y.  In tracing mode, add warnings.

2015-09-16  Werner Lemberg  <wl@gnu.org>

	Minor fixes for some clang warnings.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
	initialization.

	* src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.

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

	[type1, type42] Fix memory leaks (#45966).

	* src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
	names.
	(parse_blend_design_map): Allow only a single design map.
	(parse_encoding): Handle multiple encoding vectors.

	* src/type42/t42parse.c (t42_parse_encoding): Handle multiple
	encoding vectors.

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

	[truetype] Fix integer type (#45965).

	* src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.

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

	* src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).

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

	[type1, type42] Check encoding array size (#45961).

	* src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
	(t42_parse_encoding): Do it.

2015-09-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.

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

	[type1] Fix another potential buffer overflow (#45955).

	* src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
	`eexec' doesn't exceed `limit'.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	Replace `mkinstalldirs' with AC_PROG_MKDIR_P.

	* builds/unix/mkinstalldirs: Removed, no longer needed.

	* builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
	Update pwd call for `$INSTALL'.

	* builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.

	* autogen.sh: Updated.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	[winfonts] Check alignment shift count for resource data (#45938).

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	[type1] Fix potential buffer overflow (#45923).

	* src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
	point to end of file buffer.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	[gzip] Fix access of small compressed files (#45937).

	* src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.

	(ft_gzip_get_uncompressed_file): Correct byte order while reading
	unsigned long value.  Without this change, the whole optimization of
	accessing small files in `FT_Stream_OpenGzip' is never executed!  As
	a consequence, access to PCF files in general (which are normally
	small files) should be much improved now as originally intended.

2015-09-11  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix potential buffer overflow (#45922).

	* src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
	enclosed in balanced expressions, ensure that the cursor position
	doesn't get larger than the current limit.

2015-09-11  Werner Lemberg  <wl@gnu.org>

	[base] Avoid crash while tracing `load_mac_face'.

	Reported in Savannah bug #45919.

	* src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
	tracing.

2015-09-11  Werner Lemberg  <wl@gnu.org>

	[type42] Fix endless loop (#45920).

	* src/type42/t42parse.c (t42_parse_encoding): Synchronize with
	type1's `parse_encoding'.

2015-09-10  Werner Lemberg  <wl@gnu.org>

	[docmaker] Allow `-' in bold and italic markup.

	* src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
	accordingly.

2015-09-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_RoundFix): Improve.

2015-09-09  Wojciech Mamrak  <wmamrak@gmail.com>

	* src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.

	This commit makes the functions behave as expected, this is,
	rounding towards plus or minus infinity.

2015-09-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_render_line): Simplify clipping.

2015-09-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster,smooth] Microoptimizations.

	* src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
	Bezier_Up): Use do-while loops.

	* src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
	gray_convert_glyph): Ditto.

2015-09-04  Werner Lemberg  <wl@gnu.org>

	[autofit] Redesign code ranges (2/2).

	This commit adds two fallback scripts (`latb', `latp') and
	implements support for the no-base character ranges introduced in
	the previous commit.

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

	* src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
	`latp' fallback scripts.

	* src/autofit/afblue.dat: Add blue zones for Latin subscript and
	superscript fallback scripts.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
	characters.
	(AF_STYLE_MASK): Updated.

	* src/autofit/afglobal.c (SCRIPT): Updated.
	(af_face_globals_compute_style_coverage): Handle new style flag.

	* src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
	flag.

	* src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.

2015-09-04  Werner Lemberg  <wl@gnu.org>

	[autofit] Redesign code ranges (1/2).

	This patch introduces auxiliary code ranges that identify no-base
	characters; they refer to glyphs of a script that should be hinted
	without alignments to blue zones (mostly diacritics).

	It also splits off ranges for fallback scripts that handle subscript
	and superscript characters not covered by OpenType features.  For
	example, this greatly helps improve the hinting of various phonetic
	alphabets, which contain a large amount characters that look like
	superscript glyphs.

	Finally, code ranges are updated to Unicode 8.0, and enclosed
	characters are removed in general since they normally look better if
	they stay unhinted.

	* src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
	8.0.
	Split off superscript-like and subscript-like glyphs into...

	(af_latb_uniranges, af_latp_uniranges): ... these two new arrays.

	(af_xxxx_nobase_uniranges): New arrays that hold no-base characters
	of the corresponding character ranges.

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

	[autofit] Pass glyph index to hinting function.

	No functionality change yet.

	* src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
	glyph index.

	* src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
	src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
	(af_indic_hints_apply), src/autofit/aflatin.c
	(af_latin_hints_apply), src/autofit/aflatin2.c
	(af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
	Updated.

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

	[autofit] Code clean-up.

	* src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
	(AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
	Updated.

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

	[autofit] Make glyph style array use 16bit values.

	* include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
	`FT_UShort' for `map' field.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
	af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
	(af_get_coverage): Use FT_UShort for `glyph_styles' array.

	* src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
	16 bits.
	(AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.

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

	* builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).

2015-08-25  Werner Lemberg  <wl@gnu.org>

	[base] Improve kerning tracing and documentation.

	* src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
	scaled-down kerning values differ.

2015-08-18  Werner Lemberg  <wl@gnu.org>

	[raster] Remove last remnants of `raster5' driver.

	* src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.

	* src/raster/rastpic.c, src/raster/rastpic.h
	(ft_raster5_renderer_class_pic_init,
	ft_raster5_renderer_class_pic_free): Removed.

2015-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Improve emboldener (#45596).

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
	of zero-length segments.

2015-08-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Reoptimize arithmetic.

	* src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
	special cases that slow down the general use.

2015-08-15  pazer  <ibemad@gmail.com>

	Fix C++ compilation (#45762).

	* src/base/ftstroke.c (ft_outline_glyph_class): Use
	FT_CALLBACK_TABLE.

2015-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Clean up.

	* src/truetype/ttgload.c (TT_Process_Composite_Component): Use
	`FT_Outline_Transform' and `FT_Outline_Translate'.
	(translate_array): Dropped.

2015-08-14  Andreas Enge  <andreas.enge@inria.fr>

	* builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).

2015-08-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Introduce named instance access to GX fonts.

	For functions querying a face, bits 16-30 of the face index can hold
	the named instance index if we have a GX font.  The indices start
	with value 1; value 0 indicates font access without GX variation
	data.

	* include/freetype/freetype.h (FT_FaceRec): Update documentation.
	* include/freetype/internal/sfnt.h: Ditto.

	* src/sfnt/sfobjs.c (sfnt_init_face)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
	do argument checks.
	(sfnt_load_face): Updated.

	* src/truetype/ttobjs.c (tt_face_init)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
	the style name.

	* src/base/ftobjs.c (open_face_from_buffer,
	open_face_PS_from_sfnt_stream): Updated.
	* src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
	* src/cff/cffload.c (cff_font_load): Updated.

	* src/cff/cffobjs.c (cff_face_init): Make function exit early for
	pure CFF fonts if `font_index < 0'.
	Updated.

	* src/cid/cidobjs.c (cid_face_init): Updated.
	* src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
	* src/pfr/pfrobjs.c (pfr_face_init): Updated.
	* src/type1/t1objs.c (T1_Face_Init): Updated.
	* src/type42/t42objs.c (T42_Face_Init): Updated.
	* src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
	Updated.

	* docs/CHANGES: Updated.

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

	[type1,cff,cid] Streamline font matrix application.

	* src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
	if font matrix is not trivial.
	* src/cff/cffgload.c (cff_slot_load): Ditto.
	* src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
	entire outline.

2015-08-11  Werner Lemberg  <wl@gnu.org>

	[builds/unix] Minor.

	* builds/unix/configure.raw:
	s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
	similarly named uppercase variables.

2015-08-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type1,cid,type42] Minor improvements.

	* src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
	when necessary. Refresh comments.
	* src/cid/cidload.c (cid_parse_font_matrix): Ditto.
	* src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.

2015-08-08  Werner Lemberg  <wl@gnu.org>

	[type42] Fix glyph access.

	This is a severe bug: We've missed one level of indirection, as
	described in the Type 42 specification.  As a result, ftview
	sometimes showed incorrect glyphs for given glyph names, and even
	displayed `error 0x0006' (invalid argument!) in case the number of
	glyph indices differed between the Type 42 font and the embedded
	TTF.

	Apparently, noone ever noticed it; this shows how much Type 42 fonts
	are in use...

	* src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
	to embedded TTF's glyph index.

2015-08-08  Werner Lemberg  <wl@gnu.org>

	[type42] Minor clean-up.

	* src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
	variable.

2015-08-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type42] Parse FontMatrix according to specifications.

	* src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
	does not need scaling by 1000. Units_per_EM are taken from the
	embedded TrueType.

2015-08-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve Arabic hinting.

	Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
	ttfautohint).

	* src/autofit/afblue.dat: Add neutral blue zone for the tatweel
	character.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

2015-08-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Clean up types.

	* src/truetype/ttobjs.c (TT_Size): Move declaration from here.
	* include/freetype/internal/tttypes.h (TT_Size): ... to here.
	(TT_LoaderRec): Switch to appropriate types for `face' and `size'.
	* src/truetype/ttgload.c: Remove corresponding type casts.
	* src/truetype/ttsubpix.c: Ditto.

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

	[autofit] Improve recognition of flat vs. rounded segments.

	Lower the flatness threshold from upem/8 to upem/14, making the
	auto-hinter accept shorter elements.

	Synchronize flat/round stem selection algorithm with blue zone code.

	* src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
	(af_latin_metrics_init_blues): Use it.
	(af_latin_hints_compute_segments): Collect information on maximum
	and minimum coordinates of `on' points; use this to add a constraint
	for the flat/round decision similar to
	`af_latin_metrics_init_blues'.

2015-08-04  Werner Lemberg  <wl@gnu.org>

	Another left-shift bug (#45681).

	* src/base/ftobjs.c (IsMacBinary): Only accept positive values for
	`dlen'.

2015-08-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix `ft_corner_orientation'.

	Remove casting from `FT_Long' to `FT_Int' that might change the sign
	of the return value and make it faster too.

	* src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
	with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
	* src/pshinter/pshalgo.c: Remove old unused code.

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

	* src/truetype/ttgload.c (load_truetype_glyph)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
	having a depth greater than 1.

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

	Fix typo in clang bug from 2015-07-31 (#45678).

	* src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.

2015-08-02  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Improve shared library support.

	Based on a patch from John Cary <cary@txcorp.com>.

2015-08-02  Werner Lemberg  <wl@gnu.org>

	* builds/unix/freetype-config.in (enable_shared): Remove.  Unused.

2015-08-02  Werner Lemberg  <wl@gnu.org>

	Fix more invalid left-shifts.

	* src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
	not left-shift.

	* src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
	tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
	not left-shift.

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

	Fix some bugs found by clang's `-fsanitize=undefined' (#45661).

	* src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
	positive values from header.
	Check overflow.

	* src/base/ftoutln.c (SCALED): Correctly handle left-shift of
	negative values.

	* src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
	_bdf_clear_glyph_modified): Use unsigned long constant.

	* src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
	left-shift values that can be negative.

	* src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
	left-shift values that can be negative.

	* src/raster/ftraster.c (SCALED): Correctly handle left-shift of
	negative values.

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
	values that can be negative.

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph,
	compute_glyph_metrics, load_sbit_image): Don't left-shift values
	that can be negative.

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

	Define FT_LONG_MAX.

	* include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
	* src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.

2015-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_Vector_NormLen): Clarify.

2015-07-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.

2015-07-26  Matthias Clasen  <matthias.clasen@gmail.com>

	[cff] Don't use `hmtx' table for LSB (#45520).

	* src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
	width only.  Bug introduced 2015-04-10.

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

	Better support of user-supplied C++ namespaces.

	See

	  https://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html

	for a rationale.

	* src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
	src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
	src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
	(FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
	header files that contain FT_{BEGIN,END}_HEADER macros by
	themselves.

	* src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
	FT_CONFIG_STANDARD_LIBRARY_H earlier.

	* src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H.

2015-07-07  Werner Lemberg  <wl@gnu.org>

	[sfnt] Make `tt_face_get_name' member of the SFNT interface.

	* include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
	prototype.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
	* src/sfnt/sfobjs.h: Add prototype for it.

2015-06-30  Werner Lemberg  <wl@gnu.org>

	Fix some clang compiler warnings.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
	(cf2_interpT2CharString), src/truetype/ttgload.c
	(load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
	src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.

2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Speed up bytecode interpreter.

	* src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.

2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Speed up emboldening.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
	`FT_Vector_NormLen'.

2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Implement fast vector normalization.

	The function uses Newton's iterations instead of dividing vector
	components by its length, which needs a square root. This is,
	literally, a bit less accurate but a lot faster.

	* src/base/ftcalc.c (FT_Vector_NormLen): New function.

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

	* CMakeLists.txt: Always create `ftconfig.h'.

	For non-UNIX builds, the file stays unmodified.  However, it's
	better to have the main configuration files at the same place
	regardless of the OS.

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

	* CMakeLists.txt: Improve MSVC support (#43737).

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

	[cmake] Check for libraries and create `ftoption.h'.

	* builds/FindHarfBuzz.cmake: New file, taken from

	  https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake

	* CMakeLists.Txt: Add path to local cmake modules.
	Find dependencies for zlib, bzip2, libpng, and harfbuzz.
	Create `ftoption.h' file.
	Set up include and linker stuff for libraries.

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

	* CMakeLists.txt: Fix creation of `ftconfig.h'.
	Check for UNIX header files using `check_include_file'.
	Set up correct header include directories.

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

	* CMakeLists.txt: Disallow in-source builds.

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

	* src/tools/docmaker/utils.py (check_output): Add missing `\n'.

2015-06-26  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Select platform-dependent `ftdebug.c'.

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

	* CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
	Additionally, do this for UNIX only.

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

	* CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.

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

	Another adjustment to header locations.

	This change is a result of a discussion thread on freetype-devel

	  https://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html

	Re-introduce the `freetype2' subdirectory for all FreeType header
	files after installation, and rename the `freetype2' subdirectory in
	the git repository to `freetype'.

	* include/freetype2: Renamed to...
	* include/freetype: This.

	* CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
	PRIVATE_HEADERS): Updated.
	Update creation of `ftconfig.h'.
	Install generated `ftconfig.h'.

	* Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.

	* builds/amiga/include/config/ftconfig.h, builds/freetype.mk
	(PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
	builds/unix/freetype2.in: Updated.

	* builds/unix/freetype-config.in: Updated.
	* builds/unix/configure.raw: Don't check for `rmdir'.
	* builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
	according to the autoconf info manual.
	* builds/unix/install.mk (install, uninstall,
	distclean_project_unix): Update and simplify.

	* builds/wince/*, builds/windows/*: Updated.

	* devel/ft2build.h, include/ft2build.h: Updated.

	* include/freetype2/config/ftheader.h,
	include/freetype2/internal/ftserv.h,
	include/freetype2/internal/internal.h: Update all header file
	macros.

	* src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.

	* docs/*: Updated.

2015-06-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.

2015-06-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.

2015-06-23  Werner Lemberg  <wl@gnu.org>

	s/TYPEOF/FT_TYPEOF/ (#45376).

	* builds/unix/ftconfig.in, builds/vms/ftconfig.in,
	include/freetype2/config/ftconfig.h,
	include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.

2015-06-22  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #45097.

	We no longer `pollute' the namespace of possible header file names;
	instead we move `ft2build.h' up by one level so that it gets
	installed in the default include directory (e.g.,
	/usr/local/include).  After this commit, only `ft2build.h' stays in
	the compiler's include path.

	No visible changes for the user who follows the standard FreeType
	header inclusion rules.

	* include/*: Move to ...
	* include/freetype2/*: This directory, except `ft2build.h'.

	* CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
	PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.

	* builds/amiga/include/config/ftconfig.h, builds/freetype.mk
	(PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
	builds/unix/install.mk (install, uninstall),
	builds/unix/freetype2.in: Updated.

	* builds/unix/freetype-config.in: Updated.
	Emit -I directory only if it is not `/usr/include'.

	* builds/wince/*, builds/windows/*: Updated.

	* devel/ft2build.h, include/ft2build.h: Updated.

	* include/freetype2/config/ftheader.h,
	include/freetype2/internal/ftserv.h,
	include/freetype2/internal/internal.h: Update all header file
	macros.

	* src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.

2015-06-21  Werner Lemberg  <wl@gnu.org>

	Make Jam support work again.

	This is just very basic stuff and just a little bit tested on
	GNU/Linux only.  I won't delve into this since I'm not a Jam user.

	* Jamfile: Call `HDRMACRO' for `ftserv.h' also.
	(DEFINES): Replace with...
	(CCFLAGS): ... this.

	* src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
	already handled in the top-level Jamfile.

	* src/autofit/Jamfile (DEFINES): Replace with...
	(CCFLAGS): ... this.
	(_sources): Add missing files.

	* src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
	longer contains macro header definitions.

	* src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
	src/truetype/Jamfile (_sources): Add missing files.

2015-06-16  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #45326.

	* src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
	definitions.

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

	* Version 2.6 released.
	=======================


	Tag sources with `VER-2-6'.

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

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/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.5.5/2.6/, s/255/26/.

	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
	(FREETYPE_PATCH): Set to 0.

	* builds/unix/configure.raw (version_info): Set to 18:0:12.
	* CMakeLists.txt (VERSION_MINOR): Set to 6.
	(VERSION_PATCH): Set to 0.

	* src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
	declarations for dumping functions.

	* src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.

	* builds/toplevel.mk: Use `freetype.mk's code to compute the version
	string.
	Don't include a zero patch level in version string.
	* builds/freetype.mk: Remove code for computing the version string.

2015-06-06  Ashish Azad  <ashish.azad@samsung.com>

	Fix Savannah bug #45260.

	* src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.

2015-06-03  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix memory leak.

	Problem reported by Grissiom <chaos.proton@gmail.com>; in

	  https://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html

	there is an example code to trigger the bug.

	* src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
	data before allocating again.  Bug most probably introduced four
	years ago in version 2.4.3.

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

	[raster] Add more tracing.

	* src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
	(Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
	Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.

2015-06-01  Werner Lemberg  <wl@gnu.org>

	[truetype] While tracing opcodes, show code position and stack.

	* src/truetype/ttinterp.c: Change all existing TRACE7 calls to
	TRACE6.
	(opcode_name): Add string lengths.
	(TT_RunIns): Implement display of code position and stack.

2015-05-31  Werner Lemberg  <wl@gnu.org>

	[truetype] In GX, make private point numbers work correctly.

	This is completely missing in Apple's documentation: If a `gvar'
	tuple uses private point numbers (this is, deltas are specified for
	some points only), the uncovered points must be interpolated for
	this tuple similar to the IUP bytecode instruction.  Examples that
	need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.

	* src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
	tt_handle_deltas): New functions.
	(TT_Vary_Get_Glyph_Deltas): Renamed to...
	(TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
	points and does no longer return an array of deltas.
	Add tracing information.
	Call `tt_handle_deltas' to interpolate missing deltas.
	Also fix a minor memory leak in case of error.

	* src/truetype/ttgxvar.h: Updated.

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

2015-05-31  Werner Lemberg  <wl@gnu.org>

	[truetype] In GX, make intermediate tuplets work at extrema.

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.

2015-05-31  Werner Lemberg  <wl@gnu.org>

	[truetype] Add tracing information to GX code.

	* src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
	ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
	TT_Set_Var_Design, tt_face_vary_cvt): Do it.

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

	* src/tools/apinames.c (names_dump): Fix invalid reference.

	Problem reported by Guzman Mosqueda, Jose R
	<jose.r.guzman.mosqueda@intel.com>.

2015-05-24  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix commit from 2015-05-22.

	* src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
	with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.

	Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.

2015-05-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix return values of GETINFO bytecode instruction.

	* src/truetype/ttinterp.h (TT_ExecContextRec): New fields
	`vertical_lcd' and `gray_cleartype'.

	* src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
	Change `symmetrical smoothing' to TRUE, since FreeType produces
	exactly this.

	* src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
	values for symmetrical smoothing, namely 11/18.
	Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
	(12/19).

2015-05-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Minor.

	* src/truetype/ttinterp.h (TT_ExecContext):
	 s/subpixel/subpixel_hinting.

	* src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.

2015-05-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Support selector index 3 of the INSTCTRL instruction.

	This flag activates `native ClearType hinting', disabling backward
	compatibility mode as described in Greg Hitchcocks whitepaper.  In
	other words, it enables unrestricted functionality of all TrueType
	instructions in ClearType.

	* src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
	unconditionally.
	(tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
	`GS.instruct_control' is active.

	* src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
	(Ins_GETINFO): Updated.

	* docs/CHANGES: Document it.

2015-05-20  Werner Lemberg  <wl@gnu.org>

	[truetype] Minor.

	* src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
	argument.

2015-05-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix loading of composite glyphs.

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
	ARGS_ARE_XY_VALUES flag is not set, handle argument values as
	unsigned.  I trust `ttx' (which has exactly such code) that it does
	the right thing here...

	The reason that noone has ever noticed this bug is probably the fact
	that point-aligned subglyphs are rare, as are subglyphs with a
	number of points in the range [128;255], which is quite large (or
	even in the range [32768;65535], which is extremely unlikely).

2015-05-12  Chris Liddell  <chris.liddell@artifex.com>

	[cff] Make the `*curveto' operators more tolerant.

	* src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
	`vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
	pulling values off the stack until the stack is exhausted.
	Implicitly the stack must be a multiple (or for subtly different
	behaviour) a multiple plus a specific number of extra values deep.
	If that's not the case, enforce it (as the old code did).

2015-05-12  Chris Liddell  <chris.liddell@artifex.com>

	[cff] fix incremental interface with new cff code.

	* src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
	interface to retrieve glyph data for a SEAC, it be left to the
	incremental interface callback to apply the encoding to raw
	character index (as it was in the previous code).

2015-04-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[autofit] Speed up IUP.

	* src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
	the same position from true interpolation, use `scale' to reduce
	divisions.

2015-04-28  Werner Lemberg  <wl@gnu.org>

	[cff] Use `name' table for PS name if we have a SFNT-CFF.

	This follows the OpenType 1.7 specification.  See

	  https://tug.org/pipermail/tex-live/2015-April/036634.html

	for a discussion.

	* src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
	have an SFNT.

2015-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Speed up IUP.

	* src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
	snapping to the same position from true interpolation.

2015-04-21  Werner Lemberg  <wl@gnu.org>

	[autofit] By default, enable warping code but switch off warping.

	Suggested by Behdad.

	* include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.

	* src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
	with `false'.

2015-04-21  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2015-04-21  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce `warping' property.

	This code replaces the debugging hook from the previous commit with
	a better, more generic solution.

	* include/ftautoh.h: Document it.

	* src/autofit/afmodule.h (AF_ModuleRec)
	[AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.

	* src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
	(af_property_set, af_property_get, af_autofitter_init)
	[AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.

	* src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
	longer existing `_af_debug_disable_warper'.

	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
	(af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
	[AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
	scaler flags if warping is off.

	* src/autofit/aftypes.h: Updated.

2015-04-16  Werner Lemberg  <wl@gnu.org>

	[autofit] Add debugging hook to disable warper.

	* src/autofit/afmodule.c (_af_debug_disable_warper)
	[FT_DEBUG_AUTOFIT]: New global variable.

	* src/autofit/aftypes.h: Updated.
	(AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).

	* src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.

	* src/autofit/aflatin.c (af_latin_hints_apply)
	[AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
	of warper.

	* src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
	[AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.

	* src/autofit/aflatin2.c (af_latin2_hints_apply)
	[AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.

2015-04-10  Werner Lemberg  <wl@gnu.org>

	[cff] Update advance width handling to OpenType 1.7.

	Problem reported by Behdad.

	* src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
	separately.

	* src/cff/cffgload.c (cff_slot_load): Use advance width and side
	bearing values from `hmtx' table if present.

2015-04-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.

2015-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.

2015-04-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[autofit] Finish the thought.

	* src/autofit/afhints.c (af_direction_compute): make sure the long arm
	is never negative so that its `FT_ABS' is not necessary.

2015-04-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Call dumper functions for tracing.

	* src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
	* src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
	improvement.
	* src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.

2015-04-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Make debugging stuff work again.

	The interface to ftgrid was broken in the series of commits starting
	with

	  [autofit] Allocate AF_Loader on the stack instead of AF_Module.

	from 2015-01-14.

	* src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
	Use a global AF_GlyphHintsRec object for debugging.
	(af_autofitter_done, af_autofitter_load_glyph): Updated.

	* src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.

2015-04-01  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.

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

	[cff] Fix Savannah bug #44629.

	* src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
	(CFF_MAX_SUBRS_CALLS): Set to 16.

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

	[type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.

	This commit allows `num_coords' to be larger or smaller than the
	number of available axes while selecting a design instance, either
	ignoring excess data or using defaults if data is missing.

	* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
	Implement it.

	* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
	T1_Set_Var_Design): Ditto.

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

	[type1] Minor.

	* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
	FT_THROW.
	(T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.

2015-03-27  Werner Lemberg  <wl@gnu.org>

	[cff] Trace charstring nesting levels.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
	cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.

2015-03-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Optimize `FT_Angle_Diff'.

	Under normal circumstances we are usually close to the desired range
	of angle values, so that the remainder is not really necessary.

	* src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.

	* src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.

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

	[truetype] Improve `gvar' handling.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
	single-element runs.  Cf. glyph `Q' in Skia.ttf with weights larger
	than the default.

2015-03-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.

2015-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Fix Savannah bug #44412 (part 2).

	* src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.

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

	[autofit] Add support for Arabic script.

	Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!

	* src/autofit/afblue.dat: Add blue zone data for Arabic.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Arabic standard characters.

	* src/autofit/afranges.c: Add Arabic data.

	* src/autofit/afstyles.h: Add Arabic data.

	* docs/CHANGES: Document it.

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

	Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.

	* include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
	to...
	(FT_SERVICE_FONT_FORMAT_H): This.

	* include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
	to ...
	(FT_FONT_FORMAT_*): This.

	src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
	src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
	src/truetype/ttdriver.c, src/type1/t1driver.c,
	src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.

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

	[base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.

	* include/config/ftheader.h: Implement it.
	* src/base/ftfntfmt.c, docs/CHANGES: Updated.

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

	[base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.

	* include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.

	* docs/CHANGES: Updated.

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

	Fix automatic copyright updating.

	* src/tools/update-copyright: Make scanning of `no-copyright'
	actually work.

	* src/tools/no-copyright: Don't include README in general.

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

	Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.

	CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
	builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
	builds/mac/FreeType.m68k_far.make.txt,
	builds/mac/FreeType.ppc_carbon.make.txt,
	builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
	builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/freetype.vcxproj.filters,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
	include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
	src/base/ftfntfmt.c, vms_make.com: Updated.

2015-03-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Fix Savannah bug #44412 (part 1).

	* src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.

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

	[base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.

	* include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
	Update all callers.

	* docs/CHANGES: Updated.

2015-03-06  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.

	Found by Alexei.

2015-03-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c: Simplify.

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

	[truetype] Some fixes and code refactoring in `ttgxvar.c'.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
	of `point_cnt' if two bytes are read.
	Use a more vertical coding style.
	(ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
	Use a more vertical coding style.

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

	[autofit] Fix Savannah bug #44241.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
	with less than 3 points.

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

	Simplify `TYPEOF' macro.

	No need for two arguments.

	* include/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h (TYPEOF): Updated.

	* include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
	src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.

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

	Various compiler warning fixes for `make multi'.

	* src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
	src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
	af_latin_hint_edges), src/autofit/aflatin2.c
	(af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
	as `static'.

	* src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
	Removed.  Unused.
	* src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
	* src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed.  Unused.

	* src/cff/cf2intrp.c: Include `cf2intrp.h'.
	* src/cff/cffdrivr.c (PAIR_TAG): Removed.  Unused.

	* src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed.  Unused.

	* src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.

	* src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
	Removed.  Unused.

	* src/raster/ftraster.c (Render_Glyph): Declare as `static'.

	* src/sfnt/ttpost.c (load_format_20): Fix signedness warning.

	* src/truetype/ttdriver.c (PAIR_TAG): Removed.  Unused.
	* src/truetype/ttsubpix.c (is_member_of_family_class,
	is_member_of_style_class): Declare as `static'.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
	as `static'.
	* src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
	`static'.
	(T1_FIELD_COUNT): Removed.  Unused.
	* src/type1/t1parse.h (T1_Done_Table): Removed.  Unused.

	* src/type42/t42parse.c (T1_Done_Table): Removed.  Unused.

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

	[psaux] Signedness fixes.

	* include/internal/psaux.h, src/psaux/afmparse.c,
	src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
	src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.

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

	[otvalid] Signedness fixes.

	* src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
	src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
	Apply.

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

	* src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.

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

	[lzw] Signedness fixes.

	* src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.

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

	[gxvalid] Signedness fixes.

	* src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
	src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
	src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
	src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
	src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
	src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.

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

	[cache] Signedness fixes.

	* src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
	src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.

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

	Change dimension fields in `FTC_ImageTypeRec' to unsigned type.

	This doesn't break ABI.

	* include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
	`width' and `height'.

	* docs/CHANGES: Document it.

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

	[cache] Don't use `labs'.

	This is the only place in FreeType where this function was used.

	* include/config/ftstdlib.h (ft_labs): Remove.

	* src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
	`FT_ABS'.

2015-02-23  Werner Lemberg  <wl@gnu.org>

	[cache] Replace `FT_PtrDist' with `FT_Offset'.

	* src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
	is a better choice for `hash' to hold a pointer than `FT_PtrDist'
	(a.k.a. `ptrdiff_t'), especially since the latter is signed,
	causing zillions of signedness warnings.  [Note that `hash' was of
	type `FT_UInt32' before the change to `FT_PtrDist'.]
	Update all users.

	* src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
	src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.

2015-02-23  Werner Lemberg  <wl@gnu.org>

	[smooth, raster] Re-enable standalone compilation.

	* src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
	[_STANDALONE_]: Define macros.

	* src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
	FT_HYPOT) [_STANDALONE_]: Define macros.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[smooth] Signedness fixes.

	* src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c: Use the file's typedefs everywhere.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttpost.c (load_format_20): Fix error tracing message.

	Bug introduced 6 commits earlier.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pshinter] Fix thinko.

	* src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
	check `count'.
	Bug introduced two commits earlier.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[raster] Signedness fixes.

	* src/raster/ftraster.c, src/raster/ftrend1.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pshinter] Signedness fixes.

	* src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
	src/pshinter/pshrec.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pshinter] Use macros for (unsigned) flags, not enumerations.

	* src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
	Updated.
	* src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshrec.c: Simplify.
	(ps_hints_open, ps_hints_stem): Remove switch statement.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[sfnt] Signedness fixes.

	* src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
	src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
	src/sfnt/ttsbit.c: Apply.
	* src/sfnt/sfdriver.c: Apply.
	(sfnt_get_ps_name): Simplify.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[bdf] Signedness fixes.

	* src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
	src/bdf/bdflib.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c (_bdf_atous): New function.
	(_bdf_parse_glyphs, _bdf_parse_start): Use it.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pcf] Signedness fixes.

	* src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
	* src/pcf/pcfread.c: Apply.
	(pcf_get_encodings): Ignore invalid negative encoding offsets.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	* src/winfonts/winfnt.c: Signedness fixes.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	[type42] Signedness fixes.

	* src/type42/t42parse.c, src/type42/t42parse.h,
	src/type42/t42types.h: Apply.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	[pfr] Signedness fixes.

	* src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
	src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
	src/pfr/pfrtypes.h: Apply.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	[cff] Minor signedness fixes related to last commit.

	* src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Thinkos in bias handling.

	Only the final result is always positive.

	Bug introduced three commits earlier.

	* src/cff/cffgload.c, src/cff/cffgload.h: Apply.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cid] Fix signedness issues and emit some better error codes.

	* src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
	src/cid/cidparse.h: Apply.
	* src/cid/cidload.c: Apply.
	(parse_fd_array): Reject negative values for number of dictionaries.
	* src/cid/cidparse.c: Apply.
	(cid_parser_new): Reject negative values for hex data length.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Signedness fixes for new engine.

	* src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
	src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Signedness fixes for basic infrastructure and old engine.

	* include/internal/pshints.h, src/cff/cffdrivr.c,
	src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
	src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.

2015-02-19  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.

	This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
	version exists), but some fonts set it incorrectly.

	Problem reported by Adam Twardoch <adam@fontlab.com>.

2015-02-19  Werner Lemberg  <wl@gnu.org>

	[cff] Emit better error code for invalid private dict size.

	* src/cff/cffparse.c (cff_parse_private_dict): Reject negative
	values for size and offset.

2015-02-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix signedness issues.

	* src/autofit/afangles.c, src/autofit/afcjk.c,
	src/autofit/afglobal.c, src/autofit/afhints.c,
	src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
	src/autofit/hbshim.c: Apply.

2015-02-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Use macros for (unsigned) flags, not enumerations.

	This harmonizes with other code in FreeType (and reduces the number
	of necessary casts to avoid compiler warnings).

	* src/autofit/afblue.hin: Make flag macros unsigned.
	* src/autofit/afblue.h: Regenerated.

	* src/autofit/afcjk.h: Replace flag enumeration with macros.
	* src/autofit/afcjk.c: Updated.

	* src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
	macros.
	* src/autofit/afhints.c: Updated.

	* src/autofit/aflatin.h: Replace flag enumerations with macros.
	* src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.

	* src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	[type1] Fix signedness issues.

	* include/internal/psaux.h, include/internal/t1types.h,
	src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
	src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	[psaux, type1] Fix minor AFM issues.

	* include/internal/t1types.h (AFM_KernPairRec): Make indices
	unsigned.
	Update users.
	(AFM_FontInfoRec): Make element counters unsigned.
	Update users.
	* src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
	int.

	* src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
	Reject negative values for number of kerning elements.

	* src/type1/t1afm.c, src/tools/test_afm.c: Updated.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	Don't use `FT_PtrDist' for lengths.

	Use FT_UInt instead.

	* include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
	T1_DecoderRec): Do it.

	* include/internal/t1types.h (T1_FontRec): Ditto.

	* src/cid/cidload.c (cid_parse_dict): Updated.
	* src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
	* src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
	* src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
	parse_charstrings, parse_dict): Ditto.
	* src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
	t42_parse_dict): Ditto.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
	This handles negative values better, avoiding many casts.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[base] Fix Savannah bug #44284.

	* src/base/ftcalc.c (FT_MulFix): Typos.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Finish compiler warning fixes for signedness issues.

	* src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
	src/truetype/ttsubpix.h: Apply.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttsubpix.c: Adding missing `static' keywords.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[truetype] More signedness fixes.

	* include/internal/tttypes.h, src/truetype/ttinterp.h,
	src/truetype/ttobjs.h, src/truetype/ttinterp.c,
	src/truetype/ttobjs.c: Apply.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Various signedness fixes.

	* include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.

	* src/truetype/ttgload.c: Apply.
	(TT_Get_VMetrics): Protect against invalid ascenders and descenders
	while constructing advance height.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	[base] Finish compiler warning fixes for signedness issues.

	* src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
	Apply.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	* include/tttables.h (TT_OS2): `fsType' must be FT_UShort.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	More minor signedness warning fixes.

	* src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
	src/base/ftutil.c: Apply.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	Next round of minor compiler warning fixes.

	* include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
	type to `FT_Long'.
	(CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.

	* include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.

	* src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
	Signedness fixes.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	Various minor signedness fixes.

	* include/ftadvanc.h, include/internal/ftobjs.h,
	src/base/ftgloadr.c, src/base/ftobjs.c: Apply.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	New `TYPEOF' macro.

	This helps suppress signedness warnings, avoiding issues with
	implicit conversion changes.

	* include/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h (TYPEOF): Define.

	* include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
	src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	* src/base/ftsystem.c: Use casts in standard C function wrappers.
	(ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #44261.

	* builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
	environment also while calling the configure script.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	* include/internal/ftmemory.h: Add some `FT_Offset' casts.
	(FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
	FT_MEM_MOVE): Do it.

2015-02-15  Werner Lemberg  <wl@gnu.org>

	[base] Clean up signedness issues in `ftdbgmem.c'.

	Also fix other minor issues.

	* src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
	with FT_Long for consistency.
	(ft_mem_primes): Change type to `FT_Int'.
	(ft_mem_closest_prime, ft_mem_table_set): Updated.

	(ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
	ft_mem_debug_realloc): Use `static' keyword and fix signedness
	warnings where necessary.

	(ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
	ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
	and add or remove casts to avoid signedness warnings.

2015-02-15  Werner Lemberg  <wl@gnu.org>

	[base] Clean up signedness in arithmetic functions.

	This makes the code more readable and reduces compiler warnings.

	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
	FT_DivFix): Convert input parameters to unsigned, do the
	computation, then convert the result back to signed.
	(ft_corner_orientation): Fix casts.

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

	[sfnt] Fix Savannah bug #44184.

	* src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
	longer reject `htmx' and `vmtx' tables with invalid length but
	sanitize them.

2015-02-06  Jon Anderson  <jon@websupergoo.com>

	[truetype] Fix regression in the incremental glyph loader.

	* src/truetype/ttgload.c (load_truetype_glyph): For incremental
	fonts, the glyph index may be greater than the number of glyphs
	indicated, so guard the check with a preprocessor conditional.

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

	[autofit] Fix potential memory leak.

	While this doesn't show up with FreeType, exactly the same code
	leaks with ttfautohint's modified auto-hinter code (which gets used
	in a slightly different way).

	It certainly doesn't harm since it is similar to already existing
	checks in the code for embedded arrays.

	* src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
	and `max_points' for all cases.

2015-01-31  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Thai script.

	Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
	zone characters!

	* src/autofit/afblue.dat: Add blue zone data for Thai.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Thai standard characters.

	* src/autofit/afranges.c: Add Thai data.

	* src/autofit/afstyles.h: Add Thai data.

2015-01-23  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Handle `FT_RASTER_FLAG_AA' correctly.

	This fixes a breakage caused by the commit `[raster] Remove
	5-level gray AA mode from monochrome rasterizer.'.

	Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.

	* src/raster/ftraster.c (ft_black_render): Handle
	`FT_RASTER_FLAG_AA'.

	* src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
	remnants.

2015-01-18  Werner Lemberg  <wl@gnu.org>

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

2015-01-18  Chris Liddell  <chris.liddell@artifex.com>

	[raster] Fix Savannah bug #44022.

	Add fallback for glyphs with degenerate bounding boxes.

	If a glyph has only one very narrow feature, the bbox can end up
	with either the width or height of the bbox being 0, in which case
	no raster memory is allocated and no attempt is made to render the
	glyph.  This is less than ideal when the drop-out compensation in
	the rendering code would actually result in the glyph being
	rendered.

	This problem can be observed with the `I' glyph (gid 47) in the
	Autodesk RomanS TrueType font.

	* src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
	dimension is zero to explicitly round up/down (instead of simply
	round).

2015-01-17  Werner Lemberg  <wl@gnu.org>

	Add some tools to handle yearly copyright notice updates.

	We are now following the GNU guidelines: A new release automatically
	means that the copyright year of all affected files gets updated; it
	is no longer used to track years of modification changes.

	* src/tools/update-copyright-year: New Perl script.
	* src/tools/update-copyright: New shell script that calls
	`update-copyright-year' on all files.
	* src/tools/no-copyright: Exceptions that should not be handled by
	`update-copyright'

2015-01-14  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated, using a description from Behdad.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	* src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Add embedded array of segments and edges.

	Avoids multiple mallocs per typical glyphs.

	With this and recent changes to avoid mallocs, the thread-safe
	stack-based loader is now as fast as the previous model that had one
	cached singleton.

	* src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
	New macros.
	(AF_AxisHintsRec): Add two arrays for segments and edges.

	* src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
	data if number of segments exceeds given threshold value.
	(af_axis_hints_new_edge):  Only allocate data if number of edges
	exceeds given threshold value.
	(af_glyph_hints_done): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Add embedded arrays for points and contours.

	This avoids at least two malloc calls for typical glyphs.

	* src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
	New macros.
	(AF_GlyphHintsRec): Add two arrays for contours and points.

	* src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
	Updated.
	(af_glyph_hints_reload): Only allocate data if number of contours or
	points exceeds given threshold values.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Allocate hints object on the stack.

	This avoids one malloc per load.

	* src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
	`AF_GlyphHints'.
	Update prototype.

	* src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
	parameter instead of `FT_Memory'.
	(af_loader_done): Directly reset `load_hints'.
	(af_loader_load_g): Updated.

	* src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
	`hints' object.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Reuse slot glyph loader.

	No need to create a new glyph loader; we can reuse the one from
	`slot->internal->loader'.  It's hard to tell why it was written that
	way originally, but new code looks sound and correct to me, and
	avoids lots of allocations.

	* src/autofit/afloader.c (af_loader_init): Change return type to
	`void'.
	Don't call `FT_GlyphLoader_New'.
	(af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
	(af_loader_load_g): Update code to use `internal->loader', which
	doesn't need copying of data.

	* src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
	Update prototype.

	* src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Remove (unused) support for composite glyphs.

	We never have to deal with composite glyphs in the autohinter, as
	those will be loaded into FORMAT_OUTLINE by the recursed
	`FT_Load_Glyph' function.

	In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
	FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
	FT_LOAD_NO_HINTING:

	  /* resolve load flags dependencies */

	  if ( load_flags & FT_LOAD_NO_RECURSE )
	    load_flags |= FT_LOAD_NO_SCALE         |
	                  FT_LOAD_IGNORE_TRANSFORM;

	  if ( load_flags & FT_LOAD_NO_SCALE )
	  {
	    load_flags |= FT_LOAD_NO_HINTING |
	                  FT_LOAD_NO_BITMAP;

	    load_flags &= ~FT_LOAD_RENDER;
	  }

	and as such the auto-hinter is never called.  Thus, the recursion in
	`af_loader_load_g' never actually happens.  So remove the depth
	counter as well.

	* src/autofit/afloader.c (af_loader_load_g): Remove `depth'
	parameter.
	<FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
	(af_loader_load_glyph): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Fix uninitialized memory access.

	Apparently `ras.cProfile' might be uninitialized.  This will be the
	case if `ras.top == ras.cProfile->offset', as can be seen in
	`End_Profile'.  The overshoot code introduced in a change `Fix B/W
	rasterization of subglyphs with different drop-out modes.' (from
	2009-06-18) violated this, accessing `ras.cProfile->flags'
	unconditionally just before calling `End_Profile' (which then
	detected that `cProfile' is uninitialized and didn't touch it).

	This was harmless, and was not detected by valgrind before because
	the objects were allocated on the `raster_pool', which was always
	initialized.  With recent change to allocate raster buffers on the
	stack, valgrind now reported this invalid access.

	* src/raster/ftraster.c (Convert_Glyph): Don't access an
	uninitialized `cProfile'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[smooth] Fix uninitialized memory access.

	Looks like `ras.span_y' could always be used without initialization.
	This was never detected by valgrind before because the library-wide
	`raster_pool' was used for the worker object and `raster_pool' was
	originally zero'ed.  But subsequent reuses of it were using `span_y'
	uninitialized.  With the recent change to not use `render_pool' and
	allocate worker and buffer on the stack, valgrind now detects this
	uninitialized access.

	* src/smooth/ftgrays.c (gray_raster_render): Initialize
	`ras.span_y'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[base] Don't initialize unused `driver->glyph_loader'.

	* src/base/ftobjs.c (Destroy_Driver): Don't call
	`FT_GlyphLoader_Done'.
	(FT_Add_Module): Don't call `FT_GlyphLoader_New'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[base] Don't allocate `library->raster_pool' anymore.

	It's unused after the following commits:

	  [raster] Allocate render pool for mono rasterizer on the stack.
	  [raster] Remove 5-level gray AA mode from monochrome rasterizer.

	The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
	serve, which is, to adjust the pool size.  But the pool is now
	allocated on the stack on demand.

	* src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[base] Do not reorder library->renderers upon use.

	Instead of keeping `library->renderers' in a MRU order, just leave
	it as-is.  The MRU machinery wasn't thread-safe.

	With this patch, rasterizing glyphs from different faces from
	different threads doesn't fail choosing rasterizer
	(FT_Err_Cannot_Render_Glyph).

	Easiest to see that crash was to add a `printf' (or otherwise let
	thread yield in FT_Throw with debugging enabled).

	* src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
	(FT_Outline_Render): Don't call `FT_Set_Renderer'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Allocate render pool for mono rasterizer on the stack.

	Instead of using the `render_pool' member of `FT_Library' that is
	provided down to the rasterizer, completely ignore that and allocate
	needed objects on the stack instead.

	With this patch, rasterizing glyphs from different faces from
	different threads doesn't crash in the monochrome rasterizer.

	* src/raster/ftraster.c (black_TRaster): Remove `buffer',
	`buffer_size', and `worker' members.

	(ft_black_render): Create `buffer' locally.
	(ft_black_reset): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Remove 5-level gray AA mode from monochrome rasterizer.

	It was off by default and couldn't be turned on at runtime.  And the
	smooth rasterizer superseded it over ten years ago.  No point in
	keeping.  Comments suggested that it was there for compatibility
	with FreeType 1.

	550 lines down.

	* src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
	RASTER_GRAY_LINES): Remove macros and all associated code.

	(black_TWorker): Remove `gray_min_x' and `gray_max_x'.
	(black_TRaster): Remove `grays' and `gray_width'.

	(Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
	ft_black_render): Updated.

	* src/raster/ftrend1.c (ft_raster1_render): Simplify code.
	(ft_raster5_renderer_class): Removed.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[smooth] Allocate render pool for smooth rasterizer on the stack.

	Instead of using the `render_pool' member of `FT_Library' that is
	provided down to the rasterizer, completely ignore that and allocate
	needed objects on the stack instead.

	With this patch, rasterizing glyphs from different faces from
	different threads doesn't crash in the smooth rasterizer.

	Bugs:

	  https://bugzilla.redhat.com/show_bug.cgi?id=678397
	  https://bugzilla.redhat.com/show_bug.cgi?id=1004315
	  https://bugzilla.redhat.com/show_bug.cgi?id=1165471
	  https://bugs.freedesktop.org/show_bug.cgi?id=69034

	* src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
	`buffer_size', `band_size', and `worker' members.

	(gray_raster_render): Create `buffer', `buffer_size', and
	`band_size' locally.
	(gray_raster_reset): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.

	Previously the code had stipulation for using a per-TT_Size exec
	context if `size->debug' was true.  But there was no way that
	`size->debug' could *ever* be true.  As such, the code was always
	using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
	This was, clearly, not threadsafe.

	With this patch, loading glyphs from different faces from different
	threads doesn't crash in the bytecode loader code.

	* src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
	(TT_DriverRec): Remove `context' member.

	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
	`TT_ExecContext' code related to a global `TT_Driver' object.

	(tt_driver_done): Don't remove `TT_ExecContext' object here but ...
	(tt_size_done_bytecode): ... here.

	(tt_driver_init): Don't create `TT_ExecContext' object here but ...
	(tt_size_init_bytecode): ... here, only on demand.

	* src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
	code.
	(TT_New_Context): Remove `TT_ExecContext' code related to a global
	`TT_Driver' object.

	* src/truetype/ttinterp.h: Updated.

	* src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Allocate AF_Loader on the stack instead of AF_Module.

	Stop sharing a global `AF_Loader'.  Allocate one on the stack during
	glyph load.

	Right now this results in about 25% slowdown, to be fixed in a
	following commit.

	With this patch loading glyphs from different faces from different
	threads doesn't immediately crash in the autohinting loader code.

	Bugs:

	  https://bugzilla.redhat.com/show_bug.cgi?id=1164941

	* src/autofit/afloader.c (af_loader_init): Pass
	`AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
	(af_loader_reset, af_loader_load_glyph): Also pass `loader' as
	argument.
	(af_loader_done): Use `AF_Loader' instead of `AF_Module' as
	argument.

	* src/autofit/afmodule.c (af_autofitter_init): Don't call
	`af_loader_init'.
	(af_autofitter_done): Don't call `af_loader_done'.
	(af_autofitter_load_glyph): Use a local `AF_Loader' object.

	* src/autofit/afloader.h: Include `afmodule.h'.
	Update prototypes.
	Move typedef for `AF_Module' to...

	* src/autofit/afmodule.h: ... this place.
	No longer include `afloader.h'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	* src/type42/t42objs.h (T42_DriverRec): Remove unused member.

2015-01-12  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #43976.

	Assure that FreeType's internal include directories are found before
	`CPPFLAGS' (which might be set by the user in the environment), and
	`CPPFLAGS' before `CFLAGS'.

	* builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
	(FT_COMPILE): Make this a special variable for compiling only the
	files handled in `freetype.mk'.
	(.c.$O): Removed, unused.

	* src/*/rules.mk (*_COMPILE): Fix order of include directories.

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

	[truetype] Prettifying.

	* src/truetype/ttinterp.c (project, dualproj, fast_project,
	fast_dualproj): Rename to...
	(PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.

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

	* src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.

	Based on a patch from Behdad.

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

	* src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.

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

	* src/truetype/ttinterp.c (Normalize): Remove unused argument.

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

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
	expansion.

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

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
	adjusting function calls where necessary.
	(FT_UNUSED_ARG): Removed, no longer needed.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	Based on a patch from Behdad.

	* src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
	`Ins_*' functions.
	(TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
	(ARRAY_BOUND_ERROR): Remove second definition, which is no longer
	needed.
	(Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
	(Ins_SxyTCA): New function.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.

	Behdad suggested this code simplification, and nobody objected...

	* include/config/ftoption.h, devel/ftoption.h
	(TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.

	* src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
	Remove related code.
	(ARRAY_BOUND_ERROR): Use do-while loop.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
	EXEC_ARG): Remove by replacing with expansion.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	Based on a patch from Behdad.

	* src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
	SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
	CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
	CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
	CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
	COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
	with expansion.

	(Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
	CUR_fast_dualproj): Replace with macros `project', `dualproj',
	`fast_project', `fast_dualproj'.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
	with expansion.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove code for static TrueType interpreter.

	This is a follow-up patch.

	* src/truetype/ttinterp.c, src/truetype/ttinterp.h
	[TT_CONFIG_OPTION_STATIC_INTERPRETER,
	TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.

	This starts a series of patches that simplifies the code of the
	bytecode interpreter.


----------------------------------------------------------------------------

Copyright (C) 2015-2020 by
David Turner, Robert Wilhelm, and Werner Lemberg.

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


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