2021-07-18  Werner Lemberg  <wl@gnu.org>

	* Version 2.11.0 released.
	==========================


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

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

	* README, src/base/ftver.rc, builds/windows/vc2010/index.html,
	builds/windows/visualc/index.html,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
	s/2.10.4/2.11.0/, s/2104/2110/.

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

	* builds/unix/configure.raw (version_info): Set to 24:0:18.
	* CMakeLists.txt (VERSION_MINOR): Set to 11.
	(VERSION_PATCH): Set to 0.

	* builds/toplevel.mk (dist): Ignore more git-related files.

2021-07-17  David Turner  <david@freetype.org>

	* src/smooth/ftgrays.c: Fix compilation if `FT_LONG64` is undefined.

	The code assumed that if `__SSE2__` is defined, then 64-bit integer
	types are available.  This is not the case apparently for certain
	multilib compiler targets like 'x86_32.x86' used by Gentoo.

	This patch fixes the issue by disabling the special code path when
	64-bit integer types are not available.

	Fixes #1071.

2021-07-16  Alex Richardson  <Alexander.Richardson@cl.cam.ac.uk>

	[tests] Allow arbitrary build directories.

	* tests/issue-1063/main.c (main): I am building with a build
	directory that is not directly inside the source tree, so the path
	`../tests/data/As.I.Lay.Dying.ttf` does not resolve to the test
	input file.  This change passes the test data directory as an
	environment variable to allow arbitrary build directories.

	* tests/meson.build: Updated.

2021-07-16  Alex Richardson  <Alexander.Richardson@cl.cam.ac.uk>

	* tests/issue-1063/main.c (main): Fix uninitialized variable.

	I tried running `meson test` but the test just crashed and gdb
	reported that the face argument to `FT_Get_Char_Index` was nonsense.
	With this change the test prints 'Could not open file: ' as it
	should.

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

	[smooth] Minor fixes.

	* src/smooth/ftgrays.c (gray_render_conic): Move variable and
	structure declarations to beginning of function.  Inspite of C99
	compliance we still do this for the sake of backward compatibility.
	This also avoids a shadowing declaration of `count`.
	(gray_convert_glyph_inner): Fix typo.

2021-07-15  Ben Wagner  <bungeman@chromium.org>

	* src/smooth/ftgrays.c: Guard inclusion of `emmintrin.h`.

	Guard inclusion of `emmintrin.h` with `#ifdef __SSE2__`.  The gcc
	version of this header, `xmmintrin.h`, and `mmintrin.h` check that
	the appropriate defines are set before defining anything (are
	internally guarded).  However, the clang versions of these includes
	are not internally guarded.  As a result of this, externally guard
	the inclusion of these headers.

2021-07-15  David Turner  <david@freetype.org>

	[smooth] Implement Bézier quadratic arc flattening with DDA.

	Benchmarking shows that this provides a very slighty performance
	boost when rendering fonts with lots of quadratic Bézier arcs,
	compared to the recursive arc splitting, but only when SSE2 is
	available, or on 64-bit CPUs.

	On a 2017 Core i5-7300U CPU on Linux/x86_64:

	  ftbench -p -s10 -t5 -cb DroidSansFallbackFull.ttf

	  Before: 4.033 us/op  (best of 5 runs for all numbers)
	  After:  3.876 us/op

	  ftbench -p -s60 -t5 -cb DroidSansFallbackFull.ttf

	  Before: 13.467 us/op
	  After:  13.385 us/op

	* src/smooth/ftgrays.c (gray_render_conic): New implementation
	based on DDA and optionally SSE2.

2021-07-15  David Turner  <david@freetype.org>

	[smooth] Minor speedup to smooth rasterizer.

	This speeds up the smooth rasterizer by avoiding conditional
	branches in the hot path.

	- Define a fixed 'null cell', which will be pointed to whenever the
	  current cell is outside of the current target region.  This avoids
	  a `ras.cell != NULL` check in the `FT_INTEGRATE` macro.

	- Also use the null cell as a sentinel at the end of all `ycells`
	  linked-lists, by setting its x coordinate to `INT_MAX`.  This
	  avoids a `if (!cell)` check in `gray_set_cell` as well.

	- Slightly change the worker struct fields to perform a little less
	  operations during rendering.

	Example results (on a 2013 Corei5-3337U CPU)

	  out/ftbench -p -s10 -t5 -bc DroidSansFallbackFull.ttf

	  Before: 5.472 us/op
	  After:  5.275 us/op

	  out/ftbench -p -s60 -t5 -bc DroidSansFallbackFull.ttf

	  Before: 17.988 us/op
	  After:  17.389 us/op

	* src/smooth/ftgrays.c (grat_TWorker): Replace `num_cells` field with
	`cell_free` and `cell_limit`.
	(NULL_CELL_PTR, CELL_MAX_X_VALUE, CELL_IS_NULL): New macros.
	(gray_dump_cells, gray_set_cell, gray_sweep, gray_sweep_direct,
	gray_convert_glyph_inner, gray_convert_glyph): Updated.

2021-07-15  David Turner  <david@freetype.org>

	[tests] Rewrite download script in Python3.

	This commit replaces the bash script with a Python script that does
	the same work, plus avoiding to download anything if the files are
	already installed with the right content.

	We now use the first 8 bytes of each file's sha256 hash for the
	digest.

	* tests/scripts/download-test-fonts.sh: Removed.
	* tests/scripts/download-test-fonts.py: New script.
	* tests/README.md: Updated.

2021-07-15  Alex Richardson  <Alexander.Richardson@cl.cam.ac.uk>

	Support architectures where `long` is smaller than pointers.

	I am currently trying to compile FreeType for CHERI-extended ISAs
	(CHERI-RISC-V and Arm's Morello), but I am getting compiler warnings
	from the `FT_UINT_TO_POINTER` macro.  When compiling with the CHERI
	Clang compiler, not using `uinptr_t` for casts between integers an
	pointers results in the following `-Werror` build failures:

	```
	In file included from .../src/truetype/truetype.c:22:
	  .../src/truetype/ttgload.c:1925:22: error:
	    cast from provenance-free integer type to pointer type will
	    give pointer that can not be dereferenced
	    [-Werror,-Wcheri-capability-misuse]
	  node->data = FT_UINT_TO_POINTER( glyph_index );
	               ^
	  .../include/freetype/internal/compiler-macros.h:79:34: note:
	    expanded from macro 'FT_UINT_TO_POINTER'
	```

	* include/freetype/internal/compiler-macros.h (FT_UINT_TO_POINTER):
	The ISO C standard compliant fix for this would be to use
	`uintptr_t` from `stdint.h`, but I am not sure if this is supported
	by the minimum compiler version.  Therefore, use the
	compiler-defined `__UINTPTR_TYPE__` macro (supported in GCC 4.6+ and
	Clang since about 3.0) before checking for `_WIN64` and falling back
	to `unsigned long`.

2021-07-13  Oleg Oshmyan  <chortos@inbox.lv>

	[base] Fix `FT_Open_Face`'s handling of user-supplied streams.

	This was already true (though undocumented) most of the time, but
	not if `FT_NEW` inside `FT_Stream_New` failed or if the
	`FT_OPEN_XXX` flags were bad.

	Normally, `FT_Open_Face` calls `FT_Stream_New`, which returns the
	user-supplied stream unchanged, and in case of any subsequent error
	in `FT_Open_Face`, the stream is closed via `FT_Stream_Free`.

	Up to now, however, `FT_Stream_New` allocates a new stream even if
	it is already given one by the user.  If this allocation fails, the
	user-supplied stream is not returned to `FT_Open_Face` and never
	closed.  Moreover, the user cannot detect this situation: all they
	see is that `FT_Open_Face` returns `FT_Err_Out_Of_Memory`, but that
	can also happen after a different allocation fails within the main
	body of `FT_Open_Face`, when the user's stream has already been
	closed by `FT_Open_Face`.  It is plausible that the user stream's
	`close` method frees memory allocated for the stream object itself,
	so the user cannot defensively free it upon `FT_Open_Face` failure
	lest it ends up doubly freed.  All in all, this ends up leaking the
	memory/resources used by user's stream.

	Furthermore, `FT_Stream_New` simply returns an error if the
	`FT_OPEN_XXX` flags are unsupported, which can mean either an
	invalid combination of flags or a perfectly innocent
	`FT_OPEN_STREAM` on a FreeType build that lacks stream support.
	With this patch, the user-supplied stream is closed even in these
	cases, so the user can be sure that if `FT_Open_Face` failed, the
	stream is definitely closed.

	* src/base/ftobjs.c (FT_Stream_New): Don't allocate a buffer
	unnecessarily.
	Move error-handling code to make the control flow more obvious.
	Close user-supplied stream if the flags are unsupported.
	`FT_Stream_Open` always sets `pathname.pointer`, so remove the
	redundant (re)assignment.  None of the `FT_Stream_Open...` functions
	uses `stream->memory`, so keep just one assignment at the end,
	shared among all possible control flow paths.
	('Unsupported flags' that may need a stream closure can be either an
	invalid combination of multiple `FT_OPEN_XXX` mode flags or a clean
	`FT_OPEN_STREAM` flag on a FreeType build that lacks stream
	support.)

2021-07-13  Oleg Oshmyan  <chortos@inbox.lv>

	[base] Reject combinations of incompatible `FT_OPEN_XXX` flags.

	The three modes are mutually exclusive, and the documentation of the
	`FT_OPEN_XXX` constants notes this.  However, there was no check to
	validate this in the code, and the documentation on `FT_Open_Args`
	claimed that the corresponding bits were checked in a well-defined
	order, implying it was valid (if useless) to specify more than one.
	Ironically, this documented order did not agree with the actual
	code, so it could not be relied upon; hopefully, nobody did this and
	nobody will be hurt by the new validation.

	Even if multiple mode bits were allowed, they could cause memory
	leaks: if both `FT_OPEN_STREAM` and `stream` are set along with
	either `FT_OPEN_MEMORY` or `FT_OPEN_PATHNAME`, then `FT_Stream_New`
	allocated a new stream but `FT_Open_Face` marked it as an 'external'
	stream, so the stream object was never released.

	* src/base/ftobjs.c (FT_Stream_New): Reject incompatible
	`FT_OPEN_XXX` flags.

2021-07-12  Alex Richardson  <Alexander.Richardson@cl.cam.ac.uk>

	* meson.build: Fix build for other UNIX systems (e.g., FreeBSD).

	Without this change the build of `unix/ftsystem.c` fails because the
	`ftconfig.h` header that defines macros such as `HAVE_UNISTD_H` and
	`HAVE_FCNTL_H` is only being generated for Linux, macOS, and Cygwin
	systems:

	```
	.../builds/unix/ftsystem.c:258:32: error:
	    use of undeclared identifier 'O_RDONLY'
	file = open( filepathname, O_RDONLY );
	```

	Instead of hardcoding a list of operating systems for this check,
	update the logic that decides whether to build the file and set a
	boolean flag that can be checked instead.

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

	[autofit] More clean-ups.

	* src/autofit/afhints.h (AF_GlyphHintsRec): Remove the no longer
	needed fields `xmin_delta` and `xmax_delta`.

	* src/autofit/afhints.c (af_glyph_hints_reload),
	src/autofit/afloader.c (af_loader_load_glyph): Updated.

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

	Small clean-ups for the last few commits.

	* include/freetype/fttrace.h (afwarp): Removed.

2021-07-12  David Turner  <david@freetype.org>

	Remove obsolete `AF_Angle` type and related sources.

	* src/autofit/afangles.c: File removed.  Functions related to
	sorting moved to...
	* src/autofit/afhints.c (af_sort_pos, af_sort_and_quantize_widths):
	This file.
	* src/autofit/afangles.h: File removed.
	* src/autofit/aftypes.h: Updated.
	* src/autofit/autofit.c: Updated.

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

2021-07-12  David Turner  <david@freetype.org>

	Remove experimental auto-hinting 'warp' mode.

	This feature was always experimental, and probably never worked
	properly.  This patch completely removes it from the source code,
	except for a documentation block describing it for historical
	purposes.

	* devel/ftoption.h, include/freetype/config/ftoption.h: Remove
	`AF_CONFIG_OPTION_USE_WARPER`.

	* include/freetype/ftdriver.h: Document 'warping' property as
	obsolete.

	* src/autofit/afwarp.c, src/autofit/afwarp.h: Files removed.
	* src/autofit/*: Remove any code related to warp mode.

2021-07-12  David Turner  <david@freetype.org>

	Remove experimental 'Latin2' writing system (`FT_OPTION_AUTOFIT2`).

	This code has always been experimental and was never compiled anyway
	(`FT_OPTION_AUTOFIT2` does not appear in `ftoption.h` or even any of
	our build files).

	* include/freetype/internal/fttrace.h (aflatin2): Removed.
	* src/autofit/aflatin2.h, src/autofit/aflatin2.c: Files removed.
	* src/autofit/afloader.c: Remove undocumented hook to activate
	Latin2 system.
	* src/autofit/afstyles.h: Remove `ltn2_dflt` style definition.
	* src/autofit/afwrtsys.h: Remove `LATIN2` writing system definition.
	* src/autofit/autofit.c: Updated.

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

	* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): Fix argument.

	Reported by Hin-Tak.

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

	* meson_options.txt: Sort alphabetically; no final full stops.

2021-07-01  Ben Wagner  <bungeman@chromium.org>

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Test `coords`.

	It is undefined behavior to pass `NULL` to `memcpy`.  `coords' is
	passed to `memcpy` but `TT_Get_MM_Blend` and `TT_Get_Var_Design`
	explictly call `tt_set_mm_blend` with `coords` as `NULL`.  In
	addition, `TT_Set_MM_Blend` has a similar possible issue.

2021-06-30  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Support PaintScale in 'COLR' v1 parsing.

	* include/freetype/ftcolor.h (FT_PaintFormat): Renumber values, add
	`FT_COLR_PAINTFORMAT_SCALE`.
	(FT_PaintScale): New structure to represent 'PaintScale*' tables.
	(FT_COLR_Paint): Updated.

	* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration.
	(read_paint): Parse 'PaintScale' and friends.

2021-06-30  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Handle fonts without layer list in 'COLR' v1.

	'COLR' v1 fonts do not necessarily need to have a layer list; for
	this reason, 'fontTools' recently started generating fonts in a way
	that drops the layer list if there are no layers in it.  This
	results in the layer list offset becoming zero, which FreeType
	treated as an invalid table.  Fix that and handle the case for layer
	list offset being 0.  This slightly changes how we need to calculate
	the starting offset for paints.

	* src/sfnt/ttcolr.c (tt_face_load_colr): Handle case of layer list
	offset being zero without outright rejecting table.

2021-06-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/raster/ftraster.c (Render_Single_Pass): Simplify `band_stack'.

2021-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Do not skip the second pass without dropout control.

	The second pass also fixes horizontal lines through the pixel centers.

	* src/raster/ftraster.c (black_TWorker): Do not use `second_pass'.
	(Render_Glyph): Skip the second pass only with the appropriate flag.

2021-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Handle sub-band stack locally.

	* src/raster/ftraster.c (black_TWorker): Move `band_stack' from here..
	(Render_Single_Pass): ... to here and accept limit arguments.
	(Render_Glyph): Updated.

2021-06-25  Anurag Thakur  <anuthadev@gmail.com>

	[CI] Introduce linux CI and refactor job names.

	* .gitlab-ci.yml: Added jobs for building freetype on linux.

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

	[raster] Handle Bézier stack locally.

	* src/raster/ftraster.c (black_TWorker): Move `arcs' from here...
	(Conic_To, Cubic_To): ... to here to tighten their scope.
	(Bezier_Up, Bezier_Down): ... Take the current `arc' argument.

2021-06-28  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Improve paint limit checks

	Paint tables can appear before the `base_glyphs_v1` offset if the
	font is produced with the layer list before the base glyph list.  In
	this case paint tables can occur after the layer list but before the
	base glyph list.  Checks in the 'COLR' v1 code were rejecting fonts
	with this layout.  Improve these checks by calculating a minimum
	offset after which paint tables can occur and use that in safety
	checks.

	* src/sfnt/ttcolr.c (Colr, tt_face_load_colr): Declare
	`paint_start_v1` and calculate that as the minimum of the end of
	layer list and base glyph list.
	(get_child_table_pointer, read_paint, tt_face_get_paint_layers):
	Use that in safety checks.

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

	[raster] Clean up vertical sweep.

	* src/raster/ftraster.c (black_TWorker): Replace the current line
	offset with the pointer and drop the increment.
	(Function_Sweep_Init): Take values as arguments instead of pointers.
	(Vertical_Sweep_*, Horizontal_Sweep_Init, Draw_Sweep): Updated.

2021-06-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Make `band_top' local variable.

	* src/raster/ftraster.c (black_TWorker): Move `band_top' from here...
	(Render_Single_Pass): ... to here, and refactor.
	(Render_Glyph): Updated.

2021-06-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Adjust sub-band bisecting limits.

	We can bisect a band until it is just a single scan line.  This might
	be slow and cause time-outs but if we need to impose limits it should
	be elsewhere.

	* src/raster/ftraster.c (Render_Single_Pass): Tweak sub-banding.

2021-06-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/raster/ftraster.c (Render_Single_Pass): Remove dead code.

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

	[base] Add trace level to logging output.

	Some practical debugging work has shown that displaying level X of
	an `FT_TRACEX` macro in the output of `FT2_DEBUG="...  -v"` would be
	very helpful to find out which trace level should be selected.  As
	an example, we now get output like

	```
	[ttobjs:2]    TTF driver
	[ttobjs:2]      SFNT driver
	[sfobjs:2]      not a font using the SFNT container format
	[t1objs:2]    Type 1 driver
	[stream:7]    FT_Stream_EnterFrame: 14 bytes
	```

	* include/freetype/internal/ftdebug.h (FT_LOGGING_TAGX): New macro.
	(FT_LOG): Use it to add the trace level to the logging tag.

	* include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH):
	Adjust.

	* docs/DEBUG: Updated.

2021-06-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth, raster] Fix up and align error codes.

	FT_Render_Glyph picked up FAILURE or 1 returned from the raster
	function, which became a confusing error code. Instead, return
	Raster_Overflow in the unlikely event that banding does not help or
	another meaningful error.

	* src/smooth/ftgrays.c (gray_convert_glyph_inner, gray_convert_glyph):
	Use Raster_Overflow when the rendering pool is exhausted and return it
	if banding does not help.
	(gray_raster_render): Use Smooth_Err_Ok.

	* src/raster/ftraster.c (Render_Single_Pass): Return Raster_Overflow
	if banding does not help or another error code.

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

	[smooth, raster] Remove synonymous error macros.

	* src/smooth/ftgays.c [STANDALONE_]: s/ErrRaster_/Smooth_Err_/.
	(gray_convert_glyph_inner): Updated accordingly.

	* src/raster/ftraster.c [STANDALONE_]: Do not abbreviate error macros.
	(New_Profile, End_Profile, Insert_Y_Turn, Line_Up, Bezier_Up,
	Decompose_Curve, Draw_Sweep, Render_Single_Pass, ft_black_render):
	Updated accordingly.

2021-06-22  Dominik Röttsches  <drott@chromium.org>

	[sfnt] s/PaintTransformed/PaintTransform/, s/transformed/transform/.

	* include/freetype/ftcolor.h (FT_PaintTransformed, FT_PaintFormat,
	FT_COLR_Paint): Do it to make it harmonize with other names such as
	'PaintTranslate'.

	* src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Ditto.

2021-06-22  Dominik Röttsches  <drott@chromium.org>

	Move 'COLR' API to `ftcolor.h`.

	* include/freetype/freetype.h: Cut section layer managament
	containing 'COLR' v0 and v1 API and move it to `ftcolor.h` as
	requested by Werner on freetype-devel.
	* include/freetype/ftcolor.h: Paste that section.

2021-06-19  Werner Lemberg  <david@freetype.org>

	[truetype] Fix integer overflow.

	Reported as

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

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

2021-06-19  Werner Lemberg  <david@freetype.org>

	[autofit] Prevent hinting if there are too many segments.

	This speeds up handling of broken glyphs.

	Reported as

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

	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Implement
	it.

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

	* src/sdf/ftsdfrend.c (ft_(b)sdf_render): Do not FT_ERROR routinely.

2021-06-16  David Turner  <david@freetype.org>

	[autofit] Fix return value of `FT_Load_Glyph`.

	* src/autofit/afglobal.c (af_face_globals_get_metrics): The issue is
	that `style_metrics_init` sometimes returns -1 without clearing
	`error`.  While looping to `Again`, the next operation is
	successful, but -1 is still returned by the function.  The fix is to
	set `error` to 0 appropriately.

	Fixes #1063.

2021-06-15  David Turner  <david@freetype.org>

	[meson] Add first regression test to FreeType.

	* tests/README.md: New file that explains how to build and run the
	tests with the Meson build.

	* tests/scripts/download-test-fonts.sh: New bash script to download
	test font files to the `tests/data` folder.

	* meson.build, meson_options.txt: Add 'tests' option to enable
	building and running the test programs (disabled by default).

	* tests/meson.build: New file.

	* tests/issue-1063/main.c: Simple regression test to exhibit issue
	1063.

	* .gitignore: Ignore the content of the `tests/data` folder for
	now.

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

	[type42] Fix new memory leak.

	We need to inverse inheritance of FT_GlyphSlot_Internal so that we
	have a chance to free the rendered bitmap from the parent slot.

	* src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts
	of the child `ttslot' and replace it with the parent structure.
	(T42_GlyphSlot_Done): Updated accordingly.

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

	[psaux] Fix another assertion.

	* src/psaux/psintrp.c (cf2_interpT2CharString)
	<cf2_escCALLOTHERSUBR>: Convert assertion into error, since the
	problem can happen with invalid user input.

	Test case is file

	  fuzzing/corpora/legacy/oss-fuzz/5754332360212480-unknown-read

	in the `freetype2-testing` repository.

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

	[psaux] Fix assertions.

	* src/psaux/pshints.c (cf2_hintmap_adjustHints): Check for overflow
	before emitting an assertion error.

	Test case is file

	 fuzzing/corpora/legacy/oss-fuzz/4594115297673216-integer-overflow

	in the `freetype2-testing` repository.

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

	* src/truetype/ttinterp.c (TT_RunIns): Optimize tracing.

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

	[sdf] Fix SDF positioning.

	* src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Add padding to
	`bitmap_top' and `bitmap_left'.

	* sdf/sdf/ftsdf.c (sdf_generate_with_overlaps): Fix VC++ warning.

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

	Fix 'devel' build for 'COLR' v1.

	* devel/ftoption.h: Synchronize with
	  `include/freetype/config/ftoption.h`.

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

	[sfnt] Sanitize cmap4 table better.

	Fixes #1062.

	* src/sfnt/ttcmap.c (tt_cmap4_validate): Handle a too-small value of
	`length` gracefully.

2021-06-08  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Pointer validity check when reading 'COLR' v1 layers

	* src/sfnt/ttcolr.c (tt_face_get_paint_layers): In addition to the
	existing sanity checks, ensure that the pointer to the layer to be
	read is within the 'COLR' v1 table.

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

	* src/sdf/ftsdfcommon.c: Fix inclusion of header files.

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

	[sdf] Make `make multi` work.

	* src/sdf/ftsdf.c: Include `ftbitmap.h`.

	* src/sdf/ftsdfcommon.h: Move function bodies to `ftsdfcommon.c`.
	Include `ftobjs.h` to get definitions of `FT_LOCAL` and friends.

	* src/sdf/ftsdfcommon.c: New file.

	* src/sdf/rules.mk, src/sdf/sdf.c: Updated.

2021-06-08  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Use 8 bits for final SDF output instead of 16bits.

	Since 8-bits is enough to represent SDF data we no longer require
	16-bits for this purpose.  Also, we now normalize the output data
	to use the entire 8-bit range efficiently.  For example: if we use
	3.5 format with a spread of 1 we basically only use the starting
	5-bits.  By normalizing we can use the entire 8-bit range.

	* include/freetype/freetype.h (FT_Render_Mode): Updated description
	for `FT_RENDER_MODE_SDF` regarding this change.

	* include/freetype/ftimage.h (FT_Pixel_Mode): Removed
	`FT_PIXEL_MODE_GRAY16` since no longer required.

	* include/freetype/fttypes.h (FT_F6Dot10): Removed since no longer
	required.

	* src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Allocate 8-bit
	bitmap instead of 16-bit buffer.

	* src/sdf/ftsdfcommon.h (map_fixed_to_sdf): Added function to convert
	16.16 distance value to our desired format.

	* src/sdf/ftsdf.c (sdf_generate_with_overlaps,
	sdf_generate_bounding_box): Use the new `map_fixed_to_sdf` function
	and also use 8-bit output buffer.

	* src/sdf/ftbsdf.c (finalize_sdf): Output to a 8-bit buffer instead
	of 16-bit buffer.

2021-06-02  Ben Wagner  <bungeman@chromium.org>
	    Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix fallout from 2021-05-29 change.

	* src/sfnt/ttcolr.c (find_base_glyph_record,
	find_base_glyph_v1_record): Adjust binary search.

	Needs to be updated with change to unsigned.

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

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

	Problem reported by Alexei.

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

	[psaux] Fix MSVC compiler warnings.

	* src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
	Add cast.

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

	Fix compilation errors and (some) warnings for clang++.

	* src/autofit/afmodule.c (AF_GlyphHintsRec): Make it static.

	* src/cache/ftcache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c
	(ftc_snode_compare): Remove semicolon.

	* src/cff/cffparse.c (cff_parser_run): Add `break` statement.

	* src/cid/cidload.c (cid_hex_to_binary): Add cast.

	* src/sdf/ftbsdf.c (CHECK_NEIGHBOR): Use `do {} while(0)` loop.
	(bsdf_init_distance_map, finalize_sdf, bsdf_raster_render): Add
	casts.
	* src/sdf/ftsdf.c (sdf_generate_bounding_box,
	sdf_generate_with_overlaps): Ditto.
	* src/sdf/ftsdfcommon.h (square_root): Ditto.
	* src/sdf/ftsdfrend.c (sdf_property_get, ft_sdf_render,
	ft_bsdf_render): Ditto.

	* src/sfnt/ttcolr.c (find_base_glyph_record,
	find_base_glyph_v1_record): Fix variable signedness.
	(read_color_line): Add cast.
	(read_paint): Add casts.
	Fix signedness issue.
	(tt_face_get_colorline_stops) Fix signedness issues.

	* src/sfnt/ttpost.c (load_format_20): Add casts.

	* src/truetype/ttsubpix.c (TWEAK_RULES, TWEAK_RULES_EXCEPTIONS):
	Remove final semicolons.

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

	[build] Allow overriding of `ANSIFLAGS` for GNU make build.

	* builds/*: Implement it.

2021-05-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type42] Fix auto-hinting.

	The autohinter could not access the base (unscaled) outline in the
	child TrueType glyph slot. We now share the internal parts between
	the parent and child glyph slots. Fixes #1057.

	* src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts
	of `T42_GlyphSlot' and replace it with the child TrueType structure.
	(T42_GlyphSlot_Done): Updated accordingly.

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

	[psaux] Guard and trace AFM kern data allocation.

	Reported as

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

	* include/freetype/internal/fttrace.h: Add 'afmparse' trace
	component.

	* src/psaux/afmparse.c (FT_COMPONENT): Define.
	(afm_parse_track_kern, afm_parse_kern_pairs): Protect against
	allocations bombs.
	Add tracing.
	(afm_parse_kern_data): Don't allow multiple kern data sections.

2021-05-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* meson.build (ft2_public_headers): Add missing `ftcid.h'.

	Fixes #1058.

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

	[type42] Avoid some memory zeroing.

	* src/type42/t42objs.c (T42_Open_Face): Tweak allocation macro.
	* src/type42/t42parse.c (t42_parse_sfnts): Ditto.

2021-05-19  Nikolaus Waxweiler  <madigens@gmail.com>

	[CMake] Update dependency finders.

	1. Fixes CMake using any found HarfBuzz version lower than the minimum
	required. This is based on HALX99's merge request at
	https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/31
	2. Update FindHarfBuzz.cmake from
	https://github.com/WebKit/WebKit/blob/1ce32454/Source/cmake/FindHarfBuzz.cmake
	and guard post-CMake-3.1 features to keep the minimum version unchanged
	3. Update FindBrotliDec.cmake to stop the warnings, based on what
	https://github.com/google/woff2/blob/a0d0ed7d/cmake/FindBrotliDec.cmake
	is doing

	* CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Implement 1 and 2.
	* builds/cmake/FindBrotliDec.cmake: Implement 3.

2021-05-19  Ben Wagner  <bungeman@chromium.org>

	[gzip] Use exact type for `ft_gzip_alloc` and `ft_gzip_free`.

	While a function pointer may be cast to another function pointer
	type, it is required to cast the function pointer back to the
	original function pointer type before calling it.  If a parameter is
	a pointer the exact pointer type is required.  Using a pointer to a
	different underlying type is technically undefined behavior.  The
	wrapper functions `ft_gzip_alloc` and `ft_gzip_free` took
	`FT_Memory` (a `FT_MemoryRec_*`) instead of `voidpf` (`void*`), so
	when gzip calls these callbacks through `alloc_func` or `free_func`
	it invokes undefined behavior.  On most platforms this works out as
	expected, but newer undefined behavior detectors and targets like
	wasm can detect this and will produce an error.

	* src/gzip/ftgzip.c (ft_gzip_alloc, ft_gzip_free): Update signatures
	to exactly match `alloc_func` and `free_func`, respectively.
	Internally, cast the `void*` opaque pointer to `FT_Memory`.

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

	Prioritize the anti-aliasing renderer module.

	* modules.cfg: Reorder the renderers.
	* include/freetype/config/ftmodule.h: Ditto.

2021-05-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[sfnt] Additional guards on the POST table.

	Fixes timeout (#1055) analyzed by Ben Wagner, reported as

	  https://crbug.com/1194092

	* src/sfnt/ttload.c (tt_face_load_post): Check POST format.
	* src/sfnt/sfobjs.c (sfnt_load_face): Synthesize the missing unicode
	charmap only if the glyph names exist.
	* src/psnames/psmodule.c (ps_unicode_value): Short cut ".notdef" and
	".null".

2021-05-13  Daniel McArdle  <dmcardle@chromium.org>

	[psaux] Use doubling allocation strategy for CF2_ArrStack.

	Fixes timeout reported as

	  https://crbug.com/1206181

	* src/psaux/psarrst.c (cf2_arrstack_{push,init}): Implement it.
	* src/psaux/psarrst.h (CF2_ArrStackiRec): Drop `chunk'.

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

	* src/smooth/ftgrays.c (FT_MAX_GRAY_SPANS): Increase from 10 to 16.

	Ten was barely enough for two slanted stems. Sixteen can actually fit
	a bit more complicated scanlines.

2021-05-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (FT_GRAY_SET): Adjust for better code.

2021-05-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Faster bitmap sweeping.

	Selecting the fill rule or checking the direct mode each time we call
	`gray_hline' is sub-optimal.  This effectively splits the direct mode
	into a separate code path while inlining `gray_hline' and saving 5-7%
	of rendering time.

	* src/smooth/ftgrays.c (gray_hline): Eliminated in favor of...
	(FT_FILL_RULE, FT_GRAY_SET): ... these new macros...
	(gray_sweep): ... inlined here.
	(gray_sweep_direct): New function that handles the direct span buffer.
	(gray_TWorker): Remove the span buffer.
	(gray_raster_render, gray_convert_glyph): Updated.

2021-05-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_hline): Simplify even-odd computations.

	It is too bad the even-odd rule is not used much.

2021-05-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type1] Avoid MM memory zeroing.

	* src/type1/t1load.c (t1_allocate_blend, parse_blend_design_map):
	Tweak allocation macros.
	* src/type1/t1objs.c (T1_Face_Done): Minor.

2021-05-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/bdf/bdflib.c (_bdf_list_ensure): Tweak allocation macro.

2021-05-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/psaux/psobjs.c (ps_parser_load_field): Tweak allocation macro.

2021-05-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/sfobjs.c (sfnt_load_face): Tweak allocation macro.

2021-05-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/cid/cidload.c (cid_read_subrs): Tweak allocation macro.

2021-05-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Tweak allocation.

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

	[cff,psaux] Avoid memory zeroing (contd.).

	* src/cff/cffload.c (cff_blend_doBlend, cff_blend_build_vector): Tweak
	allocation macros.
	* src/psaux/psarrst.c (cf2_arrstack_setNumElements): Ditto.
	* src/psaux/psstack.c (cf2_stack_init): Ditto.

2021-05-04  Ben Wagner  <bungeman@chromium.org>

	* src/cid/cidload.c (cid_hex_to_binary): Improve return value.

	Add argument to return the actual number of bytes that were decoded.
	The actual number of bytes decoded can be quite variable depending
	on the number of ignored 'whitespace' bytes or early termination
	with `>`.
	(cid_face_open): Updated to use this calculated value.  This avoids
	trusting `parser->binary_length` is always be correct and reading
	uninitialized bits if fewer are actually decoded.

	First reported as

	  https://crbug.com/1203240

2021-05-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[sfnt] Streamline POST format 2.0 handing.

	To reduce memory allocations, we read an entire Pascal-string buffer
	and convert it to a C-string buffer.  We also reject tables with
	Postscript glyph names exceeding 63 bytes.

	* src/sfnt/ttpost.c (load_format20): Implement it.
	(load_post_names): Check the minimal POST table size.
	(load_format25, tt_face_free_ps_names): Updated accordingly.

2021-05-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf,pcf] Avoid memory zeroing (contd.).

	* src/bdf/bdflib.c (bdf_create_property, _bdf_add_comment,
	_bdf_add_property, bdf_load_font): Tweak allocation macros.
	* src/pcf/pcfread.c (pcf_get_properties, pcf_get_metrics): Ditto.

2021-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/cid/cidload.c (cid_read_subrs): Tweak allocaton macro.

2021-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[sfnt] Avoid some memory zeroing.

	* src/sfnt/sfobjs.c (sfnt_open_font, sfnt_init_face,
	tt_name_ascii_from_{utf16,other}): Tweak allocaton macros.
	* src/sfnt/ttload.c (tt_face_load_name): Ditto.

2021-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/ttpost.c (load_format_{20,25}): Tweak allocaton macros.

2021-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/pngshim.c (Load_SBit_Png): Tweak allocaton macro.

2021-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Avoid some memory zeroing.

	* src/truetype/ttinterp.c (Init_Context): Tweak allocation macro.
	* src/truetype/ttpload.c (tt_face_load_cvt): Ditto.

2021-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[woff2] Avoid some memory zeroing.

	* src/sfnt/sfwoff2.c (store_loca, woff2_open_font): Tweak macros.

2021-04-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/gzip/ftgzip.c (ft_gzip_alloc): Zero out memory again.

2021-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[lzw] Preserve decompression stack when relocating to heap.

	* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Copy stack when
	relocating to heap.

2021-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/cid/cidgload.c (cid_load_glyph): Restore the glyph_length check.

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

	* src/psmodule.c (ps_unicodes_init): Ignore empty glyph names.

	Reported as

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

2021-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/sfobjs.c (sfnt_init_face): Revert macro change.

2021-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cff] Avoid some memory zeroing.

	* src/cff/cffparse.c (cff_parser_init): Tweak memory macro.
	* src/cff/cffload.c (cff_index_load_offsets, cff_index_get_pointers,
	cff_charset_load, cff_vstore_load): Ditto.

2021-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pfr] Avoid some memory zeroing.

	* src/pfr/pfrobjs.c (pfr_face_init) : Tweak memory macro.
	* src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps,
	pfr_phy_font_load): Ditto.

2021-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/winfonts/winfnt.c (FNT_Face_Init): Tweak memory macro.

2021-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[psaux,psnames] Avoid some memory zeroing.

	* src/psaux/psstack.c (cf2_stack_init): Tweak memory macro.
	* src/psnames/psmodule.c (ps_unicodes_init): Ditto.

2021-04-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Avoid some memory zeroing.

	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Use FT_QNEW_ARRAY.
	* src/base/ftsnames.c (FT_Get_Sfnt_{Name,LangTag}): Ditto.

2021-04-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf,pcf] Avoid some memory zeroing.

	* src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, pcf_load_font):
	Tweak memory macros.
	* src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto.
	* src/bdf/bdflib.c (_bdf_readstreami, bdf_create_property,
	_bdf_parse_glyphs, _bdf_parse_start): Ditto.
	(_bdf_add_property): Do not handle zero size.

2021-04-25  Issam E. Maghni  <issam.e.maghni@mailbox.org>

	* builds/meson/process_ftoption_h.py: Add LF at EOF.

	This fixes

	  .../ftoption.h:1030:10: error:
	    no newline at end of file [-Werror,-Wnewline-eof]

	for the generated `ftoption.h` file.

2021-04-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/cff/cffload.c (cff_index_get_pointers): s/FT_QALLOC/FT_ALLOC/.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (Mac_Read_POST_Resource): s/FT_ALLOC/FT_QALLOC/.
	* builds/mac/ftmac.c (FT_New_Face_From_SFNT, read_lwfn): Ditto.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sdf/ftsdf.c (sdf_{edge,contour,shape}_new): Use FT_QALLOC.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[sfnt] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/sfnt/sfdriver.c (get_win_string, get_apple_string,
	sfnt_get_var_ps_name): Do not zero out the buffer.
	* src/sfnt/sfobjs.c (sfnt_init_face): Ditto.
	* src/sfnt/sfwoff.c (woff_open_font): Ditto.
	* src/sfnt/sfwoff2.c (woff2_open_font): Ditto.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cff,type1,type42] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/cff/cffload.c (cff_index_get_pointers, cff_index_get_name):
	Do not zero out the buffer.
	* src/cff/cffdrivr.c (cff_ps_get_font_info): Ditto.
	* src/type1/t1load.c (parse_subrs, parse_charstrings,
	parse_blend_axis_types): Ditto.
	* src/type1/t1parse.c (T1_New_Parser, T1_Get_Private_Dict): Ditto.
	* src/type42/t42parse.c (t42_parser_init): Ditto.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cid] s/FT_ALLOC/FT_QALLOC/ and clean up.

	* src/cid/cidgload.c (cid_load_glyph): Do not zero out the buffer.
	* src/cid/cidload.c (cid_face_open, cid_read_subrs): Ditto.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pfr] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/pfr/pfrload.c (pfr_extra_item_load_font_id, pfr_aux_name_load):
	Do not zero out the buffer.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bzip2,gzip] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/bzip2/ftbzip2.c (ft_bzip2_alloc): Do not zero out the buffer.
	* src/gzip/ftgzip.c (ft_gzip_alloc, FT_Stream_OpenGzip): Ditto.

2021-04-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf,bdf,winfonts] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/pcf/pcfread.c (pcf_interpret_style): Do not zero out the buffer.
	* src/bdf/bdfdrivr.c (bdf_interpret_style): Ditto.
	* src/winfonts/winfnt.c (FNT_Face_Init, FNT_Load_Glyph): Ditto.

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

	[cache] Optimize SBit copying.

	* src/cache/ftcsbits.c (ftc_snode_load): Do not initialize the buffer.
	(ftc_sbit_copy_bitmap): Accept zero size, s/FT_ALLOC/FT_QALLOC/.

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

	[gxvalid,otvalid] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/gxvalid/gxvmod.c (gxv_load_table): Do not zero out the buffer.
	* src/otvalid/otvmod.c (otv_load_table): Ditto.

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

	[psaux] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/psaux/psobjs.c (ps_table_done, ps_parser_load_field): Do not
	zero out the buffer.

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

	[base] s/FT_ALLOC/FT_QALLOC/ for initialized buffers.

	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream,
	Mac_Read_sfnt_Resource): Do not zero out the buffer.
	* src/base/ftmac.c (FT_New_Face_From_SFNT, read_lwfn): Ditto.
	* src/base/ftrfork.c (raccess_make_file_name,
	raccess_guess_darwin_hfsplus, raccess_guess_darwin_newvfs): Ditto.

2021-04-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cache] Restore SBit copying for unowned (BDF) bitmaps.

	* src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Restore.
	(ftc_snode_load): Check ownership and copy unowned bitmaps.

2021-04-19  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Return in 'COLR' v1 when layer pointer outside table

	* src/sfnt/ttcolr.c (tt_face_get_paint_layers): Add missing return
	when paint pointer outside table.
	(read_paint): Add missing return when paint pointer outside table.

2021-04-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cache] Switch to lazy SBit setting.

	* src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Removed.
	(ftc_snode_load): Take the bitmap ownership instead of copying.

2021-04-16  Daniel Welty  <@danielwelty>

	* src/cache/ftcsbits.c (ftc_snode_load): Properly handle short pitch.

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

	* builds/unix/freetype2.m4: Fix help string formatting.

	The indented `dnl` macros inserted unwanted horizontal space.

	Problem reported by Ozkan Sezer <sezeroz@gmail.com>.

2021-04-16  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Safeguard 'COLR' v1 layer extraction

	* src/sfnt/ttcolr.c (tt_face_get_paint_layers): Do not output
	layer pointer to iterator if it is outside the 'COLR' table.
	(read_paint): Do not attempt to read layers that are outside the
	table.

2021-04-02  Ben Wagner  <bungeman@chromium.org>

	[base] Complete `ft_glyphslot_clear`.

	* src/base/ftobjs.c (ft_glyphslot_clear): This function is intended
	to reset all the values of a glyph slot.  However, it was not
	resetting the values of the advances and `glyph_index`.  Reset the
	advances and `glyph_index` to zero.

2021-04-02  Ben Wagner  <bungeman@chromium.org>

	[truetype] Prevent glyph program state from persisting.

	`FDEF` instructions are specified as allowed only in 'prep' or
	'fpgm'.  FreeType has attempted to prevent their use in the glyph
	program, but they were still allowed in glyph programs if defined in
	a function defined in 'prep' or 'fpgm' and called from the glyph
	program.

	Similarly, `IDEF` instructions are specified not to be able to
	modify any existing instruction.  FreeType has attempted to prevent
	their use in the glyph program, but they can still be used like
	`FDEF`.

	This change stores the initial bytecode range type and disallows the
	use of `FDEF` and `IDEF` while running the glyph program.

	Most other state is copied from the `TT_Size` into the execution
	context.  However, it is possible for a glyph program to use `WS` to
	write to the storage area or `WCVTP`, `WCVTF`, and `DELTAC[123]` to
	write to the control value table.

	Allowing any change to the global state from the glyph program is
	problematic as the outlines of any given glyph may change based on
	the order the glyphs are loaded or even how many times they are
	loaded.  There exist fonts that write to the storage area or the
	control value table in the glyph program, so their use should not be
	an error.

	Possible solutions to using these in the glyph program are

	  * ignore the writes;
	  * value-level copy on write, discard modified values when finished;
	  * array-level copy on write, discard the copy when finished;
	  * array-level copy up-front.

	Ignoring the writes may break otherwise good uses.  A full copy
	up-front was implemented, but was quite heavy as even well behaved
	fonts required a full copy and the memory management that goes along
	with it.  Value-level copy on write could use less memory but
	requires a great deal more record keeping and complexity.  This
	change implements array-level copy on write.  If any attempt is made
	to write to the control value table or the storage area when the
	initial bytecode range was in a glyph program, the relevant array
	will be copied to a designated storage area and the copy used for
	the rest of the glyph program's execution.

	* src/truetype/ttinterp.h (TT_ExecContextRec): New fields
	`iniRange`, `glyfCvtSize`, `glyfCvt`, `origCvt`, `glyfStoreSize`,
	`glyfStorage`, and `origStorage`.

	* src/truetype/ttinterp.c (Modify_CVT_Check): New function to handle
	`exc->glyfCvt`.
	(Write_CVT, Write_CVT_Stretched, Move_CVT, Move_CVT_Stretched): Use
	it.
	(Ins_WS): Handle `exc->glyfStorage`.
	(Ins_FDEF, Ins_IDEF): Updated.
	(TT_RunIns): Updated.
	(TT_Done_Context): Free 'glyf' CVT working and storage area.
	(TT_Load_Context): Fix/add casts.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Fix cast.

2021-03-30  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Check validity of pointer location of `read_color_line`.

	* src/sfnt/ttcolr.c (get_child_table_pointer): New function to fetch
	child table pointer early for all paint formats that compute a child
	table pointer.
	(read_color_line, read_paint): Updated.
	(tt_face_get_colorline_stops): Check `colr->table`.

2021-03-28  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docs] Update docwriter stylesheet for 1.3.1.

	This change is required to support docwriter 1.3.1.

	See

	  https://gitlab.freedesktop.org/freetype/docwriter/-/merge_requests/101

	for more information.

	* docs/markdown/stylesheets/extra.css:
	(.wy-nav-content, .md-sidebar--secondary): Remove.

2021-03-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/pngshim.c (Load_SBit_Png): Free `rows` once later.

2021-03-16  Ben Wagner  <bungeman@google.com>

	[sfnt] Fix memory leak in png loading.

	Reported as

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

	Memory is allocated and the pointer assigned to `rows` inside a
	'setjmp' scope.  This memory must be freed outside the 'setjmp'
	scope after a 'longjmp'.  Since `rows` is a local and modified
	inside the 'setjmp' scope it must be marked volatile or it will have
	an indeterminate value after the 'longjmp'.

	* src/sfnt/pngshim.c (Load_SBit_Png): Fix memory leak of `rows`.

2021-03-16  Christopher Degawa  <ccom@randomderp.com>

	* CMakeLists.txt: Don't limit generation of 'pkg-config' file to UNIX.

	mingw-w64 uses the 'pkg-config' files but does not set UNIX.

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

	* src/smooth/ftgrays.c (gray_set_cell): Refactor to fix VC++ warning.

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

	Handle various VC++ compiler warnings.

	Fixes #1039.

	* src/base/ftstroke.c (ft_stroker_inside, ft_stroker_outside):
	Initialize `sigma`.

	* src/sdf/ftsdf.c (sdf_generate_with_overlaps): Exit immediately if
	function arguments are invalid.
	* src/sdf/ftsdfrend.c (sdf_property_set) <"overlaps">: Fix cast.

	* src/sfnt/sfwoff2.c (woff2_decompress)
	[!FT_CONFIG_OPTION_USE_BROTLI]: Use `FT_UNUSED`.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize `fvar_head`.

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

	[smooth] Reduce copying during integration phase.

	We now record `cover' and `area' directly into the linked list. This
	makes rendering faster by 10% or even more at larger sizes.

	* src/smooth/ftgrays.c (FT_INTEGRATE): Write directly.
	(gray_TWorker): Add direct cell reference and remove unused fields.
	(gray_set_cell): Consolidate the linked list management and pointers.
	(gray_convert_glyph, gray_convert_glyph_inner): Updated.

2021-03-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (FT_INTEGRATE): New convenience macro.
	(gray_render_line, gray_render_scanline): Use it.

2021-03-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_render_line): Rearrange conditionals.

	These produce faster or more optimizable code.

2021-03-08  Tim-Philipp Müller  <tim@centricular.com>

	[meson] Fix 'mmap' handling on Windows.

	* meson.build (ft2_sources): Always use `windows/ftsystem.c` on
	Windows unless mmap has been disabled.

	  https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/5#note_829289

2021-03-07  Tim-Philipp Müller  <tim@centricular.com>

	[ci] Add basic support for Meson builds with MSVC on Windows.

	This adds meson jobs for VS2017 (x86 and x86_64).

	* .gitlab-ci.yml: New file.

2021-03-07  Tim-Philipp Müller  <tim@centricular.com>

	[meson] Add subproject fallbacks for 'libpng' and 'zlib'.

	* subprojects/libpng.wrap, subprojects/zlib.wrap: New files.

	* meson.build: Updated.

2021-03-07  Xavier Claessens  <xavier.claessens@collabora.com>

	[meson] Make it work with Windows.

	* meson.build: Do not process `ftconfig.h` when not using
	`ftconfig.h.in`.

	Fixes #1029.

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

	[woff2] Fix memory leak.

	Reported as

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Reject fonts that have
	multiple tables with the same tag.  While not explicitly forbidden
	in the OpenType specification, it is implicitly forbidden by
	describing a binary search algorithm for tables that only works
	reliably if table tags are unique.

2021-02-22  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Update location of `LICENSE.TXT`.

	Fixes #1035.

2021-02-19  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ax_pthread.m4: Update from 'autoconf-archive'.

	A bunch of fixes were added recently to its git repository.

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

	[unix] Updates for autoconf 2.71.

	This fixes warnings reported by autoupdate.

	* builds/unix/ax_pthread.m4: Replace `as_echo` with `AS_ECHO`.

	* builds/unix/configure.raw: Remove obsolete `AC_HEADER_STDC`.
	Don't escape back quotes in messages for `AC_MSG_WARN`.

2021-02-16  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk: Fix previous commit.

	<top_level>: Use `TOP_DIR` in `wildcard` function.
	(check_out_submodule, copy_submodule): Move down to come after
	definition of `all` rule.
	Call `mkdir` conditionally.

2021-02-16  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk: Use rules for handling 'dlg'.

	Suggested by Alexei.

	(check_out_submodule, copy_submodule): New targets.
	<top-level>: Replace calls to `shell` with rules.

2021-02-16  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk: Avoid side effects of `shell`.

	We use a dummy variable to catch its output.  Otherwise the `make`
	program is going to interpret the return value of `shell`; this can
	cause obscure warning or error messages or even be harmful.

2021-02-16  Werner Lemberg  <wl@gnu.org>

	Move 'dlg' submodule to `subprojects` directory.

	This is for future changes with Meson, which doesn't allow a
	different name for its `subprojects` directory.  Having both a
	`submodules` and a `subprojects` directory is confusing.

	* .gitmodules, autogen.sh (copy_submodule_files, DLG_INC_DIR,
	DLG_SRC_DIR): Updated.

	* builds/toplevel.mk (<top-level>, do-dist),
	builds/windows/vc2010/script.bat: Updated.

	* src/tools/no-copyright: Updated.

2021-02-16  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Update paint format values to support non-variable paints.

	* freetype.h (FT_PaintFormat): Update paint format identifiers after
	a specification change.  The specification was updated to have
	sibling formats, variable and non-variable variants for each.
	Reflect that here.

	* sfnt/ttcolr.c (read_paint): Remove parsing of variable indices as
	the non-variable formats no longer have them.

2021-02-15  Daniel E  <daniel.engberg.lists@pyret.net>

	* CMakeLists.txt: Improve 'bz2' support.

	Not all distributions such as FreeBSD provide a `.pc` file for
	'(lib)bz2' so follow autotools and add it to `Libs.private` instead.

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

	* src/tools/update-copyright-year: Fix single-year entry handling.

	The fix from 2021-01-17 didn't cover the case where the year to be
	updated is identical to the current year.

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

	Add new function `FT_Get_Transform`.

	See

	  https://github.com/harfbuzz/harfbuzz/issues/2428

	for some reasons to introduce this function.

	* include/freetype/freetype.h, src/base/ftobjs.c (FT_Get_Transform):
	Implement it.

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

	Decorate `qsort` callbacks with `cdecl`.

	* include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF):
	Add new macro.

	* src/base/ftrfork.c, src/bdf/bdflib.c, src/gxvalid/gxvcommn.c,
	src/psaux/afmparse.c, src/psnames/psmodule.c, src/type1/t1afm.c,
	src/sfnt/sfwoff.c, src/sfnt/sfwoff2.c: Update `qsort` callbacks.

	Fixes #1026 when compiling FreeType with an unusual calling
	convention while the C library function `qsort` still expects
	`cdecl`.

2021-02-10  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Implement 'COLR' v1 sweep gradients.

	* freetype.h (FT_PaintSweepGradient): Add `FT_PaintSweepGradient` to
	represent a 'COLR' v1 sweep gradient.
	Update format.
	(FT_PaintFormat): Update shifted paint formats.
	Sync with spec.
	* sfnt/ttcolr.c (read_paint): Logic to parse sweep gradients.
	Fix struct access in radial gradient implementation.

2021-02-09  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Provide optional root transform for 'COLR' v1 glyph graph.

	* include/freetype/freetype.h (FT_Get_Color_Glyph_Paint):
	Additional function argument `root_transform` to control whether
	root transform should be returned.
	(FT_OpaquePaint): Additional tracking field to denote whether
	root transform is to be returned.
	* include/freetype/internal/sfnt.h
	(TT_Get_Color_Glyph_Paint_Func): Propagate additional argument.
	* src/base/ftobjs.c (FT_Get_Color_Glyph_Paint): Ditto.
	* src/sfnt/ttcolr.c (tt_face_get_colr_glyph_paint): Return root
	transform reflecting the size and tranform configured on
	`FT_Face`.
	(read_paint): Initialize and track status of insert_root_transform
	flag.

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	* meson.build: s/freetype2_dep/freetype_dep/.

	Many projects (e.g., fontconfig, cairo) hardcode the `freetype_dep`
	variable name to use FreeType as subproject because that was the
	variable name in Centricular's Meson port of FreeType.  While they
	should stop hardcoding that variable name, it does not cost us
	anything to keep using that name to ease transition.

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	[meson] Fix handling of HarfBuzz library.

	* meson.build (harfbuzz_dep): Do not fall back to HarfBuzz by
	default.

	Otherwise it causes a dependency cycle:

	  cairo => fontconfig => freetype2 => harfbuzz => cairo

	Meson will still fall back to HarfBuzz subprojects if the `harfbuzz`
	option is set to `enabled` instead of `auto` and a
	`subprojects/harfbuzz.wrap` file is present.  In that case it is the
	responsibility of the main project to set the proper options on each
	subproject to break the dependency cycle.

	Fixes: #1028.

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	[meson] Fix dependency lookup and generate `ftconfig.h`.

	- zlib: If not found on the system, meson can build it as a
	  subproject.  We thus never use the (outdated) zlib support that
	  comes with FreeType.  Doing so has the additional advantage that
	  the zlib code can be shared with other projects like GLib if both
	  are subprojects of an application.
	- harfbuzz: Build as a subproject if not found on the system.
	- 'QUESTION: What if the compiler doesn't support `-D` but uses `/D`
	  instead as on Windows?'  Answer: Meson translate arguments for us.
	- visibility: Replace self-made code with meson-specific solution.

	* meson.build (ft2_defines): Rewrite logic to set and handle it.
	(process_header_command): New variable, previously called
	`ftoption_command`.
	(ftoption_command, ftconfig_command): New variables.
	(zlib_option): Removed.
	(zlib_dep): New variable.
	(ft2_deps): Updated.
	(harfbuzz_dep): Updated.
	(ftconfig_h_in, ftconfig_h): New variables.
	(ft2_sources): Updated.
	(ft2_lib): Updated, handle visibility.
	(summary): Updted.

	* meson_options.txt (zlib): Updated.

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	* meson.build: Fix resource compilation on Windows.

	This is copied from GStreamer's meson port of FreeType.

	(ft2_sources): Add both debug and resource file (the latter for
	Windows only).
	(ft2_debug_src): Removed.

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	* meson.build: s/ft2_libtool_version/ft2_pkgconfig_version/.

	(freetype2_dep): Use it.

	`ft2_libtool_version` would be the shared library version, not the
	one we should use in file `freetype2.pc`.

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	* meson.build: Use `meson.override_dependency`.

	This is a new meson mechanism to avoid other projects to hard-code
	the `freetype2_dep` variable name in their build definition.  It
	also ensures that meson does not mix system and subproject versions
	of FreeType inside of the same project.

	Also remove outdated TODO because `declare_dependency` was already
	there.

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	* meson.build (bzip2_dep): Simplify.

	We remove `static:false` from `find_library('bz2')`.

	I don't know whether the previous code was a workaround for an old
	meson bug, but at least with version >=0.55.0 (which FreeType uses)
	it picks the shared library when both are available.

	File `freetype2.pc` still contains the full path to file `libbz2.so`
	instead of `-lbz2` – that we need to do this is a meson bug even
	present in the current version (0.57.0).

2021-02-09  Xavier Claessens  <xavier.claessens@collabora.com>

	* meson.build: Set project version.

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

	[base] Fix Netpbm tracing message.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Don't emit Netpbm
	warning if there is nothing to output.

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

	* src/*: Don't use more than one '\n' in `FT_TRACE` and `FT_ERROR`.

	This ensures good logging output, with all lines having a proper
	prefix (if requested).

	This is a continuation of a similar patch from 2020-12-02, which
	missed some locations.

2021-02-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/unix/configure.raw [mmap]: Restore default path.

	Fixes #1023.

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

	[psaux] Fix integer overflow.

	Reported as

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

	* src/psaux/psblues.c (cf2_blues_capture): Use `SUB_INT32`.

2021-02-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/unix/configure.raw [mmap support]: Explicitly handle Windows.

	Fixes #1024.

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

	* builds/unix/configure.raw [mmap support]: Correctly handle Windows.

	Fixes #1024.

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

	* builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c`.

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

	Always provide logging API.

	It's easier to have stubs if FT_DEBUG_LOGGING is undefined than to
	modify `ftexport.sym` conditionally.

	Problem reported by Alexei.

	* src/base/ftdebug.c: Include `ftlogging.h`.
	(FT_Trace_Set_Level, FT_Trace_Set_Default_Level, FT_Set_Log_Handler,
	FT_Set_Default_Log_Handler) [!FT_DEBUG_LOGGING]: Provide stubs.

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

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

	Bug introduced in Vincent's last commit bb33f03.

	Fixes issue #1021.

2021-01-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (FT_Stroker_EndSubPath): Ignore tiny gaps.

	Fixes bug #1020.

2021-01-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[stroker] Minor clean-up.

	* src/base/ftstroke.c (FT_Stroker_{ConicTo,CubicTo}): Reset the last
	line length.
	(FT_Stroker_EndSubPath): Call `ft_stroker_process_corner'.

2021-01-27  Vincent Torri  <vincent.torri@gmail.com>

	* builds/windows/ftsystem.c: Add shared memory support on Windows.

	* CMakeLists.txt (BASE_SRCS), builds/unix/configure.raw (FTSYS_SRC),
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/visualc/freetype.vcproj, meson.build (ft2_sources):
	Add it (conditionally).

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

	Require HarfBuzz 2.0.0.

	This is needed to make commit f1f9705f9 work.

	* CMakeLists.txt (HARFBUZZ_MIN_VERSION), builds/unix/configure.raw
	(harfbuzz_pkg), meson.build (harfbuzz_dep): Updated.

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

	* autogen.sh: Absorb `version.sed'.
	* version.sed: Removed.

2021-01-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* srd/base/ftlcdfil.c (FT_Library_SetLcdGeometry): Fix return value.

2021-01-15  Nikolaus Waxweiler  <madigens@gmail.com>

	[afshaper] Fix hb_ot_tags_from_script deprecation warning.

	* autofit/afshaper.c (af_shaper_get_coverage): Copy the source code
	of the function as suggested in
	https://github.com/harfbuzz/harfbuzz/issues/2737 and adjust to handle
	at most three tags.

2021-01-17  Werner Lemberg  <wl@gnu.org>

	* src/tools/update-copyright-year: Fix single-year entry handling.

2021-01-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/unix/unixddef.mk: Remove the second DEVEL_DIR definition.

2021-01-14  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Additional checks for 'colr' table presence.

	* sfnt/ttcolr.c (tt_face_get_colr_glyph_paint,
	tt_face_get_colorline_stops, tt_face_get_paint): Additional checks
	for whether colr table is present.  Prevents crashes when these
	methods are called on non-COLR fonts.

2021-01-13  Dominik Röttsches  <drott@chromium.org>

	Add config option to test for 'COLR' v1 support in headers.

	* include/freetype/config/ftoption.h (TT_SUPPORT_COLRV1): New macro
	so that clients can test whether the FreeType checkout that they are
	building against supports the 'COLR' v1 API.  This is intended to be
	a temporary solution until 'COLR' v1 support is released in a
	FreeType version and such a check can be made by using the version
	number instead.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	[base] Fill 'COLR' v1 API templates to make them work (#59703).

	* src/base/ftobjs.c (FT_Get_Color_Glyph_Paint, FT_Get_Paint_Layers,
	FT_Get_Paint, FT_Get_Colorline_Stops): Add basic sanity checks,
	check for existence of `FT_Face`, check arguments and delegate calls
	for the respective 'COLR' v1 API to the SFNT driver.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Register 'COLR' v1 API in driver (#59703).

	* include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_Paint_Func,
	TT_Get_Paint_Layers_Func, TT_Get_Colorline_Stops_Func,
	TT_Get_Paint_Func): New function pointer types.
	(SFNT_Interface): Add them.
	(FT_DEFINE_SFNT_INTERFACE): Updated.

	* src/sfnt/sfdriver.c (PUT_COLOR_LAYERS_V1): New macro.
	(sfnt_interface): Add new function pointers.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Add 'COLR' v1 API to retrieve color layers (#59703).

	* src/sfnt/ttcolr.c (tt_face_get_paint_layers): New function to get
	the layers of a `PaintColrLayers` table in the font, using an
	`FT_LayerIterator` from an `FT_PaintColrLayers` object retrieved via
	`tt_face_get_paint`.

	* src/sfnt/ttcolr.h: Updated.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Add 'COLR' v1 API to iterate color stops (#59703).

	* src/sfnt/ttcolr.c (tt_face_get_colorline_stops): New function to
	return the current `FT_ColorStop` object from `FT_ColorStopIterator`.
	Also increment the iterator.

	* src/sfnt/ttcolr.h: Updated.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Add API to get actual paint from `FT_OpaquePaint` (#59703).

	* src/sfnt/ttcolr.c (tt_face_get_paint): New function to resolve an
	`FT_OpaquePaint` paint reference into an `FT_COLR_Paint` object of a
	certain format, which contains the detailed information stored in a
	paint of the respective format.
	(read_paint): New function to provide the format specific parsing
	and to populate the data members of each specific `FT_COLR_Paint`
	subtype.
	(read_color_line): New function to parse retrieved color line
	information into an `FT_ColorLine` object, which has information
	about the color line extend mode as well as an
	`FT_ColorStopIterator` object.

	* src/sfnt/ttcolr.h: Updated.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	[sfnt] Add API to retrieve 'COLR' v1 root paint (#59703).

	* src/sfnt/ttcolr.c (BaseGlyphV1Record): New structure.
	(tt_face_load_colr): Handle version 1 table header.
	(find_base_glyph_v1_record): New auxiliary function.
	(tt_face_get_colr_glyph_paint): New function to find the root
	`FT_OpaquePaint` object for a given glyph ID.

	* src/sfnt/ttcolr.h: Updated.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	Add new methods required for 'COLR' v1 to public API (#59703).

	* include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): New method
	for retrieving the root paint object for a color glyph by specifying
	a glyph ID.
	(FT_Get_Paint_Layers): New method for retrieving the layers of a
	`PaintColorGlyph`.
	(FT_Get_ColorLine_Stops): New method for retrieving the stops of a
	color.
	(FT_Get_Paint): New method for resolving an `FT_OpaquePaint` into an
	`FT_COLR_Paint` object.

2020-12-16  Dominik Röttsches  <drott@chromium.org>

	Add types required for 'COLR' v1 to public API (#59703).

	* include/freetype/freetype.h (FT_PaintFormat, FT_ColorStopIterator,
	FT_ColorIndex, FT_ColorStop, FT_PaintExtend, FT_ColorLine,
	FT_Affine23, FT_CompositeMode, FT_OpaquePaint, FT_PaintColrLayers,
	FT_PaintSolid, FT_PaintLinearGradient, FT_PaintRadialGradient,
	FT_PaintGlyph, FT_PaintColrGlyph, FT_PaintTransformed,
	FT_PaintTranslate, FT_PaintRotate, FT_PaintSkew, FT_PaintComposite,
	FT_COLR_Paint): Adding structs and enum to represent paint format,
	color stop information, gradient extend information, structs to
	reference paint offsets, and to define transforms and compositions.
	Adding a union type to represent the union of the structs,
	distinguished by `FT_PaintFormat`.

2021-01-10  Werner Lemberg  <wl@gnu.org>

	* builds/*: s/BUILD_DIR/PLATFORM_DIR/.

	The old variable name caused confusion.

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

	[builds] Revert `FTMODULE_H' changes.

	* builds/toplevel.mk, builds/freetype.mk: Revert changes.

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

	[builds/windows] Fix up DLG build with VC++.

	* builds/windows/vc2010/script.bat: Copy headers to include/.
	* builds/windows/vc2010/freetype.vcxproj: Remove DLG paths.

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

	[builds] Relocate `FTMODULE_H'.

	* builds/toplevel.mk: Place `FTMODULE_H' in include/.
	* builds/freetype.mk: Simplify included path.

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

	Fix ABI incompatibility.

	* include/freetype/ftimage.h (FT_Pixel_Mode): Don't insert
	`FT_PIXEL_MODE_GRAY16' but append it.

	* src/base/ftobjs.c (pixel_modes): Updated.

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

	[dlg] Move the headers to include/dlg to simplify their use.

	* autogen.sh, builds/toplevel.mk: Copy headers to include/dlg.
	* builds/freetype.mk, builds/windows/vc2010/freetype.vcxproj:
	Simplify included path.
	* include/freetype/internal/ftdebug.h: Simplify #include.
	* src/dlg/rules.mk, .gitignore: Updated.

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

	* meson.build: Add summary.

	Based on a patch from Vincent Torri <vincent.torri@gmail.com>.

2021-01-06  Torsten Hilbrich  <emacs.nolkaf@hilbrich.tk>

	* meson.build: Fix 'png' build option (#59458).

	Without this patch, 'png' is always required.

2021-01-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[builds/windows] Add SDF to VC2010 project.

	* builds/windows/vc2010/freetype.vcxproj: Updated;
	AfterBuild conveniences.

2020-12-26  Werner Lemberg  <wl@gnu.org>

	[sdf] Use 'counter-clockwise', not 'anti-clockwise'.

	We prefer US nomenclature.

	* src/sdf/ftsdf.c (SDF_Contour_Orientation):
	s/SDF_ORIENTATION-ACW/SDF_ORIENTATION_CCW/.
	Update all users.

2020-12-26  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (pixel_modes): Updated.

2020-12-26  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Remove custom memory tracker.

	The internal FreeType memory tracker is sufficient.

	* src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER, SDF_MemoryUser,
	sdf_alloc, sdf_free, SDF_ALLOC, SDF_FREE,
	SDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP,
	SDF_MEMORY_TRACKER_DONE): Removed.

	s/SDF_ALLOC/FT_ALLOC/.
	s/SDF_FREE/FT_FREE/.

	Other updates.

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

	[sdf] Fix `make multi`.

	* src/sdf/ftsdf.c: Include `ftoutln.h`.

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

	[sdf] Fix tracing.

	* include/freetype/internal.fttrace.h: Add 'bsdf' component.

	* src/sdf/ftbsdf.c, src/sdf/ftsdf.c (FT_COMPONENT): Define.

2020-08-21  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add debugging function.

	* src/sdf/ftsdf.c (sdf_shape_dump): New function.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add 'bsdf' renderer to 'sdf' module.

	* src/sdf/ftsdfrend.c (ft_bsdf_render): New function.

	(ft_bitmap_sdf_renderer_class): New structure.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add interface functions for the 'bsdf' rasterizer.

	* src/sdf/ftsdf.c (bsdf_raster_new, bsdf_raster_reset,
	bsdf_raster_set_mode, bsdf_raster_render, bsdf_raster_done): New
	functions.

	(ft_bitmap_sdf_raster): New variable.

	* src/sdf/ftsdf.h: Updated.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add function to copy SDF data into output bitmap.

	* src/sdf/ftbsdf.c (finalize_sdf): New function.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add '8-point sequential Euclidean distance mapping' algorithm.

	* src/sdf/ftbsdf.c (compare_neighbor, first_pass, second_pass,
	edt8): New functions.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add function to copy source bitmap to distance map.

	* src/sdf/ftbsdf.c (bsdf_init_distance_map): New function.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add functions to compute pixel edge distances.

	* src/sdf/ftbsdf.c (compute_edge_distance, bsdf_approximate_edge):
	New functions.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add function to find edge pixels in a grid of alpha values.

	* src/sdf/ftbsdf.c (bsdf_is_edge): New function.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add essential structures for the 'bsdf' rasterizer.

	* src/sdf/ftbsdf.c (ONE): New macro.
	(BSDF_TRaster, ED, BSDF_Worker): New structures.
	(zero_ed): New constant.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add 'sdf' module to non-gnumake build systems.

	* include/freetype/config/ftmodule.h: Add both the 'sdf' and 'bsdf'
	renderers to the list of modules.

	* CMakeLists.txt (BASE_SRCS): Add 'sdf' single-object module.

2020-08-20  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Added basic overlapping contour support.

	* src/sdf/ftsdf.c (sdf_generate_with_overlaps): New function.
	(sdf_raster_render): Enable it.

2020-08-19  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add build infrastructure.

	* src/sdf/module.mk, src/sdf/rules.mk: New files.

	* src/sdf/ftsdf.h (ft_sdf_raster): New forward declaration.

	* include/freetype/ftmoderr.h (FT_MODERRDEF): Add error definition
	for the 'sdf' module.

	* include/freetype/internal/fttrace.h (FT_TRACE_DEF): Add trace
	definition for the `sdf' module.

	* modules.cfg (RASTER_MODULES): Add the `sdf' module to the list of
	rasterizers.

2020-08-19  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add interface functions for the 'sdf' rasterizer.

	* src/sdf/ftsdf.c (sdf_raster_new, sdf_raster_reset,
	sdf_raster_set_mode, sdf_raster_render, sdf_raster_done): New
	functions.
	(ft_sdf_raster): New structure.

2020-08-19  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add subdivision and bounding box optimization.

	* src/sdf/ftsdf.c (sdf_generate_bounding_box): New function, which
	is an optimized version of `sdf_generate`.
	(sdf_generate_subdivision): New function.

2020-08-19  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add function to generate SDF.

	* src/sdf/ftsdf.c (sdf_generate): New function, currently disabled.
	This is a proof-of-concept implementation: It doesn't use any
	optimization, it simply checks all grid points against all contours.

2020-08-19  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add functions to get shortest distance from any edge/contour.

	* src/sdf/ftsdf.c (sdf_edge_get_min_distance): New function.
	(sdf_contour_get_min_distance): New function, currently disabled.

2020-08-18  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add shortest distance finding functions.

	* src/sdf/ftsdf.c (get_min_distance_line, get_min_distance_conic,
	get_min_distance_cubic): New functions.  Note that
	`get_min_distance_conic` comes with two implementations (using an
	analytical and an iterative method, to be controlled with the
	`USE_NEWTON_FOR_CONIC` macro).

2020-08-18  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add function to resolve corner distances.

	* src/sdf/ftsdf.c (resolve_corner): New function.

2020-08-18  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add essential math functions.

	* src/sdf/ftsdf.c (cube_root, arc_cos) [!USE_NEWTON_FOR_CONIC]: New
	auxiliary functions.

	* src/sdf/ftsdf.c (solve_quadratic_equation, solve_cubic_equation)
	[!USE_NEWTON_FOR_CONIC]: New functions.

2020-08-18  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add utility functions for contours.

	* src/sdf/ftsdf.c (get_control_box, get_contour_orientation): New
	functions.
	(split_conic, split_cubic, split_sdf_conic, split_sdf_cubic,
	split_sdf_shape): New functions.

2020-08-17  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add functions to decompose `FT_Outline`.

	* src/sdf/ftsdf.c (sdf_move_to, sdf_line_to, sdf_conic_to,
	sdf_cubic_to): New auxiliary decomposition functions.
	(sdf_compose_funcs): New structure.
	(sdf_outline_decompose): New function.

2020-08-17  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Structs, enums, macros, and functions for 'sdf' rasterizer.

	* src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER)
	[FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New macros.
	(SDF_MemoryUser) [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New
	struct for memory usage tracing.
	(sdf_alloc, sdf_free) [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New
	functions for memory usage tracing.

	(SDF_ALLOC, SDF_FREE): New macros for memory management.
	(SDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP,
	SDF_MEMORY_TRACKER_DONE): New macros to set up memory usage tracing.

	(USE_NEWTON_FOR_CONIC, MAX_NEWTON_DIVISIONS, MAX_NEWTON_STEPS,
	CORNER_CHECK_EPSILON, CG_DIMEN): New configuration macros for
	controlling the process of finding the shortest distance.

	(MUL_26D6, VEC_26D6_DOT): New auxiliary macros.

	(SDF_TRaster, SDF_Edge, SDF_Contour, SDF_Shape, SDF_Signed_Distance,
	SDF_Params): New structs for setting up SDF data.
	(SDF_Edge_Type, SDF_Contour_Orientation): New enums for SDF data.

	(zero_vector, null_edge, null_contour, null_shape, max_sdf): Useful
	constants.

	(sdf_edge_new, sdf_edge_done, sdf_contour_new, sdf_contour_done,
	sdf_shape_new, sdf_shape_done): New constructors and destructors.

2020-08-17  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add raster parameters structure.

	* src/sdf/ftsdf.h (SDF_Raster_Params): New structure.

	* src/sdf/sdf.c: Include source files in order to make a single
	object of the module.

2020-08-17  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add 'sdf' renderer.

	* src/sdf/ftsdf.c: Add 'sdf' renderer along with its interface
	functions.
	Also add functions to set and get properties.

2020-08-17  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add common elements for 'sdf' and 'bsdf' renderers.

	* src/sdf/ftsdfrend.h (SDF_Rendere_Module, ft_sdf_renderer_class,
	ft_bitmap_sdf_renderer_class): New structures.

	* src/sdf/ftsdfcommon.h (DEFAULT_SPREAD, MIN_SPREAD_MAX_SPREAD,
	USE_SQUARED_DISTANCES): New macros.
	(FT_INT_26D6, FT_INT_16D16, FT_26D6_16D16): New macros.
	(FT_CALL, VECTOR_LENGTH_16D16): New macros.
	(FT_26D6_Vec, FT_16D16_Vec, FT_16D16, FT_26D6, FT_6D10, FT_CBox):
	New typedefs.
	(square_root): New macro.

	* src/sdf/ftsdferrs.h: Add module error setup.

2020-08-16  Anuj Verma  <anujv@iitbhilai.ac.in>

	[sdf] Add files for new 'sdf' module.

	Here is a breakdown of what the files will contain.

	* src/sdf/ftsdfrend.c, src/sdf/ftsdfrend.h: The 'sdf' and 'bsdf'
	renderers.

	* src/sdf/ftsdf.c, src/sdf/ftsdf.h: The rasterizer for the 'sdf'
	renderer.
	* src/sdf/ftbsdf.c, src/sdf/ftbsdf.h: The rasterizer for the 'bsdf'
	renderer.

	* src/sdf/ftsdfcommon.h: Commmon properties and functions for both
	rasterizers.
	* src/sdf/ftsdferrs.h: Common error defines.

	* src/sdf/sdf.c: For building a single object of the entire module.

2020-08-16  Anuj Verma  <anujv@iitbhilai.ac.in>

	[base] Allow renderers of different formats.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Do not return if the
	glyph's slot format is `FT_GLYPH_FORMAT_BITMAP`.  The forthcoming
	'bsdf' renderer will require bitmaps for processing.

	* src/base/ftobjs.c (ft_add_renderer, ft_remove_renderer): Remove
	renderer's glyph format check before adding and removing them.  The
	'bsdf' renderer will have a format `FT_GLYPH_FORMAT_BITMAP`.

2020-08-16  Anuj Verma  <anujv@iitbhilai.ac.in>

	Add data types required for the forthcoming 'sdf' module.

	* include/freetype/freetype.h (FT_Render_Mode): Add new render mode
	`FT_RENDER_MODE_SDF`, which will be used to generate SDF.

	* include/freetype/ftimage.h (FT_Pixel_Mode): Add new pixel mode
	`FT_PIXEL_MODE_GRAY16`, which will be the output of the 'sdf'
	module.
	(FT_RASTER_FLAG_SDF): New raster flag to be used internally by the
	'sdf' module.

	* include/freetype/fttypes.h (FT_F6Dot10): New data type.

2020-08-16  Anuj Verma  <anujv@iitbhilai.ac.in>

	[base] Allow renderers of different formats.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Do not return if the
	glyph's slot format is `FT_GLYPH_FORMAT_BITMAP`.  The forthcoming
	'bsdf' renderer will require bitmaps for processing.

	* src/base/ftobjs.c (ft_add_renderer, ft_remove_renderer): Remove
	renderer's glyph format check before adding and removing them.  The
	'bsdf' renderer will have a format `FT_GLYPH_FORMAT_BITMAP`.

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

	* builds/windows/detect.mk (COPY): Make it work with `shell`.

	Without this patch, we get the error

	  builds/toplevel.mk:127: *** missing separator.  Stop.

	Reported by Anuj, with a solution from Alexei.

2020-12-23  Ignacio Casal Quinteiro  <qignacio@amazon.com>

	* meson.build (ft2_defines): Fix builds on Windows.

2020-12-18  Tatsuyuki Ishi  <ishitatsuyuki@gmail.com>

	[autofit] Fix double division in stem darkening.

	The old code used to divide the darkening amount by em_ratio twice,
	leading to unnecessarily bold stems on certain fonts with higher
	units per em (e.g. Inter). This patch fixes it.

	The return value of af_loader_compute_darkening was also changed to
	use 16.16 fixed point to get rid of a redundant truncation operation.
	This should slightly improve the precision, although it's still
	bottlenecked by the emboldening function, which uses 26.6 fixed point.

	* src/autofit/afloader.[ch]
	(af_loader_compute_darkening): Return FT_Fixed.
	(af_loader_embolden_glyph_in_slot): Revise calculations.

2020-12-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

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

	The driver name is needed for `FT_Property_Set' and `FT_Property_Get'.

2020-12-16  Chris Liddell  <chris.liddell@artifex.com>

	[truetype] Fix incremental metrics (#59503).

	* src/truetype/ttgload.c (tt_get_metrics, load_truetype_glyph):
	Previously, the code would populate the phantom points before
	calling the `get_glyph_metrics` callback.  For formats like PCL XL
	format 1, class 2 downloaded fonts (where metrics are removed from
	the TTF header), this causes problems when the hinting program uses
	the phantom points (misplaced and distorted glyphs) due to the
	metrics being unset (all zeros).
	(tt_get_metrics_incr_overrides): Renamed to...
	(tt_get_metrics_incremental): ... this.  Updated caller

	* include/freetype/ftincrem.h: Update the documentation to make it
	clearer that `get_glyph_metrics` is to retrieve metrics from a
	non-standard source, but *not* for the purpose of imposing custom
	metrics.

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

	[type42] Pacify static analysis tools (#59682).

	* src/type42/t42objs.c (T42_Size_Init, T42_GlyphSlot_Init): Avoid
	warnings about uninitialized variables.

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

	* builds/unix/configure.raw: Don't set `FT_DEBUG_LOGGING`.

	All debug options are handled exclusively in `ftoption.h`.

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

	* src/*: More fixes for using a '\n' in `FT_TRACE` and `FT_ERROR`.

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

	*/*: s/FT_LOGGING/FT_DEBUG_LOGGING/.

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

	* builds/toplevel.mk (do-dist): Remove `submodules` directory.

2020-12-02  Werner Lemberg  <wl@gnu.org>

	* src/*: Don't use more than one '\n' in `FT_TRACE` and `FT_ERROR`.

	This ensures good logging output, with all lines having a proper
	prefix (if requested).

2020-12-02  Werner Lemberg  <wl@gnu.org>

	[base] Don't close 'stderr' after logging.

	* src/base/ftdebug.c, builds/windows/ftdebug.c (ft_logging_deinit):
	Fix it.

2020-12-02  Werner Lemberg  <wl@gnu.org>

	* submodules/dlg: Updated to commit 9f0c8b22.

2020-12-02  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c: Fix `-Wformat` warning.

2020-12-02  Werner Lemberg  <wl@gnu.org>

	Improve setup for 'dlg' library.

	* autogen.sh (copy_submodule_file), builds/toplevel.mk: Redirect
	stderr to `/dev/null`.

	* builds/toplevel.mk: Move code block to handle 'dlg' stuff into
	`check_platform` conditional.
	Also fix wildcard expressions for guarding `git submodule` commands.
	Also make file copying work with non-Unix platforms (untested).

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

	[build] Use gcc (and clang) in C99 mode.

	Other compilers are unchanged.

	* builds/compiler/gcc-dev.mk, builds/compiler/gcc.mk (ANSIFLAGS):
	s/-ansi/-std=c99/.

	* builds/freetype.mk (FT_CFLAGS): Remove `-std=c99`.

	* builds/unix/configure.raw: Handle C99.
	Remove no longer needed test for gcc 4.6 and earlier.

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

	[dlg] Fix compiler warnings.

	* src/dlg/dlgwrap.c: Duplicate some feature test macros from
	`dlg.c`, which must come first before loading standard headers.  For
	example, `freetype.h` loads `stdio.h` if compiled in debug mode.

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

	* src/type42/t42parse.c: Fix `-Wformat` warnings.

2020-12-01  Priyesh Kumar  <priyeshkkumar@gmail.com>

	[builds/unix] Check for 'pthread' library.

	* builds/unix/ax_pthread.m4: New file, taken from 'autoconf-archive'
	git repository.

	* builds/unix/configure.raw: Check for 'pthread'; also check whether
	it works.

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

	[base] Implement vertical alignment of log printing.

	Based on a patch by Priyesh.

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

	* src/base/ftdebug.c, builds/windows/ftdebug.c (ft_log_handler):
	Print logs after a fixed width to handle different lengths of
	`FT_COMPONENT` entries.
	Use `ft_strrchr` to check for final newline character.

2020-11-30  Priyesh Kumar  <priyeshkkumar@gmail.com>

	Update logging related documentation.

	* docs/DEBUG: Updates related to `FT_LOGGING`.

	* README.git: Updates related to logging.

2020-11-30  Priyesh Kumar  <priyeshkkumar@gmail.com>

	* src/*: Fix `-Wformat` warnings.

2020-11-30  Priyesh Kumar  <priyeshkkumar@gmail.com>

	[builds/windows] Changes to build 'dlg' with FreeType on Windows.

	We only support Visual C++ 2010 and newer.

	* builds/windows/vc2010/script.bat: New windows batch file to copy
	necessary 'dlg' files from `submodules/dlg` to `src/dlg`.  This file
	is used as a pre-built event in Visual C++.

	* builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c`.

	* builds/windows/vc2010/freetype.vcxproj.filters: Add
	`src/dlgwrap.c`.

	* builds/windows/vc2010/freetype.vcxproj
	(AdditionalIncludeDirectories): Add include files of dlg for 'Debug'
	and 'Debug Static' configurations on both 'x64' and 'win32'
	platforms.
	(PreprocessorDefinitions): Add `FT_LOGGING` for 'Debug' and 'Debug
	Static' configurations on both 'x64' and 'win32' platforms.
	Add `DLG_STATIC' for 'Debug' configuration on 'x64' and 'win32'
	platforms.
	(DisableLanguageExtensions): We need to disable the `/Za` option
	when building 'dlg' with FreeType as 'dlg' strictly follows the C99
	standard.  Visual C++ produces behaves unexpectedly when
	compiling a C99 file with `/Za` option enabled.

2020-11-30  Priyesh Kumar  <priyeshkkumar@gmail.com>

	[base] Add public API to change log handling function.

	* include/freetype/ftlogging.h (FT_Custom_Log_Handler): New function
	typedef to store the custom callback logging function.
	(FT_Set_Log_Handler, FT_Set_Default_Log_Handler): New functions to
	set and reset custom log handler.

	* include/freetype/internal/ftdebug.h (custom_output_handler): New
	variable to support a custom callback logging function.
	(FT_Logging_Callback): A new function typedef to print log using
	custom callback logging function, which is set using
	`FT_Set_Log_Handler`.
	(FT_Log): Use it.

	* src/base/ftdebug.c (FT_Set_Log_Handler,
	FT_Set_Default_Log_Handler, FT_Logging_Callback): Add function
	definitions.

2020-11-28  Priyesh Kumar  <priyeshkkumar@gmail.com>

	[base] Add public API to change the levels of tracing components.

	* include/freetype/ftlogging.h: New header file.

	* include/freetype/internal/ftdebug.h [FT_LOGGING]: Include
	`ftlogging.h`.

	* src/base/ftdebug.c (ft_custom_trace_level): New variable.
	(ft_debug_init): Update to support change of levels of tracing
	components of FreeType at run-time.
	(FT_Trace_Set_Level): New function to change the levels of tracing
	components at run-time.
	(FT_Trace_Set_Default_Level): New function to reset the levels of
	tracing components back to default.

2020-11-28  Priyesh Kumar  <priyeshkkumar@gmail.com>

	[base] Updates to print timestamp and name of `FT_COMPONENT` in logs.

	* include/freetype/internal/ftdebug.h (FT_LOGGING_TAG,
	FT_LOGGING_TAG_): New macros to resolve the value of `FT_COMPONENT'
	into a string.
	(ft_add_tag, ft_remove_tag): New functions to add and remove dlg tags.

	* src/base/ftdebug.c: Add new variables to control the logging of
	timestamp and name of `FT_COMPONENT` along with actual logs.
	(ft_add_tag, ft_remove_tag): Add function definitions.
	(ft_log_handler): Updates to print timestamp and name of
	`FT_COMPONENT`.
	(ft_debug_init) [FT_LOGGING]: Users can now control the logging of
	timestamp and name of `FT_COMPONENT` by adding tags in the
	`FT2_DEBUG` environment variable.

2020-11-27  Priyesh Kumar  <priyeshkkumar@gmail.com>

	[base] Add functions and variables to print logs to a file.

	* include/freetype/internal/ftdebug.h: Added dlg's header files.
	(FT_LOG): New macro to redirect trace logs to dlg's API's whenever
	`FT_LOGGING' is defined.
	(ft_logging_init, ft_logging_deinit): New functions to handle
	initialization and uninitialization of logging related variables.
	(ft_log_handler): New function to handle logs of FreeType.

	* src/base/ftdebug.c: Add necessary logging related variables.
	(ft_logging_init, ft_logging_deinit, ft_log_handler): Add function
	definitions.

	* src/base/ftinit.c (FT_Init_FreeType) [FT_LOGGING]: Call
	`ft_logging_init`.
	(FT_Done_FreeType) [FT_LOGGING]: Call `ft_logging_deinit`.

	* src/base/ftobjs.c (FT_New_Library): Call `ft_debug_init` only if
	`FT_LOGGING` is not defined.

2020-11-27  Priyesh Kumar  <priyeshkkumar@gmail.com>

	[builds] Necessary changes to make 'dlg' compile.

	* autogen.sh (copy_submodule_files): New script to copy all the
	necessary source and include files from `submodules/dlg` to
	`src/dlg`.

	* src/dlg/dlgwrap.c: New wrapper file for `src/dlg.c`.  It enables
	the build of 'dlg' if the `FT_LOGGING` macro is defined.

	* src/dlg/rules.mk: New sub-Makefile.

	* builds/freetype.mk (DLG_DIR): New variable to include the
	header files of the 'dlg' library.
	(INCLUDES): Add `DLG_DIR`.
	(FT_CFLAGS): Add `-std=c99' flag.
	Include `src/dlg/rules.mk` file to build 'dlg' library.
	(OBJ_S, OBJ_M): Add `DLG_OBJS_M` and `DLG_OBJS_S`.

	* builds/toplevel.mk: For builds directly from the git repository
	we need to copy files from `submodule/dlg` to `src/dlg`.

	* include/freetype/config/ftoption.h, devel/ftoption.h (FT_LOGGING):
	New macro to enable or disable the logging facility in FreeType.

2020-11-27  Priyesh Kumar  <priyeshkkumar@gmail.com>

	* .gitmodules: Add 'dlg' library's git repository as submodule.

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

	* src/tools/chktrcmp.py (trace_use_pat): Update to current use.

2020-11-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cff,cid,type1] Demote old engine for lack of CFF2.

	* src/cff/cffobjs.c (cff_driver_init): Always default to Adobe engine.
	* src/cid/cidobjs.c (cid_driver_init): Ditto.
	* src/type1/t1objs.c (T1_Driver_Init): Ditto.

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

	* src/type42/t42parse.c (t42_parse_sfnts): More tracing messages.

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

	* meson.build: Fix .pc file generation.

	For backwards compatibility we need the libtool version, not the .so
	number.

	Reported by Nikolaus.

2020-10-28  Werner Lemberg  <wl@gnu.org>

	[truetype] Minor update to forthcoming OpenType 1.8.4 standard.

	* src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Limit
	size of `regionCount`.

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

	* meson.build: Fix 'harfbuzz' and 'brotli' build options (#59347).

	Without this patch, 'harfbuzz' and 'brotli' are always required.

	Patch submitted anonymously in Savannah bug report.

2020-10-23  Ben Wagner  <bungeman@google.com>

	* src/sfnt/pngshim.c (Load_SBit_Png): Fix memory leak (#59322).

	The issue is that `rows` is allocated but will not be freed in the
	event that the call to `png_read_image` fails and calls `longjmp`.

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

	* Version 2.10.4 released.
	==========================


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

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

	* README, src/base/ftver.rc, builds/windows/vc2010/index.html,
	builds/windows/visualc/index.html,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
	s/2.10.3/2.10.4/, s/2103/2104/.

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

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

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

	[sfnt] Fix heap buffer overflow (#59308).

	This is CVE-2020-15999.

	* src/sfnt/pngshim.c (Load_SBit_Png): Test bitmap size earlier.

2020-10-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/tt{colr,cpal}.c: Fix signedness warnings from VC++.

2020-10-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/sfwoff2.c (Read255UShort): Tweak types to please VC++.

2020-10-10  Werner Lemberg  <wl@gnu.org>

	* Version 2.10.3 released.
	==========================


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

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

	* README, src/base/ftver.rc, builds/windows/vc2010/index.html,
	builds/windows/visualc/index.html,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
	s/2.10.2/2.10.3/, s/2102/2103/.

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

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

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

	[autofit] Synchronize with ttfautohint.

	This corresponds to the following commits in the ttfautohint git
	repository:

	  bb6842bd3bd437b7b4a7921b0376c860f5e73d18  Typo, formatting.
	  d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa  Add Medefaidrin script.

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

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

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

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

	Move `scripts/make_distribution_archives.py` to `src/tools`.

	* scr/tools/scripts/make_distribution_archives.py: (_TOP_DIR,
	_SCRIPT_DIR): Updated to new location.
	(main): s/shutils.copyfile/shutils.copy/ to preserve file
	permissions.
	(main): Prefix source file paths with `git_dir` while copying files
	to allow calls of the script from other places than the top-level
	directory.

2020-09-24  Werner Lemberg  <wl@gnu.org>

	* src/cff/cffgload.c (cff_slot_load): Scale `vertBearingY`.

	Towards the end of the the function there is a call to
	`FT_Outline_Get_CBox` that retrieves the glyph bbox in scaled units.
	That sets `horiBearing{X,Y}` and `vertBearingX` but `vertBearingY`
	is left alone, and is not scaled.

	Patch from Eric Muller <emuller@amazon.com>.

2020-09-24  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Trace glyph metrics.

2020-09-22  Werner Lemberg  <wl@gnu.org>

	[meson] Move auxiliary scripts to `builds/meson`.

	Suggested by Alexei.

	* scripts/*.py: Move meson scripts to...
	* builds/meson/*.py: ... this new location.

	* meson.build: Updated.

2020-09-21  David Turner  <david@freetype.org>

	Add python script for building tarballs.

	* scripts/make_distribution_archives.py: New file.

	This standalone Python script should be equivalent to running `make
	dist` with the Make-based build system, with the following minor
	differences:

	- Since `make distclean` doesn't always clean up `objs/` properly,
	  `make dist` archives may contain some stale binaries like
	  `objs/.libs/libfreetype.so.6` or others.

	- `config.guess` and `config.sub` are not updated unless option
	  `--gnu-config-dir=DIR` is used to specify the location of these
	  files.

	- Some bits of the auto-generated reference documentation may
	  appear in slightly different order, probably due to issues related
	  to mkdocs and docwriter.

	As an example, the call

	  scripts/make_distribution_archives.py /tmp/freetype2-dist

	creates the following files under `/tmp/freetype2-dist`:

	  freetype-<version>.tar.gz
	  freetype-<version>.tar.xz
	  ft<winversion>.zip

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

	* scripts/extract_freetype_version.py: Fix regex typos.

2020-09-21  David Turner  <david@freetype.org>

	Add Meson build project file.

	Example usage:

	  # Configure Meson build in directory `build-meson` to generate
	  # release binaries comparable to to the ones from the
	  # autotools/make build system.
	  meson setup build-meson \
	        --prefix=/usr/local \
	        --buildtype=debugoptimized \
	        --strip \
	        -Db_ndebug=true

	  # After configuring the Meson build with the above command,
	  # compile and install to `/usr/local/`; this includes a pkg-config
	  # file.
	  ninja -C build-meson install

	  # Alternatively, compile and install to `/tmp/aa/usr/local/...`
	  # for packaging.
	  DESTDIR=/tmp/aa ninja -C build-meson install

	  # Generate documentation under `build-meson/docs`.
	  ninja -C build-meson docs

	Library size comparison for stripped `libfreetype.so` generated by
	all three build systems:

	  - Default build (autotools + libtool): 712 KiB
	  - CMake build (RelWithDebInfo):        712 KiB
	  - Meson build:                         712 KiB


	* meson.build: New top-level Meson build file for the library.

	* meson_options.txt: New file.  It holds user-selectable options for
	the build, which can be printed with `meson configure`, and selected
	at `meson setup` or `meson --reconfigure` time with
	`-D<option>=<value>`.

	* scripts/parse_modules_cfg.py: A script invoked by `meson.build` to
	parse `modules.cfg` and extract important information out of it
	(i.e., the list of modules).

	* scripts/process_ftoption_h.py: New script invoked by `meson.build`
	to process the original `ftoption.h` file.  It enables or disables
	configuration macro variables based on the available dependencies.
	This is similar to what other build systems are using (i.e., Meson's
	`configure_file()` command is not used here).

	* scripts/extract_freetype_version.py: New script invoked by
	`meson.build` to extract the FreeType version number from
	`<freetype/freetype.h>`.

	* scripts/extract_libtool_version.py: New script invoked by
	`meson.build` to extract the libtool `revision_info` data from
	`builds/unix/configure.raw`, and to generate the corresponding
	shared library suffix.

	* scripts/generate_reference_docs.py: New script invoked by
	`meson.build` to generate the FreeType 2 reference documentation
	(using the `docwriter` and `mkdocs` packages, which must be already
	installed).

2020-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Improve the second pass (#58373).

	Besides dropout control the second horizontal sweep is supposed to
	clean up straight horizontal edges that are mishandled by the first
	vertical sweep when a line passes through pixel centers.  This line
	would present as perfectly aligned span edges in the second sweep.

	* src/raster/ftraster.c (Horizontal_Sweep_Span): Replace the old
	implementation with a better one focusing on aligned span edges only.

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

	[raster] Tune SMART macro (#58352).

	Windows seems to perform smart dropout control at 26.6 precision.
	To mimick Windows independent of increased precision, we need to tweak
	the macro so that some close calls break down rather than up.

	* src/raster/ftraster.c (SMART): Tweak the macro.

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

	[raster] Introduce SMART macro.

	* src/raster/ftraster.c (SMART): New macro for smart dropout rounding.
	(Verstical_Sweep_Drop, Horizontal_Sweep_Drop): Use it.

2020-09-03  Boris Dalstein  <dalboris@gmail.com>

	[build] Make CMake install basic version information.

	* CMakeLists.txt: Do it.

2020-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Reduce Infinality footprint (cont'd).

	* src/truetype/ttinterp.c (Ins_DELTAP): Shrink variable scope.
	(Ins_SHPIX, Ins_MIRP): Revise if-logic.

2020-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Reduce Infinality footprint.

	* src/truetype/ttinterp.c (Ins_SHPIX, Ins_MSIRP, Ins_MIAP, Ins_MDRP,
	Ins_MIRP): Shrink variable scopes and consolidate ifdefs.

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

	[truetype] Refactor compensation color.

	* src/truetype/ttinterp.h (TT_Round_Func): Change the last argument.
	* src/truetype/ttinterp.c (Ins_ROUND, Ins_NROUND, Ins_MDAP, Ins_MIAP,
	Ins_MDRP, Ins_MIRP): Move compensation retrieval from here...
	(Round_*): ... to here.
	* src/truetype/ttobjs.c (tt_size_init_bytecode): Reserve zero
	compensation at color index 3.

2020-08-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Don't set target in direct mode.

	* src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Remove assignment.
	(ft_smooth_raster_lcd) [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Ditto.

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

	* src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Limit width.

	Segmentation fault reported as

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

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

	* src/truetype/ttgload.c (TT_Get_VMetrics): Add tracing message.

2020-08-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND.

	For glyphs with OVERLAP_SIMPLE or OVERLAP_COMPOUND, set
	FT_OUTLINE_OVERLAP to render them with direct oversampling, which
	mitigates artifacts (see 3bb512bc9f62).

	* include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Redefine to rhyme
	with OVERLAP_SIMPLE.
	* src/base/ftgloadr.c (FT_GlyphLoader_Rewind): Reset outline flags.
	* src/truetype/ttgload.c
	(TT_Load_Simple_Glyph): Retain OVERLAP_SIMPLE.
	(load_truetype_glyph): Retain OVERLAP_COMPOUND.

2020-08-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgload.c (TT_Load_Glyph): More tracing.

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

	Hide internal functions with SunPro.

	* include/freetype/internal/compiler-macros.h
	(FT_INTERNAL_FUNCTION_ATTRIBUTE) <__SUNPRO_C>: Define as __hidden.

2020-07-28  Anuj Verma  <anujv@iitbhilai.ac.in>

	Fix static compilation with Visual C.

	* include/freetype/internal/compiler-macros.h
	(FT_INTERNAL_FUNCTION_ATTRIBUTE) <_WIN32>: Define as empty.

2020-07-28  Priyesh Kumar  <priyeshkkumar@gmail.com>

	Fix `-Wformat' compiler warnings.

	* src/*: Fix format specifiers.

	* builds/unix/ftsystem.c (FT_Stream_Open): Ditto.

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

	Fix `-Wformat' compiler warnings.

	Problem reported by Priyesh kumar <priyeshkkumar@gmail.com>

	* src/base/ftoutln.c (FT_Outline_Decompose): Fix number of arguments
	to tracing macro.

	* src/bdf/bdfdrivr.c (bdf_cmap_char_next, bdf_get_bdf_property):
	Ditto.

	* src/cache/ftcbasic.c (ftc_basic_family_get_count): Ditto.
	Reformulate message.

	* src/pcf/pcfdrivr.c (pcf_get_bdf_property): Ditto.

	* src/sfnt/sfwoff2.c (woff2_open_font): Ditto.
	Trace table offset, too.

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Ditto.

2020-07-23  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_decompress): Fix compiler warning.

	Reported by Hin-Tak.

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

	* builds/unix/configure.raw: Fix inclusion of `ftoption.h'.

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

	Fix clang warnings.

	* include/freetype/internal/autohint.h
	(FT_DECLARE_AUTOHINTER_INTERFACE): New macro.
	* src/autofit/afmodule.h: Use it to declare
	`af_autofitter_interface'.

	* include/freetype/internal/ftobjs.h (FT_DECLARE_GLYPH): New macro.
	* src/base/ftbase.h: Use it to declare `ft_bitmap_glyph_class' and
	`ft_outline_glyph_class'.

	* src/base/ftglyph.c: Include `ftbase.h'.

	* src/cff/cffparse.c (cff_parser_run): Fix type of `t2_size'.

	* src/pcf/pcfdrivr.c (pcf_cmap_char_next): Fix type of `result'.

	* src/psaux/psauxmod.c (psaux_module_class): Use `FT_DEFINE_MODULE'.
	* src/psaux/psauxmod.h: Declare `afm_parser_funcs',
	`t1_cmap_classes', `cff_decoder_funcs', and `psaux_module_class'.

	* src/pshinter/pshmod.c: Include `pshmod.h'.

	* src/sfnt/sfwoff2.c (ROUND4, WRITE_SHORT): Fix implicit sign
	conversion.
	(compute_ULong_sum): Fix return type.
	Fix implicit sign conversion.
	(store_points): Fix type of `last_flag', `repeat_count', and `flag'.
	Use casts to avoid warnings.
	(reconstruct_glyf): Fix implicit sign conversion.
	Use cast to avoid warning.
	(get_x_mins): Fix implicit sign conversion.
	* src/sfnt/ttcmap.c: Undef `TTCMAPCITEM'.
	* src/sfnt/ttcmap.h: Define `TTCMAPCITEM' and include `ttcmapc.h' to
	declare cmap classes.

	* src/smooth/ftsmooth.c (ft_smooth_overlap_spans): Use cast.

	* src/truetype/ttinterp.c (Ins_MIAP): Fix typo.

2020-07-07  David Turner  <david@freetype.org>

	[build] Really fix multi and C++ builds.

	The following builds were still failing due to previous changes:

	  make multi
	  make multi CC="c++"
	  make CC="c++"

	This patch fixes the issues, which were missing includes to get the
	right macro definitions in multi-build mode.

	Also, `FT_UNUSED' is actually used by third-party code, so move it
	back to `public-macros.h' to avoid breaking it.

	* include/freetype/config/public-macros.h (FT_EXPORT): Remove
	special definition for C++.
	(FT_UNUSED): Define here instead of...
	* include/freetype/config/compiler-macros.h: ... here.
	(FT_FUNCTION_DECLARATION): Remove special definition for C++.
	(FT_LOCAL_ARRAY_DEF): Fix definition.

	* src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h,
	src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER' and `FT_END_HEADER'.

2020-07-06  David Turner  <david@freetype.org>

	[build] Fix multi and C++ builds.

	The following builds were failing due to previous changes:

	  make multi
	  make multi CC="c++"

	* include/freetype/config/ftconfig.h: Remove `FT_END_HEADER'.

	* include/freetype/config/ftheader.h (FT_BEGIN_HEADER,
	FT_END_HEADER): Protect against redefinition.

	* src/cache/ftccache.h, src/cache/ftcmru.h, src/pcf/pcfutil.h,
	src/psaux/pserror.h, src/psaux/psft.h, src/psaux/psstack.h,
	src/sfnt/woff2tags.h: Include `compiler-macros.h'.

	* src/sfnt/woff2tags.c: Include `woff2tags.h'.

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

	[psaux] Improve `t1_decoder_parse_metrics' (#58646).

	* src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy
	corresponding code from old engine's `t1_decoder_parse_charstrings'
	function to handle `op_callsubr' and `op_return'.

2020-07-05  David Turner  <david@freetype.org>

	[build] Improve visibility support of library function names.

	* include/freetype/config/public-macros.h
	(FT_PUBLIC_FUNCTION_ATTRIBUTE): New macro to tag functions as
	public (and thus exportable).
	(FT_EXPORT): Use it.

	* include/freetype/config/compiler-macros.h
	(FT_INTERNAL_FUNCTION_ATTRIBUTE): New macro to tag functions as
	internal to the library (and thus hidden).  Note that on ELF
	systems, all internal functions have hidden visibility, which avoids
	the need to enforce this when invoking the compiler (e.g., with an
	option like `-fvisibility=hidden').

	(FT_FUNCTION_DECLARATION, FT_FUNCTION_DEFINITION): New base macros
	to deal with C and C++ linkage issues at the same time.

	(FT_LOCAL, FT_LOCAL_DEF, FT_LOCAL_ARRAY, FT_LOCAL_ARRAY_DEF,
	FT_BASE, FT_BASE_DEF, FT_EXPORT_VAR, FT_BASE_CALLBACK,
	FT_BASE_CALLBACK_DEF): Redefined using new macros.

2020-07-05  David Turner  <david@freetype.org>

	[build] Split off more stuff from `ftconfig.h'.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off macro definitions
	required by the FreeType API headers to...
	* include/freetype/config/public-macros.h: ...this new file.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off macro definitions used
	by the library but not to be exposed to clients to...
	* include/freetype/config/compiler-macros.h: ...this new file.

	* include/freetype/internal/*.h, src/raster/ftraster.h: Include
	`compiler-macros.h' where needed.

2020-07-05  David Turner  <david@freetype.org>

	[build] Move mac support code to `mac-support.h'.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off mac-specific stuff
	to...
	* include/freetype/config/mac-support.h: ...this new file.

	* CMakeLists.txt, builds/unix/configure.raw: Remove `/undef ->
	#undef' string replacement; the affected code is no longer part of
	the `ftconfig.h' template.

2020-07-05  David Turner  <david@freetype.org>

	[build] Put integer type definitions into `integer-types.h'.

	Refactor some of the `ftconfig.h' headers and template to move the
	definition of the FreeType integer types (e.g., `FT_Int16') to a
	common header file `freetype/config/integer-types.h'.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off integer type
	definition stuff to...
	* include/freetype/config/integer-types.h: ...this new file.

	* builds/unix/ftconfig.h.in: Control the definition of
	`FT_SIZEOF_INT' and `FT_SIZEOF_LONG' with macro
	`FT_USE_AUTOCONF_SIZEOF_TYPES'.  If these are not defined, auto
	detection happens in `integer-types.h' as usual based on `INTXX_MAX'
	values.  Otherwise the autoconf-detected values are used.

	* builds/unix/configure.raw (CPPFLAGS): Don't include path to
	`config' directory.  Instead, ...
	(FT_CONFIG_STANDARD_LIBRARY_H): Use complete path.

2020-07-05  David Turner  <david@freetype.org>

	[build] Rename `build/unix/ftconfig.in' to `ftconfig.h.in'.

	Since we are no longer limited to 8.3 file names, it is simpler to
	follow the usual conventions for template files.

	* builds/unix/ftconfig.in: Renamed to...
	* builds/unix/ftconfig.h.in: ...this.

	* CMakeLists.txt, builds/unix/configure.raw: Updated.

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

	[smooth] Introduce direct oversampling for overlaps.

	This implements oversampling to mitigate artifacts in pixels partially
	covered by overlapping contours.  It turns out that the 4x4
	oversampling is sufficient but, at least, quadruples the rendering
	time.  The outline has to set FT_OUTLINE_OVERLAP to use this method.

	* include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): New flag.
	* src/smooth/ftsmooth.c (ft_smooth_render): Check it to...
	(ft_smooth_raster_overlap): ... inflate outline and set up direct
	rendering for oversampling with...
	(ft_smooth_overlap_spans): ... new span function that integrates them.

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

	[smooth] Use direct rendering mode in Harmony.

	Instead of rendering 3 bitmaps side by side and reshuffling, we use
	direct rendering to deliver the bitmaps on each third byte.

	* src/smooth/ftsmooth.c (ft_smooth_raster_lcd)
	[!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Set up direct mode with...
	(ft_smooth_lcd_spans): ... new span function.

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

	[smooth] Separate LCD paths from gray rendering.

	This makes `ft_smooth_render' a lot smaller and easier to follow. It
	also cleanly separates Harmony and ClearType-style LCD rendering
	algorithms. Now I only wish to move LCD filtering and geometry from
	FT_Library to FT_Renderer.

	* src/smooth/ftsmooth.c (ft_smooth_render): Move LCD code from here...
	(ft_smooth_raster_lcd, ft_smooth_raster_lcdv): ... to here.
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Reorganize #ifdef's.

2020-06-20  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Fix handling of `style_name == NULL' (#58630).

	* src/cff/cffobjs.c (cff_face_init): If a call to `cff_strcpy' fails
	by returning NULL in `cff_face_init', `remove_style' is still
	called.  This means that the NULL pointer is dereferenced, causing a
	crash.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Fix another two memory leaks (#58629).

	* src/cff/cffobjs.c (cff_size_init): If a call to `funcs->create'
	fails to allocate one of the `internal->subfont' variables, make
	sure to free `internal->topfont' and any successfully allocated
	subfonts.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[psaux] Fix memory leak (#58626).

	* src/psaux/psstack.c (cf2_stack_init): If `cf2_stack_init' fails to
	allocate the stack, return error early.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[base] Fix memory leak (#58624).

	* src/base/ftobjs.c (FT_New_Size): Avoid trying to free
	`size->internal' unless `size' has been allocated.  This mistake
	appeared in the fix for issue #58611.

2020-06-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Rework d1180b5f9598 until further notice.

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Reject large
	outlines.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff, cid] Fix segfaults in case of error (#58621).

	* src/cff/cffobjs.c (cff_slot_done), src/cid/cidobjs.c
	(cid_slot_done): If `ft_glyphslot_init' fails to allocate
	`internal', then the class' `done_slot' callback (called by
	`ft_glyphslot_done') must not dereference the pointer to `internal'.

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

	[base] Fix UBSAN error.

	Reported as

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

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Avoid values
	larger than 32 bits.

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

	[woff2] Fix segfault.

	Reported as

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

	* src/sfnt/sfwoff2.c (get_x_mins): Check whether `loca' table
	exists.

2020-06-19  Stephen McDowell  <svenevs.dev@gmail.com>

	[sfnt] Support Intel compilers.

	* src/sfnt/pngshim.c (premultiply_data): Intel compilers do not
	currently support `__builtin_shuffle'.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[base] Fix memory leak (#58611).

	* src/base/ftobjs.c (FT_New_Size): When the call to `clazz->init_size'
	fails, make sure to free `size->internal'.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Fix memory leak (#58610).

	* src/cff/cffobjs.c (cff_size_init): When the call to
	`funcs->create' fails, make sure to free `internal'.

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

	* src/cff/cffload.c (cff_index_get_pointers): Rename `t' to `tbl'.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Free table upon error allocating other data (#58609).

	* src/cff/cffload.c (cff_index_get_pointers): When new_bytes fails
	to allocate, make sure to free the table.  Do the same for both
	allocations if there is a later error.

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

	Remove redundant inclusion of `ft2build.h'.

	* */*: Remove `#include <ft2build.h>' where possible.

	* include/freetype/freetype.h: Remove cpp error about missing
	inclusion of `ft2build.h'.

2020-06-08  David Turner  <david@freetype.org>

	Make macros for header file names optional.

	We no longer have to take care of the 8.3 file name limit; this
	allows us (a) to introduce longer, meaningful file names, and (b) to
	avoid macro names in `#include' lines altogether since some
	compilers (most notably Visual C++) doesn't support this properly.

	*/*: Replace

	   #include FOO_H

	with

	   #include <freetype/foo.h>

	or something similar.  Also update the documentation.

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

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Trace number of cmaps.

2020-05-18  David Turner  <david@freetype.org>

	Remove obsolete HAVE_STDINT_H probing macro.

	This macro was updated by the unix configure script and the
	`CMakeLists.txt' one, but is never used in the source tree (nor is
	<stdint.h> included anywhere).

	* CMakeLists.txt, builds/unix/ftconfig.in: Don't handle
	`HAVE_STDINT_H'.

2020-05-18  David Turner  <david@freetype.org>

	Remove Jamfile files from the tree.

	These have not been used in a very, very long time, so better remove
	them.  A corresponding patch will be submitted to the
	`freetype2-demos' repository.

	* src/Jamfile, src/*/Jamfile, Jamrules: Delete.

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

	[smooth] Turn on LCD filtering during FreeType initialization.

	* src/smooth/ftsmooth.c (ft_smooth_init): Enable LCD filtering.

	* include/freetype/ftlcdfil.h: Document it, remove patent warnings.
	* include/freetype/freetype.h (FT_Render_Mode): Updated.
	* include/freetype/config/ftoption.h, devel/ftoption.h
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Do not mention patents.

2020-05-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Stop using dedicated LCD modules and classes.

	The LCD modules were never truly independent. They mostly served as
	a way to disable patented LCD rendering, which is no longer necessary.
	The `smooth' module now handles LCD modes as well.

	* src/smooth/ftsmooth.c (ft_smooth_lcd_renderer_class.
	ft_smooth_lcdv_renderer_class): Deleted.
	(ft_render_smooth): Reworked from `ft_render_smooth_generic'.
	* src/smooth/ftsmooth.h: Remove dedicated LCD classes.
	* src/smooth/module.mk: Remove dedicated LCD modules.
	* include/freetype/config/ftmodule.h: Ditto.
	* builds/amiga/include/config/ftmodule.h: Ditto.
	* include/freetype/ftmodapi.h: Do not mention LCD modules.

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

	* Version 2.10.2 released.
	==========================


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

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

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	builds/windows/vc2010/index.html, builds/windows/visualc/index.html,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
	s/2.10.1/2.10.2/, s/2101/2102/.

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

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

	* docs/CHANGES: Updated.

2020-05-08  Jakub Alba  <jalba@vewd.com>

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

	The font that exceeds the old limit is Icono Regular, version
	1.00000.

2020-05-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/freetype.mk: Refactor for readability.

2020-05-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[builds] Clean up Windows CE project files.

	Remove version from filenames that caused a lot of polution in the
	release process. Use VERSIONINFO resource instead.

	* builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/freetype.dsp: s/2101//g, but add `ftver.rc'.
	* builds/wince/vc2008-ce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/windows/visualce/index.html: s/2101//g.

2020-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* devel/ft2build.h: Override FT_CONFIG_MODULES_H here as well.

2020-05-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[builds/unix] Consolidate marco overrides (for the demos to see them).

	* builds/unix/unix-cc.in (FT_CONFIG_MODULES_H, FT_CONFIG_OPTIONS_H):
	Override them here...
	* builds/freetype.mk: ... instead of here.

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

	Allow setting `CC' in Unix build (#58051).

	* builds/unix/unix-cc.in (CC): Use `override'.  The command line
	  value of `CC' (if any) is stored already in `CCraw'.

2020-04-04  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Return if single stream operation fails.

	* src/sfnt/sfwoff2.c (get_x_mins): Do it.

	* src/sfnt/woff2tags.c: Remove unused include.

2020-03-22  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docs] Fix building docs if `srcdir' != `builddir'.

	`docs/reference/*' was moved one directory up in commit 237fed6.

	* builds/unix/unix-def.in (PIP): Remove variable.

	* configure: Create `docs' directory and copy assets from
	`docs/markdown'.

	* docs/README: Output directory is `reference'.

2020-03-21  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docwriter] Drop support for Python < 3.5.

	Python versions < 3.5 have reached end-of-life and as such, no
	security or bug fixes will be provided for those versions.  See

	  https://devguide.python.org/#status-of-python-branches

	for more information.

	* Jamfile (RefDoc): Add `site' parameter.

	* builds/detect.mk (std_setup): Update Python version requirement.

	* builds/freetype.mk (refdoc-venv): Use pip as `python -m pip'.

	* builds/unix/ax_compare_version.m4,
	builds/unix/ax_prog_python_version.m4: Macros to detect Python
	version.  New files.

	* builds/unix/configure.raw: Check for Python >= 3.5 and remove
	check for `pip'.

	* docs/CHANGES, docs/INSTALL.GNU, docs/README: Updated.

2020-03-02  Moazin Khatti  <moazinkhatri@gmail.com>

	[gzip] Support `gzip' encoded header conditionally.

	In order to support `gzip' encoded header the call to
	`inflateInit2' was modified in commit 6a92b1fadde26477a9179.
	However, this code breaks with the outdated internal version
	of zlib.  This is a temporary fix to conditionally support
	`gzip' encoded header whenever a system installation of zlib
	is being used.

	Problem report in

	  https://lists.nongnu.org/archive/html/freetype-devel/2020-02/msg00023.html

	* src/gzip/ftgzip.c (FT_Gzip_Uncompress): Change the the call to
	`inflateInit2' depending on whether the system installation is
	being used or the internal copy.

2020-02-29  Ben Wagner  <bungeman@google.com>

	[truetype] Fix state of `FT_Face' for buggy `gvar' tables (#57923).

	By resetting the blend as implemented with this commit fonts with
	invalid `gvar' tables may keep calling into `ft_var_load_gvar' from
	`tt_set_mm_blend' and failing, but the font was invalid anyway and
	we want to keep seeing the failure in `tt_set_mm_blend'.

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Calculate length of
	offset array once.
	Allocate arrays after `FT_FRAME_ENTER' (extra check before
	allocating and avoid needing to free array later if error entering
	frame).
	Always call `FT_FRAME_EXIT'.
	Consistently set counts immediately after array initialized.
	Reset the blend (particularly `blend->glyphoffsets') on failure.

2020-03-01  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docs] Update docwriter stylesheet.

	This change is required to support docwriter 1.2.1.

	See

	  https://github.com/freetype/docwriter/issues/36

	for more information.

	* docs/markdown/stylesheets/extra.css:
	(.md-typeset code) -> (.md-typeset pre>code)
	(pre) -> (pre>code)
	(p, .md-typeset p, h4): Remove commented styles.
	(table.index): Remove unused styles.

2020-02-28  Ben Wagner  <bungeman@google.com>

	[truetype] Add better checks for loading `gvar' table (#57905).

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Delay settings of any
	`blend->xxxcount' values until the corresponding data has been
	checked.
	Also do some sanitizing to avoid a too early exit.

	(TT_Vary_Apply_Glyph_Deltas): Improve tracing message.

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

	Make `FT_HAS_*' and `FT_IS_*' really return true (#57906).

	* include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Implement it.

2020-02-25  Dominik Röttsches  <drott@chromium.org>

	Fix for CFF space glyph regression (#57541).

	* src/psaux/psft.c (cf2_decoder_parse_substrings): Replace early-out
	  with FT_OFFSET.

2020-02-22  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix font table access.

	Reported as

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

	* src/sfnt/sfwoff2.c (get_x_mins): Explicitly check for presence of
	`head' table, which might not have been processed yet.

2020-02-21  Werner Lemberg  <wl@gnu.org>

	[psaux] Make `t1_decoder_parse_metrics' handle `op_div' (#57519).

	* src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy
	corresponding code from old engine's `t1_decoder_parse_charstrings'
	function.

2020-02-19  Nikolaus Waxweiler  <nikolaus.waxweiler@daltonmaag.com>

	[autofit] Add support for Hanifi Rohingya script.

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

	* src/autofit/afscript.h: Add Hanifi Rohingya standard character.

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

2020-02-19  Werner Lemberg  <wl@gnu.org>

	Require HarfBuzz 1.8.

	* builds/unix/configure.raw, CMakeLists.txt: Request HarfBuzz 1.8.0
	or newer.

	We are going to add auto-hinter support for Hanifi Rohingya, which
	was introduced in Unicode 11.0.

2020-02-12  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Ignore version (#57708).

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

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

	The font that exceeds the old limit is Constantine, version 1.001.

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

	[base] Fix `FREETYPE_PROPERTIES=type1:hinting-engine=adobe`.

	* src/base/ftpsprop.c (ps_property_set) [hinting-engine]: Avoid an
	incorrect return value that caused a warning.  The function did the
	right thing, though.

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

	[woff2] Fix memory leaks and a runtime warning.

	Reported as

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

	* src/sfnt/sfwoff2.c (compute_ULong_sum): Add missing cast.
	(reconstruct_hmtx): Add missing deallocation calls.

2020-01-02  Dominik Röttsches  <drott@chromium.org>

	[truetype] Fix UBSan warning on offset to nullptr (#57501).

	* src/truetype/ttinterp.c (Ins_CALL): Fail if `exc->FDefs' is null.

2019-12-31  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Allow bitmap-only fonts (#57394).

	* src/sfnt/sfwoff2.c (reconstruct_font): Fix test for `glyf' and
	`loca' tables.

2019-12-21  Hugh McMaster  <hugh.mcmaster@outlook.com>

	[docs] (2/2) Fix generation of API documentation (#56745).

	Creating the API Reference in the (new) `reference' sub-directory is
	consistent with other documentation sub-topics, such as `design',
	`glyphs' and `tutorial'.

	This patch fixes broken hyperlinks in the documentation pointing to
	and from the API Reference.  It also allows web assets to load from
	their relative paths.

	* builds/freetype.mk (DOC_DIR): Adjust.
	(refdoc, refdoc-venv): Add `--site' argument.

	* builds/toplevel.mk (do-dist): Updated.

2019-12-21  Hugh McMaster  <hugh.mcmaster@outlook.com>

	[docs] (1/2) Move static web assets (#56745).

	* docs/reference/*: Move ...
	* docs: ... one directory up.

2019-12-21  Dominik Röttsches  <drott@chromium.org>

	Fix more UBSan warnings on adding offset to nullptr (#57432).

	* src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c
	(cf2_initLocalRegionBuffer): Use `FT_OFFSET'.

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

	[truetype] Fix UBSan warnings on adding offsets to nullptr.

	Reported as

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

	* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET'.

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

	[truetype] Fix integer overflow.

	Reported as

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

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

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

	Another bunch of UBSan warnings on adding offsets to nullptr.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19427
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19433
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19441
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19451
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19452
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19457

	* src/autofit/aflatin.c (af_latin_hints_compute_segments,
	af_latin_hints_compute_edges): Use `FT_OFFSET'.

	* src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET'.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early
	if there is no charstring.

	* src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET'.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for
	zero bitmap dimensions.

2019-12-09  Dominik Röttsches  <drott@chromium.org>

	Fix more UBSan warnings on adding offset to nullptr (#57384).

	* src/smooth/ftsmooth.c (ft_smooth_render_generic),
	src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET'.

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

	* src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET'.

	Reported as

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

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

	More nullptr offset UBSan warnings (#57331, #57347).

	* src/autofit/afcjk.c (af_cjk_hints_compute_segments),
	src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c
	(Ins_UNKNOWN): Use `FT_OFFSET'.

2019-11-29  Dominik Röttsches  <drott@chromium.org>

	Avoid more nullptr offset UBSan warnings (#57316).

	* src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points.
	* src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET'.
	* src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if
	`charstring_base' or `charstring_len' are null.
	* src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET'.

2019-11-23  John Stracke  <jstracke@Google.com>

	[base] Really fix #57194.

	Apply accidentally missed second part of patch.

	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call
	`FT_GlyphLoader_CreateExtra'.

2019-11-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Avoid sanitizer warning (#57289).

	* src/truetype/ttpload.c (tt_face_get_device_metrics): Use
	`FT_OFFSET'.

2019-11-23  Armin Hasitzka  <prince.cherusker@gmail.com>

	[truetype] Fix integer overflow (#57287).

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

2019-11-23  Ben Wagner  <bungeman@google.com>

	[sfnt] Avoid sanitizer warning (#57286).

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +
	offset' computation.
	Tag `table' as `const'.

2019-11-23  John Stracke  <jstracke@Google.com>
            Werner Lemberg  <wl@gnu.org>

	[base] Fix `NULL + offset' sanitizer warnings (#57194).

	* src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points,
	FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET'.
	(FT_GlyphLoader_CreateExtra): Add short cut if some values are zero.

2019-11-23  Werner Lemberg  <wl@gnu.org>

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

	Use this for `base + offset' pointer calculations where `base' can
	be NULL (triggering a sanitizer warning even if the resulting
	pointer gets never dereferenced since it is undefined behaviour
	in C).

	Suggested by Ben Wagner.

2019-11-23  Ben Wagner  <bungeman@google.com>

	[sfnt] Ensure OTTO fonts have tables (#57285).

	* src/sfnt/ttload.c (tt_face_load_font_dir): Add test.

2019-11-23  Behdad Esfahbod  <behdad@behdad.org>

	Minor fixes for recent compilers.

	* src/gzip/infutil.h (inflate_mask): Add `const'.

	* src/autofit/aflatin2.c: Include `ft2build.h'.

2019-11-07  Nikolaus Waxweiler  <madigens@gmail.com>

	* CMakeLists.txt: Minor additions to the notes, compile
	  builds/unix/ftsystem.c instead of src/base/ftsystem.c on UNIX.

	The latter change is based on the code proposed by rim in #55235.

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts' for TTCs.

	Reported as

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

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift.

	Also improve tracing.

	Reported as

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

2019-10-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only.

2019-10-10  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size'.

	Reported as

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

2019-10-09  John Tytgat  <John.Tytgat@esko.com>

	[cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023).

	* src/cff/cffobjs.c (cff_face_init): Don't set
	FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts.

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

	[woff2] Fix SFNT table checks.

	Also reduce number of SFNT table lookups.

	Reported as

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

	* include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields
	`glyf_table', `loca_table', and `head_table'.

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature.
	Use table pointers in `info' parameter.
	(get_x_mins): Check `maxp_table'
	Use table pointers in `info' parameter.
	(reconstruct_font):  Use and set table pointers in `info' parameter.
	Fix check for `glyf' and `loca' tables.
	Update call to `reconstruct_glyf'.
	(woff2_open_font): Updated.

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

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Fix reallocation.

	Reported as

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

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

	Improve memory debugging.

	* include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use
	`FT_DEBUG_INNER' to set source code file name and line.

	* src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of
	tracing message.

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

	* src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation.

	Reported as

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

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

	* src/base/ftstroke.c (ft_stroker_inside): Speed up.

2019-10-01  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts'.

	Reported as

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

2019-09-30  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak.

	Reported as

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

2019-09-30  Werner Lemberg  <wl@gnu.org>

	[woff2] Reject fonts without `head' table.

	Also fix memory deallocation in case of error.

	`head' problem reported as

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

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Don't use `stream_close'.
	Abort if `head_table' is NULL.
	Don't free `transformed_buf' in case of error.
	(woff2_open_font): Don't set `uncompressed_buf' to NULL.

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

	[woff2] Fix compiler warnings.

	Problem reported by Alexei.

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min'.
	(reconstruct_font): Initialize `num_hmetrics'.
	(woff2_open_font): Initialize `info'.

2019-09-28  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check.

	Correct thinkos in patch from 2019-09-01.

2019-09-28  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix memory leaks.

	One of them reported as

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Free `info->x_mins' and
	`woff2->ttc_fonts'.

	(reconstruct_glyf): Initialize `info->x_mins'.

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

	* src/base/ftstroke.c (ft_stroker_cap): Speed up caps.

2019-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter.
	* include/freetype/ftstroke.h: Wordsmith miter docs.

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes.

	Reported as

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

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

	* src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations.

2019-09-20  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Fix memory leaks.

	Reported as

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling.
	Free `uncompressed_buf'.
	(reconstruct_font): Free `transformed_buf'.

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

	* src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count'.

	Problem reported by Marc Schönefeld <marc.schoenefeld@gmx.org>.

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Check table index.

	Reported as

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

2019-09-15  Avi Halachmi (:avih)  <avihpit@yahoo.com>

	[cmake] Don't fail if brotli is missing (#56894).

	The libs which cmake controls are commented out at

	  include/freetype/config/ftoption.h

	and cmake un-comment each enabled library, but the brotli option was
	not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained
	defined even if brotli was missing/disabled/etc.

	Comment it such that cmake can control it, which means leaving it
	undefined if brotli is missing.

	* include/freetype/config/ftoption.h: Fix typo.

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

	[cmake] Add brotli support.

	* CMakeLists.txt (FT_WITH_BROTLI): New option.

	* builds/cmake/FindBrotliDec.cmake: New file.

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

	Fix handling of `AF_CONFIG_OPTION_INDIC'.

	* devel/ftoption.h, include/freetype/config/ftoption.h:
	`AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'.

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

	CMakeLists.txt: Fix generation of DLL related stuff (#56852).

	Extract `version_info' variable from `builds/unix/configure.raw' and
	use the data to correctly set `LIBRARY_VERSION' and
	`LIBRARY_SOVERSION'.

	Also use the data to set `ft_version' field in `freetype2.pc'.
	Also fix the needed minimum version of HarfBuzz in `freetype2.pc'.

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

	* src/sfnt/sfwoff2.c (compute_ULong_sum): Fix undefined shift.

	Reported as

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

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Add sanity check.

	Don't trust `totalSfntSize' unconditionally.

	Reported as

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

2019-08-27  Dominik Röttsches  <drott@chromium.org>

	[woff2] Don't use `FT_UInt64' (#56815).

	* src/sfnt/sfwoff2.c (woff2_open_font): Use `FT_UInt32' for
	`file_offset'.  This fixes builds on platforms where `FT_LONG64' is
	not defined while still being sufficient to store a file offset.

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

	[truetype] Prevent crash in `TT_Set_Named_Instance' (#56813).

	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Fix error
	handling.

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

	[woff2] Fix compiler warnings.

	* src/sfnt/sfwoff2.c (read_num_hmetrics): Remove unused argument
	`table_len'.
	Update caller.
	(triplet_decode, compute_bbox, store_loca, reconstruct_glyf): Make
	`i' variable unsigned.
	(reconstruct_glyph): Remove condition which is always false.
	(reconstruct_html): Removed unused argument `transformed_size'.
	Update caller.

	* src/sfnt/woff2tags.c (woff2_known_tags): Remove condition which is
	always false.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Check whether known tag is in array bounds.

	If table tag is not 0x3f, we expect a value between 0 and 62.  If
	this is not the case, exit with errors.

	* src/sfnt/sfwoff2/c: Check whether table tag makes sense.

	* src/sfnt/woff2tags.c: Return 0 if tag is out of bounds.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* src/sfnt/sfwoff2.c: Improve trace comments.

	Adjust tracing levels for comments, and more formatting.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Support `hmtx' reconstruction when `glyf' is untransformed.

	`reconstruct_hmtx' requires `info->x_mins' and `info->num_glyphs' to
	reconstruct the hmtx table.  In case glyf is not transformed, we
	call `get_x_mins' which does the necessary work.

	* src/sfnt/sfwoff2.c (get_x_mins): New function.
	(reconstruct_font): Call get_x_mins.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Support `face->num_faces' for WOFF2 fonts.

	Set correct value of `face->num_faces' for WOFF2 fonts.  This is
	being handled separately because we only load the tables for the
	requested font face in `woff2_open_font' and create a single-face
	sfnt stream.

	The full discussion is at:

	  https://lists.gnu.org/archive/html/freetype-devel/2019-08/msg00000.html

	* src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
	`woff2_num_faces'.
	(sfnt_init_face): Introduce variable `woff2_num_faces', and change
	`face->root.num_faces' if `woff2_num_faces' is set.

	* src/sfnt/sfwoff2.c (woff2_open_font): Validate requested face
	index and handle negative face indices.

	* src/sfnt/sfwoff2.h (woff2_open_font): Add parameter `num_faces' to
	declaration.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Improve memory and error handling.

	Free up memory after use, and improve error handling.

	* src/sfnt/sfwoff2.c (reconstruct_font, woff2_open_font): Implement
	changes.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Avoid too many calls to `FT_REALLOC'.

	We do this by using `totalSfntSize' as an initial reference, and
	extending the buffer when required.  This reduces rendering time
	considerably.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add
	`totalSfntSize', rename `total_sfnt_size' to `actual_sfnt_size'.

	* src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size' to keep
	track of and update total size of stream.

	(WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly.

	(pad4, store_loca, reconstruct_glyf, reconstruct_hmtx,
	reconstruct_font): Update parameters to accept `sfnt_size'.

	(woff2_open_font): Add variable `sfnt_size'.  Use WOFF2 header field
	`totalSfntSize' as initial reference (if value makes sense) and
	allocate `totalSfntSize' bytes for the sfnt stream.  `write_buf'
	handles reallocation if and when required.  Also resize the stream
	to `actual_sfnt_size' after reconstruction.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Reconstruct `loca', `hmtx', and swap out stream.

	Add necessary functions to reconstruct loca and hmtx tables (the two
	remaining tables that can have a transform).  `woff2_open_font' is
	now capable of loading a woff2 font face.  This code may still need
	more refining and better memory management.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total
	(final) size of sfnt stream.

	(WOFF2_InfoRec): Add header checksum value.

	* src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index'
	parameter to its pointer so its value can be modified by
	`woff2_open_font'.

	* src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into
	sfnt buffer at given position.

	(write_buf): Add parameter `extend_buf' which allows caller to
	specify whether buffer should be reallocated before copying data.

	(WRITE_SFNT_BUF): Updated.

	(pad4, store_loca, reconstruct_htmx): New functions.

	(reconstruct_glyf): Calculate loca values and store them.

	(reconstruct_font): Call `reconstruct_hmtx', write table record
	entries, and calculate table checksums.  Also calculate font
	checksum and update `checksumAdjustment' entry in head table.

	(woff2_open_font): Open stream for sfnt buffer, swap out input
	stream and return.

	* src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept
	pointer to `face_index'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Reconstruct transformed `glyf' table.

	Reconstruct `glyf' table if it is transformed in the uncompressed
	table stream.  Also add necessary structures, macros and functions.

	* include/freetype/internal/wofftypes.h (WOFF2_InfoRec,
	WOFF2_SubstreamRec, WOFF2_PointRec): New structures.
	(WOFF2_TableRec): s/OrigLength/dst_length/.

	* src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use
	`FT_SET_ERROR' to set implicit `error' variable.

	(WRITE_SHORT): New macro.

	(N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM,
	COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to
	refer to substreams of the transformed `glyf' tables.

	(Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX'
	macros.

	(with_sign, safe_int_addition): New functions to add sign to values
	based on a flag and perform safe addition respectively.

	(triplet_decode): Decode variable-length (flag, xCoordinate,
	yCoordinate) triplet for a simple glyph.   See

	  https://www.w3.org/TR/WOFF2/#triplet_decoding

	(store_points, compute_bbox, composteGlyph_size, reconstruct_glyf):
	New functions.

	(reconstruct_font): Call `reconstruct_glyf'.

	* src/sfnt/sfwoff2.h: Add required constants.

	* src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Copy un-transformed tables to sfnt stream.

	Copy un-transformed tables to the sfnt stream.

	* src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF): New macro.
	(write_buf): New function.  Extend memory of `dst' buffer and copy
	bytes from `src'.
	(compute_ULong_sum): New function.  Calculate checksum of table.
	(reconstruct_font): Change `FT_Byte* sfnt' to `FT_Byte**
	sfnt_bytes'.  This has been done because we reallocate memory to
	`sfnt' multiple times, which may change the pointer value of `sfnt'.
	This new pointer must be propogated back to the caller.  Same reason
	for using a double pointer in `write_buf'.

	* src/sfnt/woff2tags.h (WOFF2_DEFAULT_MAX_SIZE): New macro used for
	overflow checking.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Create stream for uncompressed buffer.

	Uncompressed buffer is now an `FT_Stream'.

	Perform basic checks and start iterating over tables.

	* src/sfnt/sfwoff2.c (stream_close, find_table, read_num_hmetrics):
	New functions.
	(reconstruct_font): Modify parameters and iterate over tables.
	(woff2_open_font): Updated.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Handle TTCs and start reconstructing font.

	We `handle' TTCs by modifying the `indices' array to point to only
	those tables that are part of the requested `face_index'.

	Set and use `num_tables' in `WOFF2_TtcFont'.

	* src/sfnt/sfwoff2.c (reconstruct_font): New function.
	(woff2_open_font): Start reconstruction of font.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Get known tags from function.

	Change `KnownTags' to a function (`woff2_known_tags').  This avoids
	introducing a global constant array.  This function returns the
	specified index without *any* checks.  The caller must ensure that
	`index' is within array limits.

	* src/sfnt/sfwoff2.c (woff2_open_font): Change `KnownTags[...]'
	notation to `woff2_known_tags( ...  )'.

	* src/sfnt/woff2tags.c: Perform changes.

	* src/sfnt/woff2tags.h: Update definitions.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Minor.

	* src/sfnt/sfwoff2.c (woff2_uncompress): Add error message
	(woff2_open_font): Free `uncompressed_buf'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Uncompress Brotli streams and `face_index' support.

	WOFF2 compressed stream is now uncompressed if Brotli is available.
	This data is stored in a separate buffer (uncompressed_buf) because
	it does not contain direct table data.  Certain tables have
	transformations applied to them, and they must be reconstructed
	before we can write those tables to the SFNT stream.

	`face_index' is now being passed as a parameter to
	`woff2_open_font'.

	* src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
	`face_instance_index'.

	* src/sfnt/sfwoff2.c (woff2_uncompress): New function.
	(woff2_open_font): Call `woff2_uncompress'.
	(compute_first_table_offset): Fix return type.

	* src/sfnt/sfwoff2.h (woff2_open_font): Modify declaration.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* builds/unix/configure.raw: Change argument name to `brotli'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add Brotli dependency and required checks.

	Brotli is required for decompressing WOFF2 font directory streams.
	The library is thus being added as an optional dependency for
	FreeType.

	* builds/unix/configure.raw: Add checks for `libbrotlidec'.
	(REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Write SFNT Offset table.

	* src/sfnt/sfwoff2.c (WRITE_USHORT, WRITE_ULONG): New macros.
	(compare_tags): New function.
	(woff2_open_font): Implement it.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* src/sfnt/sfwoff2.c: #undef macros.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Read table and collection directory.

	* include/freetype/internal/wofftypes.h (WOFF2_TtcFontRec): New
	structure.
	(WOFF2_HeaderRec): Add more fields.

	* src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128, ROUND4): New
	macros.
	(Read255UShort, CollectionHeaderSize, compute_first_table_offset):
	New functions.
	(ReadBase128): Use `FT_READ_BYTE'.
	(woff2_open_font): Add functionality to read table directory and
	collection directory (if present).

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Include `woff2tags.c' for building.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `woff2tags.c'.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Add WOFF2 constants.

	Add constants required for WOFF2, and known table tags as defined in
	the specification.  See

	  https://www.w3.org/TR/WOFF2/#table_dir_format

	for details.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Read WOFF 2 header.

	Check for WOFF2 tag, call `woff2_open_font', and implement it to read
	header according to specification.

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

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `sfwoff2.c'.

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

	* src/sfnt/sfobjs.c (sfnt_open_font): Check for `wOF2' tag and call
	`woff2_open_font'.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add structures for WOFF2.

	Add structures and macro for WOFF 2 header and table directory.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec,
	WOFF2_TableRec_): New structures.

	* include/freetype/tttags.h (TTAG_wOF2): New macro.

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

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

	Reported as

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

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

	[type1] Fix `FT_Get_Var_Axis_Flags' (#56804).

	* src/type1/t1load.c (T1_Get_MM_Var): Allocate space for axis flags.
	Also remove redundant assignment.

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

	* src/base/ftbbox.c (cubic_peak): Sanitize left shift (#56586).

2019-07-22  Weiyi Wu  <w1w2y3@gmail.com>

	* src/cid/cidload.c (cid_hex_to_binary): Fix typo (#56653).

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

	[sfnt, winfonts] Avoid memory leaks in case of error (#56587).

	* src/sfnt/sfwoff.c (woff_open_font): Call `FT_FRAME_EXIT' in case
	of error.

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Ditto.

2019-07-12  Ben Wagner  <bungeman@google.com>

	Properly handle phantom points for variation fonts (#56601).

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Scale phantom
	points if HVAR and/or VVAR is present.

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

	[psaux] (2/2) Handle fonts that use SEAC for ligatures (#56580).

	The same as previous commit but for the old engine.

	* src/psaux/t1decode.c (t1operator_seac): Implement it.

2019-07-04  Chris Liddell <chris.liddell@artifex.com>

	[psaux] (1/2) Handle fonts that use SEAC for ligatures (#56580).

	As originally intended, a Type 1 SEAC charstring would be used for
	an accented glyph (like `acaron' or `uumlaut'), where the advance
	width of the SEAC glyph is the same as that of the `base' glyph
	(like `a' or `u').  In this case it is not uncommon for the SEAC
	glyph to not use an (H)SBW opcode of its own but to rely on the
	value from the base glyph.

	However, out-of-spec fonts also use SEAC glyphs for ligatures (like
	`oe' or `fi'), and in those cases the overall advance width is
	greater than that of the `base' glyph.  For this reason we have to
	allow that the SEAC glyph can have an (H)SBW value of its own, and
	if it has, retain this value, rather than the one from the base
	glyph.

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escSEAC>:
	Implement it.

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

	* Version 2.10.1 released.
	==========================


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

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

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	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.10.0/2.10.1/, s/2100/2101/.

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

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

	* include/freetype/fterrors.h (FT_Error_String): Fix C++ compilation.

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

	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Fix inequality.

	Reported by Armin Hasitzka.

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

	* src/tools/apinames.c: Formatting, minor edits.

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

	[autofit] Disable hinting if no blue zones are available (#56450).

	* src/autofit/afglobal.c (af_face_global_get_metrics): Start again
	(with dummy hinter module) if no blue zones are present.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Change
	signature to return error code.
	If no blue zones are found, update `glyph_styles' array to hold
	AF_STYLE_NONE_DFLT instead of the current style.
	(af_latin_metrics_init): Return internal error code if no blue zones
	are found.

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

	Towards better VMS support.

	More to come.

	* builds/vms/LIBS.OPT_IA64, builds/vms/_LINK.OPT_IA64,
	builds/vms/vmslib.dat: New files provided by Jouk Jansen
	<joukj@hrem.nano.tudelft.nl>.

	* builds/vms/ftconfig.h: Update, also from Jouk.

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

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

2019-06-13  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Restore the span buffering for direct mode only.

	The buffer size FT_MAX_GRAY_SPANS is set to 10 spans, which should be
	enough to cover the entire scanline for simple glyphs in most cases:
	each slightly slanted edge needs up to two spans, plus a filling span
	in-between.  This is not new, we used to do it before cb4388783cecc.

	* src/smooth/ftgrays.c (gray_TWorker): Add `spans' and `num_spans'.
	(gray_hline, gray_sweep): Implement the span buffering.
	(gray_raster_render): Use negative `num_spans' to avoid the direct
	mode.

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

	* include/freetype/ftmodapi.h (FT_DebugHook_Func): Return error.

	Fix a warning by adding a return value as in `TT_RunIns',
	which should not be a compatibility issue.

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

	* src/truetype/ttobjs.c (tt_check_trickyness_family): Add `const'.

2019-06-11  Moazin Khatti  <moazinkhatri@gmail.com>

	[gzip] Add support for `gzip' encoded header.

	* src/gzip/ftgzip.c (FT_Gzip_Uncompress): Modify the the call to
	`inflateInit2' to enable support for `gzip' encoded headers.

2019-06-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type1,type42] Use `const' for string literals.

	* include/freetype/internal/psaux.h (PS_Table_FuncsRec): Updated.
	* include/freetype/internal/t1types.h (T1_EncodingRec): Updated.
	* src/psaux/psobjs.[ch] (ps_table_add): Updated.
	* src/type1/t1load.c (T1_Open_Face, parse_encoding): Updated.
	* src/type42/t42objs.c (T42_Open_Face): Updated.
	* src/type42/t42parse.c (t42_parse_encoding): Updated.

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

2019-06-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf,pcf] Use `const' for string literals.

	* src/bdf/bdf.h (bdf_property_t): Updated `name'.
	* src/bdf/bdflib.c (_bdf_list_split,bdf_create_property,
	_bdf_add_property,_bdf_ato*): Updated.
	* src/bdf/bdfdrivr.c (bdf_interpret_style): Updated.
	* src/pcf/pcfread.c (pcf_intrpret_style): Ditto.

2019-06-07  Philip Race  <philip.race@oracle.com>

	* src/base/ftinit.c (FT_Set_Default_Properties): Fix crash.

	Terminate loop at end of environment.

2019-05-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Solidify VC2005 builds.

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly
	declare `_BitScanReverse' intrinsic.
	* builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics.

2019-05-30  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Separate WOFF sources and headers.

	Move WOFF sources and headers to separate files.

	* include/freetype/internal/wofftypes.h, src/sfnt/sfwoff.c,
	src/sfnt/sfwoff.h: New files.

	* include/freetype/internal/fttrace.h: Register `sfwoff.c'.

	* include/freetype/internal/internal.h: Define
	FT_INTERNAL_WOFF_TYPES_H.

	* include/freetype/internal/sfnt.h: Include FT_INTERNAL_WOFF_TYPES_H.

	* include/freetype/internal/tttypes.h: Move out WOFF structures.

	* src/sfnt/rules.mk: Add `sfwoff.c'.

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

	* src/sfnt/sfobjs.c: Include `sfwoff.h', move out WOFF sources.

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

	[base] Fix `make multi'.

	Reported by Nikhil.

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

2019-05-29  Ben Wagner  <bungeman@google.com>

	[truetype] Fix copy-and-paste error (#56409).

	* src/truetype/ttgload.c (load_truetype_glyph): Use correct indices
	into `unrounded' array for phantom points.

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

	[truetype] Fix 32bit builds (#56404).

	Patch suggested by Ben Wagner <bungeman@google.com>.

	* src/truetype/ttgxvar.c (FT_fixedToInt, FT_fixedToFdot6): Remove
	harmful cast to unsigned type.

2019-05-26  Ben Wagner  <bungeman@google.com>

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Improve accuracy.

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

	[truetype] Draw glyphs without deltas in variation font (#56374).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Always fill
	`unrounded' array.

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

	* src/truetype/ttinterp.c (opcode_name): Improve mnemonics.

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

	[truetype] Actually scale varied CVT values.

	Up to now, only the unscaled CVT values were varied; in other words,
	the `CVAR' data was never used for bytecode hinting.

	* src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
	function.
	(tt_face_vary_cvt): Use it to trigger rescaling of CVT values.

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

	[truetype] Use 26.6 format for storing unscaled CVT values.

	If `CVAR' data is applied to variation fonts, fractional values are
	possible.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Change type of
	`cvt' from `FT_Short' to `FT_Int32'.

	* src/truetype/ttgxvar.c (FT_fdot6ToFixed): New macro.
	(tt_face_vary_cvt): Use it to update code to 26.6 format.

	* src/truetype/ttobjs.c (tt_size_run_prep): Update code to 26.6
	format.

	* src/truetype/ttpload.c (tt_face_load_cvt): Stora data in 26.6
	format.

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

	* src/truetype/ttgload.c (load_truetype_glyph): Init `unrounded'.

	This fixes linear advance width values for spacing glyphs.  Bug
	introduced 2019-05-09.

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

	[truetype] Avoid code duplication.

	* src/truetype/ttobjs.c (tt_size_run_prep): Scale CVT values in this
	function.
	(tt_size_ready_bytecode): Updated.
	* src/truetype/ttgload.c (tt_loader_init): Updated.

2019-05-13  Jouk Jansen  <joukj@hrem.nano.tudelft.nl>

	* vms_make.com: Updated.  Handle `bzip2' directory, too.

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

	* src/psaux/psfont.c (cf2_font_setup): Fix compiler warning.

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

	[truetype] Doh.  Fix last commit to make it work.

	Very embarassing :-)

	Reported as

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

	* src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): Move up and add
	argument; update all callers.
	(TT_Process_Simple_Glyph): Use it.  The `unrounded' array is active
	for variation fonts only, thus also enclose related code with
	`#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT ...  #endif' where
	necessary.
	Revert commit a113e5d from 2019-05-09, and don't use `extra_points2'
	but allocate a temporary array.
	Speed up the scaling of the `unrounded' array.

	* src/truetype/ttgxvar.c (FT_fixedToInt, FT_FixedToFdot6): Fix type
	conversions and rounding.  The unsigned type must have more or equal
	bits to the signed type.

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

	[truetype] Increase precision of font variation (#54371).

	This patch makes FreeType use font units in 26.6 format internally
	instead of integers.

	* src/truetype/ttgxvar.c (FT_fixedToFdot6): New macro.
	(TT_Vary_Apply_Glyph_Deltas): Add argument to output unrounded font
	coordinates.
	* src/truetype/ttgxvar.h: Updated.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Use
	`extra_points2' array to temporarily hold unrounded point
	coordinates; use them to compute scaled coordinates and linear
	advance width and height.
	(load_truetype_code): Adjust similarly.

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

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

2019-05-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Faster fractions.

	* src/smooth/ftgrays.c (SUBPIXELS): Replace with...
	(FRACT): A fractional coordinate macro to use in...
	(gray_render_line, gray_render_scanline): ... here.

2019-05-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/raster/ftraster.c (Draw_Sweep): Unbreak.

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

	* src/raster/ftraster.c: Clean-ups.

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

	* src/truetype/ttgxvar.c: More use of `FT_fdot14ToFixed'.

2019-05-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_render_line): Small shortcut.

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

	Various clang 8.0 static analyzer fixes.

	Reported by Sender Ghost <lightside@gmx.com>.

	* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Catch a corner
	case where `edge->first' could be NULL.

	* src/pfr/pfrobjs.c (pfr_slot_load): Remove unnecessary test of
	`size'.

	* src/raster/ftraster.c (Draw_Sweep): Catch a corner case where
	`draw_right' might be NULL.

	* src/sfnt/ttmtx.c (tt_face_get_metrics): Fix limit test for
	`aadvance'.
	Ensure `abearing' always hold a meaningful result.

	* src/truetype/ttgload.c (load_truetype_glyph): Ensure `subglyph' is
	not NULL before accessing it.
	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Remove unnecessary
	test of `namedstyle'.

	* src/type42/t42parse.c (t42_parser_done): Ensure
	`parser->root.funcs.done' is not NULL before accessing it.

2019-05-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Miscellaneous macro updates.

	* src/base/ftoutln.c (SCALED): Updated.
	* src/smooth/ftgrays.c (SCALED): Ditto.
	(FLOOR, ROUND, CEILING): Removed.
	* src/psaux/psfixed.h (cf2_fracToFixed): Updated.

2019-05-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Tweak LCD filtering.

	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
	Choose direction from bitmap's pixel_mode.
	* include/freetype/internal/ftobjs.c (FT_Bitmap_LcdFilterFunc):
	Updated.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.

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

	* vms_make.com: Updated (#56253).

	Remove no longer existing directories (`autohint', `otlayout').
	Update used base extensions.
	Activate `autofit' module.
	Add `gxvalid' module.
	Update copyright notices.

2019-04-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Simplify cubic Bézier flattening.

	The previous implementation is correct but it is too complex.
	The revised algorithm is based on the fact that each split moves
	the control points closer to the trisection points on the chord.
	The corresponding distances are good surrogates for the curve
	deviation from the straight line.

	This cubic flattening algorithm is somewhat similar to the conic
	algorithm based the distance from the control point to the middle of
	the chord.  The cubic distances, however, decrease less predictably
	but are easy enough to calculate on each step.

	The new algorithm produces slightly larger number of splits, which is
	compensated by its simplicity.  The overall rendering performance is
	improved by 1-2%.  The larger number of splits does not necessarily
	result in higher quality, which stays comparable.

	* src/smooth/ftgrays.c (gray_render_cubic): Replace the split
	condition.

2019-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Bithacks and cosmetics.

	* src/smooth/ftgrays.c (gray_record_cell, gray_set_cell, gray_hline,
	gray_render_conic, gray_convert_glyph_inner): Updated.

2019-04-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Optimize Bézier bisections.

	This change makes bisections faster by 20-30%. When inlined into
	`gray_render_cubic', this makes the function faster by 10% and is
	noticeable in the overall rendering performance.

	* src/raster/ftraster.c (Split_Conic, Split_Cubic): Use shifts and
	refactor.
	* src/smooth/ftgrays.c (gray_split_conic, gray_split_cubic): Ditto.
	* src/base/ftstroke.c (ft_conic_split, ft_cubic_split): Ditto.
	* src/base/ftbbox.c (cubic_peak): Use shifts.

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

	* src/sfnt/ttcmap.c (tt_cmap12_next): Remove dead code.

	Found by clang 8.0's static analyzer and reported by Sender Ghost
	<lightside@gmx.com>.

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

	[base] Fix thinko in previous commit.

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Check final width, not
	target pitch.

	Problem reported by Sender Ghost <lightside@gmx.com>.

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

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Check target pitch.

	Problem reported by Sender Ghost <lightside@gmx.com>.

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

	Fix return value of `FT_Set_Named_Instance' (#56186).

	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Correctly handle
	internal return value -1 of `TT_Set_Var_Design'.

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

	[pcf] Fix handling of undefined glyph (#56067).

	This commit fixes the changes from 2018-07-21, which broke charmap
	iteration.  We now add the default character as a new glyph with
	index 0, thus increasing the number of glyphs by one (as before).

	* src/pcf/pcfread.c (pcf_get_metrics): Adjust to new artificial
	glyph with index 0.
	Limit number of elements to 65534.
	(pcf_get_bitmaps): Ditto.
	Unify two loops into one; this avoids allocation of an intermediate
	array.
	(pcf_get_encodings): Don't flip indices but copy glyph metrics of
	default character to index 0.
	Also handle invalid default character.

	* docs/CHANGES: Updated.

2019-04-15  Minmin Gong  <gongminmin@msn.com>

	* CMakeLists.txt: Avoid rewriting of unchanged configuration files.

	Reported as

	  https://savannah.nongnu.org/patch/index.php?9755

2019-04-15  JDG  <JonathanG@iQmetrix.com>

	* src/tools/apinames.c (main): Fix error message.

	Reported as

	  https://savannah.nongnu.org/patch/?9796

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

	[smooth] Fix segfault in direct mode (#56092).

	* src/base/ftoutln.c (FT_Outline_Render): Set missing clip_box for
	direct mode.
	* src/smooth/ftgrays.c (gray_raster_render): Use it.

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

	* src/sfnt/ttcmap.c (tt_get_glyph_name): Pacify compiler (#56061).

	This is for Visual Studio 2019 on ARM.

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

	For distribution, replace `.tar.bz2' with `.tar.xz' bundles.

	* builds/toplevel.mk (build): Do it.

	* README, docs/CHANGES, docs/release: Updated.

2019-04-06  Antony Lee  <anntzer.lee@gmail.com>

	Make `glyph_name' parameter to `FT_Get_Name_Index' a `const'.

	* include/freetype/freetype.h (FT_Get_Name_Index),
	include/freetype/internal/ftobjs.h (FT_Face_GetGlyphNameIndexFunc),
	include/freetype/internal/services/svgldict.h
	(FT_GlyphDict_NameIndexFunc), src/base/ftobjs.c (FT_Get_Name_Index),
	src/cff/cffdrivr.c (cff_get_name_index), src/sfnt/sfdriver.c
	(sfnt_get_name_index), src/type1/t1driver.c (t1_get_name_index),
	src/type42/t42drivr.c (t42_get_name_index): Add `const' to second
	argument.

2019-03-31  Armin Hasitzka  <prince.cherusker@gmail.com>

	[cff] Fix boundary checks.

	642bc7590c701c8cd35a9f60fa899cfa518b17ff introduced dynamically
	allocated memory when parsing CFF files with the "old" engine.  Bounds
	checks have never been updated, however, leading to pointless
	comparisons of pointers in some cases.  This commit presents a
	solution for bounds checks in the CFF module with an extended logic
	for the "old" engine while staying as concise as possible for the
	"new" one.

	* src/cff/cffparse.h: Introduce the struct `CFF_T2_StringRec' and
	the additional field `t2_strings' within `CFF_ParserRec'.

	* src/cff/cffparse.c (cff_parser_within_limits): Move all boundary
	checks into this new function and update the rest of `cffparse.c' to
	use it.

	Reported as

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

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

	[autofit] Fix Mongolian blue zone characters.

	* src/autofit/afblue.dat: Use U+200D (ZERO-WIDTH JOINER) characters
	to get medial forms for some Mongolian characters.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

2019-03-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Mongolian script.

	As a de-facto standard, layouts using this script are constructed
	horizontally line by line, then the lines are rotated clockwise for
	vertical display.

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

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

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

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

	* Version 2.10.0 released.
	==========================


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

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

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.9.1/2.10.0/, s/291/2100/.

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

	* builds/unix/configure.raw (version_info): Set to 23:0:17.
	* CMakeLists.txt (VERSION_MINOR): Set to 10.
	(VERSION_PATCH): Set to 0.

	* builds/toplevel.mk (version, winversion): Since the minor version
	number has two digits now, never omit the patch number.  We would
	get ambiguous zip file names otherwise.
	(dist): Remove remnants of `docmaker' tool.
	(do-dist): Remove unused intermediate files.

	* src/cff/cffparse.c (destrict_c2s_item): Guard function with
	CFF_CONFIG_OPTION_OLD_ENGINE macro.

2019-03-07  Andrei Alexeyev  <0x416b617269@gmail.com>
            Werner Lemberg  <wl@gnu.org>

	Fix invalid function pointer casts.

	This change should allow Freetype to work on WASM/Emscripten without
	needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'.

	* src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.

	* src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,
	parse_expansion_factor, parse_font_name): Return `void', not
	`FT_Error'.

	* include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):
	Fix signature.

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

	[base] Handle numeric overflow (#55827).

	* src/base/ftglyph.c (FT_Glyph_Get_CBox): Use `FT_PIX_CEIL_LONG'.

2019-03-05  Sebastian Rasmussen  <sebras@gmail.com>

	[psaux] Fix use of uninitialized memory (#55832).

	* src/psaux/psintrp.c (cf2_interpT2CharString): The call to
	`cf2_arrstack_setCount' may fail because the allocator ran out of
	memory.  When this happens the stack is still written to before the
	error condition is checked.  This means that FreeType writes outside
	of allocated memory.  This commit moves the error check prior to the
	stack assignment, hence the function now properly returns with an
	error condition.

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

	* src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets.

	The function only provided a framework without an actual
	implementation, which this commit removes.

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

	* src/tools/update-copyright-year: Insert `(C)'.

2019-02-21  Armin Hasitzka  <prince.cherusker@gmail.com>

	[truetype] Mask numeric overflows.

	* src/truetype/ttinterp.c (Move_CVT, Move_CVT_Stretched, Ins_MIRP):
	Mask numeric overflows.

	Reported as

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

2019-02-21  Armin Hasitzka  <prince.cherusker@gmail.com>

	[psaux] Mask numeric overflow.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Mask numeric
	overflow.

	Reported as

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

2019-02-16  Wink Saville  <wink@saville.com>

	* src/autofit/afwarp.h (af_warper_compute): Fix declaration.

2019-02-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Apply MVAR hasc, hdsc and hlgp metrics to current FT_Face metrics.

	Instead of setting typo or win metrics as the new `FT_Face' metrics
	indiscriminately, apply only typo deltas to the currently active
	`FT_Face' metrics.  This prevents line height differences when the
	default outlines were used as the regular face and instances for
	everything else, for example.

	* src/truetype/ttgxvar.c (tt_apply_mvar): Implement.

2019-02-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[sfnt] Use typo metrics if OS/2 fsSelection USE_TYPO_METRICS bit is set.

	If the `OS/2' table exists and `fsSelection' bit 7
	(USE_TYPO_METRICS) is set, use the `sTypo*' set of values to compute
	the `FT_Face's ascender, descender, and height.  Otherwise, fall
	back to old behavior.

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

2019-01-18  John Tytgat  <John.Tytgat@esko.com>

	[sfnt] Handle TT fonts having two PostScript font names (#55471).

	* src/sfnt/sfdriver.c (sfnt_get_name_id): Prefer English over any
	other language found for PostScript font names.

2019-01-08  Chris Liddell <chris.liddell@artifex.com>

	[psaux] Fix closepath (#55414).

	All of the Type 1 path building is done with code common to the
	revised CFF engine, with the exception of closepath, which was still
	calling ps_builder_close_contour(), thus previously cached segments
	were not always written to the path, and glyph corruption, or even
	invalid outlines were possible.

	* src/psauc/psinterp.c (cf2_interpT2CharString) <cf2_cmdCLOSEPATH>:
	Switch to calling `cf2_glyphpath_closeOpenPath'.

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

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

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

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

	Reported as

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

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

	[gxvalid] Fix compiler warnings.

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

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

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

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

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

	[bdf] Ignore data after `ENDFONT'.

	Reported as

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	[cff] Fix compiler warning (#55105).

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

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

	[truetype] Fix numeric overflow (#55103).

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

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

	[builds] Belated DLL support with vc2002-vc2008.

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

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

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

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

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

	[cff] Fix memory overflow.

	Reported as

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

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

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

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

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

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

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

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

	[psaux] Add safety guard (#54985).

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

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

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

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

	[ftstroke] Fix unpredictable failures (#54986).

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

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

	[ftstroke] Fix unpredictable failures (#54976).

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

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

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

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

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

	[pshinter] Fix numeric overflow.

	Reported as

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

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

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

	[psaux] Fix timeout in old CFF engine.

	Reported as

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

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

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

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

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

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

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

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

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

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

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

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

	Reported and tested by Behdad.

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

	[autofit] Prevent SEGV.

	See

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

	for more details on how the bug was found.

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

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

	[truetype] Speed up variation IUP.

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

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

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

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

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

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

	[base] Fix numeric overflow.

	Reported as

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

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

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

	[cff] Fix numeric overflow.

	Reported as

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

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

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

	[sfnt] Make `head' timestamps unsigned.

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

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

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

	Revert: Align FreeType with standard C memory management.

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

	[psaux] Fix numeric overflow.

	Triggered by

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

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

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

	Avoid endless loop while tracing (#54858).

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

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

	* CMakeLists.txt: Specify `RUNTIME DESTINATION'.

	This is needed for DLL builds.

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

	A missing Unicode cmap is not a fatal error.

	This is a follow-up to the previous commit.

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

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

	Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794).

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

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

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

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

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

	[psaux] Fix segfault.

	Reported as

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

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

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

	[psaux] Fix numeric overflow.

	Reported as

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

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

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

	[pshinter] Handle numeric overflow.

	Reported as

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

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

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

	Align FreeType with standard C memory management.

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

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

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

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

	Fix handling of `FT_Bool'.

	Before this commit we had code like

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

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

	  (unsigned char)( 0x8532 & 0x8000)

	which in turn expanded to

	  (unsigned char)( 0x8000)

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

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

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

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

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

	[bdf] Speed up charmap access.

	This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	[pcf] Replace charmap implementation.

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

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

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

	[base] Remove unused function `FT_GlyphLoader_CopyPoints'.

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

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

	[pcf] Prepare to replace charmap implementation.

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

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

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

	Remove unused fields.

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

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

	[pshinter] Handle numeric overflow.

	Reported as

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

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

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

	[truetype] Some fixes for VF checks.

	Reported as

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

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

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

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

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

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

	Reported as

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

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

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

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

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

	[truetype] Improve VF check.

	Triggered by

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

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

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

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

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

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

	Reported as

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

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

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

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

	[truetype] Fix assertion failure.

	Triggered by

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

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

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

	Synchronize `ftdebug.c' files.

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

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

	Add documentation guidelines file.

	* docs/DOCGUIDE: New file.

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

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

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

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

	Reported as

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

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

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

	*/*: s/PSNames/psnames/.

	Only tracing messages are affected.

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

	[sfnt] Fix heap buffer overflow in CPAL handling.

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

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

	Remove `FT_Outline_{New,Done}_Internal'.

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

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

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

	* docs/README: Updated.

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

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

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

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

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

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

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

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

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

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

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

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

	Consolidate bitmap presetting and size assessment.

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

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

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

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

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

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

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

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

	[errors] Introduce `FT_Error_String'.

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

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

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

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

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

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

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

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

	[base] Overflow-resistant bitmap presetting.

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

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

	Fix numeric overflows.

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

	Reported as

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

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

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

	Reported as

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

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

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

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

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

	* configure: Copy assets required by docwriter.

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

	Fixes `make refdoc' if builddir != srcdir.

	Reported as

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

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

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

	Reported as

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

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

	Minor tracing adjustments.

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

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

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

	[truetype] Avoid nested frames.

	Triggered by

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

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

	Also avoid calling `tt_get_metrics' twice under some circumstances.

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

	Various minor clean-ups.

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

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

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

	Convert documentation markup to Markdown.

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

	  ae5d1a4cec37557f31aec270332cfe886a62f9a0
	  53c69ce04faed3dcc68ca0f54cb8d703d8babf69
	  195728d5ba38f34fb2c2c20807c01656f2f59b66
	  c962db28ea59225f0105c03d907d4a9b71765687

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

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

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

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

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

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

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

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

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

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

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

	Reported as

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

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

	[truetype] Improve legibility of `glyf' parsing.

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

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

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

	Reported as

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

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

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

	Reported as

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

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

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

	[cff] Fix heap buffer overflow in old engine.

	Reported as

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

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

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

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

	Reported as bug #54515, duplicate of #43540.

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

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

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

	[bdf] Don't track duplicate encodings.

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

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

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

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

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

	*/* (FT_COMPONENT): Updated.

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

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

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

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

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

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

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

	[bdf] Remove unused fields.

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

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

	[cff] Fix another segv in old engine.

	Reported as

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

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

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

	[cff] Fix missing error handling.

	Reported as

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

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

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

	[bdf] Remove unused overflow storage.

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

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

	[cff] Fix segv in old engine.

	Reported as

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

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

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

	[bdf] Use unsigned types.

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

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

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

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

	Reported as

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

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

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

	Reported as

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

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

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

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

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

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

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

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

	Fix clang warnings.

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

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

	[raster, smooth] Reinstate bitmap size limits.

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

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

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

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

	[pcf] Revert massive unsigning.

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

	[smooth] Improve tracing.

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

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

	Add internal functions `FT_Trace_Disable' and `FT_Trace_Enable'.

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

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

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

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

	Debugging improvements.

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

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

	[pcf] Massive unsigning (part 2).

	Treat all size related properties as unsigned values.

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

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

	[pcf] Massive unsigning (part 1).

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

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

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

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

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

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

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

	[pcf] Use unsigned types.

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

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

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

	Reported as

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

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

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

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

	Fix clang warnings.

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

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

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

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

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

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

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

	[cid] Trace PostScript dictionaries.

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

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

	[cff] Fix typo.

	Reported as

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

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

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

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

	Reported as

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

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

	[smooth] Fix Harmony memory management.

	Reported as

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

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

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

	[type1] Avoid segfaults with `FT_Get_PS_Font_Value'.

	Reported as

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

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

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

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

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

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

	[psaux, type1]: More tracing improvements.

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

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

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

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

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

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

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

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

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

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

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

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

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

	Fix minor ASAN run-time warnings.

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

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

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

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

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

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

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

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

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

	  number_of_designs == 2 ^^ number_of_axes

	Reported as

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

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

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

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

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

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

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

	Reported as

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

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

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

	Reported as

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

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

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

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

	Reported as

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

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

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

	This code is taken from the type1 module.

	Reported as

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

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

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

	[pcf] Fix handling of the undefined glyph.

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

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

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

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

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

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

	It can now be found at

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

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

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

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

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

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

	Allow FT_ENCODING_NONE for `FT_Select_Charmap'.

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

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

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

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

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

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

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

	Reported as

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

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

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

	Reported as

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

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

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

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

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

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

	Fix typo (#54238).

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

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

	Adjust table size comparisons (#54242).

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

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

	Fix more 32bit issues (#54208).

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

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

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

	Fix 32bit build warnings (#54239).

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

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

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

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

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

	s/palette_types/palette_flags/.

	Suggested by Behdad.

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

	Make `FT_Get_Color_Glyph_Layer' return FT_Bool.

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

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

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

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

	Reported by Behdad.

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

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

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

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

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

	[truetype] Fix memory leak.

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

	Reported as

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

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

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

	Reported as

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

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

	[truetype] Increase precision while applying VF deltas.

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

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

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

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

	New base function `FT_Matrix_Check' (#54019).

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

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

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

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

	Fix typo.

	Reported by Behdad.

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

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

	s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.

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

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

	[sfnt] Fix CPAL heap buffer overflow.

	Reported as

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

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

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

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

	Reported by Alexei.

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

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

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

	[base] Introduce `FT_New_Glyph'.

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

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

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

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

	[bdf] Fix underflow of an unsigned value.

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

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

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

	[base] Add tracing for `FT_Bitmap_Blend'.

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

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

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

	s/trace_bitmap/trace_checksum/.

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

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

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

	[sfnt] Fix color glyph layer loading.

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

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

	[sfnt] Fix color palette loading.

	Reported as

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

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

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

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

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

	Add `FT_Bitmap_Blend' API.

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

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

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

	Replace `FT_Get_GlyphLayers' with `FT_Get_Color_Glyph_Layer'.

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

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

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

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

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

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

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

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

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

	Provide iterative API to access `COLR' data.

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

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

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

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

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

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

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

	Add glyph index and glyph load flags to glyph slot.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.

	* src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field.
	(ColrCpal): Removed.
	(tt_face_load_colr): Split off CPAL handling into...
	(tt_face_load_cpal): ... this new function.
	(tt_face_free_colr): Split off CPAL handling into...
	(tt_face_free_cpal): ... this new function.
	(tt_face_load_colr_layers, tt_face_palette_set): Updated.

	* src/sfnt/ttcolr.h: Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Updated.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix `sizeof' thinko.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't
	use `sizeof' for computing array limit.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (4/4).

	* src/sfnt/ttcolr.c (tt_face_find_color): Removed.
	(tt_face_colr_blend_layer): Use `face->palette' instead of calling
	`tt_face_find_color'.
	Use and set text foreground color.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (3/4).

	* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
	(FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
	functions.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (2/4).

	* src/sfnt/ttcolr.c (tt_face_palette_set): New function.
	(tt_face_load_colr): Allocate `face->palette' and call
	`tt_face_palette_set'.
	Adjust return error code in case of error.

	* src/sfnt/ttcolr.h: Updated.

	* include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New
	function type.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

	* src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c
	(sfnt_done_face): Updated.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (1/4).

	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
	`palette_index', `palette', `have_foreground_color' and
	`foreground_color'.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Minor.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers):
	s/palette_index/palette_entry_index/ for consistency.
	Adjust return error code in case of error.

2018-06-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Clean up.

	* src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):
	Clean up after 5-level gray removal (8dc8635874).
	(Vertical_Sweep_Span): Be brief.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix compiler warnings.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,
	tt_face_colr_blend_layer): Add `NULL' initializers.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.

	* include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,
	src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.

2018-06-10  Nikolaus Waxweiler  <madigens@gmail.com>

	CMakeLists: also accept IOS_PLATFORM=SIMULATOR64

	This might be needed to build FreeType for the iOS simulator. See
	https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed
	by Steve Robinson.

	* CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64

2018-06-10  Werner Lemberg  <wl@gnu.org>

	Implement `FT_Palette_Get'.

	* src/base/ftcolor.c: New file.

	* src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),
	src/base/ftbase.c: Add `ftcolor.c'.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks.

2018-06-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Deal with pitch sign earlier.

	* src/raster/ftraster.c (black_TWorker): Remove unused `traceG',
	s/bTarget/bOrigin/.
	(Render_Glyph): Set `ras.bOrigin' at the bottom-left corner.
	(Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):
	Updated accordingly.

2018-06-09  Werner Lemberg  <wl@gnu.org>

	[sfnt] Read `CPAL' version 1 tables.

	* include/freetype/internal.tttypes.h: Include FT_COLOR_H.
	(TT_FaceRec): Add `palette' field.

	* src/sfnt/ttcolr.c: Include FT_COLOR_H.
	(Cpal): Remove all data covered by the new `palette' field in
	`TT_FaceRec'.
	(tt_face_load_colr): Updated.
	Read `CPAL' version 1 data.
	(tt_face_load_colr_layers, tt_face_find_color): Updated.

	* src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.

2018-06-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] API for Harmony LCD rendering.

	This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
	LCD subpixel geometry including non-striped patterns.

	* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.
	* include/freetype/ftlcdfil.h: Document it.
	* include/freetype/freetype.h: Minor.
	* include/freetype/ftchapters.h: Minor.

2018-06-06  Werner Lemberg  <wl@gnu.org>

	ftcolor.h: Redesign API.

	While going to implement it I noticed that I need access to most of
	the `CPAL' elements; I thus plan to add a `cpal' field to
	`TT_FaceRec', which makes most of the previously suggested API
	functions obsolete because the fields will be directly accessible.

2018-06-06  Parth Wazurkar  <parthwazurkar@gmail.com>

	[bdf, pcf] Remove deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/pcf/pcfread.c (pcf_load_font): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

2018-06-06  Werner Lemberg  <wl@gnu.org>

	[smooth, raster] Limit bitmap size (#54019).

	* src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add
	function.
	[!STANDALONE]: Include FT_OUTLINE_H.
	(ft_black_render): Compute CBox and reject glyphs larger than
	0xFFFF x 0xFFFF.

	* src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger
	than 0xFFFF x 0xFFFF.

2018-06-03  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables.

2018-06-03  Werner Lemberg  <wl@gnu.org>

	* src/tools/glnames.py (main): Emit header in `light' comment style.

2018-06-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Attempt to mitigate bug #54019.

	The robust rendering of estra large glyphs came with unbearable cost.
	The old way of bisecting should fail but fail faster.

	* src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting
	in y-direction.

2018-06-02  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8706

2018-06-02  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033).

2018-05-31  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field.

	This is no longer used.

2018-05-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Get colors from `CPAL' table in right order (#54015).

	* src/sfnt/ttcolr.c (tt_face_find_color): Fix it.

2018-05-30  Werner Lemberg  <wl@gnu.org>

	ftcolor.h: Improve API design, fix typos (#54011, #54014).

	* include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...
	(FT_Palette_Get_Name_IDs): ... this function.
	(FT_Palette_Get_Entry_Names): Replace with...
	(FT_Palette_Get_Entry_Name_IDs): ... this function
	s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.

	* src/autofit/afloader.c (af_loader_load_glyph): Move the
	initialisationand declaration of variables into the if-block.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Fix pointer underflow.

	The declaration of `edge2' can be reached with `edge1 == NULL' and
	`axis->edges == 0' which results in undefined behaviour.

	* src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2'
	after checking `axis->num_edges > 1'.  `edge1 != NULL' can be assumed.

2018-05-30  Werner Lemberg  <wl@gnu.org>

	Various minor color fixes.

	* include/freetype/config/ftheader.h (FT_COLOR_H): New macro.

	* include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change
	type of `load_flags' to `FT_Int32'.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change
	type of `idx' to `FT_UInt'.
	(TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of
	`load_flags' to `FT_Int32'.

	* src/sfnt/ttcolr.c (find_base_glyph_record,
	tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'.
	(tt_face_find_color, tt_face_colr_blend_layer): Change type of
	`color_index' to `FT_UInt'.
	Fix signedness and type issues.

	* src/sfnt/ttcolr.h: Updated.

2018-05-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docmaker] Fix missing `Defined in (...)' under Windows/Cygwin.

	This platform uses backslashes for paths, which docmaker didn't
	understand correctly.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use
	`os.path.normpath' to normalize the path for the platform being
	used.

2018-05-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Formalize Harmony LCD rendering.

	This generalizes magic outline shifts that make Harmony LCD
	rendering work in terms of precise two-dimensional RGB subpixel
	positions. These coordinates are now set in time of the `smooth'
	module initialization and later used to shift a glyph outline for
	rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
	coordinates. The letter, however, rotates them before using.
	The LCD bitmap padding is also calculated using these coordinates.

	* include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field
	`lcd_geometry'.
	* src/base/ftlcdfil.c (ft_lcd_padding): Reworked.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.

	* src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]
	(ft_smooth_init): Initialize `lcd_geometry'.
	(ft_smooth_render_generic): Formalize outline shifts.

2018-05-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Reject elements of composites with invalid glyph indices.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8413

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it.

2018-05-22  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points.

2018-05-20  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftcolor.h: New file.

	This is an interface to the `CPAL' OpenType table.  No
	implementation yet.

2018-05-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'.

	Actually `_BitScanReverse' is available since VS2005.

2018-05-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value.

	Older VC versions don't provide `_BitScanReverse'.  We test for VC
	2013.

	Reported by John Emmas <john@creativepost.co.uk>.

2018-05-17  Werner Lemberg  <wl@gnu.org>

	s/inline/__inline/ for MSVC.

	Reported by John Emmas <john@creativepost.co.uk>.

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.

2018-05-16  Werner Lemberg  <wl@gnu.org>

	Add function `FT_Get_GlyphLayers' to access `COLR' table data.

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this
	structure to...
	* include/freetype/freetype.h (FT_Glyph_LayerRec): ... this
	header file.
	(FT_Glyph_Layer): New typedef.
	Update code to use it where appropriate.

	* src/base/ftobjs.c (FT_Get_GlyphLayers): New function.

2018-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix mono bitmap presetting (#53896).

	It is rather fundamental to set monochrome bitmap based on rounded
	CBox because the b/w rasterizer turns on pixels when their centers are
	inside the glyph outline. The dropout control is unpredictable and can
	distort narrow glyphs if the bitmap is too wide.

	Reported by Chris Liddell.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries
	are too close, adjust them before rounding.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix compiler warning (#53915).

	* src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix memory leak in handling `COLR' data.

	* src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array
	before reassigning allocated memory.
	Only allocate `color_layers' if we don't have one already.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] If `COLR' is present, don't assume that all glyphs use it.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if
	current glyph is not a `COLR' base glyph.

	* src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate
	`color_layers' if there are no color layers.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set.

	* src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.

2018-05-13  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Improve tracing.

2018-05-13  Shao Yu Zhang  <shaozhang@fb.com>
	    Werner Lemberg  <wl@gnu.org>

	[sfnt] Preliminary support of colored layer outlines (#44689).

	This commit enables OpenType's COLR/CPAL table handling; a typical
	application are color emojis that can be scaled to any size.

	If the color palette does not exist or is invalid, the rendering
	step rasterizes the outline instead.  The current implementation
	assumes that the foreground is black.

	Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.

	There are still some issues with metrics; additionally, an API to
	fetch color layers is missing.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_COLOR_LAYERS): New macro.

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,
	FT_Colr_InternalRec): New structures.
	(FT_Slot_InternalRec): Add `color_layers' field.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,
	TT_Blend_Colr_Func): New function types.
	(SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer',
	and `colr_blend' fields.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
	`colr_and_cpal' field.

	* include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New
	macros.

	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.

	* src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):
	Handle glyph color layers.

	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add
	`ttcolr.c'.

	* src/sfnt/sfdriver.c: Include `ttcolr.h'.
	(PUT_COLOR_LAYERS): New macro.
	Update call to `FT_DEFINE_SFNT_INTERFACE'.

	* src/sfnt/sfnt.c: Include `ttcolr.c'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables.
	(sfnt_done_face): Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.

2018-05-12  Arkady Shapkin  <arkady.shapkin@gmail.com>

	Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
	it.

2018-05-10  Alan Coopersmith  <alan.coopersmith@oracle.com>

	Fix DLL compilation on Solaris.

	AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'.  The
	Solaris Studio 12.1 through 12.5 compilers see the
	`-fvisibility=hidden' flag, but ignore it with a warning of:

	  cc: Warning: Option -fvisibility=hidden passed to ld,
	               if ld is invoked, ignored otherwise

	AC_LINK_IFELSE does the compile and then tries to link the result,
	at which point the Solaris linker will issue an error:

	  ld: fatal: option '-fvisibility=hidden' is incompatible with
	      building a dynamic executable

	If we don't use AC_LINK_IFELSE to catch the error, then configure
	will fail further tests which attempt to link, such as those testing
	dependencies like `libbz2'.

	Also, don't try adding `-fvisibility' if we have already added
	`-xldscope', just use one of them, since Sun Studio 12 and earlier
	compilers only issue a warning, and don't try passing through to the
	linker to generate an error, so AC_LINK_IFELSE doesn't catch them.

	Tested on Solaris 11.4 beta with compiler versions:

	  Sun Studio 8 (Sun C 5.5)
	  Sun Studio 10 (Sun C 5.7)
	  Sun Studio 11 (Sun C 5.8)
	  Sun Studio 12 (Sun C 5.9)
	  Sun Studio 12.1 (Sun C 5.10)
	  Oracle Solaris Studio 12.2 (Sun C 5.11)
	  Oracle Solaris Studio 12.3 (Sun C 5.12)
	  Oracle Solaris Studio 12.4 (Sun C 5.13)
	  Oracle Developer Studio 12.5 (Sun C 5.14)
	  Oracle Developer Studio 12.6 (Sun C 5.15)
	  gcc 5.5.0
	  gcc 7.3.0

	and verified the libfreetype.so.6 generated by each of those
	compilers exported the same set of symbols.

	* builds/unix/configure.raw: Implement it.

2018-05-08  Werner Lemberg  <wl@gnu.org>

	[autofit] Avoid potential SEGV if running out of memory.

	Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>.

	* src/autofit/afshaper.c (af_shaper_buf_create,
	af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't
	allocate and free a four-byte buffer.  Instead, make those functions
	no-ops; the calling functions will provide a pointer to a buffer
	instead.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),
	src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues, af_latin_metrics_check_digits)
	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for
	`shaper_buf'.

2018-05-07  Nikolaus Waxweiler  <madigens@gmail.com>

	[cmake] Allow using project as subfolder in other project.

	* CMakeLists.txt: Test for CMake build directory being different
	from source directory.  Provide other parts of the build system
	access the full include directory.

2018-05-07  Werner Lemberg  <wl@gnu.org>

	[build] Suppress configure's `nothing to be done' message.

	This is due to calling the configure script via `make' (within the
	top-level `configure' wrapper script).  The same can happen for all
	other secondary make targets that are used to only modify the
	primary one, e.g., `make setup devel'.

	* builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),
	builds/os2/detect (visualage, watcom, borlandc, devel),
	builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk
	(visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,
	devel-gcc): Use no-op recipe.

2018-05-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Support symbol visibility features of Sun / Oracle C compilers.

	Reported by Kiyoshi Kanazawa:
	https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html
	Thanks to the suggestions by Alexei and Alan Coopersmith.

	* builds/unix/configure.raw: Check if "-xldscope=hidden" is
	accepted, and if so, it is added to CFLAGS.  This is the option
	making Sun / Oracle C compilers hide the symbols from global
	scope.
	* include/freetype/config/ftconfig.h: Use "__global" prefix
	for FT_EXPORT() macro, if SunPro C is newer than Sun ONE
	Studio 8 (2003).
	* builds/unix/ftconfig.in: Ditto.
	* builds/vms/ftconfig.h: Ditto.

2018-05-02  Nikolaus Waxweiler  <madigens@gmail.com>

	Unbreak CMake Windows installation

	* CMakeLists.txt: Generate ftconfig.h on non-UNIX.

2018-05-02  Werner Lemberg  <wl@gnu.org>

	Remove FT_CONFIG_OPTION_PIC and related code.

	*/* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this
	preprocessor symbol.

	*/*: Replace `XXX_GET' macros (which could be either a function in
	PIC mode or an array in non-PIC mode) with `xxx' arrays.

	* include/freetype/internal/ftpic.h, src/autofit/afpic.c,
	src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,
	src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,
	src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,
	src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,
	src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,
	src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
	Removed.


----------------------------------------------------------------------------

Copyright (C) 2018-2021 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:
