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.  In spite 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 (gray_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`
	explicitly 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 management
	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 allocation 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 allocation 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 allocation macros.

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

	* src/sfnt/pngshim.c (Load_SBit_Png): Tweak allocation 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: Common 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 pollution 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 propagated 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 embarrassing :-)

	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 (destruct_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/cff/cffdrivr.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 appropriate 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/bdfdrivr.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-2023 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:
