2018-12-29  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin2.c: Some fixes from `aflatin.c' (#55310).

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

	* src/psaux/cffdecode.c (cff_operaor_seac): Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11915

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

	[gxvalid] Fix compiler warnings.

	* src/gxvalid/gxvjust.c (gxv_just_check_max_gid),
	src/gxvalid/gxvmort.c (gxv_mort_coverage_validate): Use `FT_UNUSED'.

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

	* src/truetype/ttgload.c (TT_Hint_Glyph): Remove useless test.

	`control_len' only gets its value from `n_ins' (and vice versa),
	which is always read as `unsigned short' and thus can't be larger
	than 0xFFFF.

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

	[bdf] Ignore data after `ENDFONT'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10798

	* src/bdf/bdflib.c (_bdf_parse_end): New function.
	(_bdf_parse_glyphs): Switch to `_bdf_parse_end' after `ENDFONT' has
	been encountered.

2018-12-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/windows/visualc/freetype.dsp: Dust off.

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

	* builds/windows/vc2010/freetype.vcxproj: Simplify.

2018-11-27  Chris Liddell  <chris.liddell@artifex.com>

	[type1,cff] Add FT_{Set,Get}_MM_WeightVector API calls.

	For multiple master fonts, common usage (in Postscript) is to modify
	the WeightVector of an existing font instance, this addition
	supports that use.

	* include/freetype/ftmm.h, src/base/ftmm.c (FT_Set_MM_WeightVector,
	FT_Get_MM_WeightVector): New API functions.

	* include/freetype/internalservices/svmm.h
	(FT_Set_MM_WeightVector_Func, FT_Get_MM_WeightVector_Func): New
	function types.
	(MultiMasters): Add `set_mm_weightvector' and `get_mm_weightvector'
	members.
	(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.

	* src/cffcffdrivr.c (cff_set_mm_weightvector,
	cff_get_mm_weightvector): New functions.
	(cff_service_multi_masters): Register them.

	* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
	This driver doesn't use the new interface.

	* src/type1/t1load.c (T1_Set_MM_WeightVector,
	T1_Get_MM_WeightVector): New functions.
	* src/type1/t1driver.c (t1_service_multi_masters): Register them.
	* src/type1/t1load.h: Updated.

2018-11-27  Ben Wagner  <bungeman@google.com>

	[cff] Fix compiler warning (#55105).

	* src/cff/cffparse.c (cff_parser_run): Guard label only used if
	CFF_CONFIG_OPTION_OLD_ENGINE is active.

2018-11-27  Ben Wagner  <bungeman@google.com>

	[truetype] Fix numeric overflow (#55103).

	* src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'.

2018-11-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[builds] Belated DLL support with vc2002-vc2008.

	The solution and project files should be automatically upgraded for
	the approriate Visual C++ version.

	* builds/windows/visualc/freetype.{sln,vcproj}: Major upgrades.
	* builds/windows/visualc/index.html: Document the change.
	* builds/windows/vc2005, builds/windows/vc2008: Removed as redundant.

2018-11-22  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/cff/cffparse.c: Please the compiler.

2018-11-22  Armin Hasitzka  <prince.cherusker@gmail.com>

	[cff] Fix memory overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9869
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10869

	* src/cff/cffparse.c (destruct_t2s_item, cff_parser_run): Store
	evaluated T2 charstrings in separately allocated memory.

2018-11-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/windows/{visualc,vc2005,vc2008}/freetype.vcproj: Fix it.

2018-11-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Placeholder only for library-enabled LCD filtering.

	* src/smooth/ftsmooth.c (ft_smooth_init): Add disabled
	`FT_Library_SetLcdFilter' call.

2018-11-09  Young Xiao  <yangx92@hotmail.com>

	[psaux] Add safety guard (#54985).

	* src/psaux/psobjs.c (cff_builder_close_contour): Do it.

2018-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/unix/configure.raw: Require `windows.h' for windres.

2018-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftstroke] Fix unpredictable failures (#54986).

	* src/base/ftstroke.c (ft_sroke_border_lineto): Fix lineto check.

2018-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftstroke] Fix unpredictable failures (#54976).

	* src/base/ftstroke.c (ft_sroke_border_close): Set the start tags.

2018-11-07  Ben Wagner  <bungeman@google.com>

	[truetype] Fix VF check from 2018-09-12 (#54973).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use correct
	offsets for estimates.

2018-11-06  Werner Lemberg  <wl@gnu.org>

	[pshinter] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11242

	* src/pshinter/pshrec.c (ps_dimension_add_t1stem): Implement it.

2018-11-06  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix timeout in old CFF engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11260

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_sqrt> [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix potential endless
	loop.

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

	* src/truetype/ttgxvar.c: Use enum definitions.

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

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Adjust condition.

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

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Tracing tweaks.

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

	Revert due to specs: [truetype] Speed up variation IUP.

2018-11-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic.

	Reported and tested by Behdad.

2018-11-02  Shailesh Mistry  <shailesh.mistry@hotmail.co.uk>

	[autofit] Prevent SEGV.

	See

	  https://bugs.ghostscript.com/show_bug.cgi?id=697545

	for more details on how the bug was found.

	* src/autofit/afloader.c (af_loader_load_glyph): Propagate error
	code.

2018-10-31  Alexei Podtelezhnikov <apodtele@gmail.com>

	[truetype] Speed up variation IUP.

	* src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial
	snapping to the same position from true interpolation.

2018-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/type1/t1load.c (t1_set_mm_blend): Optimized.

2018-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized.

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

	[base] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11080

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use `MUL_LONG'.

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

	[cff] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10988

	* src/cff/cffparse.c (cff_parser_run)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Use `NEG_LONG'.

2018-10-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[sfnt] Make `head' timestamps unsigned.

	It's been more than 2^31 seconds since 1904.

	* include/freetype/tttables.h (TT_Header): Change field types.
	* src/sfnt/ttload.c (tt_face_load_generic_header): Updated.

2018-10-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Revert: Align FreeType with standard C memory management.

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

	[psaux] Fix numeric overflow.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11157

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_blend>
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Fix integer overflow.

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

	Avoid endless loop while tracing (#54858).

	* src/type1/t1load.c (parse_buildchar): Guard tracing stuff with
	FT_DEBUG_LEVEL_TRACE.

2018-10-17  David Demelier  <markand@malikania.fr>

	* CMakeLists.txt: Specify `RUNTIME DESTINATION'.

	This is needed for DLL builds.

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

	A missing Unicode cmap is not a fatal error.

	This is a follow-up to the previous commit.

	* src/cff/cffobjs.c (cff_face_init), src/sfnt/sfobjs.c
	(sfnt_load_face), src/type1/t1objs.c (T1_Face_Init),
	src/type42/t42objs.c (T42_Face_Init): Implement it.

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

	Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794).

	* src/cff/cffcmap.c (cff_cmap_unicode_init), src/psaux/t1cmap.c
	(t1_cmap_unicode_init), src/sfnt/ttcmap.c (tt_cmap_unicode_init):
	Check `unicodes_init' field.

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

	[ftgrays] Fix typo in stand-alone mode (#54771).

	* src/smooth/ftgrays.c (FT_THROW) [STANDALONE_ &&
	FT_DEBUG_LEVEL_TRACE]: Fix call to `FT_ERR_CAT'.

2018-10-02  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix segfault.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10768

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_callothersubr> [CFF_CONFIG_OPTION_OLD_ENGINE]: Check
	argument.

2018-10-02  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10740

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Use NEG_INT.

2018-10-02  Werner Lemberg  <wl@gnu.org>

	[pshinter] Handle numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10550

	* src/pshinter/pshglob.c (psh_blues_snap_stem): Mask numeric
	overflow.

2018-09-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Align FreeType with standard C memory management.

	* include/freetype/ftsystem.h: Include FT_TYPES_H.
	(*FT_Alloc_Func, *FT_Realloc_Func): Use size_t for the size arguments.
	* src/raster/ftmisc.h: Ditto.

	* builds/amiga/src/base/ftsystem.c, builds/unix/ftsystem.c,
	* builds/vms/ftsystem.c, src/base/ftsystem.c (ft_alloc, ft_realloc):
	Use size_t for the size arguments.

	* src/base/ftdbgmem.c (ft_mem_debug_alloc, ft_mem_debug_realloc): Use
	FT_Offset, aka size_t, for the size arguments.

2018-09-25  Werner Lemberg  <wl@gnu.org>

	Fix handling of `FT_Bool'.

	Before this commit we had code like

	  (FT_Bool)( globals->glyph_styles[gindex] & 0x8000)

	Since `FT_Bool' is defined to be an `unsigned char', the code
	evaluated to something like

	  (unsigned char)( 0x8532 & 0x8000)

	which in turn expanded to

	  (unsigned char)( 0x8000)

	and finally yielded 0x00 – i.e., false – not as expected.

	Problem reported and analyzed by Tony Smith <tony.smith@macro4.com>.

	* include/freetype/fttypes.h (FT_BOOL): Add a comparison against
	zero so that we always have a Boolean expression.

	*/*: Replace castings to `FT_Bool' with calls to `FT_BOOL' where
	possible.

2018-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Speed up charmap access.

	This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.

	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search
	with continuous prediction.

2018-09-22  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Another tweak.

	This one should be clearer. When the rounded monochrome bbox collapses
	we add a pixel that covers most if not all original cbox. 

2018-09-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Further tweak.

2018-09-21  Ben Wagner  <bungeman@google.com>

	Improve auto-hinter handling of bitmap fonts (#54681).

	For bitmap fonts, `FT_Load_Glyph' should either return an error or
	not set the format to `FT_GLYPH_FORMAT_OUTLINE'.  However, in this
	case `FT_Load_Glyph' calls into the auto-hinter which calls back
	into `FT_Load_Glyph' with `FT_LOAD_NO_SCALE' in the flags, which
	marks the glyph as `FT_GLYPH_FORMAT_OUTLINE' with an empty path
	(even though it doesn't have any path).  It appears that the
	auto-hinter should not be called when the face doesn't have
	outlines.  The current test for using the auto-hinter in
	`FT_Load_Glyph' checks whether the driver supports scalable
	outlines, but not if the face supports scalable outlines.

	* src/base/ftobjs.c (FT_Load_Glyph): Directly check whether we have
	scalable outlines.

2018-09-21  Werner Lemberg  <wl@gnu.org>

	[raster] Fix disappearing vertical lines (#54589).

	* src/raster/ftraster.c (Vertical_Sweep_Span): Handle special case
	where both left and right outline exactly pass pixel centers.

2018-09-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Tiny rounding tweak.

	This adds pixels in case a contour goes through the center
	and they need to be turned on in the b/w rasterizer.

2018-09-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Replace charmap implementation.

	PCF comes with charmap lookup table, aka PCF encodings.  Using it
	directly makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times
	faster than the original BDF-like binary searches.

	* src/pcf/pcf.h (PCF_EncodingRec): Removed.
	(PCF_FaceRec): Remove `nencodings' and `encodings'.
	* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Replaced.
	* src/pcf/pcfread.c (pcf_get_encodings): Store data differently.

2018-09-20  Werner Lemberg  <wl@gnu.org>

	[base] Remove unused function `FT_GlyphLoader_CopyPoints'.

	* include/freetype/internal/ftgloadr.h, src/base/ftgloadr.c
	(FT_GlyphLoader_CopyPoints): Do it.

2018-09-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Prepare to replace charmap implementation.

	* src/pcf/pcf.h (PCF_FaceRec): Updated to include...
	(PCF_EncRec): ... this new structure to store charmap geometry.

	* src/pcf/pcfread.c (pcf_get_encodings): Store charmap geometry.

2018-09-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Remove unused fields.

	* src/pcf.h (PCF_FaceRec): Remove `charmap' and `charmap_handle'.
	* src/bdfdrvr.h (BDF_FaceRec): Ditto.
	* src/winfonts/winfnt.h (FNT_FaceRec): Ditto.

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

	[pshinter] Handle numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10396

	* src/pshinter/pshglob.c: Include FT_INTERNAL_CALC_H.
	(psh_blues_snap_stem): Mask numeric overflow.

2018-09-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Some fixes for VF checks.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10317

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Properly exit memory
	frame if we have invalid glyph variation data offsets.
	(tt_face_vary_cvt): Protect against missing `tuplecoords' array.
	Fix typo.

2018-09-13  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Fix last commit.

2018-09-13  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Check `result'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10316

2018-09-12  John Tytgat  <John.Tytgat@esko.com>

	[sfnt] Better PS name handling (#54629).

	* src/sfnt/sfdriver (IS_WIN, IS_APPLE): Omit language ID checks.
	(get_win_string, get_apple_string): Return NULL when the PostScript
	font name characters is not according to specification.
	(get_win_string): Make trace output work if the high byte if
	non-zero.
	(sfnt_get_var_ps_name, sfnt_get_ps_name): Previously we preferred
	Win PS name (when there is also an Apple PS name); change this into
	a fallback to Apple PS name in case the Win PS name is invalid.

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

	[truetype] Improve VF check.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10255

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Use better limit check
	for `tupleCount'.

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

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Check `glyphoffsets'.

2018-09-10  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/pshinter/pshrec.c (t2_hints_stems): Mask numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10215

2018-09-09  Ben Wagner  <bungeman@google.com>

	* builds/freetype.mk (refdoc-venv): Ensure python version (#54631).

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

	[truetype] Fix assertion failure.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10212

	* src/truetype/ttgload.c (load_truetype_glyph): Reintroduce
	`opened_frame' (removed in a change from 2018-08-26) to handle
	deallocation of the second frame.

2018-09-05  Werner Lemberg  <wl@gnu.org>

	Synchronize `ftdebug.c' files.

	* builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c,
	builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c'.

2018-09-05  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add documentation guidelines file.

	* docs/DOCGUIDE: New file.

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

	* devel/ftoption.h: Synchronize with master `ftoption.h'.

2018-09-03  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docwriter] Don't break code snippets accross lines.

	Reported as

	  https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html

	* docs/reference/markdown/stylesheets/extra.css (.md-typeset code):
	Add rule `white-space'.

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

	*/*: s/PSNames/psnames/.

	Only tracing messages are affected.

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

	[sfnt] Fix heap buffer overflow in CPAL handling.

	* src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test.
	(tt_face_load_cpal): Updated.

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

	Remove `FT_Outline_{New,Done}_Internal'.

	These public API functions(!) were always undocumented and have
	escaped all clean-up efforts until now.

	* include/freetype/ftoutln.h (FT_Outline_New_Internal,
	FT_Outline_Done_Internal): Removed.

	* src/base/ftoutln.h (FT_Outline_New_Internal,
	FT_Outline_Done_Internal): Merge into...
	(FT_Outline_New, FT_Outline_Done): ... these functions.

	* docs/README: Updated.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format.

2018-08-31  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Refine the macro logic surrounding `FT_Error_String'.

	* include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS,
	FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS' after
	checking it and introduce a new macro that takes proper care of
	multiple-inclusion protection.

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

	* src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED' calls.

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

	* src/base/ftdebug.c (FT_Throw): Reduce chattiness.

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

	* src/autofit/afhints.c (af_glyph_hints_reload): Add initialization.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Consolidate bitmap presetting and size assessment.

	* include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
	Change return type.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap
	size assessment.

	* src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the
	rendering of enourmous or far-fetched outlines.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono.

2018-08-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Introduce a macro to control `FT_Error_String'.

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

2018-08-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Introduce `FT_Error_String'.

	* include/freetype/fterrors.h (FT_Error_String),
	src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String'.

	* src/base/ftbase.c, src/base/Jamfile (_source),
	src/base/rules.mk (BASE_SRC): Add `fterrors.c' to the build logic.

	* src/base/ftdebug.c (FT_Throw): Use `FT_Error_String'.

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

	[autofit] Trace `before' and `after' edges of strong points.

	* src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays
	`before' and `after'.

	* src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary
	function.
	(af_glyph_hints_dump_points): Trace `before' and `after' edges.
	(af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set
	`before' and `after' information.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Overflow-resistant bitmap presetting.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Implement it.

2018-08-29  Armin Hasitzka  <prince.cherusker@gmail.com>

	Fix numeric overflows.

	* src/pshint/pshalgo.c (psh_hint_align, psh_hint_align_light,
	psh_hint_table_find_strong_points): Fix numeric overflows.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10083

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

	[cff] Fix handling of `roll' op in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10080

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Use modulo for loop count, as
	documented in the specification.

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

	* src/truetype/ttobjs.c (tt_size_read_bytecode): Trace CVT values.

2018-08-26  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* configure: Copy assets required by docwriter.

	Copy directory `docs/reference/markdown' when FreeType is compiled in a
	different directory.

	Fixes `make refdoc' if builddir != srcdir.

	Reported as

	  https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00083.html

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

	* src/pshint/pshalgo.c (psh_hint_overlap): Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10057

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

	Minor tracing adjustments.

	* src/base/ftstream.c (FT_Stream_EnterFrame, FT_Stream_ExitFrame):
	Trace.

	* src/truetype/ttgload.c (TT_Access_Glyph_Frame): Remove tracing.

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

	[truetype] Avoid nested frames.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10054

	* src/truetype/ttgload.c (load_truetype_glyph): Don't use variable
	`opened_frame' to trace whether a frame must be closed at the end of
	function: This fails because `TT_Vary_Apply_Glyph_Deltas' (which
	gets called for space glyphs) uses a frame by itself.  Instead,
	close the frame after loading the header, then use another frame for
	the remaining part of the glyph later on.

	Also avoid calling `tt_get_metrics' twice under some circumstances.

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

	Various minor clean-ups.

	* src/base/ftapi.c: Remove.  Unused.
	* src/base/Jamfile (_sources): Updated.

	* src/base/ftstream.c (FT_Stream_ReleaseFrame): Remove redundant
	code.

2018-08-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Convert documentation markup to Markdown.

	It is the result of a GSoC 2018 project; this separate ChangeLog
	commit covers the last four commits

	  ae5d1a4cec37557f31aec270332cfe886a62f9a0
	  53c69ce04faed3dcc68ca0f54cb8d703d8babf69
	  195728d5ba38f34fb2c2c20807c01656f2f59b66
	  c962db28ea59225f0105c03d907d4a9b71765687

	* docs/reference/markdown/images/favico.ico,
	docs/reference/markdown/javascripts/extra.js,
	docs/reference/markdown/stylesheets/extra.css: New files.

	* docs/reference/.gitignore, docs/reference/README: Updated.

	* src/tools/docmaker/*: Removed.  It has been replaced with
	`docwriter', a python package available at

	  https://pypi.org/project/docwriter/

	* Jamfile: Updated.
	* builds/ansi/ansi-def.mk, builds/beos/beos-def.mk,
	builds/dos/dos-def.mk, builds/os2/os2-def.mk (BIN),
	builds/unix/unixddef.mk, builds/windows/win32-def.mk: New variable.

	* builds/unix/configure.raw: Check for `python' and `pip'.
	If not present, warn that `make refdoc' will fail.
	* builds/unix/unix-def.in (PYTHON, PIP, BIN): New variables.

	* builds/freetype.mk (PYTHON, PIP, VENV_NAME, VENV_DIR, ENV_PYTHON,
	ENV_PIP): New variables.
	(refdoc): Updated.
	(refdoc-venv): New target.
	(.PHONY): Updated.

2018-08-23  Werner Lemberg  <wl@gnu.org>

	Add macros for handling over-/underflowing `FT_Int64' values.

	* include/freetype/internal/ftcalc.h (ADD_INT64, SUB_INT64,
	MUL_INT64, DIV_INT64) [FT_LONG64]: New macros.

	* src/base/ftcalc.c (ft_corner_orientation) [FT_LONG64]: Use
	`SUB_INT64' and `MUL_INT64'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10028

2018-08-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve legibility of `glyf' parsing.

	* src/truetype/ttgload.c (ON_CURVE_POINT, X_SHORT_VECTOR,
	Y_SHORT_VECTOR, REPEAT_FLAG, X_POSITIVE, SAME_X, Y_POSITIVE, SAME_Y,
	OVERLAP_SIMPLE): New macros.
	(TT_Load_Simple_Glyph): Use new macros to make code more readable.
	Remove useless adjustment of `outline->tags' elements.

2018-08-21  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Add missing safety check.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9981

2018-08-18  Werner Lemberg  <wl@gnu.org>

	[psaux] Avoid slow PS font parsing in case of error.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9955

	* src/psaux/psobjs.c (ps_parser_to_bytes): Set `parser->cursor' even
	in case of error to avoid potential re-scanning.

2018-08-18  Werner Lemberg  <wl@gnu.org>

	[cff] Fix heap buffer overflow in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9967

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_blend> [CFF_CONFIG_OPTION_OLD_ENGINE]: `num_designs' must be
	non-zero.

2018-08-16  Young Xiao  <yangx92@hotmail.com>

	* builds/mac/ftmac.c (parse_fond): Fix buffer overrun.

	Reported as bug #54515, duplicate of #43540.

2018-08-16  Werner Lemberg  <wl@gnu.org>

	* builds/*/ftsystem.c (FT_COMPONENT): Updated also.

2018-08-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Don't track duplicate encodings.

	There is no harm except some umbiguity in broken fonts with duplicate
	encodings.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Remove duplicate tracking.
	(_bdf_parse_t): Remove large `have' bitfield.

2018-08-15  Werner Lemberg  <wl@gnu.org>

	Don't use `trace_' prefix for FT_COMPONENT arguments.

	* include/freetype/internal/ftdebug.h (FT_TRACE_COMP,
	FT_TRACE_COMP_): New auxiliary macros to add `trace_' prefix.
	(FT_TRACE): Use `FT_TRACE_COMP'.

	*/* (FT_COMPONENT): Updated.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	Use formatting string in FT_TRACEX calls for non-simple arguments.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_hstem, cff_op_hintmask, cff_op_hlineto, cff_op_vhcurveto>:
	Do it.

	* src/psaux/pshints.c (cf2_hintmap_build): Ditto.

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
	cf2_cmdVSTEM, cf2_cmdHLINETO, cf2_cmdRRCURVETO, cf2_cmdCALLSUBR,
	cf2_escHSTEM3, cf2_cmdHINTMASK, cf2_cmdHVCURVETO>: Ditto.

	* src/truetype/ttinterp.c (TT_RunIns): Ditto.

2018-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Remove unused fields.

	* src/bdf/bdf.h (bdf_font_t): Remove `nmod', `umod', and `modified',
	which were set but never used.
	* src/bdf/bdflib.c (_bdf_parse_{glyphs,properties}, bdf_load_font):
	Updated accordingly.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix another segv in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9872

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Disallow invalid T1 opcodes in
	dictionaries.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix missing error handling.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9865

	* src/psaux/cffparse.c (cff_parser_run)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Don't ignore return value of
	`parse_charstrings_old'.

2018-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Remove unused overflow storage.

	* src/bdf/bdf.h (bdf_glyphlist_t): Remove this type.
	(bdf_font_t): Remove `overflow' field.
	* src/bdf/bdflib.c (bdf_free_font): Remove `overflow' freeing.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix segv in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9864

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_random> [CFF_CONFIG_OPTION_OLD_ENGINE]: Use top dict's
	`random' field directly if parsing dictionaries.

2018-08-13  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Use unsigned types.

	* src/bdf/bdf.h (bdf_glyph_t): Unsign `encoding'.
	(bdf_font_t): Unsign `default_char'.
	* src/bdf/bdfdrivr.h (BDF_encoding_el): Unsign `enc'.

	* src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_glyphs,
	_bdf_parse_start): Updated accordingly.
	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Ditto.

2018-08-13  Werner Lemberg  <wl@gnu.org>

	* src/type42/t42parse.c (t42_parse_sfnts): One more format check.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9832

2018-08-11  Werner Lemberg  <wl@gnu.org>

	* src/base/ftcalc.c (FT_Matrix_Check): Fix integer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9811

2018-08-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Follow specs.

2018-08-10  Ben Wagner  <bungeman@google.com>

	* src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435).

2018-08-10  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Improve tracing.

2018-08-10  Werner Lemberg  <wl@gnu.org>

	Fix clang warnings.

	* src/base/ftdebug.c (ft_trace_level_enabled,
	ft_trace_level_disabled): Add `static' keyword.

2018-08-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster, smooth] Reinstate bitmap size limits.

	This again moves outline and bitmap size checks one level up.

	* src/base/ftoutln.c (FT_Outline_Render): Explicitly reject enormous
	outlines.
	* src/raster/ftrend1.c (ft_raster1_render): Reject enormous bitmaps
	and, therefore, outlines that require them.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

	* src/raster/ftraster.c (ft_black_render): Remove outline size checks.
	* src/smooth/ftgrays.c (gray_raster_render): Ditto.
	[STANDALONE]: Remove `FT_Outline_Get_CBox' copy.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Revert massive unsigning.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	[smooth] Improve tracing.

	* src/smooth/ftgrays.c (gray_convert_glyph_inner): Only use tracing
	if called the first time.
	(gray_convert_glyph): Updated.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	Add internal functions `FT_Trace_Disable' and `FT_Trace_Enable'.

	It sometimes makes sense to suppress tracing informations, for
	example, if it outputs identical messages again and again.

	* include/freetype/internal/ftdebug.h: Make `ft_trace_levels' a
	pointer.
	(FT_Trace_Disable, FT_Trace_Enable): New declarations.

	* src/base/ftdebug.c (ft_trace_levels): Rename to...
	(ft_trace_levels_enabled): ... this.
	(ft_trace_levels_disabled): New array.
	(ft_trace_levels): New pointer.
	(FT_Trace_Disable, FT_Trace_Enable): Implement.
	(ft_debug_init): Updated.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	Debugging improvements.

	* src/base/ftobjs.c (pixel_modes): Move this array to top level
	from ...
	(FT_Load_Glyph): ... here.
	(FT_Render_Glyph_Internal): Use `width' x `height' in trace message.
	Use `pixel_modes'.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Massive unsigning (part 2).

	Treat all size related properties as unsigned values.

	* src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name' and
	`value'.
	* src/pcf/pcfread.c (pcf_get_properties, pcf_load_font): Updated
	parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
	RESOLUTION_X and RESOLUTION_Y.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Massive unsigning (part 1).

	Unofficial specifications hesitate to use unsigned 32-bit integers.
	Negative values caused a lot of trouble in the past and it is safer
	and easier to treat some properties as unsigned.

	* src/pcf/pcf.h (PCF_AccelRec): Use unsigned values for `fontAscent',
	`fontDescent', and `maxOverlap'.
	* src/pcf/pcfread.c (pcf_load_font, pcf_get_accel): Updated.
	* src/pcf/pcfdrivr.c (PCF_Glyph_Load, PCF_Size_Select,
	PCF_Size_Request): Updated.

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

	* src/pcf/pcfread.c (pcf_get_bitmaps): Unsign `offsets' and
	`bitmapSizes'.

2018-08-06  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h: Synchronize with main `ftoption.h'.

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

	[pcf] Use unsigned types.

	* src/pcf/pcf.h (PCF_Encoding): Use unsigned `enc'.
	* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Ditto.
	* src/pcf/pcfread.c (pcf_get_encodings): Use unsigned types.

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

	* src/truetype/ttgload.c (compute_glyph_metrics): Fix overflow.

	Reported as

	  https://bugs.chromium.org/p/chromium/issues/detail?id=777151

2018-08-04  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (opcode_name): Fix typos.

2018-08-04  Werner Lemberg  <wl@gnu.org>

	Fix clang warnings.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Fix type of
	`orientation'.

	* src/gxvalid/gxvcommn.c (gx_lookup_value_read): Fix signature.

	* src/pcf/pcfread.c (pcf_get_encodings): Fix type of some variables.
	Add cast.

	* src/type1/t1load.c (parse_weight_vector): Fix cast.

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

	* src/cid/cidtoken.h: Handle `XUID' keyword.

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

	[cid] Trace PostScript dictionaries.

	* src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
	(cid_load_keyword, cid_parse_font_matrix, parse_fd_array,
	parse_expansion_factor, cid_parse_dict): Add tracing calls.
	(parse_font_name): New function to trace `/FontName' keywords in
	/FDArray dict.
	(cid_field_records): Register `parse_font_name'.

2018-07-30  Werner Lemberg  <wl@gnu.org>

	[cff] Fix typo.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9409

	* src/cff/cffdrivr.c (cff_get_cid_from_glyph_index): Fix boundary
	check.

2018-07-29  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Another thinko.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9608

2018-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix Harmony memory management.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9501

	* src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer
	after each rendering in case of failure.

2018-07-28  Werner Lemberg  <wl@gnu.org>

	[type1] Avoid segfaults with `FT_Get_PS_Font_Value'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9610

	* src/type1/t1driver.c (t1_ps_get_font_value): Protect against NULL.

2018-07-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Make `TT_Set_MM_Blend' idempotent (#54388).

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Correctly set
	`face->doblend' if the current call to the function yields the same
	blend coordinates as the previous call.

2018-07-27  Werner Lemberg  <wl@gnu.org>

	[psaux, type1]: More tracing improvements.

	* src/psaux/psintrp.c (cf2_interpT2CharString): Trace skipped
	outline commands.

	* src/psaux/t1decode.c (t1_decoder_parse_charstring): Fix
	missing case.
	(t1_decoder_parse_metrics): Make tracing output more compact.

	* src/type1/t1gload.c (T1_Compute_Max_Advance): Be less verbose.
	(T1_Get_Advances): Add tracing.

2018-07-25  Werner Lemberg  <wl@gnu.org>

	[psaux, type1] Trace PostScript dictionaries and other things.

	The tracing of /Encoding, /Subrs, and /Charstrings is rudimentary
	right now.

	* src/psaux/psobjs.c (ps_parser_load_field,
	ps_parser_load_field_table): Add tracing calls.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make tracing
	output more compact.

	* src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances): Add
	tracing messages.

	* src/type1/t1load.c (parse_blend_axis_types,
	parse_blend_design_positions, parse_blend_design_map,
	parse_weight_vector, t1_load_keyword, t1_parse_font_matrix,
	parse_encoding, parse_subrs, parse_charstrings, T1_Open_Face): Add
	tracing calls.

	* src/type1/t1objs.c (T1_Face_Init): Add tracing call.

	* src/sfnt/sfobjs.c (sfnt_init_face): Make tracing message more
	verbose.

2018-07-25  Werner Lemberg  <wl@gnu.org>

	Fix minor ASAN run-time warnings.

	* src/base/ftutil.c (ft_mem_alloc, ft_mem_realloc): Only call
	`FT_MEM_ZERO' if we actually have a buffer.
	(ft_mem_dup): Only call `ft_memcpy' if we actually have a buffer.

2018-07-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Fortify dllexport/dllimport attributes (#53969,#54330).

	We no longer use predefined _DLL, which can be defined for static
	builds too with /MD. We use DLL_EXPORT and DLL_IMPORT instead,
	following libtool convention.

	* CMakeLists.txt [WIN32], builds/windows/vc2010/freetype.vcxproj:
	Define DLL_EXPORT manually.

	* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h, builds/windows/vc2010/index.html,
	src/base/ftver.rc: /_DLL/d, s/FT2_DLLIMPORT/DLL_IMPORT/.

2018-07-24  Werner Lemberg  <wl@gnu.org>

	[type1] Check relationship between number of axes and designs.

	For Multiple Masters fonts we don't support intermediate designs;
	this implies that

	  number_of_designs == 2 ^^ number_of_axes

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9557

	* src/type1/t1load.c (T1_Open_Face): Ensure above constraint.
	(T1_Get_MM_Var): Remove now redundant test.

2018-07-24  Hin-Tak Leung  <htl10@users.sourceforge.net>

	[truetype] Match ttdebug's naming of instruction mnemonics.

	* src/truetype/ttinterp.c: The form used in ttdebug,
	"MDRP[G,B,W,?]", etc., is slightly more readable than
	"MDRP[00,01,02,03]".

2018-07-24  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Thinko.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9561

2018-07-22  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9527

2018-07-22  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs.

	This is an oversight of the module change 2018-07-21.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9524

2018-07-22  Werner Lemberg  <wl@gnu.org>

	[cid] Sanitize `BlueShift' and `BlueFuzz'.

	This code is taken from the type1 module.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9510

	* src/cid/cidload.c (parse_fd_array): Set some private dict default
	values.
	(cid_face_open): Do the sanitizing.
	Fix some tracing messages.

2018-07-21  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix handling of the undefined glyph.

	This change makes the driver use the `defaultChar' property of PCF
	files.

	* src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar' to
	unsigned.

	* src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar' as
	unsigned.
	Validate `defaultChar'.
	If `defaultChar' doesn't point to glyph index zero, swap glyphs with
	index zero and index `defaultChar' and adjust the encodings
	accordingly.

	* src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next,
	PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced
	the first character in the font to be the default character.

2018-07-20  Armin Hasitzka  <prince.cherusker@gmail.com>

	Move the legacy fuzz target to the `freetype-testing' repository.

	It can now be found at

	  https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy

	* src/tools/ftfuzzer: Remove this folder and its contents from the
	repository.

2018-07-20  Werner Lemberg  <wl@gnu.org>

	[cff] Avoid left-shift of negative numbers (#54322).

	* src/cff/cffgload.c (cff_slot_load): Use multiplication.

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

	Allow FT_ENCODING_NONE for `FT_Select_Charmap'.

	This is a valid encoding tag for BDF, PCF, and Windows FNT, and
	there is no reason to disallow it for these formats.

	* src/base/ftobjs.c (FT_Select_Charmap): Implement it.

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

	* src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'.

2018-07-16  Armin Hasitzka  <prince.cherusker@gmail.com>

	* include/freetype/internal/ftcalc.h: Add macros for handling
	harmless over-/underflowing `FT_Int' values.

	* src/sfnt/sfdriver.c (fixed2float): Fix negation of
	`(int)(-2147483648)'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423

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

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9412

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

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox'.

	Taken from patch #9667, written by Steve Langasek
	<vorlon@debian.org>.

	This fixes a build failure (most probably a bug in gcc) on ppc64el
	when building with -O3.

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

	Fix typo (#54238).

	* src/base/ftcolor.c (FT_Palette_Set_Foreground_Color)
	[!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value.

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

	Adjust table size comparisons (#54242).

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it.

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

	Fix more 32bit issues (#54208).

	* src/cff/cffload.c (cff_blend_build_vector): Convert assertion into
	run-time error.

	* src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against
	numeric overflow.

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

	Fix 32bit build warnings (#54239).

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed
	vs. unsigned comparisons.

	* srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto.

2018-07-02  Jeff Carey  <Jeff.Carey@monotype.com>

	* src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging.

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

	s/palette_types/palette_flags/.

	Suggested by Behdad.

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

	Make `FT_Get_Color_Glyph_Layer' return FT_Bool.

	* include/freetype/freetype.h, src/base/ftobjs.c
	(FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated.

	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func),
	src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer):
	Updated.

2018-07-01  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function.

	Reported by Behdad.

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

	* src/base/fttrigon.c (FT_Tan): Improve accuracy.
	(FT_Vector_Rotate): Simplify.

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

	* src/base/ftobjs.c (FT_Set_Charmap): Robustify.

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

	[truetype] Fix memory leak.

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers.
	Fix typo in `goto' destination.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9071

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

	* src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9070

2018-06-24  Werner Lemberg  <wl@gnu.org>

	[truetype] Increase precision while applying VF deltas.

	It turned out that we incorrectly round CVT and glyph point deltas
	before accumulation, leading to severe positioning errors if there
	are many delta values to sum up.

	Problem reported by Akiem Helmling <akiem@underware.nl> and analyzed
	by Behdad.

	* src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in
	16.16 format.
	(tt_face_var_cvt): Collect deltas in `cvt_deltas', which is a 16.16
	format array, and add the accumulated values to the CVT at the end
	of the function.
	(TT_Vary_Apply_Glyph_Deltas): Store data in `points_org' and
	`points_out' in 16.16 format.
	Collect deltas in `point_deltas_x' and `point_deltas_y', which are
	16.16 format arrays, and add the accumulated values to the glyph
	coordinates at the end of the function.

2018-06-24  Werner Lemberg  <wl@gnu.org>

	New base function `FT_Matrix_Check' (#54019).

	* src/base/ftcalc.c (FT_Matrix_Check): New base function to properly
	reject degenerate font matrices.

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

	* src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c
	(cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix),
	src/type42/t42parse.c (t42_parse_font_matrix): Use
	`FT_Matrix_Check'.

2018-06-23  Werner Lemberg  <wl@gnu.org>

	Fix typo.

	Reported by Behdad.

	* src/base/ftcolor.c (FT_Palette_Data_Get)
	[!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/.

2018-06-21  Werner Lemberg  <wl@gnu.org>

	s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.

	* include/freetype/ftcolor.h, include/freetype/internal/sfnt.h,
	src/sfnt/ttcolr.c: Do it.

2018-06-19  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix CPAL heap buffer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8968

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1
	offsets.

2018-06-19  Werner Lemberg  <wl@gnu.org>

	Doh.  Don't use CPAL or COLR data if tables are missing.

	Reported by Alexei.

	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if
	`colr' is NULL.

	* src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if
	`cpal' is NULL.

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

	[base] Introduce `FT_New_Glyph'.

	This function facilitates access to full capabilities of FreeType
	rendering engine for custom glyphs. This can be quite useful for
	consistent rendering of mathematical and chemical formulas, e.g.

	  https://bugs.chromium.org/p/chromium/issues/detail?id=757078

	* include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New
	function.

2018-06-17  Armin Hasitzka  <prince.cherusker@gmail.com>

	[bdf] Fix underflow of an unsigned value.

	bdflib.c:1562 could be reached with `font->glyphs_used == 0'.  That
	caused an underflow of the unsigned value which results in undefined
	behaviour.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Bail out earlier than before
	if the `ENCODING' keyword cannot be found.

2018-06-17  Werner Lemberg  <wl@gnu.org>

	[base] Add tracing for `FT_Bitmap_Blend'.

	* include/freetype/internal/fttrace.h (trace_bitmap): New
	enumeration.

	* src/base/ftbitmap.c (FT_COMPONENT): Define.
	(FT_Bitmap_Blend): Add `FT_TRACE5' calls.

2018-06-17  Werner Lemberg  <wl@gnu.org>

	s/trace_bitmap/trace_checksum/.

	* include/freetype/internal/fttrace.h: s/bitmap/checksum/.

	* src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/.
	Adjust code.

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

	[sfnt] Fix color glyph layer loading.

	* src/sfnt/ttcolr.c (Colr): Add `table_size' field.
	(tt_face_load_colr): Set it.
	(tt_face_get_colr_layer): Check pointer limit for layer entries.

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

	[sfnt] Fix color palette loading.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8933

	* src/sfnt/ttcpal.c (Cpal): Add `table_size' field.
	(tt_face_load_cpal): Set it.
	(tt_face_palette_set): Check pointer limit for color entries.

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

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow.

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

	Add `FT_Bitmap_Blend' API.

	Still missing: Support for negative bitmap pitch and subpixel offset
	of source bitmap.

	* include/freetype/ftbitmap.h, src/base/ftbitmap.c
	(FT_Bitmap_Blend): New function.

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

	Replace `FT_Get_GlyphLayers' with `FT_Get_Color_Glyph_Layer'.

	This avoids any additional allocation of COLR related structures in
	a glyph slot.

	* include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec,
	FT_Get_GlyphLayers): Removed.

	* include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed.
	(FT_Slot_InternalRec): Remove `color_layers'.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func):
	Removed.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove
	`load_colr_layer'.

	* src/base/ftobjs.c (ft_glyph_slot_done): Updated.
	(FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer'.
	(FT_Get_GlyphLayers): Removed.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Removed.
	* src/sfnt/ttcolr.h: Updated.

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

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

	Provide iterative API to access `COLR' data.

	This solution doesn't store any data in an `FT_GlyphSlot' object.

	* include/freetype/freetype.h (FT_LayerIterator): New structure.
	(FT_Get_Color_Glyph_Layer): New function.

	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New
	function type.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it.

	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function.
	* src/sfnt/ttcolr.h: Updated.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

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

	Add glyph index and glyph load flags to glyph slot.

	* include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused
	`reserved' field to `glyph_index'.

	* include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add
	`load_flags' field.

	* src/base/ftobjs.c (FT_Load_Glyph): Set new fields.

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

	[sfnt] Move `CPAL' stuff into separate files.

	* src/sfnt/sfdriver.c: Include `ttcpal.h'.
	* src/sfnt/sfnt.c: Include `ttcpal.c'.

	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ...
	* src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files.

	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC):
	Updated.

	* include/freetype/internal/fttrace.h: Add support for `colr' and
	`cpal'.
	Sort entries.

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

	[sfnt] Separate `CPAL' and `COLR' table handling.

	Later on we want to support the `SVG' table also, which needs `CPAL'
	(but not `COLR').

	* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal'
	and `free_cpal' fields.
	(FT_DEFINE_SFNT_INTERFACE): Updated.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Replace
	`colr_and_cpal' fields with `cpal' and `colr'.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.

	* src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field.
	(ColrCpal): Removed.
	(tt_face_load_colr): Split off CPAL handling into...
	(tt_face_load_cpal): ... this new function.
	(tt_face_free_colr): Split off CPAL handling into...
	(tt_face_free_cpal): ... this new function.
	(tt_face_load_colr_layers, tt_face_palette_set): Updated.

	* src/sfnt/ttcolr.h: Updated.

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

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

	[sfnt] Fix `sizeof' thinko.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't
	use `sizeof' for computing array limit.

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

	Finish CPAL/COLR support (4/4).

	* src/sfnt/ttcolr.c (tt_face_find_color): Removed.
	(tt_face_colr_blend_layer): Use `face->palette' instead of calling
	`tt_face_find_color'.
	Use and set text foreground color.

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

	Finish CPAL/COLR support (3/4).

	* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
	(FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
	functions.

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

	Finish CPAL/COLR support (2/4).

	* src/sfnt/ttcolr.c (tt_face_palette_set): New function.
	(tt_face_load_colr): Allocate `face->palette' and call
	`tt_face_palette_set'.
	Adjust return error code in case of error.

	* src/sfnt/ttcolr.h: Updated.

	* include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New
	function type.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

	* src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c
	(sfnt_done_face): Updated.

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

	Finish CPAL/COLR support (1/4).

	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
	`palette_index', `palette', `have_foreground_color' and
	`foreground_color'.

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

	[sfnt] Minor.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers):
	s/palette_index/palette_entry_index/ for consistency.
	Adjust return error code in case of error.

2018-06-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Clean up.

	* src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):
	Clean up after 5-level gray removal (8dc8635874).
	(Vertical_Sweep_Span): Be brief.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix compiler warnings.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,
	tt_face_colr_blend_layer): Add `NULL' initializers.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.

	* include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,
	src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.

2018-06-10  Nikolaus Waxweiler  <madigens@gmail.com>

	CMakeLists: also accept IOS_PLATFORM=SIMULATOR64

	This might be needed to build FreeType for the iOS simulator. See
	https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed
	by Steve Robinson.

	* CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64

2018-06-10  Werner Lemberg  <wl@gnu.org>

	Implement `FT_Palette_Get'.

	* src/base/ftcolor.c: New file.

	* src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),
	src/base/ftbase.c: Add `ftcolor.c'.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks.

2018-06-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Deal with pitch sign earlier.

	* src/raster/ftraster.c (black_TWorker): Remove unused `traceG',
	s/bTarget/bOrigin/.
	(Render_Glyph): Set `ras.bOrigin' at the bottom-left corner.
	(Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):
	Updated accordingly.

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

	[sfnt] Read `CPAL' version 1 tables.

	* include/freetype/internal.tttypes.h: Include FT_COLOR_H.
	(TT_FaceRec): Add `palette' field.

	* src/sfnt/ttcolr.c: Include FT_COLOR_H.
	(Cpal): Remove all data covered by the new `palette' field in
	`TT_FaceRec'.
	(tt_face_load_colr): Updated.
	Read `CPAL' version 1 data.
	(tt_face_load_colr_layers, tt_face_find_color): Updated.

	* src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.

2018-06-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] API for Harmony LCD rendering.

	This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
	LCD subpixel geometry including non-striped patterns.

	* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.
	* include/freetype/ftlcdfil.h: Document it.
	* include/freetype/freetype.h: Minor.
	* include/freetype/ftchapters.h: Minor.

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

	ftcolor.h: Redesign API.

	While going to implement it I noticed that I need access to most of
	the `CPAL' elements; I thus plan to add a `cpal' field to
	`TT_FaceRec', which makes most of the previously suggested API
	functions obsolete because the fields will be directly accessible.

2018-06-06  Parth Wazurkar  <parthwazurkar@gmail.com>

	[bdf, pcf] Remove deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/pcf/pcfread.c (pcf_load_font): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

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

	[smooth, raster] Limit bitmap size (#54019).

	* src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add
	function.
	[!STANDALONE]: Include FT_OUTLINE_H.
	(ft_black_render): Compute CBox and reject glyphs larger than
	0xFFFF x 0xFFFF.

	* src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger
	than 0xFFFF x 0xFFFF.

2018-06-03  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables.

2018-06-03  Werner Lemberg  <wl@gnu.org>

	* src/tools/glnames.py (main): Emit header in `light' comment style.

2018-06-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Attempt to mitigate bug #54019.

	The robust rendering of estra large glyphs came with unbearable cost.
	The old way of bisecting should fail but fail faster.

	* src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting
	in y-direction.

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

	* src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8706

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

	* src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033).

2018-05-31  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field.

	This is no longer used.

2018-05-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Get colors from `CPAL' table in right order (#54015).

	* src/sfnt/ttcolr.c (tt_face_find_color): Fix it.

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

	ftcolor.h: Improve API design, fix typos (#54011, #54014).

	* include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...
	(FT_Palette_Get_Name_IDs): ... this function.
	(FT_Palette_Get_Entry_Names): Replace with...
	(FT_Palette_Get_Entry_Name_IDs): ... this function
	s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.

	* src/autofit/afloader.c (af_loader_load_glyph): Move the
	initialisationand declaration of variables into the if-block.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Fix pointer underflow.

	The declaration of `edge2' can be reached with `edge1 == NULL' and
	`axis->edges == 0' which results in undefined behaviour.

	* src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2'
	after checking `axis->num_edges > 1'.  `edge1 != NULL' can be assumed.

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

	Various minor color fixes.

	* include/freetype/config/ftheader.h (FT_COLOR_H): New macro.

	* include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change
	type of `load_flags' to `FT_Int32'.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change
	type of `idx' to `FT_UInt'.
	(TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of
	`load_flags' to `FT_Int32'.

	* src/sfnt/ttcolr.c (find_base_glyph_record,
	tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'.
	(tt_face_find_color, tt_face_colr_blend_layer): Change type of
	`color_index' to `FT_UInt'.
	Fix signedness and type issues.

	* src/sfnt/ttcolr.h: Updated.

2018-05-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docmaker] Fix missing `Defined in (...)' under Windows/Cygwin.

	This platform uses backslashes for paths, which docmaker didn't
	understand correctly.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use
	`os.path.normpath' to normalize the path for the platform being
	used.

2018-05-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Formalize Harmony LCD rendering.

	This generalizes magic outline shifts that make Harmony LCD
	rendering work in terms of precise two-dimensional RGB subpixel
	positions. These coordinates are now set in time of the `smooth'
	module initialization and later used to shift a glyph outline for
	rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
	coordinates. The letter, however, rotates them before using.
	The LCD bitmap padding is also calculated using these coordinates.

	* include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field
	`lcd_geometry'.
	* src/base/ftlcdfil.c (ft_lcd_padding): Reworked.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.

	* src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]
	(ft_smooth_init): Initialize `lcd_geometry'.
	(ft_smooth_render_generic): Formalize outline shifts.

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

	[truetype] Reject elements of composites with invalid glyph indices.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8413

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

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

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points.

2018-05-20  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftcolor.h: New file.

	This is an interface to the `CPAL' OpenType table.  No
	implementation yet.

2018-05-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'.

	Actually `_BitScanReverse' is available since VS2005.

2018-05-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value.

	Older VC versions don't provide `_BitScanReverse'.  We test for VC
	2013.

	Reported by John Emmas <john@creativepost.co.uk>.

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

	s/inline/__inline/ for MSVC.

	Reported by John Emmas <john@creativepost.co.uk>.

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.

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

	Add function `FT_Get_GlyphLayers' to access `COLR' table data.

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this
	structure to...
	* include/freetype/freetype.h (FT_Glyph_LayerRec): ... this
	header file.
	(FT_Glyph_Layer): New typedef.
	Update code to use it where appropriate.

	* src/base/ftobjs.c (FT_Get_GlyphLayers): New function.

2018-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix mono bitmap presetting (#53896).

	It is rather fundamental to set monochrome bitmap based on rounded
	CBox because the b/w rasterizer turns on pixels when their centers are
	inside the glyph outline. The dropout control is unpredictable and can
	distort narrow glyphs if the bitmap is too wide.

	Reported by Chris Liddell.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries
	are too close, adjust them before rounding.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix compiler warning (#53915).

	* src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix memory leak in handling `COLR' data.

	* src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array
	before reassigning allocated memory.
	Only allocate `color_layers' if we don't have one already.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] If `COLR' is present, don't assume that all glyphs use it.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if
	current glyph is not a `COLR' base glyph.

	* src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate
	`color_layers' if there are no color layers.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set.

	* src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.

2018-05-13  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Improve tracing.

2018-05-13  Shao Yu Zhang  <shaozhang@fb.com>
	    Werner Lemberg  <wl@gnu.org>

	[sfnt] Preliminary support of coloured layer outlines (#44689).

	This commit enables OpenType's COLR/CPAL table handling; a typical
	application are color emojis that can be scaled to any size.

	If the color palette does not exist or is invalid, the rendering
	step rasterizes the outline instead.  The current implementation
	assumes that the foreground is black.

	Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.

	There are still some issues with metrics; additionally, an API to
	fetch color layers is missing.

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

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,
	FT_Colr_InternalRec): New structures.
	(FT_Slot_InternalRec): Add `color_layers' field.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,
	TT_Blend_Colr_Func): New function types.
	(SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer',
	and `colr_blend' fields.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
	`colr_and_cpal' field.

	* include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New
	macros.

	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.

	* src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):
	Handle glyph color layers.

	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add
	`ttcolr.c'.

	* src/sfnt/sfdriver.c: Include `ttcolr.h'.
	(PUT_COLOR_LAYERS): New macro.
	Update call to `FT_DEFINE_SFNT_INTERFACE'.

	* src/sfnt/sfnt.c: Include `ttcolr.c'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables.
	(sfnt_done_face): Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.

2018-05-12  Arkady Shapkin  <arkady.shapkin@gmail.com>

	Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
	it.

2018-05-10  Alan Coopersmith  <alan.coopersmith@oracle.com>

	Fix DLL compilation on Solaris.

	AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'.  The
	Solaris Studio 12.1 through 12.5 compilers see the
	`-fvisibility=hidden' flag, but ignore it with a warning of:

	  cc: Warning: Option -fvisibility=hidden passed to ld,
	               if ld is invoked, ignored otherwise

	AC_LINK_IFELSE does the compile and then tries to link the result,
	at which point the Solaris linker will issue an error:

	  ld: fatal: option '-fvisibility=hidden' is incompatible with
	      building a dynamic executable

	If we don't use AC_LINK_IFELSE to catch the error, then configure
	will fail further tests which attempt to link, such as those testing
	dependencies like `libbz2'.

	Also, don't try adding `-fvisibility' if we have already added
	`-xldscope', just use one of them, since Sun Studio 12 and earlier
	compilers only issue a warning, and don't try passing through to the
	linker to generate an error, so AC_LINK_IFELSE doesn't catch them.

	Tested on Solaris 11.4 beta with compiler versions:

	  Sun Studio 8 (Sun C 5.5)
	  Sun Studio 10 (Sun C 5.7)
	  Sun Studio 11 (Sun C 5.8)
	  Sun Studio 12 (Sun C 5.9)
	  Sun Studio 12.1 (Sun C 5.10)
	  Oracle Solaris Studio 12.2 (Sun C 5.11)
	  Oracle Solaris Studio 12.3 (Sun C 5.12)
	  Oracle Solaris Studio 12.4 (Sun C 5.13)
	  Oracle Developer Studio 12.5 (Sun C 5.14)
	  Oracle Developer Studio 12.6 (Sun C 5.15)
	  gcc 5.5.0
	  gcc 7.3.0

	and verified the libfreetype.so.6 generated by each of those
	compilers exported the same set of symbols.

	* builds/unix/configure.raw: Implement it.

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

	[autofit] Avoid potential SEGV if running out of memory.

	Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>.

	* src/autofit/afshaper.c (af_shaper_buf_create,
	af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't
	allocate and free a four-byte buffer.  Instead, make those functions
	no-ops; the calling functions will provide a pointer to a buffer
	instead.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),
	src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues, af_latin_metrics_check_digits)
	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for
	`shaper_buf'.

2018-05-07  Nikolaus Waxweiler  <madigens@gmail.com>

	[cmake] Allow using project as subfolder in other project.

	* CMakeLists.txt: Test for CMake build directory being different
	from source directory.  Provide other parts of the build system
	access the full include directory.

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

	[build] Suppress configure's `nothing to be done' message.

	This is due to calling the configure script via `make' (within the
	top-level `configure' wrapper script).  The same can happen for all
	other secondary make targets that are used to only modify the
	primary one, e.g., `make setup devel'.

	* builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),
	builds/os2/detect (visualage, watcom, borlandc, devel),
	builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk
	(visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,
	devel-gcc): Use no-op recipe.

2018-05-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Support symbol visibility features of Sun / Oracle C compilers.

	Reported by Kiyoshi Kanazawa:
	https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html
	Thanks to the suggestions by Alexei and Alan Coopersmith.

	* builds/unix/configure.raw: Check if "-xldscope=hidden" is
	accepted, and if so, it is added to CFLAGS.  This is the option
	making Sun / Oracle C compilers hide the symbols from global
	scope.
	* include/freetype/config/ftconfig.h: Use "__global" prefix
	for FT_EXPORT() macro, if SunPro C is newer than Sun ONE
	Studio 8 (2003).
	* builds/unix/ftconfig.in: Ditto.
	* builds/vms/ftconfig.h: Ditto.

2018-05-02  Nikolaus Waxweiler  <madigens@gmail.com>

	Unbreak CMake Windows installation

	* CMakeLists.txt: Generate ftconfig.h on non-UNIX.

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

	Remove FT_CONFIG_OPTION_PIC and related code.

	*/* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this
	preprocessor symbol.

	*/*: Replace `XXX_GET' macros (which could be either a function in
	PIC mode or an array in non-PIC mode) with `xxx' arrays.

	* include/freetype/internal/ftpic.h, src/autofit/afpic.c,
	src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,
	src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,
	src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,
	src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,
	src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,
	src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
	Removed.

2018-05-01  Werner Lemberg  <wl@gnu.org>

	* Version 2.9.1 released.
	=========================


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

	* docs/VERSION.TXT: Add entry for version 2.9.1.
	* docs/CHANGES: Updated.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	src/base/ftver.rc, 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.9/2.9.1/, s/29/291/.

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

	* builds/unix/configure.raw (version_info): Set to 22:1:16.
	* CMakeLists.txt (VERSION_PATCH): Set to 1.

	* include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.

2018-04-26  Werner Lemberg  <wl@gnu.org>

	Another fix for handling invalid format 2 cmaps.

	Sigh.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003

	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
	an endless loop.

2018-04-24  Ben Wagner  <bungeman@google.com>

	[base] Avoid undefined behaviour in lcd filtering code (#53727).

	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
	Ensure `height > 0'.

2018-04-22  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing.

2018-04-22  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix bitmap emboldening.

	Bug introduced after release 2.8.

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
	`FT_QALLOC_MULT', which doesn't zero out the buffer.  Adjust the
	bitmap copying code to take care of this fact.

2018-04-22  Werner Lemberg  <wl@gnu.org>

	Another fix for handling invalid format 2 cmaps.

	The previous commit was incomplete.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928

	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
	an endless loop.

2018-04-19  Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Georgian Mtavruli characters.

	This will be part of the forthcoming Unicode 11.0.

	* src/autofit/afblue.dat: Add blue zone data for Mtavruli.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Mtavruli standard character.

2018-04-18  Werner Lemberg  <wl@gnu.org>

	Fix handling of invalid format 2 cmaps.

	The problem was introduced after the last release.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828

	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.

2018-04-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Integer overflow issues.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739

	* src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.

2018-04-16  Werner Lemberg  <wl@gnu.org>

	[truetype] Integer overflow issues.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718

	* src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.

2018-04-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Use `info' function of make 3.81.

	* configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
	docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.

	* builds/detect.mk (std_setup): Replace `echo' with `info'.
	(dos_setup): Removed.
	* builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,
	builds/windows/detect.mk, builds/os2/detect.mk: Updated.
	* builds/newline: No longer needed.

2018-04-15  Werner Lemberg  <wl@gnu.org>

	[truetype]: Limit `SLOOP' bytecode argument to 16 bits.

	This fixes

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707

	* src/truetype/ttinterp.c (Ins_SLOOP): Do it.

2018-04-14  Werner Lemberg  <wl@gnu.org>

	[truetype] Integer overflow issues.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652

	* src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.

2018-04-14  Werner Lemberg  <wl@gnu.org>

	[autofit] Update to Unicode 11.0.0.

	But no support new scripts (volunteers welcomed).

	* src/autofit/afranges.c (af_arab_nonbase_uniranges,
	af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,
	af_deva_nonbase_uniranges, af_geor_uniranges,
	af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,
	af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,
	af_hani_uniranges): Add new data.

2018-04-10  Nikolaus Waxweiler  <madigens@gmail.com>

	* CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
	modernization measures.

	This brings up the minimum required CMake version to 2.8.12.

	The installation paths follow the GNU defaults now, e.g. installing on a
	64 bit host will place binaries into the lib64/ folder on e.g. Fedora.

	Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).

	CMake will no longer look for a C++ compiler.

	Library and .so version now match the Autotools build.

	Comments in the build file and informational messages now use platform
	agnostic example commands.

	ftoption.h and ftconfig.h are written directly without a redundant `-new'
	copy.

	External dependencies are expressed as option()s and will turn up as such
	in cmake-gui.

	Internal: Properties such as dependencies and include directories are now
	privately set on the freetype library instead of globally.

	The CPack definitions have been cleaned up, the `make dist' has been
	removed. Source packages generated with CPack don't contain Autotools
	files and aren't used by the maintainers anyway.

	On Windows, src/base/ftver.rc is compiled to decorate the library with
	version and copyright information.

	A pkg-config file is now generated and installed.

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

	[truetype] Integer overflow issues.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453

	* src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
	ADD_LONG and SUB_LONG.

2018-04-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[windows, wince] Clean up legacy project files.

	* builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/freetype.dsp: Remove per-file compile flags.

2018-04-04  Werner Lemberg  <wl@gnu.org>

	[cff, type1] Sanitize `BlueFuzz' and `BlueShift'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371

	* src/cff/cffload.c (cff_load_private_dict): Sanitize
	`priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
	on.

	* src/type1/t1load.c (T1_Open_Face): Ditto.

2018-04-04  Ben Wagner  <bungeman@google.com>

	* src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),
	`DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'.
	(tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts
	in above.

2018-04-01  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk (work): Use $(SEP).

	This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
	platform, and this program only understands backslashes in paths.

	Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.

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

	[truetype] Fix memory leak (only if tracing is on).

	* src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
	it.

2018-03-23  Ben Wagner  <bungeman@google.com>

	[sfnt] Correctly handle missing bitmaps in sbix format (#53404).

	* src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.

2018-03-23  Ben Wagner  <bungeman@google.com>

	[truetype] Fix advance of empty glyphs in bitmap fonts (#53393).

	* src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
	for empty bitmaps.

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

	Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415).

	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/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, vms_make.com: Do it.

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

	* src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
	overflow.

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

	Fix cmap format 2 handling (#53320).

	The patch introduced for #52646 was not correct.

	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.

2018-03-10  Nikolaus Waxweiler  <madigens@gmail.com>

	* CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.

2018-03-09  Chun-wei Fan  <fanc999@yahoo.com.tw>

	* CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).

	Do not limit DLL builds to MinGW, since we already have
	`__declspec(dllexport)' directives in `ftconfig.h'.
	Also suppress more warnings for POSIX functions.

2018-03-08  Hugh McMaster  <hugh.mcmaster@outlook.com>

	Make installation of `freetype-config' optional (#53093).

	* builds/unix/configure.raw: Add option `--enable-freetype-config'
	and set `INSTALL_FT2_CONFIG'.
	* builds/unix/unix-def.in (INSTALL_FT2_CONFIG): Define.
	* builds/unix/install.mk (install): Handle it.

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

	Make `ftlcdfil.c' part of the `base' module.

	`ftobjs.c' needs `ft_lcd_padding'.

	Problem reported by duhuanpeng <548708880@qq.com>.

	* modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.

	* src/base/ftbase.c: Include `ftlcdfil.c'.
	* src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
	* src/base/Jamfile (_sources): Adjusted.

	* docs/INSTALL.ANY: Updated.

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

	Make `ftfntfmt.c' part of the `base' module.

	`ftobjs.c' needs `FT_Get_Font_Format'.

	Problem reported by duhuanpeng <548708880@qq.com>.

	* modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.

	* src/base/ftbase.c: Include `ftfntfmt.c'.
	* src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
	* src/base/Jamfile (_sources): Adjusted.

	* docs/INSTALL.ANY: Updated.

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

	* src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments.

2018-02-23  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.

	Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.

2018-02-17  Werner Lemberg  <wl@gnu.org>

	[sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154).

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

	[truetype] Integer overflow issues.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027

	* src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
	SUB_LONG; avoid FT_ABS.

2018-02-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[unix] Use -fvisibility=hidden.

	It is now widely recommended that ELF shared libraries hide symbols
	except those with explicit __attribute__((visibility("default"))).
	This is supported by all major compilers and should rather be an
	option in libtool.

	* builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS.
	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility
	attribute.

2018-01-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Better protection against invalid VF data.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739

	Bug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7.

	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize
	`normalizedcoords'.

2018-01-27  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736

2018-01-27  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Minor.

2018-01-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Better trace VF instances.

	* src/truetype/ttgxvar.c (ft_var_to_normalized): Don't emit number
	of coordinates.
	(TT_Get_MM_Var): Trace instance indices names.
	(TT_Set_Var_Design): Updated.

2018-01-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Beautify tracing of VF axis records.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a
	table-like manner.

2018-01-26  Ben Wagner  <bungeman@google.com>

	[truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955).

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Set
	`face->blend->num_axis' in case we have to initialize the
	`face->blend'.

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

	[apinames] Anonymous version map for GNU linker.

	* src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3.
	(OutputFormat): Add `OUTPUT_GNU_VERMAP'.
	(names_dump): Handle it.
	(usage): Updated.
	(main): Handle new command line flag `-wL'.

2018-01-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[unix] Call libtool to clean up.

	* builds/unix/install.mk (clean_project_unix, distclean_project_unix):
	Use libtool.
	* builds/freetype.mk: Minor.

2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftver.rc: Fix mingw-w64 compilation.

2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Enable VERSIONINFO resource for Cygwin/MinGW.

	* builds/unix/configure.raw: Check for resource compiler.
	* builds/unix/unix-cc.in: Conditionally set up resource compiler.
	* builds/freetype.mk: Add conditional rule for `ftver.rc'.
	* src/base/ftver.rc: Copyright notice and year update.

2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Move VERSIONINFO resource.

	* builds/windows/vc2010/freetype.vcxproj: Updated.
	* builds/windows/ftver.rc: Move file from here...
	* src/base/ftver.rc: ... to here.

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

	[build] Expand dllexport/dllimport to Cygwin/MinGW.

	* include/freetype/config/ftconfig.h: Respect DLL_EXPORT,
	s/_MSC_VER/_WIN32/.
	* builds/unix/ftconfig.in: Replicate here.
	* builds/vms/ftconfig.h: Replicate here.

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

	[build] Improve and document MSVC build.

	* include/freetype/config/ftconfig.h: Guard dllexport/dllimport
	attributes with _DLL and FT2_DLLIMPORT.
	* builds/windows/vc2010/index.html: Update documentation.

2018-01-10  Steve Robinson  <ssrobins@gmail.com>

	* CMakeLists.txt [win32]: Suppress warnings for POSIX functions.

2018-01-10  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Correctly handle Flex features (#52846).

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
	cf2_cmdHMOVETO>: Do not move if doing Flex.

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

	* builds/windows/vc2010/freetype.sln: Synchronize with the project.

2018-01-08  Werner Lemberg  <wl@gnu.org>

	* Version 2.9 released.
	=======================


	Tag sources with `VER-2-9'.

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

	* 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/windows/ftver.rc,
	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.8.1/2.9/, s/281/29/.

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

	* builds/unix/configure.raw (version_info): Set to 22:0:16.
	* CMakeLists.txt (VERSION_PATCH): Set to 0.

2018-01-07  Werner Lemberg  <wl@gnu.org>

	Add check for librt, needed for `ftbench' (#52824).

	* builds/unix/configure.raw (LIB_CLOCK_GETTIME): Define; this will
	hold `-lrt' if necessary.

	* builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.

2018-01-07  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Fix Type 1 glyphs with too many stem hints.

	According to the CFF specification, charstrings can have up to 96 stem
	hints. Due to hint replacement routines in Type 1 charstrings, some
	glyphs are rejected by the Adobe engine, which implements the above
	limit. This fix turns off hinting for such glyphs.

	* src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling
	`cf2_hintmask_setAll' on a problematic Type 1 charstring and turn off
	hinting.

2018-01-06  Werner Lemberg  <wl@gnu.org>

	Add `FT_Done_MM_Var'.

	This is necessary in case the application's memory routines differ
	from FreeType.  A typical example is a Python application on Windows
	that calls FreeType compiled as a DLL via the `ctypes' interface.

	* include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare
	and define.

	* docs/CHANGES: Updated.

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

	[truetype] Round offsets of glyph components only if hinting is on.

	* src/truetype/ttgload.c (TT_Process_Composite_Component): Implement
	it.

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

	* src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code.

	This is a better fix than the previous commit, which is now
	reverted.

2018-01-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Move internal LCD-related declarations.

	* include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir):
	Move from here...
	* include/freetype/internal/ftobjs.h: ... to here.

2018-01-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
	[_MSC_VER]: Limit Visual C++ attributes.

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

	[truetype] Make blend/design coordinate round-tripping work.

	Behdad reported that setting blend coordinates, then getting design
	coordinates did incorrectly return the default instance's
	coordinates.

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it.

2017-12-31  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix endless loop.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4838

2017-12-31  Werner Lemberg  <wl@gnu.org>

	Synchronize other Windows project files.

	* builds/windows/*: Add missing files.

2017-12-31  Werner Lemberg  <wl@gnu.org>

	Update Visual C 2010 project files.

	Problem reported by Hin-Tak.

	* builds/windows/vc2010/freetype.vcxproj: Add files `ftbdf.c' and
	`ftcid.c'.
	Sort entries.
	* builds/windows/vc2010/freetype.vcxproj.filter: Ditto.
	Fix members of `FT_MODULE' group.

2017-12-30  Werner Lemberg  <wl@gnu.org>

	* builds/vms/ftconfig.h: Synchronize with unix `ftconfig.in' file.

2017-12-28  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ftconfig.in: Synchronize with main `ftconfig.h' file.

	Reported by Nikolaus.

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

	Fix compiler warnings.

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Make `pitch' and
	`new_pitch' unsigned.

	* src/base/ftpsprop.c: Include FT_INTERNAL_POSTSCRIPT_PROPS_H.

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

	Fixes for `make multi'.

	* include/freetype/internal/ftpsprop.h: Use `FT_BASE_CALLBACK'.
	(ps_property_get): Harmonize declaration with corresponding
	function typedef.

	* include/freety[e/internal/fttrace.h: Add `trace_psprops'.

	* src/base/ftpsprop.c: Include necessary header files.
	(FT_COMPONENT): Define.
	(ps_property_set): Tag with `FT_BASE_CALLBACK_DEF'.
	(ps_property_get): Tag with `FT_BASE_CALLBACK_DEF'.
	Harmonize declaration with corresponding function typedef.

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

	Provide support for intra-module callback functions.

	This is needed especially for `make multi' with C++.

	* include/freetype/config/ftconfig.h (FT_BASE_CALLBACK,
	FT_BASE_CALLBACK_DEF): New macros.

2017-12-25  Ewald Hew  <ewaldhew@gmail.com>

	Move PostScript drivers' property handlers to `base'.

	This reduces the amount of duplicated code across PostScript
	drivers.

	* src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c
	({cff,cid,t1}_property_{get,set}): Moved to...
	* include/freetype/internal/ftpsprop.h: ...this new file.
	(ps_property_{get,set}): New functions to replace moved ones.

	* src/base/ftpsprop.c: New file that implements above functions.

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

	* src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c:
	Updated.

	* src/base/Jamfile, src/base/rules.mk (BASE_SRC), src/base/ftbase.c:
	Updated.

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

	Speed up FT_Set_Var_{Design,Blend}_Coordinates if curr == new.

	We exit early if the current design or blend coordinates are
	identical to the new ones.

	* src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Set_Var_Design):
	Implement it, returning internal error code -1 if there will be no
	variation change.

	* src/type1/t1load.c (t1_set_mm_blend): Ditto.

	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Updated.

2017-12-18  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix charmap type 2 iterator (#52646).

	The subsetted demo font of the report that exhibits the bug has a
	very unusual type 2 cmap for Unicode(!): It contains only two
	sub-headers, one for one-byte characters (covering the range 0x20 to
	0xFA), and a second one for higher byte 0x01 (just for character
	code U+0131).

	Before this commit, the iterator wasn't able to correctly handle a
	sub-header for higher byte 0x01.

	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix character increment
	for outer loop.

2017-12-18  Matthias Clasen  <matthias.clasen@gmail.com>

	[truetype] Fix clamping, minor tracing code beautification.

	* src/truetype/ttgxvar.c (ft_var_to_normalized): Trace number of
	design coordinates.
	Use clamped value.

2017-12-18  Werner Lemberg  <wl@gnu.org>

	* src/*/*: Only use `ft_' and `FT_' variants of stdc library stuff.

2017-12-18  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (tt_face_vary_cvt): Add size guard (#52688).

2017-12-18  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix previous commit.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Correctly handle
	unhinted phantom points, which must be properly scaled.

2017-12-18  Werner Lemberg  <wl@gnu.org>

	[truetype] Don't apply HVAR and VVAR deltas twice (#52683).

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Always adjust
	`pp1' to `pp4', except if we have an HVAR and/or VVAR table.

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Handle
	alternative code branch identically w.r.t. presence of an HVAR
	and/or VVAR table.

2017-12-17  Jonathan Kew  <jfkthame@gmail.com>

	[truetype] Correctly handle variation font phantom points (#52683).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix phantom
	point indices.

2017-12-17  Jonathan Kew  <jfkthame@gmail.com>

	Fix incorrect advance width scaling (#52683).

	* src/base/ftadvance.c (FT_Get_Advances): Always respect the
	FT_LOAD_NO_SCALE flag if present.

2017-12-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/windows/vc2010/freetype.vcxproj: AfterBuild copy.
	* objs/.gitignore: Ignore almost everything.

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

	Fix compiler warning (#52640).

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Remove unused
	variable.

2017-12-08  Azzuro  <azzuro@team-mediaportal.com>

	* builds/windows/vc2010/freetype.vcxproj: Adjust output directory.

	This allows builds with different configurations in parallel.

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

	Fix `make setup dos', second try (#52622).

	* builds/detect.mk (dos_setup): Don't use literal `>' character at
	all.  Mixing the different escaping rules from make, dos, and
	windows is too fragile.

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

	[docmaker] Fix code section parsing.

	Stuff like

	  {
	    <bla>
	  }

	confused the parser, which incorrectly treated `<bla>' as a markup
	tag.

	* src/tools/docmaker/content.py (ContentProcessor::process_content):
	Apply `re_markup_tags' only outside of code sections.

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

	New `ftdriver.h' file, covering all driver modules.

	This reduces redundancy and increases synergy; it also reduces the
	number of header files.

	* include/freetype/config/ftheader.h (FT_DRIVER_H): New macro.
	(FT_AUTOHINTER_H, FT_CFF_DRIVER_H, FT_TRUETYPE_DRIVER_H,
	FT_PCF_DRIVER_H, FT_TYPE1_DRIVER_H): Make them aliases to
	FT_DRIVER_H.

	* include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
	include/freetype/ftpcfdrv.h, include/freetype/ftt1drv.h,
	include/freetype/ftttdrv.h: Replaced with...
	* include/freetype/ftdriver.h: ...this new file.
	(FT_CFF_HINTING_ADOBE, FT_T1_HINTING_ADOBE): Renamed to...
	(FT_HINTING_ADOBE): ... this new macro.
	(FT_CFF_HINTING_FREETYPE, FT_T1_HINTING_FREETYPE): Renamed to...
	(FT_HINTING_FREETYPE): ... this new macro.

	* src/*/*: Updated accordingly.

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

	Move `ftdriver.h' to `ftdrv.h'.

	* include/freetype/internal/ftdriver.h: Renamed to...
	* include/freetype/internal/ftdrv.h: ... this name.

	* include/freetype/internal/internal.h (FT_INTERNAL_DRIVER_H):
	Updated.

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

	Fix access to uninitalized memory (#52613).

	Also reported as

	  https://bugs.chromium.org/p/chromium/issues/detail?id=791317

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): If increasing the
	bitmap size needs a larger bitmap buffer, assure that the new memory
	areas are initialized also.

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

	Fix `make setup dos' (#52622).

	* builds/detect.mk (dos_setup): Properly escape literal `>'
	character.

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

	Fix C++ compilation.

	* src/psaux/psauxmod.h: Use FT_CALLBACK_TABLE macro where necessary.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix warning.

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

	Fix `make multi'.

	* include/freetype/internal/fttrace.h: Remove unused tracing macros.
	s/pshalgo2/pshalgo/.
	Add `trace_cffdecode'.
	* src/pshinter/pshalgo.c (FT_COMPONENT): Updated.

	* src/cff/cffload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
	* src/cff/cffobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H and
	FT_SERVICE_CFF_TABLE_LOAD_H.

	* src/cid/cidriver.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.

	* src/psaux/cffdecode.c: Include FT_FREETYPE_H and
	FT_INTERNAL_DEBUG_H.
	(FT_COMPONENT): Define.
	* src/psaux/cffdecode.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
	* src/psaux/psauxmod.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
	Declare `cff_builder_funcs' and `ps_builder_funcs'.
	* src/psaux/psft.c: Include `psobjs.h' and `cffdecode.h'.
	* src/psaux/psobjs.c : Include `psauxmod.h'.

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

	* include/freetype/config/ftheader.h: Some clean-up.

	This commit removes documentation of deprecated macros and does some
	minor streamlining.

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

	* builds/symbian/bld.inf: Updated.

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

	New header file `ftparams.h' that collects all parameter tags.

	* include/freetype/config/ftheader.h (FT_PARAMETER_TAGS_H): New
	macro.
	(FT_TRUETYPE_UNPATENTED_H, FT_UNPATENTED_HINTING_H): Define it to
	`ftparams.h'.

	* include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
	include/freetype/ftincrem.h, include/freetype/ftlcdfil.h,
	include/freetype/ftsnames.h, include/freetype/ftt1drv.h: Include
	FT_PARAMETER_TAGS_H.
	Move FT_PARAM_TAG_XXX definitions to...
	* include/freetype/ftparams.h: ...this new file.

	* include/freetype/ttunpat.h: Remove.  No longer needed.

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

	Improve tracing messages by using singular and plural forms.

	* src/*/*.c: Implement it.

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

	[truetype] Allow shared points in `cvar' table (#52532).

	* src/truetype/ttgxvar.c (tt_face_vary_cvt): Implement it by copying
	and adjusting the corresponding code from
	`TT_Vary_Apply_Glyph_Deltas'.

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

	[truetype] Improving tracing of composite glyphs.

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph)
	[FT_DEBUG_LEVEL_TRACE]: Show composite glyph information.

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

	[type1] Allow (again) `/Encoding' with >256 elements (#52464).

	In version 2.6.1, this has been disallowed to better reject
	malformed fonts; however, this restriction was too strong.  This
	time, we only take the first 256 elements into account, since
	encoding arrays are always accessed with a 8bit integer, according
	to the PostScript Language Reference.

	* src/type1/t1load.c (parse_encoding): Implement it.

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

	Fix last commit (#52522).

	* builds/freetype.mk: Set `FT_OPTION_H' and `FTOPTION_FLAG'
	properly if we have `ftoption.h' in `BUILD_DIR'.

2017-11-24  Werner Lemberg  <wl@gnu.org>

	[unix] Install a massaged `ftoption.h' file (#51780).

	* builds/unix/configure.raw (ftoption_set, ftoption_unset): New
	auxiliary functions to construct...
	(FTOPTION_H_SED): ... this new variable.
	Apply it as a sed argument while copying `ftoption.h' to the
	`builds/unix' directory (using `AC_CONFIG_FILES').
	Simplify code of test that checks cpp's computation of bit length
	(the test previously created an empty `ftoption.h' file and deleted
	it immediately afterwards); without this change, it can happen on my
	GNU/Linux box that `configure's execution of `config.status' doesn't
	create `ftoption.h' (no idea why this happens).

	* builds/unix/install.mk (install): Install
	`builds/unix/ftoption.h'.

	* builds/unix/unix-def.in (DISTCLEAN): Updated.

	* builds/unix/.gitignore: Updated.

2017-11-23  Tor Andersson  <tor.andersson@artifex.com>

	Silence unused function warnings (#52465).

	Some static function declarations cause unused function warnings if
	certain config options are turned off via `ftoption.h'.

	* src/base/ftbase.h, src/base/ftrfork.c, src/sfnt/ttbdf.h,
	src/truetype/ttgxvar.h: Add #ifdef guards around these sections.

2017-11-22  Ewald Hew  <ewaldhew@gmail.com>

	* src/psaux/psft.c (cf2_setGlyphWidth): Check format before setting.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4377

2017-11-22  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Fix CFF advance widths. (#52466)

	Glyph advance widths were being written to the new `PS_Decoder' but not
	saved to the underlying format specific decoder. This caused pure CFF
	fonts to have bad advance width.

	* include/freetype/internal/psaux.h (PS_Decoder): Change `glyph_width'
	field to pointer.
	Remove unused fields.
	* src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy
	to reference.
	Remove unused.
	* src/psaux/psft.c (cf2_setGlyphWidth): Update code.

2017-11-15  Vlad Tsyrklevich  <vtsyrklevich@google.com>

	* include/freetype/ftrender.h: Fix `FT_Renderer_RenderFunc' type.

2017-11-14  Nikolaus Waxweiler  <madigens@gmail.com>

	Use Adobe hinting engine for `light' hinting of both CFF and Type 1.

	Since Ewald Hew factored the Adobe hinting engine out of the CFF
	driver code, we can now use it on Type 1 (and CID) font formats, as
	both have the same hinting philosophy.

	This change activates the Adobe hinter when in LIGHT mode, and
	therefore always unless explicitly asking for the auto-hinter.  This
	makes LIGHT behavior consistent with CFF fonts.  As of this commit,
	the hinting engine table looks as follows.

	             LIGHT  NORMAL
	  -------------------------
	   TrueType  Auto   v40
	   CFF       Adobe  Adobe
	   Type 1    Adobe  Adobe

2017-11-10  Yuri Levchenko  <yuri_levchenko@boolat.com>

	* CMakeLists.txt: Add `DISABLE_FORCE_DEBUG_PREFIX' option.

2017-11-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (FT_Load_Glyph): Relocate condition.

2017-11-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_set_cell): Fix uninitialized variables.

2017-11-03  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Fix PostScript interpreter rewinding in Type 1 mode. (#52251)

	The interpreter in Type 1 mode rewinds the charstring after collecting
	all hints for building the initial hintmap (commit d52dd7f). However,
	some charstrings use `endchar' in a final subroutine call, rewinding to
	the start of that subroutine, and only a small section of the actual
	glyph is drawn.

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdENDCHAR>:
	Ensure we are on the top level charstring before rewinding.

2017-11-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[truetype] Add more tricky fonts.

	See the report by Yang Yinsen.
	https://lists.gnu.org/archive/html/freetype-devel/2017-11/msg00000.html

	* src/truetype/ttobjs.c (trick_names): Add `DFGothic-EB',
	`DFGyoSho-Lt', `DFHSGothic-W5', `DFHSMincho-W3' and `DFHSMincho-W7'.
	(tt_check_trickyness_sfnt_ids): Add checksums for DFGothic-EB,
	DFGyoSho-Lt, DFHSGothic-W5, DFHSMincho-W3 and DFHSMincho-W7.  Also
	add checksums for DLCLiShu and DLCHayBold which their family names
	were already listed but their checksums were previously unknown.

2017-11-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix complex rendering at high ppem.

	We used to split large glyphs into horizontal bands and continue
	bisecting them still horizontally if that was not enough.  This is
	guaranteed to fail when a single scanline cannot fit into the
	rendering memory pool.  Now we bisect the bands vertically so that
	the smallest unit is a column of the band height, which is guranteed
	to fit into memory.

	* src/smooth/ftgrays.c (gray_convert_glyph): Implement it.

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

	[smooth] Improve complex rendering at high ppem.

	At large sizes almost but not exactly horizontal segments can quickly
	drain the rendering pool. This patch at least avoids filling the pool
	with trivial cells. Beyond this, we can only increase the pool size.

	Reported, analyzed, and tested by Colin Fahey.

	* src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells.

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

	[base] Improve tracing in FT_Load_Glyph, FT_*_Size.

	* src/base/ftobjs.c (FT_Load_Glyph): Tag tracing messages with
	function name, glyph index, and load flags.
	(FT_Select_Metrics, FT_Request_Metrics): Remove all tracing.
	(FT_Select_Size, FT_Request_Size): Improve tracing.

2017-10-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Improve tracing in FT_Render_Glyph.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Add total coverage
	calculations and downgrade Netpbm dump to bitmap:7.

2017-10-15  Ewald Hew  <ewaldhew@gmail.com>

	[cff] Fix segfault on missing `psaux' (#52218)

	* src/cff/cffload.c (cff_done_blend): Add a check for possible nullptr.

	* modules.cfg: Update dependency list.

2017-10-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base, cff] Fix MSVC warnings.

	* src/base/ftobjs.c (FT_New_Library): C4702: unreachable code.
	(ft_glyphslot_preset_bitmap): C4244: possible loss of data.
	* src/cff/cffload.c (cff_blend_doBlend): C4244: possible loss of data.
	Turn `sum' into unsigned.

2017-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Netpbm image tracing.

	* src/base/ftobjs.c (FT_Load_Glyph): Trace bitmap size.
	(FT_Render_Glyph_Internal): Trace bitmap in Netpbm format.

	* src/smooth/ftgrays.c (gray_sweep): Sweep remnants of span tracing.

2017-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/windows/ftdebug.c (FT_Message): Print to stderr.
	* builds/wince/ftdebug.c (FT_Message): Ditto.

2017-10-14  Behdad Esfahbod  <behdad@behdad.org>

	[afshaper] Delay creating `hb_set' objects until needed.

	In runs on Noto Naskh Arabic, this results in 89 sets created
	instead of 340 before.  Makes auto-hinter setup with HarfBuzz
	enabled 20% to 30% faster.

	* src/autofit/afshaper.c (af_shaper_get_coverage): Implement it.

2017-10-12  Ewald Hew  <ewaldhew@gmail.com>

	[type1, cid] Add hinting engine switch.

	Implement property service in `type1' and `cid' drivers to allow
	switching between FreeType or Adobe hinting engine when both are
	available.

	* src/cid/cidriver.c (cid_property_{set,get}, cid_services),
	src/type1/t1driver.c (t1_property_{set,get}, t1_services): Add
	Properties service.

	* src/cid/cidobjs.c (cid_driver_init), src/type1/t1objs.c
	(T1_Driver_Init): Add default property values.

2017-10-12  Ewald Hew  <ewaldhew@gmail.com>

	Add T1_CONFIG_OPTION_OLD_ENGINE configuration option.

	This controls whether the old Type 1 engine gets compiled into FreeType.
	It is disabled by default.

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

	* include/freetype/internal/psaux.h (PS_Decoder): Remove unused field.
	* include/freetype/internal/psaux.h, src/cid/cidgload.c
	(cid_load_glyph), src/psaux/psauxmod.c, src/psaux/psobjs.c
	(ps_builder_add_point), src/psaux/t1decode.c
	(t1_lookup_glyph_by_stdcharcode, t1_decoder_parse_glyph,
	t1operator_seac, t1_decoder_parse_charstrings), src/psaux/t1decode.h,
	src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Surround
	relevant code with macro.
	Minor code changes.

2017-10-12  Ewald Hew  <ewaldhew@gmail.com>

	Extract width parsing from Type 1 parser.

	Duplicate the fast advance width calculations from the old parser.
	This is to facilitate adding options for compiling out the old parser.

	* src/psaux/t1decode.{c,h} (t1_decoder_parse_metrics): New function.
	* include/freetype/internal/psaux.h (T1_Decoder_Funcs): New entry
	`parse_metrics'.
	* src/psaux/psauxmod.c: Set the new entry.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String),
	src/cid/cidgload.c (cid_load_glyph): Separate
	conditional for selecting engine.

2017-10-09  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Outline_Translate): Fix integer overflow.

	Reported as

	  https://bugs.chromium.org/p/chromium/issues/detail?id=772775

2017-10-08  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Integer overflows.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3579

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

	[sfnt] Adjust behaviour of PS font names for variation fonts.

	* src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Use a named instance's
	PS name only if no variation is applied.

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

	[cff, truetype] Adjust behaviour of named instances.

	This commit completely separates the interaction between named
	instances and variation functions.  In particular, resetting the
	variation returns to the current named instance (if set) and not to
	the base font.

	As a side effect, variation functions no longer change the named
	instance index.

	* src/cff/cffobjs.c (cff_face_init): Use MM service's `set_instance'
	function.
	Also apply `MVAR' table to named instances.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Add cast.
	(tt_set_mm_blend): No longer check whether requested variation
	coincides with a named instance.
	(TT_Set_Var_Design): Use current named instance for default
	coordinates.
	* src/truetype/ttobjs.c (tt_face_init): Use `TT_Set_Named_Instance'.

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

	Make `FT_Set_Named_Instance' work.

	* src/cff/cffdrivr.c (cff_set_instance): New function.
	(cff_service_multi_masters): Register it.

	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): New function.
	* src/truetype/ttgxvar.h: Updated.
	* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Register
	it.

	* src/type1/t1load.c (T1_Reset_MM_Blend): New function.
	* src/type1/t1load.h: Updated.
	* src/type1/t1driver.c (t1_service_multi_masters): Register it.

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

	Make `FT_FACE_FLAG_VARIATION' work.

	* include/freetype/internal/tttypes.h (TT_Face): Remove
	`is_default_instance'; this can be replaced with a combination of
	`FT_IS_VARIATION' and `FT_IS_INSTANCE'.

	* src/cff/cffdrivr.c (cff_get_advances): Updated.

	* src/sfnt/sfdriver.c (sfnt_get_ps_name), src/sfnt/sfobjs.c
	(sfnt_init_face): Updated.

	* src/truetype/ttdriver.c (tt_get_advances), src/truetype/ttgload.c
	(TT_Process_Simple_Glyph, load_truetype_glyph, IS_DEFAULT_INSTANCE),
	src/truetype/ttgxvar.c (tt_set_mm_blend): Updated.
	* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
	Handle `FT_FACE_FLAG_VARIATION'.

	* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Handle
	`FT_FACE_FLAG_VARIATION'.

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

	New function `FT_Set_Named_Instance'.

	No effect yet.

	* src/base/ftmm.c (FT_Set_Named_Instance): New function.

	* include/freetype/ftmm.h: Updated.

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

	Add macros for checking whether a font variation is active.

	* include/freetype/freetype.h (FT_FACE_FLAG_VARIATION,
	FT_IS_VARIATION): New macros.
	No effect yet.

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

	Add framework for setting named instance in MM service.

	* include/freetype/internal/services/svmm.h (FT_Set_Instance_Func):
	New function typedef.
	(MultiMasters): Add `set_instance' member.
	(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.

	* src/cff/cffdrivr.c (cff_service_multi_masters),
	src/truetype/ttdriver (tt_service_gx_multi_masters),
	src/type1/t1driver.c (t1_service_multi_masters): Updated.

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

	[type1] Minor code shuffling.

	* src/type1/t1load.c (T1_Set_MM_Blend): Make it a wrapper of...
	(t1_set_mm_blend): ...this new function.
	(T1_Set_MM_Design): Use `t1_set_mm_blend'.

2017-10-05  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Fix integer
	overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3539

2017-10-05  Werner Lemberg  <wl@gnu.org>

	Fix compiler warnings.

	* src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies
	on numeric overflow.
	Add cast.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable
	types, add cast.

2017-10-04  John Tytgat  <John.Tytgat@esko.com>

	[cff] Add support for `FSType'.

	* include/freetype/internal/cfftypes.h (CFF_FontRec): Add
	`font_extra' entry.

	* src/cff/cffdrivr.c (cff_ps_get_font_extra): New function to
	retrieve FSType info from the embedded PostScript data.
	(cff_service_ps_info): Register function.

	* src/cff/cffload.c (cff_font_done): Free `font_extra'.

2017-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Signedness fixes in bitmap presetting.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3514.

	* src/raster/ftrend1.c (ft_raster1_render): Explicitly signed height.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Explicitly unsigned
	subtraction.

2017-09-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Bitmap metrics presetting [2/2].

	* src/base/ftobjs.c (FT_Load_Glyph): Preset the bitmap metrics when
	appropriate but `FT_Render_Glyph' is not called.
	* include/freetype/freetype.h (FT_GlyphSlotRec): Document the change.

2017-09-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth, raster] Miscellaneous cleanups.

	* src/raster/ftrend1.c (ft_raster1_render): Clean up the exit.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Reduce
	translations and clean up the exit.
	(ft_smooth_render_lcd, ft_smooth_render_lcd): Remove unused `error'.

2017-09-28  Ben Wagner  <bungeman@google.com>

	[truetype] Really, really fix #52082.

	* src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.

2017-09-28  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psintrp.c (cf2_doStems): Fix integer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3510

2017-09-28  Ewald Hew  <ewaldhew@gmail.com>

	* src/cid/cidgload.c (cid_slot_load_glyph): Fix memory leak.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3489

2017-09-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Bitmap metrics presetting [1/2].

	This mainly just extracts the code for presetting the bitmap metrics
	from the monochrome, grayscale, and LCD renderers into a separate
	function.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): New function that
	calculates prospective bitmap metrics for the given rendering mode.
	* include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
	Declare it.

	* src/base/ftlcdfil.c (ft_lcd_padding): New helper function that adds
	padding to CBox taking into account pecularities of LCD rendering.
	* include/freetype/ftlcdfil.h (ft_lcd_padding): Declare it.

	* src/raster/ftrend1.c (ft_raster1_render): Reworked to use
	`ft_glyphslot_preset_bitmap'.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
	(ft_smooth_render_lcd, ft_smooth_render_lcd): The pixel_mode setting
	is moved to `ft_glyphslot_preset_bitmap'.

2017-09-28  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Fix compiler warning.

	* src/psaux/pshints.c (cf2_hintmap_dump): Add switch for tracing
	code.

2017-09-27  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.

2017-09-25  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix compiler warnings.

	* src/psaux/psft.c (cf2_initLocalRegionBuffer): Remove redundant
	test.

	* src/psaux/psintrp.c (cf2_interpT2CharString)
	<cf2_escCALLOTHERSUBR>: Add casts.

	* src/psaux/psobjs.c (ps_decoder_init): Add cast.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Minor fixes.

	* include/freetype/internal/psaux.h, src/psaux/psobjs.{c,h}:
	Rearrange `ps_builder_init' arguments to conventional order.

	* src/psaux/psft.c (cf2_decoder_parse_charstrings): Add a check and
	notice for `SubFont' in Type 1 mode.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Move `psdecode' into `psobjs'.

	As the former only contains a single procedure, move it into
	`psobjs' for simplicity.  Also change the parameter order to the
	conventional one.

	* src/psaux/psdecode.c (ps_decoder_init): Moved to...
	* src/psaux/psobjs.c: ...Here.
	* src/psaux/psdecode.h, src/psaux/psobjs.h: Ditto.

	* include/freetype/internal/psaux.h (PSAux_ServiceRec): Update
	`ps_decoder_init' function signature.

	* src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c:
	Update calls.

	* src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes.

	* src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC):
	Update file references.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Fix Type 1 hinting.

	Type 1 hinting breaks sometimes when mid-charstring hints should
	have been in the initial hintmap.  This fix adds a preprocessing
	pass that reads all hints and builds the correct initial hintmap
	first, before proceeding to build the glyph outline.

	* src/psaux/psintrp.c (cf2_interpT2CharString): New
	`initial_map_ready' boolean flag.
	Ignore outline commands and hint changes on first pass.
	<cf2_cmdENDCHAR>: Add section to build hintmap and rewind.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Add tracing for hints.

	* src/psaux/pshints.c (cf2_hintmap_dump): New function.
	(cf2_hintmap_insertHint): Trace incoming and inserted hints.
	(cf2_hintmap_build): Dump hintmap before and after hint adjustment.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Minor fixes.

	* src/psaux/psintrp.c (cf2_interpT2CharString): Fix check for pop
	results.
	s/font->decoder/decoder/ where necessary.
	<cf2_cmdHSTEM, cf2_cmdVSTEM, cf2_escHSTEM3, cf2_escVSTEM3>: Use
	offset parameter in `cf2_doStems' instead of doing correction for
	left-sidebearing.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[cid] Use the new engine.

	* src/cid/cidgload.c: Update includes.
	(cid_load_glyph, cid_slot_load_glyph): Implement changes to glyph
	loading code as with `type1' module.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[cid] Add Adobe engine configuration.

	This is similar to what was done in the `type1' module.

	* src/cid/cidriver.c (t1cid_driver_class): Update declaration.
	* src/cid/cidobjs.c: Include FT_TYPE1_DRIVER_H.
	(cid_driver_init): Update code.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Change subfont synthesis for CID fonts.

	Change `t1_make_subfont' to take in the Private dict record as an
	argument.  This is because Type 1 and CID font records in FreeType
	have this in different places.

	* src/psaux/psobjs.c (t1_make_subfont): Change `T1_Face' to
	`FT_Face' so that CID is also accepted.
	Take `PS_Private' as an argument and let caller figure out where the
	Private dict actually is.
	Update references.

	* include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update
	declaration.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update
	call.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[type1] Switch to Adobe engine.

	* src/type1/t1objs.c (T1_Driver_Init): Set default to Adobe engine.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (seac).

	This concludes the changes needed to add Type 1 support.

	* src/psaux/psintrp.c: Update includes.
	(cf2_interpT2CharString) <cf2_escSEAC>: Implement this similarly to
	implied seac for CFF.

	* src/psaux/t1decode.c (t1_lookup_glyph_by_stdcharcode_ps): New
	function to look up the glyph index.

	* src/psaux/psft.c (cf2_getT1SeacComponent,
	cf2_freeT1SeacComponent): New functions to get the charstrings for
	seac components.

	* src/psaux/t1decode.h, src/psaux/psft.h: Update declarations.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (flex in callothersubr).

	* src/psaux/psintrp.c (cf2_interpT2CharString)
	<cf2_escCALLOTHERSUBR>: Fix Flex feature handling (OtherSubrs 0, 1,
	2).
	<cf2_cmdRMOVETO>: Do not actually move the `glyphPath' while doing
	flex.  This is to avoid closing the current contour.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (callothersubr).

	* src/psaux/psintrp.c (cf2_interpT2CharString)
	<cf2_escCALLOTHERSUBR>: Copy code from
	`t1_decoder_parse_charstrings' (in `t1decode.c').
	OtherSubr 3 (change hints) should reset the hintmask, so that the
	new hints are applied.
	Fix function calls and stack access.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (pop).

	* src/psaux/psintrp.c (cf2_interpT2CharString): Change how unhandled
	OtherSubr results are stored.  Implement the PostScript stack using
	an array.
	<cf2_escPOP>: Ensure that the stack is not cleared after getting
	`OtherSubr' results.
	Fix stack access.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (callsubr).

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
	Type 1 mode.

	* src/psaux/psft.c (cf2_initLocalRegionBuffer): Add Type 1 mode.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (div, four-byte numbers).

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escDIV>: Add
	Type 1 mode.  Type 1 requires large integers to be followed by
	`div'; cf. `Adobe Type 1 Font Format', section 6.2.
	<op == 255>: Push Type 1 four-byte numbers as `Int' always.  This is
	to ensure `div' and `callsubr' get values they can use.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (hints).

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
	cf2_cmdVSTEM>: Add correction for left sidebearing in Type 1 mode.
	Allow adding hints mid-charstring.
	<cf2_escVSTEM3, cf2_escHSTEM3>: Translate into equivalent commands
	for three normal stem hints.  This requires some recalculation of
	stem positions.
	Correction for left sidebearing.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (hsbw, sbw).

	* src/psaux/psintrp.c (cf2_doStems): `hsbw' or `sbw' must be the
	first operation in a Type 1 charstring.
	(cf2_interpT2CharString): Remove unused variables.
	<cf2_cmdHMOVETO, cf2_cmdVMOVETO, cf2_cmdRMOVETO>: `hsbw' or `sbw'
	must be the first operation in a Type 1 charstring.
	<cf2_cmdHSBW, cf2_escSBW>: Fix data access and add correction for
	left sidebearing.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (setcurrentpoint).

	* src/psaux/psintrp.c (cf2_interpT2CharString)
	<cf2_escSETCURRENTPT>: Fix stack access.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Extend Adobe interpreter (closepath).

	* src/psaux/psintrp.c (cf2_interpT2CharString) <c2f_cmdCLOSEPATH>:
	Use the right builder function.  We can use the `haveWidth' boolean
	already present, instead of implementing `parse_state'.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Add Type 1 operations to Adobe CFF interpreter.

	The following Type 1 specific ops have been added (copied from
	`t1decode'):

	  closepath
	  vstem3
	  hstem3
	  seac
	  sbw
	  callothersubr
	  pop
	  setcurrentpoint
	  hsbw

	The following require a Type 1 mode, because of differences in
	specification:

	  hstem
	  vstem
	  vmoveto
	  callsubr
	  div
	  rmoveto
	  hmoveto
	  Numbers

	The subsequent commits will implement these changes and adapt
	accesses of data and objects to the new interpreter.

	NOTE: Will not compile in the meantime!

	* src/psaux/psintrp.c: Add opcodes to enum.
	(cf2_interpT2CharString): Copy relevant code over from
	`t1_decoder_parse_charstrings' (in `t1decode.c').

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[type1] Fixes for rendering.

	The Type 1 advance width calculation passes null for glyph slot,
	etc, which can cause null pointer access in the new interpreter.
	Fall back to the old one for now.

	Fix the large glyph retry code and ensure hinting and scaling flags
	are set properly.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add a
	check for metrics_only.
	Set the `force_scaling' flag.
	(T1_Parse_Glyph): Updated.
	(T1_Load_Glyph): Add `hinting' and `scaled' flags.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Add missing objects (2/2).

	Synthesize a `SubFont' object for Type 1 fonts.  This is used in the
	interpreter to access Private dict data, which are stored in
	different places for Type 1 and CFF.  This allows the same data to
	be used in either mode.

	* src/psaux/psobjs.c (t1_make_subfont): New procedure to copy
	required values to a dummy `CFF_SubFont' object.  This is similar to
	`cff_make_private_dict'.
	* src/psaux/psobjs.h: Add the new declaration.

	* include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Ditto.
	Add this to the PSAux Service for future use with CID fonts.

	* src/type1/t1gload.c: Include FT_INTERNAL_CFF_TYPES_H.
	(T1_Parse_Glyph_And_Get_Char_String): Add the call.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Add missing objects for Type 1 (1/2).

	Move `CF2_Font' instance to `PS_Decoder'.  This is the context for
	the interpreter and since it is currently stored in `CFF_Font', is
	unavailable in Type 1 mode.

	* include/freetype/internal/psaux.h (T1_Decoder, PS_Decoder): New
	`cf2_instance' field.

	* src/psaux/psdecode.c (ps_decoder_init): Copy `cf2_instance' to
	`PS_Decoder'.

	* src/psaux/t1decode.c (t1_decoder_done): Add finalization code.

	* src/psaux/psft.c (cf2_decoder_parse_charstrings): Update accesses.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	Allow `type1' module to use the Adobe engine.

	Add the callback and some conditionals to switch between the two
	engines.

	* include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Change
	function declarations.
	* src/psaux/psauxmod.c (T1_Decoder_FuncsRec): Register the
	callbacks.

	* src/psaux/psobjs.c (ps_builder_add_point): Add conditionals for
	number conversion.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add code
	to choose which renderer to use.

	* src/cid/cidgload.c (cid_load_glyph): Update call.
	* src/base/ftobjs.c, src/psaux/psobjs.c, src/type1/t1gload.c: Update
	includes.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[type1] Add Adobe engine configuration.

	Use the previously changed PS_Driver in type1 module to store
	hinting engine configuration.

	* include/freetype/ftt1drv.h: New file.
	Duplicate and rename config options from CFF.
	* include/freetype/config/ftheader.h (FT_TYPE1_DRIVER_H): New macro.

	* src/type1/t1driver.c (t1_driver_class): Update declaration.
	* src/type1/t1objs.c: Include FT_TYPE1_DRIVER_H.
	(T1_Driver_Init): Update code.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[cff] Move and rename `CFF_Driver'.

	This is so that we can use the same hinting engine parameters for
	Type 1.

	* include/freetype/internal/cffotypes.h (CFF_Driver): Rename and
	move to...
	* include/freetype/internal/psaux.h (PS_Driver): ...here.

	* src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffload.c,
	src/cff/cffobjs.c, src/cff/cffobjs.h, src/psaux/psft.c,
	src/psaux/psobjs.c: Update references.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, type1] Reorganize object fields.

	Make some fields more generic, so that we can access them the same
	way regardless of Type 1 or CFF.

	* include/freetype/internal/psaux.h (PS_Builder): Change `TT_Face'
	to `FT_Face'.
	Remove unused fields.

	* src/psaux/psft.c: Update all accesses of `PS_Builder.face'.
	Add some asserts to guard against casting `T1_Face' as `TT_Face'.

	* src/type1/t1objs.h (T1_GlyphSlot): Reorder fields to follow
	`CFF_GlyphSlot', so that we can pretend they are the same in the
	interpreter.

	* src/psaux/psobjs.c (ps_builder_init, ps_builder_add_point):
	Updated with above changes.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Prepare for Type 1 mode.

	Add some checks for Type 1 data passing through.

	* src/psaux/psfont.h (CF2_Font): Add `isT1' flag.
	* src/psaux/psfont.c (cf2_font_setup): Skip the variations and blend
	code which is not applicable for Type 1.

	* src/psaux/psft.c (cf2_decoder_parse_charstrings): Avoid accessing
	`decoder->cff' in Type 1 mode.
	Copy `is_t1' flag to `CF2_Font'.

2017-09-25  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Use the new objects.

	* include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Fix
	switching between new and old engines.

	* src/cff/cffgload.c, src/cff/cffparse.c: Update calls.

	* src/psaux/psblues.c, src/psaux/psfont.c, src/psaux/psfont.h,
	src/psaux/psft.c, src/psaux/psft.h, src/psaux/psintrp.c: Update all
	to use new objects.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Objects for new interpreter (part 2).

	Make the new objects copy over values.  They are essentially wrapper
	types for the different decoders/builders.

	* include/freetype/internal/psaux.h: Update declarations.
	(PS_Builder): Add `is_t1' flag.
	(PS_Decoder_{Get,Free}_Glyph_Callback): Renamed to...
	(CFF_Decoder_{Get,Free}_Glyph_Callback: ... this.
	(PS_Decoder): Updated.
	Add `t1_parse_callback' member.
	(PSAux_ServiceRec): Add `ps_decoder_init' member.

	* src/psaux/psdecode.h, src/psaux/psobjs.h: Update declarations.

	* src/psaux/psdecode.c, src/psaux/psobjs.c: Implement copy with two
	modes.

	* src/psaux/psauxmod.c: Add builder and decoder functions to `PSAux'
	service.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Add objects for new interpreter.

	Introduce `PS_Decoder' and `PS_Builder' which include all fields
	from either Type 1 or CFF decoders/builders.

	* include/freetype/internal/psaux.h (PS_Builder, PS_Decoder): New
	structs.

	* src/psaux/psobjs.c, src/psaux/psobjs.h: Add `PS_Builder'
	functions.

	* src/psaux/psdecode.c, src/psaux/psdecode.h: New files to hold
	`PS_Decoder' initialization functions.

	* src/psaux/psaux.c, src/psaux/Jamfile (_sources),
	src/psaux/rules.mk (PSAUX_DRV_SRC): Updated.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Rename files.

	Replace the `cf2' file name prefix with `ps' as the Adobe engine
	will be used for both PostScript Types 1 and 2 (CFF) instead of just
	CFF.

	s/cf2/ps/ for all following.

	* src/psaux/cf2*: Rename files.
	* src/psaux/*: Update includes.

	* src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRC_SRC,
	PSAUX_DRV_H): Update file references.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux] Minor fix.

	Use `MultiMasters' service in `psaux' instead of a call to `cff'.
	The project builds if CFF_CONFIG_OPTION_OLD_ENGINE is not defined.

	* src/psaux/cf2ft.c: Update includes.
	(cf2_getNormalizedVector): Use `mm->get_var_blend' instead of
	`cff_get_var_blend'.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Move `cff_random' into `psaux' service.

	NOTE: Does not compile!

	Minor fix to allow both `cff' and `psaux' to use `cff_random'.

	* src/cff/cffload.c (cff_random): Move to...
	* src/psaux/psobjs.c: Here.
	* src/cff/cffload.h: Move corresponding declaration to
	`src/psaux/psobjs.h'.

	* include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
	function here...
	* src/psaux/psauxmod.c: And here.

	* src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[cff] Move struct declarations to `freetype/internal'.

	NOTE: Does not compile!

	This is so that the CFF functions moved to `psaux' can access the
	same structs that they need.

	* src/cff/cfftypes.h: Moved to...
	* include/freetype/internal/cfftypes.h: ...Here.

	* src/cff/cffobjs.h: Moved the struct declarations to...
	* include/freetype/internal/cffotypes.h: ... this new file.

	* include/freetype/internal/internal.h (FT_INTERNAL_CFF_TYPES_H,
	FT_INTERNAL_CFF_OBJECT_TYPES_H): New macros.

	* src/cff/cffcmap.h, src/cff/cffdrivr.c, src/cff/cffgload.c,
	src/cff/cffgload.h, src/cff/cffload.h, src/cff/cffobjs.c,
	src/cff/cffobjs.h, src/cff/cffparse.h, src/psaux/psobjs.h,
	include/freetype/internal/psaux.h,
	include/freetype/internal/services/svcfftl.h: Update includes.

	* src/cff/rules.mk (CFF_DRV_H): Updated.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Add new service for inter-module calls.

	NOTE: Does not compile!

	This is to allow CFF functions moved to `psaux' to call functions
	declared in `src/cff/cffload.h'.

	* include/freetype/internal/services/svcfftl.h: New file, setting up
	a `CFFLoad' service.

	* include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC10,
	FT_DEFINE_SERVICEDESCREC): New macros.
	(FT_SERVICE_CFF_TABLE_LOAD_H): New macro.

	* src/cff/cffdrivr.c, src/cff/cffpic.h: Register the new service.

	* src/cff/cfftypes.h (CFF_FontRec), src/psaux/cf2font.h
	(CF2_FontRec): Add service interface.

	* src/cff/cffobjs.c, src/psaux/cf2font.c, src/psaux/cf2ft.c,
	src/psaux/cf2intrp.c, src/psaux/cffdecode.c: Use the new service.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Add callbacks for inter-module calls.

	NOTE: Does not compile!

	* include/freetype/internal/psaux.h: Add function pointer
	declarations.

	* src/psaux/cffdecode.c (cff_decoder_init): Update to take in
	callbacks.
	* src/psaux/cffdecode.h: Ditto.

	* src/cff/cffgload.c (cff_compute_max_advance, cff_slot_load):
	Update calls to pass in callbacks.
	* src/psaux/cf2ft.c, src/psaux/cffdecode.c: Use them.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Create new `PSAux' service interface entries.

	NOTE: Does not compile!

	* include/freetype/internal/psaux.h: Include
	FT_INTERNAL_TRUETYPE_TYPES_H.
	(CFF_Builder_FuncsRec, CFF_Decocer_FuncsRec): New function tables.
	(CFF_Builder): Updated.
	Fix for forward declaration.
	(PSAux_ServiceRec): New field `cff_decoder_funcs'.

	* src/psaux/psauxmod.c (cff_builder_funcs, cff_decoder_funcs): New
	function tables.
	(PSAux_Interface): Updated.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add `psaux'
	service interface.

	* src/cff/cffgload.c, src/cff/cffobjs.c, src/cff/cffparse.c: Update
	function calls to use psaux service.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Move CFF builder components into `psaux' module.

	NOTE: Does not compile!

	* src/cff/cffgload.c
	(cff_builder_{init,done,add_point,add_point1,add_contour,start_point,close_contour},
	cff_check_points): Move to...
	* src/psaux/psobjs.c: Here.

	* src/cff/cffgload.h: Move corresponding declarations to
	`src/psaux/psobjs.h'.

	* src/cff/cffgload.h (CFF_Builder): Move struct declaration to...
	* include/freetype/internal/psaux.h: Here.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Move CFF decoder components into `psaux' module.

	NOTE: Does not compile!

	* src/cff/cffgload.c (CFF_Operator,
	CFF_COUNT_{CHECK_WIDTH,EXACT,CLEAR_STACK}, cff_argument_counts,
	cff_operator_seac, cff_compute_bias,
	cff_lookup_glyph_by_stdcharcode,
	cff_decoder_{parse_charstrings,init,prepare}): Move to...
	* src/psaux/cffdecode.c: This new file.

	* src/cff/cffgload.h: Move corresponding declarations to...
	* src/psaux/cffdecode.h: This new file.

	* src/cff/cffgload.h (CFF_MAX_{OPERANDS,SUBRS_CALLS,TRANS_ELEMENTS},
	CFF_Decoder_Zone, CFF_Decoder): Move declarations to...
	* include/freetype/internal/psaux.h: Here.

	* src/psaux/cf2ft.h: Update include.

	* src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Update with
	the new file.

2017-09-24  Ewald Hew  <ewaldhew@gmail.com>

	[psaux, cff] Move Adobe's engine components into `psaux' module.

	This is the first patch of a sequence to move the Type 2 charstring
	processing capability from the `cff' module to the `psaux' module.

	NOTE: Does not compile!

	* src/cff/cf2*: Move these files to...
	* src/psaux/cf2*: Here.

	* src/cff/Jamfile (_sources), src/cff/rules.mk (CFF_DRV_SRC,
	CFF_DRV_H), src/cff/cff.c, src/cff/cffgload.c: Remove file
	references.

	* src/psaux/Jamfile (_sources), src/psaux/rules.mk, src/psaux/psaux.c
	(PSAUX_DRV_SRC, PSAUX_DRV_H): Add file references.

2017-09-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Tweak per-face LCD filtering controls.

	Thing are simpler with a NULL-function pointer.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
	pointer to the filter function.
	(FT_LibraryRec): Remove unused `lcd_filter'.
	(FT_Bitmap_LcdFilterFunc, ft_lcd_filter_fir):  Move from here...
	* include/freetype/ftlcdfil.h (FT_Bitmap_LcdFilterFunc,
	ft_lcd_filter_fir): ... to here.

	* src/base/ftobjs.c (ft_open_face_internal): NULL-initialize the
	per-face filter.
	(FT_Face_Properties): Set it.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Simplify.

	* src/base/ftlcdfil.c (ft_lcd_filter_fir, FT_Libary_SetLcdFilter):
	Minor.

2017-09-24  Jonathan Kew  <jfkthame@gmail.com>

	[sfnt] Fix `premultiply_data' (#52092).

	* src/sfnt/pngshim.c (premultiply_data): Don't use vector extension
	if we have less than 16 bytes of data.

2017-09-24  Werner Lemberg  <wl@gnu.org>

	[otvalid] Fix handling of ValueRecords.

	For GPOS pair positioning format 1 the description of ValueRecords
	in the OpenType specification (1.8.2, from today) is wrong – the
	offset has to be taken from the parent structure; in this case the
	`PairSet' table.

	* src/otvalid/otvgpos.c (otv_PairSet_validate): Set `extra3'.
	(otv_PairPos_validate): Adjust.

2017-09-23  Werner Lemberg  <wl@gnu.org>

	[otvalid] Handle `GSUB' and `GPOS' v1.1 tables.

	* src/otvalid/otvgsub.c (otv_GSUB_validate), src/otvalid/otvgpos.c
	(otv_GPOS_validate): Implement it.

2017-09-23  Werner Lemberg  <wl@gnu.org>

	[otvalid] Update common table handling to OpenType 1.8.2.

	* src/otvalid/otvcommn.c (otv_Device_validate): Handle
	VariationIndex subtable.
	(otv_Lookup_validate): Handle MarkFilteringSet.

2017-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Windows-style DLL versioning.

	* build/windows/ftver.rc: New VERSIONINFO resource.
	* build/windows/vc2010/freetype.vcxproj: Further improvements.

2017-09-23  Ben Wagner  <bungeman@google.com>

	[truetype] Really fix #52082.

	* src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.

2017-09-23  Werner Lemberg  <wl@gnu.org>

	[otvalid] Handle `GDEF' v1.2 and v1.3 tables.

	No validation of variation stuff yet.

	* src/otvalid/otvgdef.c (otv_MarkGlyphSets_validate): New function.
	(otv_GDEF_validate): Implement it.

2017-09-22  Werner Lemberg  <wl@gnu.org>

	[otvalid] Handle `BASE' v1.1 table.

	No validation of variation stuff yet.

	* src/otvalid/otvbase.c (otv_BASE_validate): Implement it.

2017-09-22  Werner Lemberg  <wl@gnu.org>

	[otvalid] Macros for 32bit offset support.

	* src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE32,
	OTV_OPTIONAL_OFFSET32, OTV_SIZE_CHECK32): New macros.

2017-09-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Simplify Visual C++ 2010 project.

	* build/windows/vc2010/freetype.vcxproj: Remove fake singlethreaded
	configurations and tweak.

2017-09-21  Werner Lemberg  <wl@gnu.org>

	[truetype] Integer overflow (#52082).

	* src/truetype/ttinterp.c (Ins_MDRP): Avoid FT_ABS.

2017-09-21  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix postscript name for default instance of variation fonts.

	Problem reported by Behdad.

	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Test
	`is_default_instance'.

2017-09-21  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix `mmvar' array pointers, part 2.

	The previous commit was incomplete.

	* src/truetype/ttgxvar.c: Properly initialize sub-array offsets for
	`master' also.

2017-09-21  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix `mmvar' array pointers.

	Without this change, clang's AddressSanitizer reports many runtime
	errors due to misaligned addresses.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Use multiples of pointer
	size for sub-array offsets into `mmvar'.

2017-09-20  Werner Lemberg  <wl@gnu.org>

	[truetype] Integer overflows.

	Changes triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3429

	* src/truetype/ttinterp.c (Ins_SHPIX, Ins_DELTAP): Use NEG_LONG.
	(Ins_MIAP): Use SUB_LONG.

2017-09-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Fix DLL builds in Visual C++ project.

	* build/windows/vc2010/freetype.vcxproj: Use DynamicLibrary in Debug
	and Release configurations.
	* include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
	[_DLL]: Use Visual C++ extensions.

2017-09-19  John Tytgat  <John.Tytgat@esko.com>

	[cff] Fix family name logic of pure CFF fontdata (#52056).

	1. If `FamilyName' is present in the CFF font, use this for
	   FT_Face's `family_name'.
	2. Otherwise, use the face name and chop off any subset prefix.
	3. If at this point FT_Face's `family_name' is set, use this
	   together with the full name to determine the style.
	4. Otherwise, use `CIDFontName' as FT_Face's `family_name'.
	5. If we don't have a valid style, use "Regular".

	Previously, FT_Face's `family_name' entry for pure CFF fontdata
	nearly always was the fontname itself, instead of the `FamilyName'
	entry in the CFF font (assuming there is one).

	* src/cff/cffobjs.c (cff_face_init) [pure_cff]: Implement it.

2017-09-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Declutter Visual C++ 2010-2017 project.

	* build/windows/vc2010/freetype.vcxproj: Use MaxSpeed (/02)
	optimization for Release configuration throughout the project.


----------------------------------------------------------------------------

Copyright 2017-2018 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:
