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): Exlicitly 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.

2017-09-16  Werner Lemberg  <wl@gnu.org>

	* Version 2.8.1 released.
	=========================


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

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

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.8/2.8.1/, s/28/281/.

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

	* builds/unix/configure.raw (version_info): Set to 21:0:15.
	* CMakeLists.txt (VERSION_PATCH): Set to 1.

2017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7.

	__builtin_shuffle() was introduced in gcc-4.7.  The lowest
	gcc to enable vector operation is delayed from 4.6 to 4.7.

	* src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to
	enable the vector operation, to change the lowest gcc version
	from 4.6 to 4.7.

2017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[cache] Fix a possible overflow by signed integer comparison.

	Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 ,
	issues are found by Behdad Esfahbod and Werner Lemberg.

	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace
	a subtraction to check higher bit by a bit operation,
	and cpp-conditionalize for appropriate systems.  Add better
	documentation to the comment.
	(FTC_ImageCache_LookupScaler): Ditto.
	(FTC_SBitCache_Lookup): Ditto.
	(FTC_SBitCache_LookupScaler): Ditto.

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

	[autofit] Really fix #41334 (#52000).

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Set
	`segment->delta' everywhere.

2017-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autofit, sfnt] Fix for `make multi'.

	* src/autofit/afshaper.c: Include FT_ADVANCE_H, to use
	FT_Get_Advance() in it.
	* src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H
	to use PS_Unicodes in it, also include `ttpost.h' to use
	tt_face_get_ps_name() in it.

2017-09-11  Azzuro  <azzuro@team-mediaportal.com>

	[build] Improve builds with different MS Visual Studio versions.

	* builds/windows/vc2010/freetype.vcxproj: Switch platform toolset
	according to the Visual Studio version.

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

	* src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables.

	Reported by Behdad.

2017-09-09  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve communication with ftgrid.

	* src/autofit/afhints.c (af_glyph_hints_get_segment_offset):
	Provide values in font units.

2017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[base] Remove a check for resource ID in the resource fork driver.

	LastResort.dfont has a marginal resource ID 0xFFFF for sfnt
	resource.  Inside Macintosh: More Macintosh Toolbox, `Resource IDs'
	(1-46), tells that some IDs are reserved and should not be used.
	FreeType2 just uses resource ID to sort the fragmented resource.
	To accept the marginal fonts, the checking is removed.

	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id
	validity check, fix a trace message format.

2017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[sfnt, truetype] Register the tags for marginal fonts.

	The first 32bit of standard TrueType variants is 0x00010000,
	`OTTO', `ttcf', `true' or `typ1'.  2 marginal dfonts on legacy Mac
	OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources
	starting 0xA5 followed by `kbd' or `lst'.  Considering the following
	data could be parsed as conventional TrueType fonts, the header
	checking is updated to allow these tags.  It seems that recent Mac
	OS X has already switched to normal TTF for these fonts.

	See the discussion at
	http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0

	* include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header
	tags for Keyboard.dfont and LastResort.dfont.
	* src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource
	starts with TTAG_0xA5kbd or TTAG_0xA5lst.
	* src/truetype/ttobjs.c (tt_face_init): Accept the face with the
	format tag is TTAG_0xA5kbd or TTAG_0xA5lst.

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

	Fix multiple calls of `FT_Bitmap_Convert'.

	The documentation of `FT_Bitmap_Convert' says that multiple calls do
	proper reallocation of the target FT_Bitmap object.  However, this
	failed for the sequence

	  non-empty bitmap
	  empty bitmap
	  non-empty bitmap

	Reason was that `FT_Bitmap_Convert' only reallocated the bitmap
	buffer if it became too small; it didn't make the buffer smaller.
	For an empty bitmap following a non-empty one, only the buffer
	dimension got set to zero, without deallocation.  If the next call
	was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was
	triggered.

	* src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target
	buffer to the correct size.

	* docs/CHANGES: Document it.

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

	[bdf] Fix size and resolution handling.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if
	`POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are
	missing.

	* docs/CHANGES: Document it.

2017-08-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Swap `ALLOC_MULT' arguments (#51833).

	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated.
	* src/winfonts/winfnt.c (FNT_Load_Glyph): Updated.
	* src/raster/ftrend1.c (ft_raster1_render): Updated.

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

	[sfnt] Fix clang compilation (#51788).

	* src/sfnt/pngshim.c (premultiply_data): Use vectors instead of
	scalars.
	(vector_shuffle): New macro to take care of a different built-in
	function name on clang.

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

	[base] Don't zero out allocated memory twice (#51816).

	Patch applied from bug report.

	* src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
	avoid unnecessary overhead.

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

	[truetype] Integer overflow.

	Changes triggered by

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

	* src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use
	NEG_LONG.

2017-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[sfnt] Avoid synthetic unicode for symbol fonts with PUA.

	Reported as

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

	* src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL.

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

	* src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings.

2017-08-15  Behdad Esfahbod  <behdad@behdad.org>

	[sfnt] Speed up PNG image loading.

	This reduces the overhead of `premultiply_data' by 60%.

	* src/sfnt/pngshim.c (premultiply_data): Provide code which uses
	gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a
	time.

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

	[sfnt, truetype] Improve handling of missing sbits.

	Requested by Behdad.

	Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain
	entries in the bitmap strike(s) for empty glyphs.  Instead, they
	rely that a space glyph gets created from the font's metrics data.
	This commit makes FreeType behave accordingly.

	* include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error
	code.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes
	to make a distinction between a missing bitmap in a composite and a
	simple missing bitmap.

	* src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a
	bitmap-only font), synthesize an empty bitmap glyph if metrics are
	available.

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

	[base] Minor API improvement for default variation axis setting.

	* src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
	FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
	FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0.

	* docs/CHANGES: Updated.

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

	[psnames] Really fix issue #49949.

	We now use a separate preprocessor macro to handle both definition
	and declaration of the glyph name arrays.

	* src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.

	* src/tools/glnames.py (StringTable::dump,
	StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
	(dump_encoding): Ditto.
	(main): Use `wb' mode for writing the output file, which works on
	Windows also.

	* src/psnames/pstables.h: Regenerated.

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

	[smooth] Harmony LCD rendering.

	This is a new technology for LCD-optimized rendering. It capitalizes
	on the fact that each color channel grid is shifted by a third of a
	pixel.  Therefore it is logical to render 3 separate monochrome
	bitmaps shifting the outline by 1/3 pixel, and then combine them.
	Importantly, the resulting output does not require additional LCD
	filtering.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
	[!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
	rendering.

	* include/freetype/ftlcdfil.h, include/freetype/freetype.h,
	include/freetype/config/ftoption.h, devel/ftoption.h: Updated
	documentation.

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

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.

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

	* src/sfnt/ttpost.c (format): Use otspec-compliant versions.

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

	[truetype] Integer overflow.

	Reported as

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

	* src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.

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

	[base, truetype] New function `FT_Get_Var_Axis_Flags'.

	The reserved `flags' field got a value in OpenType version 1.8.2;
	unfortunately, the public `FT_Var_Axis' structure misses the
	corresponding element.  Since we can't add a new field, we add an
	access function.

	* src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.

	* include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
	Updated.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
	of `mmvar' to hold axis flags.
	Fill the axis flags array.

	* docs/CHANGES: Updated.

2017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Fix metrics of B/W hinting in v40 mode.

	Phantom points are now saved outside v40 backwards compatibility
	mode.  This fixes the jumping glyphs when switching between v35 and
	v40 monochrome mode.

	* src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.

2017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Do not set any ClearType flags in v40 monochrome mode.

	This fixes weird behavior of instructions that resulted in rendering
	differences between v35 and v40 in monochrome mode, e.g., in
	`timesbi.ttf'.

	* src/truetype/ttinterp.c (Ins_GETINFO)
	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
	`subpixel_hinting_lean'.

2017-08-01  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.

2017-08-01  Behdad Esfahbod  <behdad@behdad.org>

	[truetype] Fix loading of named instances.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
	while loading the `avar' table.

2017-08-01  Werner Lemberg  <wl@gnu.org>

	[sfnt, truetype] Minor adjustments for OpenType 1.8.2.

	* src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
	(tighter) limits.

	* src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
	version explicitly allows all negative values for the number of
	contours if we have a composite glyph (this is for better backwards
	compatibility I guess), but it still recommends value -1.

2017-07-26  Werner Lemberg  <wl@gnu.org>

	[cff] Integer overflow.

	Reported as

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

	* src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
	cf2_glyphpath_curveTo): Use ADD_INT32.

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

	[base] Fix memory leak.

	Reported as

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

	* src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
	of error.

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

	[base] Integer overflow.

	Reported as

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

	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
	FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.

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

	* src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.

	Also improve tracing message.

	Problem reported as

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

2017-07-07  Werner Lemberg  <wl@gnu.org>

	[cff] Integer overflow.

	Reported as

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

	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.

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

	* src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.

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

	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).

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

	[truetype] Prevent address overflow (#51365).

	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.

2017-07-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.

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

	[truetype] Integer overflow.

	Reported as

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

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

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

	* src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.

2017-06-28  Ben Wagner  <bungeman@google.com>

	Avoid Microsoft compiler warnings (#51331).

	While clang's sanitizer recommends a cast to unsigned for safe
	negation (to handle -INT_MIN), both MSVC and Visualc emit warning
	C4146 if an unsigned value gets negated.

	* include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
	src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
	subtraction.

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

	* src/cff/cffparse.c (do_fixed): Fix typo.

	Spotted by chris <chris@gcjd.org>.

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

	[truetype] Integer overflows.

	Reported as

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

	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
	NEG_LONG.

	* src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.

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

	[truetype] Integer overflows.

	Reported as

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

	* src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.

2017-06-22  Werner Lemberg  <wl@gnu.org>

	[cff, truetype] Integer overflows.

	Reported as

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

	* src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
	SUB_INT32.

	* src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.

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

	[sfnt] Synthesize a Unicode charmap if one is missing.

	* src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
	* src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
	tt_cmap_unicode_done, tt_cmap_unicode_char_index,
	tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
	synthetic Unicode charmap class.
	(tt_get_cmap_info): Make sure the callback is available.

	* src/sfnt/sfobjs.c (sfnt_load_face)
	[FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
	synthesize one.

	* include/freetype/config/ftoption.h: Document it.
	* devel/ftoption.h: Ditto.

2017-06-20  Tony Theodore  <tonyt@logyst.com>

	Fix pkg-config in freetype-config for cross-compiling (#51274).

	* builds/unix/unix-def.in (PKG_CONFIG): New variable.
	(freetype-config): Use it in sed expression.

	* builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.

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

	[cff, truetype] Integer overflows.

	Reported as

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

	* src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.

	* src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.

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

	[base, smooth] LCD filtering cleanups.

	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
	Clean up, start filtering from the bottom-left origin.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.

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

	[truetype] Integer overflows.

	Reported as

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

	* src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
	ADD_LONG and SUB_LONG.

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

	[bdf, cff] Integer overflows.

	Reported as

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

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
	direct code to avoid value negation.

	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
	ADD_INT32.

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

	* src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.

	FreeType only sets a default active encoding for Unicode.

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

	[cff, truetype] Integer overflows.

	Reported as

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

	* src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.

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

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

	[cff] Integer overflows.

	Reported as

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

	* src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
	ADD_INT32.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
	ADD_INT32.

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

	[truetype] Fix TT_Set_Var_Design.

	Reported by Nikolaus Waxweiler <madigens@gmail.com>.

	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
	case where we have less input coordinates than axes.

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

	* src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.

	Bug introduced 2017-05-28.

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

	[cff, truetype] Integer overflows.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186

	* src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.

	* src/truetype/ttinterp.c (Round_None, Round_To_Grid,
	Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
	Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
	SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
	FT_PAD_ROUND_LONG
	(Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
	(_iup_worker_shift): Use SUB_LONG and ADD_LONG.

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

	Provide more macros for flooring, ceiling, and rounding.

	These versions don't produce run-time errors due to integer
	overflow.

	* include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
	(FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
	FT_PIX_CEIL_LONG): New macros.
	(FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
	FT_PIX_CEIL_INT32): New macros.

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

	Remove unused macros.

	* include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
	NEG_INT): Deleted.

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

	*/*: Remove `OVERFLOW_' prefix.

	This increases readability.

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

	[cff, truetype] Integer overflows.

	Reported as

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

	* src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.

	* src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
	OVERFLOW_SUB_LONG.

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

	[cff] Integer overflows.

	Reported as

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

	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.

	* src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
	branches.

2017-06-05  Werner Lemberg  <wl@gnu.org>

	[cff] Integer overflow.

	Reported as

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

	* src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.

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

	[cff, truetype] Integer overflows.

	Reported as

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

	* src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.

	* src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
	OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.

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

	[base, cff, truetype] Integer overflows.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068

	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.

	* src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
	(cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.

	* src/truetype/ttgload.c (compute_glyph_metrics): User
	OVERFLOW_SUB_LONG.

	* src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
	Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
	Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.

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

	* builds/unix/freetype-config.in: Fix pkg-config test (#51162).

	Patch directly taken from bug report.

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

	[bdf] Synchronize sanity checks with pcf driver.

	Reported as

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

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
	Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
	RESOLUTION_Y properties.

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

	[cff, truetype] Integer overflows.

	Reported as

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

	* src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.

	* src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
	(Ins_SUB): Use OVERFLOW_SUB_LONG.
	(Ins_NEG): Use NEG_LONG.

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

	ftcalc.h: Avoid left-shift of negative numbers.

	Reported as

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

	* include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
	INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.

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

	[cff] Even more integer overflows.

	Reported as

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

	* src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
	OVERFLOW_ADD_INT32.

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

	[cff] More integer overflows.

	Reported as

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

	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.

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

	[bdf] Don't left-shift negative numbers.

	Reported as

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

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.

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

	[bdf] Fix integer scanning routines.

	Reported as

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

	* src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
	Stop scanning if result would overflow.

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

	[cff] Fix integer overflows.

	Reported as

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

	* src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
	(cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.

2017-06-01  Werner Lemberg  <wl@gnu.org>

	[smooth] Some 32bit integer overflow run-time errors.

	* src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
	[!STANDALONE]: Include FT_INTERNAL_CALC_H.
	(gray_render_cubic): Use those macros where appropriate.

2017-06-01  Werner Lemberg  <wl@gnu.org>

	* src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.

2017-06-01  Werner Lemberg  <wl@gnu.org>

	[psaux] 32bit integer overflow tun-time errors (#46149).

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.

2017-06-01  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.

	Problem reported by Marek Kašík <mkasik@redhat.com>.

	The problematic font that exceeds the old limit is Padauk-Bold,
	version 3.002, containing bytecode generated by a buggy version of
	ttfautohint.

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

	[cff] 32bit integer overflow run-time errors 2/2 (#46149).

	This commit handles the new engine.

	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
	OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
	NEG_INT32): New macros.

	* src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.

	* src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
	cf2_hintmap_map, cf2_glyphpath_hintPoint,
	cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
	cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
	OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
	NEG_INT32 where appropriate.

	* src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
	cf2_interpT2CharString): Ditto.
	Also add some other code where needed to avoid overflow.

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

	[cff] 32bit integer overflow run-time errors 1/2 (#46149).

	This commit handles the old engine.

	* src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
	(cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
	OVERFLOW_SUB_LONG where needed.

	* src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
	(power_ten_limits): New static array.
	(do_fixed): Use it to prevent multiplication overflow.
	(cff_parser_run): Use OVERFLOW_ADD_LONG.

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

	[psaux] Correctly handle sequences of multiple number signs.

	* src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
	if we encounter more than a single sign.

2017-05-29  Werner Lemberg  <wl@gnu.org>

	[pcf] 32bit integer overflow run-time errors (#46149).

	* src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
	`fontAscent' and `fontDescent'.
	(pcf_load_font): Add sanity checks for global height.
	Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
	RESOLUTION_X, and RESOLUTION_Y properties.

2017-05-29  Werner Lemberg  <wl@gnu.org>

	Handle some integer overflow run-time errors (#46149, #48979).

	This commit (mainly for 32bit CPUs) is the first of a series of
	similar commits to handle known integer overflows.  Basically, all
	of them are harmless, since they affect rendering of glyphs only,
	not posing security threats.  It is expected that fuzzying will show
	up more overflows, to be fixed in due course.

	The idea is to mark places where overflows can occur, using macros
	that simply cast to unsigned integers, because overflow arithmetic
	is well defined in this case.  Doing so suppresses run-time errors
	of sanitizers without adding computational overhead.

	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
	OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.

	* src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
	FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
	ft_corner_orientation): Use new macros.

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.

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

	* include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.

	This macro is not used.

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

	[cff] s/cf2_floatToFixed/cf2_doubleToFixed/.

	The new name better describes what the macro actually does;
	additionally, we don't need a trailing `f' for literals (there was
	only a single such instance in the code, but this caused a clang
	warning because the macro itself uses `double' literals).

	* src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
	src/cff/cf2font.c, src/cff/cf2hints.c: Updated.

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

	Fix negation of INT_MIN and LONG_MIN (#46149).

	* src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
	value, to be used as the result.
	(FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
	FT_Vector_NormLen): Updated.

2017-05-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix handling of design coordinates (#51127).

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
	coordinates if we have to create the `blends->coord' array.
	(TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
	coordinates if no instance is selected yet.

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

	[bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).

	Problem reported by Marek Kašík <mkasik@redhat.com>, cf.

	  https://bugzilla.redhat.com/show_bug.cgi?id=1451795

	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
	(PCF_Face_Init): Implement it.

2017-05-20  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Always use interpreter v35 for B/W rendering (#51051).

	* src/truetype/ttgload.c (tt_loader_init)
	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
	`subpixel_hinting_lean', `grayscale_cleartype', and
	`vertical_lcd_lean' accordingly.

	* src/truetype/ttinterp.c (Ins_GETINFO): Updated.
	(TT_RunIns): Update `backward_compatibility' flag.

2017-05-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Implement minimal dynamic padding for LCD filtering.

	Extra bitmap padding for LCD filtering depends on the filter.  The
	default 5-tap filter needs 2 extra subpixels.  The light 3-tap filter
	needs only 1 extra subpixel.  This space could be already available
	due to rounding.  In order to optimize the padding, we now expand
	CBox for the given filter weights before rounding.

	This change breaks current Skia (and Firefox).

	* include/freetype/internal/ftobjs.h (FT_LibraryRec)
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
	FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
	LCD padding.

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

	[sfnt] Return proper scaling values for SBIX bitmaps.

	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.

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

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

	[truetype] Fix error handling for embedded bitmaps.

	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.

	* src/truetype/ttgload.c (TT_Load_Glyph)
	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
	scalable.

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

	[autofit] Make autohint warping NORMAL option.

	This moves warping option from LIGHT to NORMAL mode.  This makes LIGHT
	truly void of hinting in x-direction, with left side bearing never
	changed and right side bearing only altered by advance rounding.
	Therefore, LIGHT is now ready to return fractional advance.  As a
	NORMAL option, warping substitutes normal hinting.

	* src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
	* src/autofit/aflatin.c (af_latin_hints_apply): Updated.
	* src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.

	* src/autofit/afloader.c (af_loader_load_glyph): Handle warping
	phantom points as normal.

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

	Remove remnants of raster pool.

	* include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
	`raster_pool' and `raster_pool_size' fields.

	* src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
	(ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.

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

	* Version 2.8 released.
	=======================


	Tag sources with `VER-2-8'.

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

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/.

	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 8.
	(FREETYPE_PATCH): Set to 0.

	* builds/unix/configure.raw (version_info): Set to 20:0:14.
	* CMakeLists.txt (VERSION_MINOR): Set to 8.
	(VERSION_PATCH): Set to 0.

2017-05-12  Hin-Tak Leung  <htl10@users.sourceforge.net>

	Fix `FT_UINT_TO_POINTER' macro for Windows.

	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]:
	Fix definition.

2017-05-11  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Chakma script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.

2017-05-10  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Kayah Li script.

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

	* src/autofit/afscript.h: Add Kayah Li standard character.

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data.

2017-05-10  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Bamum script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data.

2017-05-10  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Saurashtra script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra
	data.

2017-05-10  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Buhid script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data.

2017-05-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Shavian script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data.

2017-05-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Vai script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data.

2017-05-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Osmanya script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data.

2017-05-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Coptic script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.

2017-05-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Carian script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data.

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

	[truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab).

	Reported by Roy Tam <roytam@gmail.com>.

	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.

2017-05-07  Roy Tam  <roytam@gmail.com>
	    Werner Lemberg  <wl@gnu.org>

	[truetype] More tricky fonts (mainly from Dynalab).

	* src/truetype/ttobjs.c (tt_check_trickyness_family,
	tt_check_trickyness_sfnt_ids): Add them.

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

	[truetype] Add tricky font `DLCHayMedium' (from Dynalab).

	Reported by Roy Tam <roytam@gmail.com>.

	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.

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

	*/*: s/backwards compatibility/backward compatibility/.

2017-05-03  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Unified Canadian Syllabics script.

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

	* src/autofit/afscript.h: Add Unified Canadian Syllabics standard
	character.

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified
	Canadian Syllabics data.

2017-05-03  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org>

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

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

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

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

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

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

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

2017-05-03  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Avestan script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data.

2017-05-02  Behdad Esfahbod  <behdad@behdad.org>

	[truetype] Make `IUP' gvar deltas do the same as Apple (#50832).

	When points are not touched by gvar interpolation deltas, FreeType
	gave a slightly different result than Apple's CoreText.

	The OpenType working group will update the specification to document
	the following behaviour: If the two points with deltas to the `left'
	and `right' of the untouched point have the same coordinate, then
	the inferred delta for the untouched point should be zero.

	* src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new
	behaviour.

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

	[autofit] Remove `slight' auto-hint mode again.

	A poll on freetype-devel favoured changes directly applied to
	`light'.

	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT,
	FT_RENDER_MODE_SLIGHT): Removed.

	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
	(af_latin_hints_init), src/autofit/aflatin2.c
	(af_latin2_hints_init): Revert change from 2017-04-22.

	* src/autofit/afloader.c (af_loader_load_glyph) Remove references to
	FT_RENDER_MODE_SLIGHT.
	[AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics
	unconditionally.

	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from
	2017-04-22.

	* src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22.

	* src/pshinter/pshalgo.c (ps_hints_apply): Revert change from
	2017-04-22.

	* src/smooth/ftsmooth.c (ft_smooth_render): Revert change from
	2017-04-22.

	* docs/CHANGES: Updated.

2017-04-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix metrics computation.

	Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
	Nikolaus Waxweiler <madigens@gmail.com>.

	* src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of
	auto-hinter metrics.  Without this change, multiple size changing
	calls for a single face fail.

2017-04-29  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttdriver.c (tt_size_request): Properly check `error'.

	Reported by Earnestly <zibeon@googlemail.com> in

	  https://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html

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

	Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.

	* include/freetype/config/ftoption.h
	(AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
	default.

	* src/autofit/afloader.c (af_loader_load_glyph): Use
	AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.

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

	* include/freetype/freetype.h (FT_Render_Mode): Fix order.

	This retains backward compatibility.

	Noted by Alexei.

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

	[truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).

	* src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to
	hold hinted metrics.
	Make `metrics' a pointer so that `tt_glyph_load' can easily switch
	between metrics.

	* src/truetype/ttdriver.c (tt_size_request): Updated.
	(tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is
	used.

	* src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph,
	TT_Process_Composite_Component, load_truetype_glyph,
	compute_glyph_metrics, TT_Load_Glyph): Updated.

	* src/truetype/ttinterp.c (TT_Load_Context): Updated.

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

	* src/truetype/ttsubpix.c (sph_set_tweaks): Updated.

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

	Add new `slight' auto-hinting mode.

	This mode uses fractional advance widths and doesn't scale glyphs
	horizontally, only applying vertical scaling and hinting.

	At the same time, the behaviour of the `light' auto-hinter gets
	restored for backward compatibility: Both vertical and horizontal
	scaling is again based on rounded metrics values (this was changed
	in a commit from 2017-03-30 as a side effect).  To be more precise,
	the behaviour is restored for TrueType fonts only; for other font
	formats like Type 1, this is a new feature of the `light' hinting
	mode.

	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro.
	(FT_RENDER_MODE_SLIGHT): New render mode.

	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add
	`autohint_mode' and `autohint_metrics' fields.

	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
	(af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init):
	Updated.

	* src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use
	`autohint_metrics'.
	(af_loader_load_glyph): s/internal/slot_internal/.
	Initialize `autohint_metrics' and `autohint_mode' depending on
	current auto-hint mode.
	Use `autohint_metrics'.
	Updated.

	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated.

	* src/base/ftobjs.c (FT_Load_Glyph): Updated.
	(FT_New_Size): Allocate `internal' object.

	* src/pshinter/pshalgo.c (ps_hints_apply): Updated.

	* src/smooth/ftsmooth.c (ft_smooth_render): Updated.

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

	Introduce `FT_Size_InternalRec' structure.

	We are going to extend this later on.

	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
	structure with a single field `module_data'.

	* src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
	`FT_Size' structure.

	* src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
	`size->internal->module_data' instead of `size->internal'.

	* src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
	(cff_size_init, cff_size_select, cff_size_request): Use
	`size->internal->module_data' instead of `size->internal'.

	* src/cif/cidobjs.c (cid_size_done, cid_size_init,
	cid_size_request): Use `size->internal->module_data' instead of
	`size->internal'.

	* src/psaux/psobjs.c (t1_builder_ini): Use
	`size->internal->module_data' instead of `size->internal'.

	* src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
	Use `size->internal->module_data' instead of `size->internal'.

2017-04-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftsmooth.h: Remove unused guards and declaration.

2017-04-16  Hin-Tak Leung  <htl10@users.sourceforge.net>

	Fix tracing messages.

	* src/base/ftobjs.c (FT_Face_GetCharVariantIndex,
	FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print
	correct function name.

2017-04-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Old Turkic script.

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

	* src/autofit/afscript.h: Add Old Turkic standard characters.

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data.

2017-04-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Gothic script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data.

2017-04-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Cypriot script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data.

2017-04-08  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Deseret script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data.

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

	[autofit] Fix invalid character range description (#50745).

	Also reported as

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

	* src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in
	recent commit.

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

	[ftfuzzer] Fix clang warnings.

	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add
	casts.

2017-04-06  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Lisu script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data.

2017-04-06  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Osage script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data.

2017-04-06  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Glagolitic script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data.

2017-04-06  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Tai Viet script.

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

	* src/autofit/afscript.h: Add Tai Viet standard characters.

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data.

2017-04-06  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for Tifinagh script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data.

2017-04-06  Sascha Brawer  <sascha@google.com>
	    Werner Lemberg  <wl@gnu.org

	[autofit] Add support for N'Ko script.

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

	* src/autofit/afscript.h: Add N'Ko standard characters.

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.

2017-04-06  Sascha Brawer  <sascha@google.com>

	[autofit] Add support for Adlam script.

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

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

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data.

2017-04-06  Sascha Brawer  <sascha@google.com>

	[autofit] Add support for Ol Chiki script.

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

	* src/autofit/afscript.h: Add Ol Chiki standard character.

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data.

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

	[truetype] Avoid reexecution of `fpgm' and `prep' in case of error.

	Reported as

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

	* include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New
	error code.

	* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution
	of these two opcodes in `glyf' bytecode.
	(TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode
	in case of error since function tables can no longer be modified
	(due to the changes in `Ins_FDEF' and `Ins_IDEF').  This change can
	enormously speed up handling of broken fonts.

2017-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'.

	* src/autofit/aflatin.c (af_latin_hints_init): Updated.
	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.

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

	* src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H.

	Otherwise FT_UINT_TO_POINTER might not be defined.

	Problem reported by Alexei.

2017-03-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'.

	* include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it.
	* src/autofit/afcjk.c (af_cjk_hints_init): Updated.
	* src/autofit/aflatin.c (af_latin_hints_init): Ditto.
	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.

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

	* src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04.

	Allow CFFs containing a single font to have an empty font name.

	Problem reported by 張俊芝 <418092625@qq.com> in

	  https://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html

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

	* src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also.

	Requested by Dave Arnold.

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

	[truetype] Fix HVAR and VVAR handling (#50678).

	* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
	glyph indices larger than `mapCount' as described in the
	specification.

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

	[truetype] Allow linear scaling for unhinted rendering (#50470).

	* src/truetype/ttdriver.c (tt_size_request): Revert change from
	2011-07-16; the intended metrics fix seems now to be implemented in
	a different way, making the patch unnecessary.  Note that this
	change was usually patched out by all major GNU/Linux distributions
	due to heavy side effects.

	* src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph):
	Refer to the metrics of the `TT_Size' object.

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

	[truetype] Fix thinko related to PS name of default named instance.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
	name ID values, not indices into the array of name entries.

2017-03-27  Werner Lemberg  <wl@gnu.org>

	[cid, truetype] Don't use `index' as a variable name.

	At least on FreeBSD there is a global declaration of `index' in file
	`/usr/include/strings.h'.

	* src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
	appropriate.

2017-03-27  Wojciech Mamrak  <wmamrak@gmail.com>

	[sfnt] Minor improvement for handling kern tables.

	* src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
	cross-stream kerning tables since we reject format 2 tables later
	on anyways.
	Modify code for limit test...
	(tt_face_get_kerning): ... to avoid a limit test here.

2017-03-27  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix compiler warnings.

	Reported by Alexander Hedges <ahedges@student.ethz.ch>.

	* src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
	`property_name' with `FT_UNUSED' where necessary.

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

	* src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.

	Reported as

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

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

	[psaux] Better protect `flex' handling.

	Reported as

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

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
	<callothersubr>: Since there is not a single flex operator but a
	series of subroutine calls, malformed fonts can call arbitrary other
	operators after the start of a flex, possibly adding points.  For
	this reason we have to check the available number of points before
	inserting a point.

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

	[sfnt] Fix check for default named instance.

	* src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
	bytes, not two...

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

	Make MM fonts work (again).

	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
	return value of `ft_face_get_mvar_service'; instead, check whether a
	service is actually returned.

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

	[truetype] Some variable renamings.

	Too much local variables holding different structures were called
	`metrics'.

	* src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.

	* src/truetype/ttgload.c (tt_get_metrics_incr_overrides,
	compute_glyph_metrics): s/metrics/incr_metrics/.
	(load_sbit_image): s/metrics/sbit_metrics/.

	* src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
	(tt_size_init_bytecode): s/metrics/tt_metrics/.
	(tt_size_reset): s/metrics/size_metrics/.

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

	[sfnt] Don't add instances to non-variation fonts.

	* src/sfnt/sfobjs.c (sfnt_init_face): Fix it.

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

	* src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).

2017-03-18  Werner Lemberg  <wl@gnu.org>

	Introduce FT_UINT_TO_POINTER macro (#50560).

	We have to make a separate case for Windows 64's LLP64 data model.

	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.

	* src/truetype/ttgload.c (load_truetype_glyph): Use it.

2017-03-18  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).

	The problematic font that exceeds the old limit is Lato-Regular,
	version 2.007, containing bytecode generated by a buggy version of
	ttfautohint.

2017-03-18  Werner Lemberg  <wl@gnu.org>

	[truetype] Another limitation for bytecode loop count maximum.

	Reported as

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

	* src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
	by number of glyphs also.

2017-03-18  Werner Lemberg  <wl@gnu.org>

	[ftfuzzer] Minor improvement.

	* src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
	bitmap strikes are active.

2017-03-18  Werner Lemberg  <wl@gnu.org>

	Improve `make multi'.

	* src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.

	* src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.

	* src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.

	* src/sfnt/pngshim.c: Guard file with
	TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.

	* src/sfnt/ttbdf.c: Avoid empty source file.
	* src/sfnt/ttpost.c: Guard file with
	TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
	* src/sfnt/ttsbit.c: Guard file with
	TT_CONFIG_OPTION_EMBEDDED_BITMAPS.

	* src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
	source file.

	* src/truetype/ttsubpix.c: Guard file with
	TT_USE_BYTECODE_INTERPRETER also.

	* src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.

	* src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
	src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
	src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
	src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
	src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
	src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
	entries.

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

	Fixes for conditional compilation.

	* src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
	earlier.

	* src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
	TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
	(sfnt_done_face): Protect some code with
	TT_CONFIG_OPTION_GX_VAR_SUPPORT.

	* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
	warning.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
	into TT_USE_BYTECODE_INTERPRETER block.

	(tt_loader_init): Put `error' variable into
	TT_USE_BYTECODE_INTERPRETER block.

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

	Fix preprocessor warning.

	* devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
	TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
	value.

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

	`make multi' fixes; compiler warnings.

	* src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.

	* src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.

	* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
	(get_win_string, get_apple_string): Initialize `result'.

2017-03-17  Dave Arnold <darnold@adobe.com>

	[cff] Fix potential bugs in default NDV for CFF2.

	* src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
	vector when `lenNDV' is zero; don't rely on zero-init.
	Save `lenNDV' as part of cache key even when `lenNDV' is zero.

2017-03-17  Dave Arnold <darnold@adobe.com>

	[cff] Fix CFF2 stack allocation.

	* src/cff/cffparse.c (cff_parser_init) add 1 for operator.

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

	* src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.

	Reported as

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

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

	Remove clang compiler warnings (#50548).

	* include/freetype/internal/tttypes.h (TT_FaceRec): Make
	`var_postscript_prefix_len' unsigned.

	* src/autofit/afwarp.c (af_warper_compute_line_best): Remove
	redundant assignment.

	* src/cff/cffload.c (cff_subfont_load): Add casts.

	* src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.

	* src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
	keyword.
	Add casts.
	(fixed2float): Add cast.
	(sfnt_get_var_ps_name): Make `p' always initialized.
	Add casts.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.

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

	[ftfuzzer] Limit number of tested faces and instances.

	This is inspired by the discussion in and analysis of

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

	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
	up to 20 face indices.
	Use only up to 20 instance indices.

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

	* src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.

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

	[sfnt] Implement PS names for font instances [3/3].

	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.

	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
	`var_postscript_prefix' and `var_postscript_prefix_len'.

	* src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
	(sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
	(get_win_string, get_apple_string): Remove `const' from return
	value.
	(MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
	(hexdigits): New array.
	(sfnt_get_var_ps_name): New function, implementing Adobe TechNote
	5902 to construct a PS name for a variation font instance.
	(sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.

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

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
	`face->postscript_name' to trigger recalculation for new instance
	parameters.

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

	[sfnt] Implement PS names for font instances [2/3].

	* src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
	New function to find the shortest representation of a 16.16
	fractional number.

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

	[sfnt] Implement PS names for font instances [1/3].

	Add 128bit MurmurHash 3 function.

	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.

	* src/sfnt/sfdriver.c (ROTL32): New macro.
	(fmix32, murmur_hash_3_128): New functions.

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

	[truetype] Ignore invalid MVAR tags.

	Reported as

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

	* src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
	warning for invalid tags.
	(tt_apply_mvar): Ignore invalid tags.

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

	[truetype] Store and use design coordinates also.

	* include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
	Add `normalizedcoords' argument.

	* src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
	the design coordinates of the current instance.
	Updated.

	* src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
	(tt_set_mm_blend): ... New function.
	Convert data in `normalizedcoords' array to `coords' array on
	demand.
	(TT_Set_Var_Design): Store argument data in `coords' array.
	(TT_Get_Var_Design): Get data from `coords' array.
	(tt_get_var_blend): Updated.
	(tt_done_blend): Updated.

	* src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.

	* src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.

	* src/cff/cffobjs.c (cff_face_init): Updated.

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

	src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.

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

	[sfnt] Another fix for buggy variation fonts.

	Reported as

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

	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
	instances to zero for `CFF' fonts table, ensure that there is no
	`CFF2' present also (which gets priority).

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

	[sfnt] Improve handling for buggy variation fonts.

	Reported as

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

	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
	instances to zero for `CFF' fonts table, ensure that there is no
	`glyf' table present also (which gets priority).

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

	[sfnt, truetype] Always provide default instance.

	As documented in the OpenType specification, an entry for the
	default instance may be omitted in the named instance table.  In
	particular this means that even if there is no named instance table
	in the font we actually do have a named instance, namely the default
	instance.

	For consistency, we always want the default instance in our list of
	named instances.  If it is missing, we try to synthesize it.

	* src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
	instance is in the table of named instances.  Otherwise adjust
	number of instances.

	* src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
	(TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
	instances.
	Sythesize a named instance entry if necessary.
	(tt_done_blend): Free `normalized_stylecoords'.

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

	[sfnt] Remove redundant code.

	* src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
	`num_instances', which will always succeed.

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

	[sfnt] Add `get_name_id' service.

	* include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
	typedef.
	(SFNT_Interface): Add `get_name_id' field.
	(FT_DEFINE_SFNT_INTERFACE): Updated.

	* src/sfnt/sfdriver.c (search_name_id): Rename to...
	(sfnt_get_name_id): ... this.
	(sfnt_get_ps_name, sfnt_interface): Updated.

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

	[truetype] Make `TT_Set_MM_Blend' set named instance index.

	* src/truetype/ttgxvar.h (GX_Blend): New array
	`normalized_stylecoords'.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
	`normalized_stylecoords'.
	(TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
	accordingly.

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

	[truetype] Split off designer/normalized conversion routines.

	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
	code designer->normalized coordinates to...
	(ft_var_to_normalized): ... New function.
	(TT_Get_Var_Design): Split off conversion code normalized->designer
	coordinates to...
	(ft_var_to_design): ... New function.

2017-02-28  Werner Lemberg  <wl@gnu.org>

	[sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.

	* src/sfnt/sfdriver.c (sfnt_ps_map): New array.
	(sfnt_is_postscript): New function.
	(char_type_func): New typedef.
	(get_win_string, get_apple_string): Add argument to specify
	character checking function.
	Add argument whether argument checking failures should be reported.
	Update callers.
	(search_name_id): Fix return value.

2017-02-23  Werner Lemberg  <wl@gnu.org>

	[sfnt] Split off another bit of `sfnt_get_ps_name'.

	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
	functionality into...
	(search_name_id): ... New function.

2017-02-23  Werner Lemberg  <wl@gnu.org>

	[sfnt] Modularize `sfnt_get_ps_name'.

	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
	functionality into...
	(IS_WIN, IS_APPLE): ... New macros.
	(get_win_string, get_apple_string): ... New functions.

2017-02-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Minor improvement.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
	load_truetype_glyph): Remove unnecessary tests.

2017-02-23  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.

	For orthogonality with other structure field names.

	Update all users.

2017-02-22  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_hline): Improve code.

2017-02-20  Dominik Röttsches  <drott@google.com>

	Fix some `ttnameid.h' entries (#50313).

	* include/freetype/ttnameid.h:
	s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
	s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.

2017-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Finish support for `random' operator.

	* src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.

	* src/cff/cffobjs.c: Updated.
	(cff_driver_init): Initialize random seed value.

	* src/cff/cffload.c (cff_random): New function.
	(cff_subfont_load): Add `face' argument.
	Update all callers.
	Initialize random number generator with a proper seed value.
	(cff_font_load): Add `face' argument.
	Update all callers.

	* src/cff/cffload.h: Updated.

	* src/cff/cf2intrp.c (CF2_FIXME): Removed.
	(cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
	initialize random seed value.
	<cff_op_random>: Use new random seed framework.

2017-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Sanitize `initialRandomSeed'.

	* src/cff/cffload.c (cff_load_private_dict): Make
	`initial_random_seed' value always positive.

2017-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Introduce `random-seed' property (2/2).

	* src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
	(open_face): Initialize `face->internal->random_seed'.
	(FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.

	* src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
	property.

2017-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Introduce `random-seed' property (1/2).

	We need this for support of the `random' operator.

	* include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
	field `random_seed'.

	* src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.

2017-02-17  Werner Lemberg  <wl@gnu.org>

	Remove clang warnings.

	* src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
	keyword.

	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
	Initialize some variables.

2017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
	    Werner Lemberg  <wl@gnu.org>

	Add face property for stem darkening.

	* include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
	macro.

	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
	`no_stem_darkening' field.

	* src/autofit/afloader.c (af_loader_load_glyph),
	src/autofit/afmodule.c (af_property_set): Updated.

	* src/base/ftobjs.c: Include FT_AUTOHINTER_H.
	(ft_open_face_internal): Updated.
	(FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.

	* src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.

	* src/cff/cffdrivr.c (cff_property_set): Updated.

2017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
	    Werner Lemberg  <wl@gnu.org>

	Add face property for LCD filter weights.

	* include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
	FT_LCD_FILTER_FIVE_TAPS): New macros.
	(FT_LcdFiveTapFilter): New typedef.

	* include/freetype/ftobjs.h (FT_Face_InternalRec)
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
	(FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
	(ft_lcd_filter_fir): New prototype.
	(FT_LibraryRec): Updated.

	* src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
	(ft_lcd_filter_fir): ... this base function.
	Updated.
	(_ft_lcd_filter_legacy): Updated.
	(FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.

	* src/base/ftobjs.c (ft_open_face_internal): Updated.
	(FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
	`FT_Face_Internal'.

2017-02-14  Nikolaus Waxweiler  <madigens@gmail.com>
	    Werner Lemberg  <wl@gnu.org>

	Add new function `FT_Face_Properties'.

	This commit provides the framework, to be filled with something
	useful in the next commits.

	* include/freetype/freetype.h (FT_Face_Properties): Declare.

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

2017-02-13  Werner Lemberg  <wl@gnu.org>

	[autofit] Prevent overlapping blue zones.

	Problem reported as

	  https://github.com/google/fonts/issues/632

	The font in question (Nunito) has values 705 and 713 for the
	reference and overshoot values, respectively, of the first blue
	zone.  Blue zone 2, however, has value 710 for both the reference
	and overshoot.  At 12ppem, reference and overshoot of blue zone 0
	becomes 8px, while blue zone 2 becomes 9px.

	A peculiarity of this font is that the tops of isolated vertical
	stems like `N' have a slight overshoot also.  The auto-hinter tries
	to find the nearest blue zone using the *original* coordinates.  For
	vertical stems, this is value 713.  For normal horizontal tops like
	in character `E', this is value 710.  Since value 713 is mapped to
	8px but value 710 to 9px, `N' and similar characters are one pixel
	higher than `E', which looks very bad.

	This commit sanitizes blue zones to avoid such a behaviour.

	* src/autofit/aflatin.c (af_latin_sort_blue): New function.
	(af_latin_metrics_init_blues): Sort blue values and remove overlaps.

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

	* src/smooth/ftgrays.c (gray_sweep): Improve code.

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

	[truetype] Implement `VVAR' table support.

	* src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
	(GX_HVVarTable): ...This.
	(GX_Blend): Add fields for `VVAR' table handling.
	Other minor updates.

	* src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
	(ft_var_load_hvvar): ...This.
	Handle VVAR loading also (controlled by an additional parameter).
	(tt_hadvance_adjust): Renamed to...
	(tt_hvadvance_adjust): ...This.
	Handle application of advance height also (controlled by an
	additional parameter).
	(tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
	`tt_hvadvance_adjust'.

	* src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.

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

	[autofit] Use better blue zone characters for lowercase latin.

	The number of lowercase characters for computing the top flat blue
	zone value was too small (in most cases only `x' and `z').  If one
	of the two characters has a large serif, say, it can happen that
	FreeType must select between two different values, having a 50%
	chance to use the wrong one.  As a result, rendering at larger PPEM
	values could yield uneven lowercase glyph heights.

	Problem reported by Christoph Koeberlin <christoph@koe.berlin>.

	* src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
	with...
	(AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
	... New, extended sets.
	(AF_BLUE_STRINGSET_LATN): Updated.

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

2017-02-04  Werner Lemberg  <wl@gnu.org>

	Make `freetype-config' a wrapper of `pkg-config' if possible.

	Based on ideas taken from

	  http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
	  http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch

	* builds/unix/freetype-config.in: Rewritten.  Use `pkg-config' to
	set output variables if program is available.

	* docs/CHANGES, docs/freetype-config.1: Updated.

2017-02-04  Werner Lemberg  <wl@gnu.org>

	* builds/unix/unix-def.in (freetype-config): Fix permissions.

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

	* src/autofit/afglobal.c (af_face_globals_free): Erase useless code.

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

	* include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.

	Reported by Behdad.

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

	[truetype] Fix MVAR post-action handling.

	Reported as

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

	* src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2.  This
	is important to make `tt_size_reset_iterator' (called in
	`tt_apply_mvar') always work.

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

	Make compilation with FT_CONFIG_OPTION_PIC work again.

	All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.

	* include/freetype/internal/services/svmetric.h
	(FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.

	* src/autofit/aflatin.c (af_latin_hints_compute_edges,
	af_latin_hint_edges): Provide `globals' variable.

	* src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
	variable.

	* src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
	AF_STYLE_CLASSES_GET): Redefine.

	* src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.

	* src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.

	* src/cff/cffpic.h (CffModulePIC): Fix typo.

2017-01-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_render_scanline): Improve code.

2017-01-31  Werner Lemberg  <wl@gnu.org>

	[cff] Provide metrics variation service interface (#50196).

	Only now I've got an OTF with an HVAR table for testing...

	The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
	metrics variations interface.  However, this didn't work with
	`FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.

	* src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
	(cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
	metric service functions from the `truetype' module.
	(cff_service_metrics_variations): New service.
	(cff_services): Updated.

	* src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
	[FT_CONFIG_OPTION_PIC]: Synchronize code.

	* src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
	FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
	load the service from the `truetype' module.

2017-01-31  Werner Lemberg  <wl@gnu.org>

	Add framework to support services with 9 functions.

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

2017-01-31  Werner Lemberg  <wl@gnu.org>

	[base] Fix error handing in MM functions.

	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
	Implement it.

2017-01-31  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix sanity check for `gvar' table (#50184).

	* src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
	variation data for some glyphs.

2017-01-31  Werner Lemberg  <wl@gnu.org>

	[autofit] Avoid uninitialized jumps (#50191).

	* src/autofit/afcjk.c (af_cjk_metrics_check_digits),
	src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
	`advance'.

2017-01-27  Werner Lemberg  <wl@gnu.org>

	s/GB2312/PRC/.

	* include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
	(FT_ENCODING_GB2312): Deprecated.

	* include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
	(TT_MS_ID_GB2312): Deprecated.

	* src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.

	* docs/CHANGES: Updated.

2017-01-26  Werner Lemberg  <wl@gnu.org>

	[base] Add `FT_Get_Sfnt_LangTag' function.

	* include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
	(FT_Get_Sfnt_LangTag): New declaration.

	* src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function.

	* docs/CHANGES: Updated.

2017-01-26  Werner Lemberg  <wl@gnu.org>

	[sfnt] Support `name' table format 1.

	* include/freetype/internal/tttypes.h (TT_LangTagRec): New
	structure.
	(TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.

	* src/sfnt/ttload.c (tt_face_load_name): Add support for language
	tags.
	Reduce array size of name strings in case of invalid entries.
	(tt_face_free_name): Updated.

	* docs/CHANGES: Updated.

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

	[sfnt] s/TT_NameEntry/TT_Name/.

	* include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
	to...
	(TT_NameRec): This.
	(TT_NameTableRec): Updated.

	* src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.

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

	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
	tt_name_entry_ascii_from_other): Renamed to...
	(tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
	respectively.
	(TT_NameEntry_ConvertFunc): Renamed to...
	(TT_Name_ConvertFunc): This.
	(tt_face_get_name): Updated.

	* src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name):
	Updated.

2017-01-24  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Postscript name service for symbol fonts.

	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
	entries also.

2017-01-24  Werner Lemberg  <wl@gnu.org>

	[truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.

	* include/freetype/ftsnames.h
	(FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
	FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
	(FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
	FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.

	* include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
	TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
	(TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
	Deprecated.

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

	* docs/CHANGES: Updated.

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

	[base] Add `FT_Set_Default_Properties' (#49187).

	* include/freetype/ftmodapi.h: Add declaration.

	* src/base/ftinit.c (ft_set_default_properties): Renamed to...
	(FT_Set_Default_Properties): ... this.
	(FT_Init_FreeType): Updated.

	* docs/CHANGES: Updated.

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

	[truetype] Minor updates for OpenType 1.8.1.

	* src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
	removed from the specification; it is now reserved.

	* src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
	(GX_FVar_Head): Remove `countSizePairs'; the corresponding data
	field in the `MVAR' table is now reserved.
	(fvar_fields): Updated.

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

	[truetype] Avoid segfault for invalid variation data.

	* src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
	`itemCount' is not zero.

	Reported as

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

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

	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.

2017-01-17  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ttnameid.h: Updated to OpenType 1.8.1.

	(TT_APPLE_ID_FULL_UNICODE): New macro.

	(TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
	TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
	TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
	TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
	TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
	TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
	TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
	TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
	TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
	TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
	TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
	macros.

	(TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.

	(TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
	TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
	TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
	TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
	TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
	TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
	TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
	TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
	TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
	TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
	TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
	TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
	TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
	TT_MS_LANGID_UIGHUR_PRC): New aliases.

	Remove commented out code.

	(TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
	TT_NAME_ID_VARIATIONS_PREFIX): New macros.

	(HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
	years), use guarded long macros by default and define short versions
	as aliases for the long ones.

2017-01-15  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
	also.

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

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

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

	[truetype] Actually use metrics variation service.

	* src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
	(ft_face_get_mvar_service): New auxiliary function to look up
	metrics variation service.
	(FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
	FT_Set_Var_Blend_Coordinates): Call metrics variation service.

	* src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
	named instances.

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

	[truetype] Provide metrics variation service.

	* include/freetype/internal/services/svmetric.h
	(FT_Metrics_Adjust_Func): Reduce number of necessary parameters.

	* src/truetype/ttgxvar.c: Include FT_LIST_H.
	(tt_size_reset_iterator): New auxiliary function for...
	(tt_apply_var): New function.

	* src/truetype/ttgxvar.h: Updated.

	* src/truetype/ttdriver.c (tt_service_metrics_variations): Add
	`tt_apply_mvar'.

	* include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
	variation service.

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

	[truetype] Parse `MVAR' table.

	* src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
	(GX_Value, GX_MVarTable): New structures.
	(GX_Blend): Add it.

	* src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
	GX_GASP_CASE): New macros.
	(ft_var_get_value_pointer): New auxiliary function to get a pointer
	to a value from various SFNT tables already stored in `TT_Face'.
	(ft_var_load_mvar): New function.
	(TT_Get_MM_Var): Call it.
	(tt_done_blend): Updated.

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

	[truetype] More preparations for MVAR support.

	* src/truetype/ttobjs.c (tt_size_reset): Add argument to make
	function only recompute ascender, descender, and height.

	* src/truetype/ttobjs.h: Updated.

	* src/truetype/ttdriver.c (tt_size_select, tt_size_request):
	Updated.

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

	[pcf] Disable long family names by default.

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

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

	[pcf] Make long family names configurable.

	The change from 2016-09-29 was too radical (except for people using
	the openSuSE GNU/Linux distribution).  To ameliorate the situation,
	PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
	the feature; if set, a new PCF property option
	`no-long-family-names' can be used to switch this feature off.

	* include/freetype/config/ftoption.h, devel/ftoption.h
	(PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.

	* include/freetype/ftpcfdrv.h: New header file (only containing
	comments currently, used for building the documentation).

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

	* src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.

	* src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
	FT_PCF_DRIVER_H.
	(pcf_property_set, pcf_property_get): New functions.
	(pcf_service_properties): New service.
	(pcf_services): Updated.
	(pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
	`no_long_family_names'.

	* src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
	and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.

	* docs/CHANGES: Updated.

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

	[pcf] Introduce a driver structure.

	To be filled later on with something useful.

	* src/pcf/pcf.h (PCF_Driver): New structure.

	* src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
	functions.
	(pcf_driver_class): Updated.

2017-01-08  Werner Lemberg  <wl@gnu.org>

	[truetype] Again some GX code shuffling.

	We need this later on for MVAR also.

	* src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
	an item store variation delta into...
	(ft_var_get_item_delta): ...new function.

2017-01-08  Werner Lemberg  <wl@gnu.org>

	[truetype] Adjust font variation flags for MVAR.

	* include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
	Remove all flags related to MVAR; replace it with...
	(TT_FACE_FLAG_VAR_MVAR): ...this new macro.
	(TT_Face): Remove `mvar_support' field (which was still unused).

2017-01-06  Werner Lemberg  <wl@gnu.org>

	[truetype] More GX code shuffling.

	We need this later on for MVAR also.

	* src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
	variation store into...
	(ft_var_done_item_variation_store): ...new function.

2017-01-06  Werner Lemberg  <wl@gnu.org>

	[truetype] More generalization of GX stuff.

	We need this later on for MVAR also.

	* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
	parameters for delta-set index mapping and item variation store.
	(ft_var_load_item_variation_store): Add parameter for item variation
	store.
	s/hvarData/varData/.
	Move allocation of `hvar_table' to...
	(ft_var_load_hvar): ...this function.
	Updated.

2017-01-06  Werner Lemberg  <wl@gnu.org>

	[truetype] Some GX structure renames for generalization.

	We need this later on for MVAR also.

	* src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
	(GX_ItemVarData): ...this.
	(GX_HVarRegion): Renamed to...
	(GX_VarRegion): ...this.
	(GX_HVStore): Renamed to...
	(GX_ItemVarStore): ...this.
	(GX_WidthMap): Renamed to...
	(GX_DeltaSetIdxMap): ...this.

	(GX_HVarTable): Updated.

	* src/truetype/ttgxvar.c: Updated.

2017-01-06  Werner Lemberg  <wl@gnu.org>

	[truetype] Code shuffling.

	* src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
	item variation store and delta set index mapping into...
	(ft_var_load_item_variation_store,
	ft_var_load_delta_set_index_mapping): ...new functions.

2017-01-06  Werner Lemberg  <wl@gnu.org>

	[truetype] Add HVAR access without advance width map.

	* src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
	`offsetToAdvanceWidthMapping' is zero.
	(tt_hadvance_adjust): Implement direct deltaSet access by glyph
	index.

2017-01-06  Werner Lemberg  <wl@gnu.org>

	[pcf] Revise driver.

	This commit improves tracing and handling of malformed fonts.  In
	particular, the changes to `pcf_get_properties' fix

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

	* src/pcf/pcfread.c (tableNames): Use long names for better
	readability.
	(pcf_read_TOC): Allow at most 9 tables.
	(pcf_get_properties): Allow at most 256 properties.
	Limit strings array length to 256 * (65536 + 1) bytes.
	Better tracing.
	(pcf_get_metric): Trace metric data.
	(pcf_get_metrics): Allow at most 65536 metrics.
	Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
	potential overflow.
	Better tracing.
	(pcf_get_bitmaps): Allow at most 65536 bitmaps.
	Better tracing.
	(pcf_get_encodings, pcf_get_accel): Better tracing.

	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
	These are now shown by `pcf_get_bitmaps'.

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

	* src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.

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

	[cff] More consistency checks for pure CFFs.

	Reported as

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

	* src/cff/cffload.c (cff_font_load): Check element number and size
	of Name and Top DICT indices.

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

	[cff, truetype] Minor tracing improvement.

	* src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
	(tt_face_init): Indent first tracing message from SFNT driver.

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

	[truetype] Various minor fixes.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
	size only if we do native hinting.
	(TT_Load_Glyph): Trace returned error code.

	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
	returned error code.
	(tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
	invalid.

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

	[sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.

	These tables are optional.

	* src/sfnt/sfobjs.c (sfnt_load_face): Implement it.

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

	* src/cff/cffparse.c (cff_parse_num): Simplify.

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

	Various fixes for clang's undefined behaviour sanitizer.

	* src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
	(cff_blend_doBlend): Don't left-shift negative numbers.
	Handle 5-byte numbers byte by byte to avoid alignment issues.

	* src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
	byte to avoid alignment issues.

	* src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
	subrs.

	* src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.

	* src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
	definition of `ft_get_adobe_glyph_index'.

	* src/psnames/pstables.h: Regenerated.

	* src/psnames/psmodule.c: Include `pstables.h' twice to get both
	declaration and definition.

	* src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
	casting.

2017-01-01  Werner Lemberg  <wl@gnu.org>

	[cff] Handle multiple `blend' operators in a row correctly.

	Reported as

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

	* src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
	pointers into `subFont->blend_stack' after reallocation.

2017-01-01  Werner Lemberg  <wl@gnu.org>

	[sfnt] Return correct number of named instances for TTCs.

	Without this patch, requesting information for face index N returned
	the data for face index N+1 (or index 0).

	* src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
	for negative `face_instance_index' values.

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

	*/*: Use hex numbers for errors in tracing messages.

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

	[truetype] Check axis count in HVAR table.

	Reported as

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

	* src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
	(ft_var_load_avar): Fix tracing message.


----------------------------------------------------------------------------

Copyright 2016-2017 by
David Turner, Robert Wilhelm, and Werner Lemberg.

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


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