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

	[sfnt] Safeguard 'COLR' v1 layer extraction

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

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

	[base] Complete `ft_glyphslot_clear`.

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

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

	[truetype] Prevent glyph program state from persisting.

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

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

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

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

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

	Possible solutions to using these in the glyph program are

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

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

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

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

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

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

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

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

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

	[docs] Update docwriter stylesheet for 1.3.1.

	This change is required to support docwriter 1.3.1.

	See

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

	for more information.

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

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

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

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

	[sfnt] Fix memory leak in png loading.

	Reported as

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

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

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

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

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

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

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

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

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

	Handle various VC++ compiler warnings.

	Fixes #1039.

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

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

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

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

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

	[smooth] Reduce copying during integration phase.

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

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

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

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

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

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

	These produce faster or more optimizable code.

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

	[meson] Fix 'mmap' handling on Windows.

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

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

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

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

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

	* .gitlab-ci.yml: New file.

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

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

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

	* meson.build: Updated.

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

	[meson] Make it work with Windows.

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

	Fixes #1029.

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

	[woff2] Fix memory leak.

	Reported as

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

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

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

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

	Fixes #1035.

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

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

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

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

	[unix] Updates for autoconf 2.71.

	This fixes warnings reported by autoupdate.

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

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

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

	* builds/toplevel.mk: Fix previous commit.

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

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

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

	Suggested by Alexei.

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

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

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

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

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

	Move 'dlg' submodule to `subprojects` directory.

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

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

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

	* src/tools/no-copyright: Updated.

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

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

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

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

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

	* CMakeLists.txt: Improve 'bz2' support.

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

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

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

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

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

	Add new function `FT_Get_Transform`.

	See

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

	for some reasons to introduce this function.

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

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

	Decorate `qsort` callbacks with `cdecl`.

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

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

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

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

	[sfnt] Implement 'COLR' v1 sweep gradients.

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

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

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

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

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

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

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

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

	[meson] Fix handling of HarfBuzz library.

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

	Otherwise it causes a dependency cycle:

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

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

	Fixes: #1028.

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

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

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

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

	* meson_options.txt (zlib): Updated.

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

	* meson.build: Fix resource compilation on Windows.

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

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

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

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

	(freetype2_dep): Use it.

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

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

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

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

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

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

	* meson.build (bzip2_dep): Simplify.

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

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

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

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

	* meson.build: Set project version.

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

	[base] Fix Netpbm tracing message.

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

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

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

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

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

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

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

	Fixes #1023.

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

	[psaux] Fix integer overflow.

	Reported as

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

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

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

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

	Fixes #1024.

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

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

	Fixes #1024.

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

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

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

	Always provide logging API.

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

	Problem reported by Alexei.

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

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

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

	Bug introduced in Vincent's last commit bb33f03.

	Fixes issue #1021.

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

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

	Fixes bug #1020.

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

	[stroker] Minor clean-up.

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

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

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

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

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

	Require HarfBuzz 2.0.0.

	This is needed to make commit f1f9705f9 work.

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

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

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

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

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

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

	[afshaper] Fix hb_ot_tags_from_script deprecation warning.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

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

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

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

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

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

	The old variable name caused confusion.

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

	[builds] Revert `FTMODULE_H' changes.

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

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

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

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

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

	[builds] Relocate `FTMODULE_H'.

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

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

	Fix ABI incompatibility.

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

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

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

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

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

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

	* meson.build: Add summary.

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

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

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

	Without this patch, 'png' is always required.

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

	[builds/windows] Add SDF to VC2010 project.

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

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

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

	We prefer US nomenclature.

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

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

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

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

	[sdf] Remove custom memory tracker.

	The internal FreeType memory tracker is sufficient.

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

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

	Other updates.

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

	[sdf] Fix `make multi`.

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

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

	[sdf] Fix tracing.

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

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

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

	[sdf] Add debugging function.

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

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

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

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

	(ft_bitmap_sdf_renderer_class): New structure.

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

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

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

	(ft_bitmap_sdf_raster): New variable.

	* src/sdf/ftsdf.h: Updated.

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

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

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

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

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

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

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

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

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

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

	[sdf] Add functions to compute pixel edge distances.

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

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

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

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

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

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

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

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

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

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

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

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

	[sdf] Added basic overlapping contour support.

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

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

	[sdf] Add build infrastructure.

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

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

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

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

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

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

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

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

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

	[sdf] Add subdivision and bounding box optimization.

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

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

	[sdf] Add function to generate SDF.

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

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

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

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

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

	[sdf] Add shortest distance finding functions.

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

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

	[sdf] Add function to resolve corner distances.

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

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

	[sdf] Add essential math functions.

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

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

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

	[sdf] Add utility functions for contours.

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

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

	[sdf] Add functions to decompose `FT_Outline`.

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

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

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

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

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

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

	(MUL_26D6, VEC_26D6_DOT): New auxiliary macros.

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

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

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

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

	[sdf] Add raster parameters structure.

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

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

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

	[sdf] Add 'sdf' renderer.

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

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

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

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

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

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

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

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

	Here is a breakdown of what the files will contain.

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

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

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

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

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

	[base] Allow renderers of different formats.

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

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

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

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

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

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

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

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

	[base] Allow renderers of different formats.

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

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

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

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

	Without this patch, we get the error

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

	Reported by Anuj, with a solution from Alexei.

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

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

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

	[autofit] Fix double division in stem darkening.

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

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

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

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

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

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

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

	[truetype] Fix incremental metrics (#59503).

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

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

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

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

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

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

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

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

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

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

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

	*/*: s/FT_LOGGING/FT_DEBUG_LOGGING/.

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

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

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

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

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

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

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

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

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

	* submodules/dlg: Updated to commit 9f0c8b22.

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

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

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

	Improve setup for 'dlg' library.

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

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

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

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

	Other compilers are unchanged.

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

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

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

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

	[dlg] Fix compiler warnings.

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

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

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

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

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

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

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

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

	[base] Implement vertical alignment of log printing.

	Based on a patch by Priyesh.

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

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

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

	Update logging related documentation.

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

	* README.git: Updates related to logging.

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

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

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

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

	We only support Visual C++ 2010 and newer.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* meson.build: Fix .pc file generation.

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

	Reported by Nikolaus.

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

	[truetype] Minor update to forthcoming OpenType 1.8.4 standard.

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

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

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

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

	Patch submitted anonymously in Savannah bug report.

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

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

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

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

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


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

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

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

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

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

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

	[sfnt] Fix heap buffer overflow (#59308).

	This is CVE-2020-15999.

	* src/sfnt/pngshim.c (Load_SBit_Png): Test bitmap size earlier.

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

	* src/sfnt/tt{colr,cpal}.c: Fix signedness warnings from VC++.

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

	* src/sfnt/sfwoff2.c (Read255UShort): Tweak types to please VC++.

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

	* Version 2.10.3 released.
	==========================


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

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

	* README, src/base/ftver.rc, builds/windows/vc2010/index.html,
	builds/windows/visualc/index.html,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
	s/2.10.2/2.10.3/, s/2102/2103/.

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

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

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

	[autofit] Synchronize with ttfautohint.

	This corresponds to the following commits in the ttfautohint git
	repository:

	  bb6842bd3bd437b7b4a7921b0376c860f5e73d18  Typo, formatting.
	  d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa  Add Medefaidrin script.

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

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

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

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

	Move `scripts/make_distribution_archives.py` to `src/tools`.

	* scr/tools/scripts/make_distribution_archives.py: (_TOP_DIR,
	_SCRIPT_DIR): Updated to new location.
	(main): s/shutils.copyfile/shutils.copy/ to preserve file
	permissions.
	(main): Prefix source file paths with `git_dir` while copying files
	to allow calls of the script from other places than the top-level
	directory.

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

	* src/cff/cffgload.c (cff_slot_load): Scale `vertBearingY`.

	Towards the end of the the function there is a call to
	`FT_Outline_Get_CBox` that retrieves the glyph bbox in scaled units.
	That sets `horiBearing{X,Y}` and `vertBearingX` but `vertBearingY`
	is left alone, and is not scaled.

	Patch from Eric Muller <emuller@amazon.com>.

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

	* src/base/ftobjs.c (FT_Load_Glyph): Trace glyph metrics.

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

	[meson] Move auxiliary scripts to `builds/meson`.

	Suggested by Alexei.

	* scripts/*.py: Move meson scripts to...
	* builds/meson/*.py: ... this new location.

	* meson.build: Updated.

2020-09-21  David Turner  <david@freetype.org>

	Add python script for building tarballs.

	* scripts/make_distribution_archives.py: New file.

	This standalone Python script should be equivalent to running `make
	dist` with the Make-based build system, with the following minor
	differences:

	- Since `make distclean` doesn't always clean up `objs/` properly,
	  `make dist` archives may contain some stale binaries like
	  `objs/.libs/libfreetype.so.6` or others.

	- `config.guess` and `config.sub` are not updated unless option
	  `--gnu-config-dir=DIR` is used to specify the location of these
	  files.

	- Some bits of the auto-generated reference documentation may
	  appear in slightly different order, probably due to issues related
	  to mkdocs and docwriter.

	As an example, the call

	  scripts/make_distribution_archives.py /tmp/freetype2-dist

	creates the following files under `/tmp/freetype2-dist`:

	  freetype-<version>.tar.gz
	  freetype-<version>.tar.xz
	  ft<winversion>.zip

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

	* scripts/extract_freetype_version.py: Fix regex typos.

2020-09-21  David Turner  <david@freetype.org>

	Add Meson build project file.

	Example usage:

	  # Configure Meson build in directory `build-meson` to generate
	  # release binaries comparable to to the ones from the
	  # autotools/make build system.
	  meson setup build-meson \
	        --prefix=/usr/local \
	        --buildtype=debugoptimized \
	        --strip \
	        -Db_ndebug=true

	  # After configuring the Meson build with the above command,
	  # compile and install to `/usr/local/`; this includes a pkg-config
	  # file.
	  ninja -C build-meson install

	  # Alternatively, compile and install to `/tmp/aa/usr/local/...`
	  # for packaging.
	  DESTDIR=/tmp/aa ninja -C build-meson install

	  # Generate documentation under `build-meson/docs`.
	  ninja -C build-meson docs

	Library size comparison for stripped `libfreetype.so` generated by
	all three build systems:

	  - Default build (autotools + libtool): 712 KiB
	  - CMake build (RelWithDebInfo):        712 KiB
	  - Meson build:                         712 KiB


	* meson.build: New top-level Meson build file for the library.

	* meson_options.txt: New file.  It holds user-selectable options for
	the build, which can be printed with `meson configure`, and selected
	at `meson setup` or `meson --reconfigure` time with
	`-D<option>=<value>`.

	* scripts/parse_modules_cfg.py: A script invoked by `meson.build` to
	parse `modules.cfg` and extract important information out of it
	(i.e., the list of modules).

	* scripts/process_ftoption_h.py: New script invoked by `meson.build`
	to process the original `ftoption.h` file.  It enables or disables
	configuration macro variables based on the available dependencies.
	This is similar to what other build systems are using (i.e., Meson's
	`configure_file()` command is not used here).

	* scripts/extract_freetype_version.py: New script invoked by
	`meson.build` to extract the FreeType version number from
	`<freetype/freetype.h>`.

	* scripts/extract_libtool_version.py: New script invoked by
	`meson.build` to extract the libtool `revision_info` data from
	`builds/unix/configure.raw`, and to generate the corresponding
	shared library suffix.

	* scripts/generate_reference_docs.py: New script invoked by
	`meson.build` to generate the FreeType 2 reference documentation
	(using the `docwriter` and `mkdocs` packages, which must be already
	installed).

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

	[raster] Improve the second pass (#58373).

	Besides dropout control the second horizontal sweep is supposed to
	clean up straight horizontal edges that are mishandled by the first
	vertical sweep when a line passes through pixel centers.  This line
	would present as perfectly aligned span edges in the second sweep.

	* src/raster/ftraster.c (Horizontal_Sweep_Span): Replace the old
	implementation with a better one focusing on aligned span edges only.

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

	[raster] Tune SMART macro (#58352).

	Windows seems to perform smart dropout control at 26.6 precision.
	To mimick Windows independent of increased precision, we need to tweak
	the macro so that some close calls break down rather than up.

	* src/raster/ftraster.c (SMART): Tweak the macro.

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

	[raster] Introduce SMART macro.

	* src/raster/ftraster.c (SMART): New macro for smart dropout rounding.
	(Verstical_Sweep_Drop, Horizontal_Sweep_Drop): Use it.

2020-09-03  Boris Dalstein  <dalboris@gmail.com>

	[build] Make CMake install basic version information.

	* CMakeLists.txt: Do it.

2020-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Reduce Infinality footprint (cont'd).

	* src/truetype/ttinterp.c (Ins_DELTAP): Shrink variable scope.
	(Ins_SHPIX, Ins_MIRP): Revise if-logic.

2020-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Reduce Infinality footprint.

	* src/truetype/ttinterp.c (Ins_SHPIX, Ins_MSIRP, Ins_MIAP, Ins_MDRP,
	Ins_MIRP): Shrink variable scopes and consolidate ifdefs.

2020-09-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Refactor compensation color.

	* src/truetype/ttinterp.h (TT_Round_Func): Change the last argument.
	* src/truetype/ttinterp.c (Ins_ROUND, Ins_NROUND, Ins_MDAP, Ins_MIAP,
	Ins_MDRP, Ins_MIRP): Move compensation retrieval from here...
	(Round_*): ... to here.
	* src/truetype/ttobjs.c (tt_size_init_bytecode): Reserve zero
	compensation at color index 3.

2020-08-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Don't set target in direct mode.

	* src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Remove assignment.
	(ft_smooth_raster_lcd) [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Ditto.

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

	* src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Limit width.

	Segmentation fault reported as

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

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

	* src/truetype/ttgload.c (TT_Get_VMetrics): Add tracing message.

2020-08-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND.

	For glyphs with OVERLAP_SIMPLE or OVERLAP_COMPOUND, set
	FT_OUTLINE_OVERLAP to render them with direct oversampling, which
	mitigates artifacts (see 3bb512bc9f62).

	* include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Redefine to rhyme
	with OVERLAP_SIMPLE.
	* src/base/ftgloadr.c (FT_GlyphLoader_Rewind): Reset outline flags.
	* src/truetype/ttgload.c
	(TT_Load_Simple_Glyph): Retain OVERLAP_SIMPLE.
	(load_truetype_glyph): Retain OVERLAP_COMPOUND.

2020-08-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgload.c (TT_Load_Glyph): More tracing.

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

	Hide internal functions with SunPro.

	* include/freetype/internal/compiler-macros.h
	(FT_INTERNAL_FUNCTION_ATTRIBUTE) <__SUNPRO_C>: Define as __hidden.

2020-07-28  Anuj Verma  <anujv@iitbhilai.ac.in>

	Fix static compilation with Visual C.

	* include/freetype/internal/compiler-macros.h
	(FT_INTERNAL_FUNCTION_ATTRIBUTE) <_WIN32>: Define as empty.

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

	Fix `-Wformat' compiler warnings.

	* src/*: Fix format specifiers.

	* builds/unix/ftsystem.c (FT_Stream_Open): Ditto.

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

	Fix `-Wformat' compiler warnings.

	Problem reported by Priyesh kumar <priyeshkkumar@gmail.com>

	* src/base/ftoutln.c (FT_Outline_Decompose): Fix number of arguments
	to tracing macro.

	* src/bdf/bdfdrivr.c (bdf_cmap_char_next, bdf_get_bdf_property):
	Ditto.

	* src/cache/ftcbasic.c (ftc_basic_family_get_count): Ditto.
	Reformulate message.

	* src/pcf/pcfdrivr.c (pcf_get_bdf_property): Ditto.

	* src/sfnt/sfwoff2.c (woff2_open_font): Ditto.
	Trace table offset, too.

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Ditto.

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

	* src/sfnt/sfwoff2.c (woff2_decompress): Fix compiler warning.

	Reported by Hin-Tak.

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

	* builds/unix/configure.raw: Fix inclusion of `ftoption.h'.

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

	Fix clang warnings.

	* include/freetype/internal/autohint.h
	(FT_DECLARE_AUTOHINTER_INTERFACE): New macro.
	* src/autofit/afmodule.h: Use it to declare
	`af_autofitter_interface'.

	* include/freetype/internal/ftobjs.h (FT_DECLARE_GLYPH): New macro.
	* src/base/ftbase.h: Use it to declare `ft_bitmap_glyph_class' and
	`ft_outline_glyph_class'.

	* src/base/ftglyph.c: Include `ftbase.h'.

	* src/cff/cffparse.c (cff_parser_run): Fix type of `t2_size'.

	* src/pcf/pcfdrivr.c (pcf_cmap_char_next): Fix type of `result'.

	* src/psaux/psauxmod.c (psaux_module_class): Use `FT_DEFINE_MODULE'.
	* src/psaux/psauxmod.h: Declare `afm_parser_funcs',
	`t1_cmap_classes', `cff_decoder_funcs', and `psaux_module_class'.

	* src/pshinter/pshmod.c: Include `pshmod.h'.

	* src/sfnt/sfwoff2.c (ROUND4, WRITE_SHORT): Fix implicit sign
	conversion.
	(compute_ULong_sum): Fix return type.
	Fix implicit sign conversion.
	(store_points): Fix type of `last_flag', `repeat_count', and `flag'.
	Use casts to avoid warnings.
	(reconstruct_glyf): Fix implicit sign conversion.
	Use cast to avoid warning.
	(get_x_mins): Fix implicit sign conversion.
	* src/sfnt/ttcmap.c: Undef `TTCMAPCITEM'.
	* src/sfnt/ttcmap.h: Define `TTCMAPCITEM' and include `ttcmapc.h' to
	declare cmap classes.

	* src/smooth/ftsmooth.c (ft_smooth_overlap_spans): Use cast.

	* src/truetype/ttinterp.c (Ins_MIAP): Fix typo.

2020-07-07  David Turner  <david@freetype.org>

	[build] Really fix multi and C++ builds.

	The following builds were still failing due to previous changes:

	  make multi
	  make multi CC="c++"
	  make CC="c++"

	This patch fixes the issues, which were missing includes to get the
	right macro definitions in multi-build mode.

	Also, `FT_UNUSED' is actually used by third-party code, so move it
	back to `public-macros.h' to avoid breaking it.

	* include/freetype/config/public-macros.h (FT_EXPORT): Remove
	special definition for C++.
	(FT_UNUSED): Define here instead of...
	* include/freetype/config/compiler-macros.h: ... here.
	(FT_FUNCTION_DECLARATION): Remove special definition for C++.
	(FT_LOCAL_ARRAY_DEF): Fix definition.

	* src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h,
	src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER' and `FT_END_HEADER'.

2020-07-06  David Turner  <david@freetype.org>

	[build] Fix multi and C++ builds.

	The following builds were failing due to previous changes:

	  make multi
	  make multi CC="c++"

	* include/freetype/config/ftconfig.h: Remove `FT_END_HEADER'.

	* include/freetype/config/ftheader.h (FT_BEGIN_HEADER,
	FT_END_HEADER): Protect against redefinition.

	* src/cache/ftccache.h, src/cache/ftcmru.h, src/pcf/pcfutil.h,
	src/psaux/pserror.h, src/psaux/psft.h, src/psaux/psstack.h,
	src/sfnt/woff2tags.h: Include `compiler-macros.h'.

	* src/sfnt/woff2tags.c: Include `woff2tags.h'.

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

	[psaux] Improve `t1_decoder_parse_metrics' (#58646).

	* src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy
	corresponding code from old engine's `t1_decoder_parse_charstrings'
	function to handle `op_callsubr' and `op_return'.

2020-07-05  David Turner  <david@freetype.org>

	[build] Improve visibility support of library function names.

	* include/freetype/config/public-macros.h
	(FT_PUBLIC_FUNCTION_ATTRIBUTE): New macro to tag functions as
	public (and thus exportable).
	(FT_EXPORT): Use it.

	* include/freetype/config/compiler-macros.h
	(FT_INTERNAL_FUNCTION_ATTRIBUTE): New macro to tag functions as
	internal to the library (and thus hidden).  Note that on ELF
	systems, all internal functions have hidden visibility, which avoids
	the need to enforce this when invoking the compiler (e.g., with an
	option like `-fvisibility=hidden').

	(FT_FUNCTION_DECLARATION, FT_FUNCTION_DEFINITION): New base macros
	to deal with C and C++ linkage issues at the same time.

	(FT_LOCAL, FT_LOCAL_DEF, FT_LOCAL_ARRAY, FT_LOCAL_ARRAY_DEF,
	FT_BASE, FT_BASE_DEF, FT_EXPORT_VAR, FT_BASE_CALLBACK,
	FT_BASE_CALLBACK_DEF): Redefined using new macros.

2020-07-05  David Turner  <david@freetype.org>

	[build] Split off more stuff from `ftconfig.h'.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off macro definitions
	required by the FreeType API headers to...
	* include/freetype/config/public-macros.h: ...this new file.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off macro definitions used
	by the library but not to be exposed to clients to...
	* include/freetype/config/compiler-macros.h: ...this new file.

	* include/freetype/internal/*.h, src/raster/ftraster.h: Include
	`compiler-macros.h' where needed.

2020-07-05  David Turner  <david@freetype.org>

	[build] Move mac support code to `mac-support.h'.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off mac-specific stuff
	to...
	* include/freetype/config/mac-support.h: ...this new file.

	* CMakeLists.txt, builds/unix/configure.raw: Remove `/undef ->
	#undef' string replacement; the affected code is no longer part of
	the `ftconfig.h' template.

2020-07-05  David Turner  <david@freetype.org>

	[build] Put integer type definitions into `integer-types.h'.

	Refactor some of the `ftconfig.h' headers and template to move the
	definition of the FreeType integer types (e.g., `FT_Int16') to a
	common header file `freetype/config/integer-types.h'.

	* builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: Split off integer type
	definition stuff to...
	* include/freetype/config/integer-types.h: ...this new file.

	* builds/unix/ftconfig.h.in: Control the definition of
	`FT_SIZEOF_INT' and `FT_SIZEOF_LONG' with macro
	`FT_USE_AUTOCONF_SIZEOF_TYPES'.  If these are not defined, auto
	detection happens in `integer-types.h' as usual based on `INTXX_MAX'
	values.  Otherwise the autoconf-detected values are used.

	* builds/unix/configure.raw (CPPFLAGS): Don't include path to
	`config' directory.  Instead, ...
	(FT_CONFIG_STANDARD_LIBRARY_H): Use complete path.

2020-07-05  David Turner  <david@freetype.org>

	[build] Rename `build/unix/ftconfig.in' to `ftconfig.h.in'.

	Since we are no longer limited to 8.3 file names, it is simpler to
	follow the usual conventions for template files.

	* builds/unix/ftconfig.in: Renamed to...
	* builds/unix/ftconfig.h.in: ...this.

	* CMakeLists.txt, builds/unix/configure.raw: Updated.

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

	[smooth] Introduce direct oversampling for overlaps.

	This implements oversampling to mitigate artifacts in pixels partially
	covered by overlapping contours.  It turns out that the 4x4
	oversampling is sufficient but, at least, quadruples the rendering
	time.  The outline has to set FT_OUTLINE_OVERLAP to use this method.

	* include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): New flag.
	* src/smooth/ftsmooth.c (ft_smooth_render): Check it to...
	(ft_smooth_raster_overlap): ... inflate outline and set up direct
	rendering for oversampling with...
	(ft_smooth_overlap_spans): ... new span function that integrates them.

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

	[smooth] Use direct rendering mode in Harmony.

	Instead of rendering 3 bitmaps side by side and reshuffling, we use
	direct rendering to deliver the bitmaps on each third byte.

	* src/smooth/ftsmooth.c (ft_smooth_raster_lcd)
	[!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Set up direct mode with...
	(ft_smooth_lcd_spans): ... new span function.

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

	[smooth] Separate LCD paths from gray rendering.

	This makes `ft_smooth_render' a lot smaller and easier to follow. It
	also cleanly separates Harmony and ClearType-style LCD rendering
	algorithms. Now I only wish to move LCD filtering and geometry from
	FT_Library to FT_Renderer.

	* src/smooth/ftsmooth.c (ft_smooth_render): Move LCD code from here...
	(ft_smooth_raster_lcd, ft_smooth_raster_lcdv): ... to here.
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Reorganize #ifdef's.

2020-06-20  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Fix handling of `style_name == NULL' (#58630).

	* src/cff/cffobjs.c (cff_face_init): If a call to `cff_strcpy' fails
	by returning NULL in `cff_face_init', `remove_style' is still
	called.  This means that the NULL pointer is dereferenced, causing a
	crash.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Fix another two memory leaks (#58629).

	* src/cff/cffobjs.c (cff_size_init): If a call to `funcs->create'
	fails to allocate one of the `internal->subfont' variables, make
	sure to free `internal->topfont' and any successfully allocated
	subfonts.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[psaux] Fix memory leak (#58626).

	* src/psaux/psstack.c (cf2_stack_init): If `cf2_stack_init' fails to
	allocate the stack, return error early.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[base] Fix memory leak (#58624).

	* src/base/ftobjs.c (FT_New_Size): Avoid trying to free
	`size->internal' unless `size' has been allocated.  This mistake
	appeared in the fix for issue #58611.

2020-06-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Rework d1180b5f9598 until further notice.

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Reject large
	outlines.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff, cid] Fix segfaults in case of error (#58621).

	* src/cff/cffobjs.c (cff_slot_done), src/cid/cidobjs.c
	(cid_slot_done): If `ft_glyphslot_init' fails to allocate
	`internal', then the class' `done_slot' callback (called by
	`ft_glyphslot_done') must not dereference the pointer to `internal'.

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

	[base] Fix UBSAN error.

	Reported as

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

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Avoid values
	larger than 32 bits.

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

	[woff2] Fix segfault.

	Reported as

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

	* src/sfnt/sfwoff2.c (get_x_mins): Check whether `loca' table
	exists.

2020-06-19  Stephen McDowell  <svenevs.dev@gmail.com>

	[sfnt] Support Intel compilers.

	* src/sfnt/pngshim.c (premultiply_data): Intel compilers do not
	currently support `__builtin_shuffle'.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[base] Fix memory leak (#58611).

	* src/base/ftobjs.c (FT_New_Size): When the call to `clazz->init_size'
	fails, make sure to free `size->internal'.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Fix memory leak (#58610).

	* src/cff/cffobjs.c (cff_size_init): When the call to
	`funcs->create' fails, make sure to free `internal'.

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

	* src/cff/cffload.c (cff_index_get_pointers): Rename `t' to `tbl'.

2020-06-19  Sebastian Rasmussen  <sebras@gmail.com>

	[cff] Free table upon error allocating other data (#58609).

	* src/cff/cffload.c (cff_index_get_pointers): When new_bytes fails
	to allocate, make sure to free the table.  Do the same for both
	allocations if there is a later error.

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

	Remove redundant inclusion of `ft2build.h'.

	* */*: Remove `#include <ft2build.h>' where possible.

	* include/freetype/freetype.h: Remove cpp error about missing
	inclusion of `ft2build.h'.

2020-06-08  David Turner  <david@freetype.org>

	Make macros for header file names optional.

	We no longer have to take care of the 8.3 file name limit; this
	allows us (a) to introduce longer, meaningful file names, and (b) to
	avoid macro names in `#include' lines altogether since some
	compilers (most notably Visual C++) doesn't support this properly.

	*/*: Replace

	   #include FOO_H

	with

	   #include <freetype/foo.h>

	or something similar.  Also update the documentation.

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

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Trace number of cmaps.

2020-05-18  David Turner  <david@freetype.org>

	Remove obsolete HAVE_STDINT_H probing macro.

	This macro was updated by the unix configure script and the
	`CMakeLists.txt' one, but is never used in the source tree (nor is
	<stdint.h> included anywhere).

	* CMakeLists.txt, builds/unix/ftconfig.in: Don't handle
	`HAVE_STDINT_H'.

2020-05-18  David Turner  <david@freetype.org>

	Remove Jamfile files from the tree.

	These have not been used in a very, very long time, so better remove
	them.  A corresponding patch will be submitted to the
	`freetype2-demos' repository.

	* src/Jamfile, src/*/Jamfile, Jamrules: Delete.

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

	[smooth] Turn on LCD filtering during FreeType initialization.

	* src/smooth/ftsmooth.c (ft_smooth_init): Enable LCD filtering.

	* include/freetype/ftlcdfil.h: Document it, remove patent warnings.
	* include/freetype/freetype.h (FT_Render_Mode): Updated.
	* include/freetype/config/ftoption.h, devel/ftoption.h
	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Do not mention patents.

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

	[smooth] Stop using dedicated LCD modules and classes.

	The LCD modules were never truly independent. They mostly served as
	a way to disable patented LCD rendering, which is no longer necessary.
	The `smooth' module now handles LCD modes as well.

	* src/smooth/ftsmooth.c (ft_smooth_lcd_renderer_class.
	ft_smooth_lcdv_renderer_class): Deleted.
	(ft_render_smooth): Reworked from `ft_render_smooth_generic'.
	* src/smooth/ftsmooth.h: Remove dedicated LCD classes.
	* src/smooth/module.mk: Remove dedicated LCD modules.
	* include/freetype/config/ftmodule.h: Ditto.
	* builds/amiga/include/config/ftmodule.h: Ditto.
	* include/freetype/ftmodapi.h: Do not mention LCD modules.

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

	* Version 2.10.2 released.
	==========================


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

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

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	builds/windows/vc2010/index.html, builds/windows/visualc/index.html,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
	s/2.10.1/2.10.2/, s/2101/2102/.

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

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

	* docs/CHANGES: Updated.

2020-05-08  Jakub Alba  <jalba@vewd.com>

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

	The font that exceeds the old limit is Icono Regular, version
	1.00000.

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

	* builds/freetype.mk: Refactor for readability.

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

	[builds] Clean up Windows CE project files.

	Remove version from filenames that caused a lot of polution in the
	release process. Use VERSIONINFO resource instead.

	* builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/freetype.dsp: s/2101//g, but add `ftver.rc'.
	* builds/wince/vc2008-ce/index.html,
	builds/wince/vc2005-ce/index.html,
	builds/windows/visualce/index.html: s/2101//g.

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

	* devel/ft2build.h: Override FT_CONFIG_MODULES_H here as well.

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

	[builds/unix] Consolidate marco overrides (for the demos to see them).

	* builds/unix/unix-cc.in (FT_CONFIG_MODULES_H, FT_CONFIG_OPTIONS_H):
	Override them here...
	* builds/freetype.mk: ... instead of here.

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

	Allow setting `CC' in Unix build (#58051).

	* builds/unix/unix-cc.in (CC): Use `override'.  The command line
	  value of `CC' (if any) is stored already in `CCraw'.

2020-04-04  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Return if single stream operation fails.

	* src/sfnt/sfwoff2.c (get_x_mins): Do it.

	* src/sfnt/woff2tags.c: Remove unused include.

2020-03-22  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docs] Fix building docs if `srcdir' != `builddir'.

	`docs/reference/*' was moved one directory up in commit 237fed6.

	* builds/unix/unix-def.in (PIP): Remove variable.

	* configure: Create `docs' directory and copy assets from
	`docs/markdown'.

	* docs/README: Output directory is `reference'.

2020-03-21  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docwriter] Drop support for Python < 3.5.

	Python versions < 3.5 have reached end-of-life and as such, no
	security or bug fixes will be provided for those versions.  See

	  https://devguide.python.org/#status-of-python-branches

	for more information.

	* Jamfile (RefDoc): Add `site' parameter.

	* builds/detect.mk (std_setup): Update Python version requirement.

	* builds/freetype.mk (refdoc-venv): Use pip as `python -m pip'.

	* builds/unix/ax_compare_version.m4,
	builds/unix/ax_prog_python_version.m4: Macros to detect Python
	version.  New files.

	* builds/unix/configure.raw: Check for Python >= 3.5 and remove
	check for `pip'.

	* docs/CHANGES, docs/INSTALL.GNU, docs/README: Updated.

2020-03-02  Moazin Khatti  <moazinkhatri@gmail.com>

	[gzip] Support `gzip' encoded header conditionally.

	In order to support `gzip' encoded header the call to
	`inflateInit2' was modified in commit 6a92b1fadde26477a9179.
	However, this code breaks with the outdated internal version
	of zlib.  This is a temporary fix to conditionally support
	`gzip' encoded header whenever a system installation of zlib
	is being used.

	Problem report in

	  https://lists.nongnu.org/archive/html/freetype-devel/2020-02/msg00023.html

	* src/gzip/ftgzip.c (FT_Gzip_Uncompress): Change the the call to
	`inflateInit2' depending on whether the system installation is
	being used or the internal copy.

2020-02-29  Ben Wagner  <bungeman@google.com>

	[truetype] Fix state of `FT_Face' for buggy `gvar' tables (#57923).

	By resetting the blend as implemented with this commit fonts with
	invalid `gvar' tables may keep calling into `ft_var_load_gvar' from
	`tt_set_mm_blend' and failing, but the font was invalid anyway and
	we want to keep seeing the failure in `tt_set_mm_blend'.

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Calculate length of
	offset array once.
	Allocate arrays after `FT_FRAME_ENTER' (extra check before
	allocating and avoid needing to free array later if error entering
	frame).
	Always call `FT_FRAME_EXIT'.
	Consistently set counts immediately after array initialized.
	Reset the blend (particularly `blend->glyphoffsets') on failure.

2020-03-01  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docs] Update docwriter stylesheet.

	This change is required to support docwriter 1.2.1.

	See

	  https://github.com/freetype/docwriter/issues/36

	for more information.

	* docs/markdown/stylesheets/extra.css:
	(.md-typeset code) -> (.md-typeset pre>code)
	(pre) -> (pre>code)
	(p, .md-typeset p, h4): Remove commented styles.
	(table.index): Remove unused styles.

2020-02-28  Ben Wagner  <bungeman@google.com>

	[truetype] Add better checks for loading `gvar' table (#57905).

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Delay settings of any
	`blend->xxxcount' values until the corresponding data has been
	checked.
	Also do some sanitizing to avoid a too early exit.

	(TT_Vary_Apply_Glyph_Deltas): Improve tracing message.

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

	Make `FT_HAS_*' and `FT_IS_*' really return true (#57906).

	* include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Implement it.

2020-02-25  Dominik Röttsches  <drott@chromium.org>

	Fix for CFF space glyph regression (#57541).

	* src/psaux/psft.c (cf2_decoder_parse_substrings): Replace early-out
	  with FT_OFFSET.

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

	[woff2] Fix font table access.

	Reported as

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

	* src/sfnt/sfwoff2.c (get_x_mins): Explicitly check for presence of
	`head' table, which might not have been processed yet.

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

	[psaux] Make `t1_decoder_parse_metrics' handle `op_div' (#57519).

	* src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy
	corresponding code from old engine's `t1_decoder_parse_charstrings'
	function.

2020-02-19  Nikolaus Waxweiler  <nikolaus.waxweiler@daltonmaag.com>

	[autofit] Add support for Hanifi Rohingya script.

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

	* src/autofit/afscript.h: Add Hanifi Rohingya standard character.

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

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

	Require HarfBuzz 1.8.

	* builds/unix/configure.raw, CMakeLists.txt: Request HarfBuzz 1.8.0
	or newer.

	We are going to add auto-hinter support for Hanifi Rohingya, which
	was introduced in Unicode 11.0.

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

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Ignore version (#57708).

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

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

	The font that exceeds the old limit is Constantine, version 1.001.

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

	[base] Fix `FREETYPE_PROPERTIES=type1:hinting-engine=adobe`.

	* src/base/ftpsprop.c (ps_property_set) [hinting-engine]: Avoid an
	incorrect return value that caused a warning.  The function did the
	right thing, though.

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

	[woff2] Fix memory leaks and a runtime warning.

	Reported as

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

	* src/sfnt/sfwoff2.c (compute_ULong_sum): Add missing cast.
	(reconstruct_hmtx): Add missing deallocation calls.

2020-01-02  Dominik Röttsches  <drott@chromium.org>

	[truetype] Fix UBSan warning on offset to nullptr (#57501).

	* src/truetype/ttinterp.c (Ins_CALL): Fail if `exc->FDefs' is null.

2019-12-31  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Allow bitmap-only fonts (#57394).

	* src/sfnt/sfwoff2.c (reconstruct_font): Fix test for `glyf' and
	`loca' tables.

2019-12-21  Hugh McMaster  <hugh.mcmaster@outlook.com>

	[docs] (2/2) Fix generation of API documentation (#56745).

	Creating the API Reference in the (new) `reference' sub-directory is
	consistent with other documentation sub-topics, such as `design',
	`glyphs' and `tutorial'.

	This patch fixes broken hyperlinks in the documentation pointing to
	and from the API Reference.  It also allows web assets to load from
	their relative paths.

	* builds/freetype.mk (DOC_DIR): Adjust.
	(refdoc, refdoc-venv): Add `--site' argument.

	* builds/toplevel.mk (do-dist): Updated.

2019-12-21  Hugh McMaster  <hugh.mcmaster@outlook.com>

	[docs] (1/2) Move static web assets (#56745).

	* docs/reference/*: Move ...
	* docs: ... one directory up.

2019-12-21  Dominik Röttsches  <drott@chromium.org>

	Fix more UBSan warnings on adding offset to nullptr (#57432).

	* src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c
	(cf2_initLocalRegionBuffer): Use `FT_OFFSET'.

2019-12-16  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix UBSan warnings on adding offsets to nullptr.

	Reported as

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

	* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET'.

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

	[truetype] Fix integer overflow.

	Reported as

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

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

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

	Another bunch of UBSan warnings on adding offsets to nullptr.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19427
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19433
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19441
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19451
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19452
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19457

	* src/autofit/aflatin.c (af_latin_hints_compute_segments,
	af_latin_hints_compute_edges): Use `FT_OFFSET'.

	* src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET'.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early
	if there is no charstring.

	* src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET'.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for
	zero bitmap dimensions.

2019-12-09  Dominik Röttsches  <drott@chromium.org>

	Fix more UBSan warnings on adding offset to nullptr (#57384).

	* src/smooth/ftsmooth.c (ft_smooth_render_generic),
	src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET'.

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

	* src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET'.

	Reported as

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

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

	More nullptr offset UBSan warnings (#57331, #57347).

	* src/autofit/afcjk.c (af_cjk_hints_compute_segments),
	src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c
	(Ins_UNKNOWN): Use `FT_OFFSET'.

2019-11-29  Dominik Röttsches  <drott@chromium.org>

	Avoid more nullptr offset UBSan warnings (#57316).

	* src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points.
	* src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET'.
	* src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if
	`charstring_base' or `charstring_len' are null.
	* src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET'.

2019-11-23  John Stracke  <jstracke@Google.com>

	[base] Really fix #57194.

	Apply accidentally missed second part of patch.

	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call
	`FT_GlyphLoader_CreateExtra'.

2019-11-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Avoid sanitizer warning (#57289).

	* src/truetype/ttpload.c (tt_face_get_device_metrics): Use
	`FT_OFFSET'.

2019-11-23  Armin Hasitzka  <prince.cherusker@gmail.com>

	[truetype] Fix integer overflow (#57287).

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

2019-11-23  Ben Wagner  <bungeman@google.com>

	[sfnt] Avoid sanitizer warning (#57286).

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +
	offset' computation.
	Tag `table' as `const'.

2019-11-23  John Stracke  <jstracke@Google.com>
            Werner Lemberg  <wl@gnu.org>

	[base] Fix `NULL + offset' sanitizer warnings (#57194).

	* src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points,
	FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET'.
	(FT_GlyphLoader_CreateExtra): Add short cut if some values are zero.

2019-11-23  Werner Lemberg  <wl@gnu.org>

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

	Use this for `base + offset' pointer calculations where `base' can
	be NULL (triggering a sanitizer warning even if the resulting
	pointer gets never dereferenced since it is undefined behaviour
	in C).

	Suggested by Ben Wagner.

2019-11-23  Ben Wagner  <bungeman@google.com>

	[sfnt] Ensure OTTO fonts have tables (#57285).

	* src/sfnt/ttload.c (tt_face_load_font_dir): Add test.

2019-11-23  Behdad Esfahbod  <behdad@behdad.org>

	Minor fixes for recent compilers.

	* src/gzip/infutil.h (inflate_mask): Add `const'.

	* src/autofit/aflatin2.c: Include `ft2build.h'.

2019-11-07  Nikolaus Waxweiler  <madigens@gmail.com>

	* CMakeLists.txt: Minor additions to the notes, compile
	  builds/unix/ftsystem.c instead of src/base/ftsystem.c on UNIX.

	The latter change is based on the code proposed by rim in #55235.

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts' for TTCs.

	Reported as

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

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift.

	Also improve tracing.

	Reported as

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

2019-10-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only.

2019-10-10  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size'.

	Reported as

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

2019-10-09  John Tytgat  <John.Tytgat@esko.com>

	[cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023).

	* src/cff/cffobjs.c (cff_face_init): Don't set
	FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts.

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

	[woff2] Fix SFNT table checks.

	Also reduce number of SFNT table lookups.

	Reported as

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

	* include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields
	`glyf_table', `loca_table', and `head_table'.

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature.
	Use table pointers in `info' parameter.
	(get_x_mins): Check `maxp_table'
	Use table pointers in `info' parameter.
	(reconstruct_font):  Use and set table pointers in `info' parameter.
	Fix check for `glyf' and `loca' tables.
	Update call to `reconstruct_glyf'.
	(woff2_open_font): Updated.

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

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Fix reallocation.

	Reported as

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

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

	Improve memory debugging.

	* include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use
	`FT_DEBUG_INNER' to set source code file name and line.

	* src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of
	tracing message.

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

	* src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation.

	Reported as

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

2019-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (ft_stroker_inside): Speed up.

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

	* src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts'.

	Reported as

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

2019-09-30  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak.

	Reported as

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

2019-09-30  Werner Lemberg  <wl@gnu.org>

	[woff2] Reject fonts without `head' table.

	Also fix memory deallocation in case of error.

	`head' problem reported as

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

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Don't use `stream_close'.
	Abort if `head_table' is NULL.
	Don't free `transformed_buf' in case of error.
	(woff2_open_font): Don't set `uncompressed_buf' to NULL.

2019-09-29  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix compiler warnings.

	Problem reported by Alexei.

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min'.
	(reconstruct_font): Initialize `num_hmetrics'.
	(woff2_open_font): Initialize `info'.

2019-09-28  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check.

	Correct thinkos in patch from 2019-09-01.

2019-09-28  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix memory leaks.

	One of them reported as

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Free `info->x_mins' and
	`woff2->ttc_fonts'.

	(reconstruct_glyf): Initialize `info->x_mins'.

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

	* src/base/ftstroke.c (ft_stroker_cap): Speed up caps.

2019-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter.
	* include/freetype/ftstroke.h: Wordsmith miter docs.

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes.

	Reported as

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

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

	* src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations.

2019-09-20  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Fix memory leaks.

	Reported as

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling.
	Free `uncompressed_buf'.
	(reconstruct_font): Free `transformed_buf'.

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

	* src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count'.

	Problem reported by Marc Schönefeld <marc.schoenefeld@gmx.org>.

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Check table index.

	Reported as

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

2019-09-15  Avi Halachmi (:avih)  <avihpit@yahoo.com>

	[cmake] Don't fail if brotli is missing (#56894).

	The libs which cmake controls are commented out at

	  include/freetype/config/ftoption.h

	and cmake un-comment each enabled library, but the brotli option was
	not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained
	defined even if brotli was missing/disabled/etc.

	Comment it such that cmake can control it, which means leaving it
	undefined if brotli is missing.

	* include/freetype/config/ftoption.h: Fix typo.

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

	[cmake] Add brotli support.

	* CMakeLists.txt (FT_WITH_BROTLI): New option.

	* builds/cmake/FindBrotliDec.cmake: New file.

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

	Fix handling of `AF_CONFIG_OPTION_INDIC'.

	* devel/ftoption.h, include/freetype/config/ftoption.h:
	`AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'.

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

	CMakeLists.txt: Fix generation of DLL related stuff (#56852).

	Extract `version_info' variable from `builds/unix/configure.raw' and
	use the data to correctly set `LIBRARY_VERSION' and
	`LIBRARY_SOVERSION'.

	Also use the data to set `ft_version' field in `freetype2.pc'.
	Also fix the needed minimum version of HarfBuzz in `freetype2.pc'.

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

	* src/sfnt/sfwoff2.c (compute_ULong_sum): Fix undefined shift.

	Reported as

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

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

	* src/sfnt/sfwoff2.c (woff2_open_font): Add sanity check.

	Don't trust `totalSfntSize' unconditionally.

	Reported as

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

2019-08-27  Dominik Röttsches  <drott@chromium.org>

	[woff2] Don't use `FT_UInt64' (#56815).

	* src/sfnt/sfwoff2.c (woff2_open_font): Use `FT_UInt32' for
	`file_offset'.  This fixes builds on platforms where `FT_LONG64' is
	not defined while still being sufficient to store a file offset.

2019-08-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Prevent crash in `TT_Set_Named_Instance' (#56813).

	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Fix error
	handling.

2019-08-27  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix compiler warnings.

	* src/sfnt/sfwoff2.c (read_num_hmetrics): Remove unused argument
	`table_len'.
	Update caller.
	(triplet_decode, compute_bbox, store_loca, reconstruct_glyf): Make
	`i' variable unsigned.
	(reconstruct_glyph): Remove condition which is always false.
	(reconstruct_html): Removed unused argument `transformed_size'.
	Update caller.

	* src/sfnt/woff2tags.c (woff2_known_tags): Remove condition which is
	always false.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Check whether known tag is in array bounds.

	If table tag is not 0x3f, we expect a value between 0 and 62.  If
	this is not the case, exit with errors.

	* src/sfnt/sfwoff2/c: Check whether table tag makes sense.

	* src/sfnt/woff2tags.c: Return 0 if tag is out of bounds.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* src/sfnt/sfwoff2.c: Improve trace comments.

	Adjust tracing levels for comments, and more formatting.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Support `hmtx' reconstruction when `glyf' is untransformed.

	`reconstruct_hmtx' requires `info->x_mins' and `info->num_glyphs' to
	reconstruct the hmtx table.  In case glyf is not transformed, we
	call `get_x_mins' which does the necessary work.

	* src/sfnt/sfwoff2.c (get_x_mins): New function.
	(reconstruct_font): Call get_x_mins.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Support `face->num_faces' for WOFF2 fonts.

	Set correct value of `face->num_faces' for WOFF2 fonts.  This is
	being handled separately because we only load the tables for the
	requested font face in `woff2_open_font' and create a single-face
	sfnt stream.

	The full discussion is at:

	  https://lists.gnu.org/archive/html/freetype-devel/2019-08/msg00000.html

	* src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
	`woff2_num_faces'.
	(sfnt_init_face): Introduce variable `woff2_num_faces', and change
	`face->root.num_faces' if `woff2_num_faces' is set.

	* src/sfnt/sfwoff2.c (woff2_open_font): Validate requested face
	index and handle negative face indices.

	* src/sfnt/sfwoff2.h (woff2_open_font): Add parameter `num_faces' to
	declaration.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Improve memory and error handling.

	Free up memory after use, and improve error handling.

	* src/sfnt/sfwoff2.c (reconstruct_font, woff2_open_font): Implement
	changes.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Avoid too many calls to `FT_REALLOC'.

	We do this by using `totalSfntSize' as an initial reference, and
	extending the buffer when required.  This reduces rendering time
	considerably.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add
	`totalSfntSize', rename `total_sfnt_size' to `actual_sfnt_size'.

	* src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size' to keep
	track of and update total size of stream.

	(WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly.

	(pad4, store_loca, reconstruct_glyf, reconstruct_hmtx,
	reconstruct_font): Update parameters to accept `sfnt_size'.

	(woff2_open_font): Add variable `sfnt_size'.  Use WOFF2 header field
	`totalSfntSize' as initial reference (if value makes sense) and
	allocate `totalSfntSize' bytes for the sfnt stream.  `write_buf'
	handles reallocation if and when required.  Also resize the stream
	to `actual_sfnt_size' after reconstruction.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Reconstruct `loca', `hmtx', and swap out stream.

	Add necessary functions to reconstruct loca and hmtx tables (the two
	remaining tables that can have a transform).  `woff2_open_font' is
	now capable of loading a woff2 font face.  This code may still need
	more refining and better memory management.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total
	(final) size of sfnt stream.

	(WOFF2_InfoRec): Add header checksum value.

	* src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index'
	parameter to its pointer so its value can be modified by
	`woff2_open_font'.

	* src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into
	sfnt buffer at given position.

	(write_buf): Add parameter `extend_buf' which allows caller to
	specify whether buffer should be reallocated before copying data.

	(WRITE_SFNT_BUF): Updated.

	(pad4, store_loca, reconstruct_htmx): New functions.

	(reconstruct_glyf): Calculate loca values and store them.

	(reconstruct_font): Call `reconstruct_hmtx', write table record
	entries, and calculate table checksums.  Also calculate font
	checksum and update `checksumAdjustment' entry in head table.

	(woff2_open_font): Open stream for sfnt buffer, swap out input
	stream and return.

	* src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept
	pointer to `face_index'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Reconstruct transformed `glyf' table.

	Reconstruct `glyf' table if it is transformed in the uncompressed
	table stream.  Also add necessary structures, macros and functions.

	* include/freetype/internal/wofftypes.h (WOFF2_InfoRec,
	WOFF2_SubstreamRec, WOFF2_PointRec): New structures.
	(WOFF2_TableRec): s/OrigLength/dst_length/.

	* src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use
	`FT_SET_ERROR' to set implicit `error' variable.

	(WRITE_SHORT): New macro.

	(N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM,
	COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to
	refer to substreams of the transformed `glyf' tables.

	(Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX'
	macros.

	(with_sign, safe_int_addition): New functions to add sign to values
	based on a flag and perform safe addition respectively.

	(triplet_decode): Decode variable-length (flag, xCoordinate,
	yCoordinate) triplet for a simple glyph.   See

	  https://www.w3.org/TR/WOFF2/#triplet_decoding

	(store_points, compute_bbox, composteGlyph_size, reconstruct_glyf):
	New functions.

	(reconstruct_font): Call `reconstruct_glyf'.

	* src/sfnt/sfwoff2.h: Add required constants.

	* src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Copy un-transformed tables to sfnt stream.

	Copy un-transformed tables to the sfnt stream.

	* src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF): New macro.
	(write_buf): New function.  Extend memory of `dst' buffer and copy
	bytes from `src'.
	(compute_ULong_sum): New function.  Calculate checksum of table.
	(reconstruct_font): Change `FT_Byte* sfnt' to `FT_Byte**
	sfnt_bytes'.  This has been done because we reallocate memory to
	`sfnt' multiple times, which may change the pointer value of `sfnt'.
	This new pointer must be propogated back to the caller.  Same reason
	for using a double pointer in `write_buf'.

	* src/sfnt/woff2tags.h (WOFF2_DEFAULT_MAX_SIZE): New macro used for
	overflow checking.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Create stream for uncompressed buffer.

	Uncompressed buffer is now an `FT_Stream'.

	Perform basic checks and start iterating over tables.

	* src/sfnt/sfwoff2.c (stream_close, find_table, read_num_hmetrics):
	New functions.
	(reconstruct_font): Modify parameters and iterate over tables.
	(woff2_open_font): Updated.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Handle TTCs and start reconstructing font.

	We `handle' TTCs by modifying the `indices' array to point to only
	those tables that are part of the requested `face_index'.

	Set and use `num_tables' in `WOFF2_TtcFont'.

	* src/sfnt/sfwoff2.c (reconstruct_font): New function.
	(woff2_open_font): Start reconstruction of font.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Get known tags from function.

	Change `KnownTags' to a function (`woff2_known_tags').  This avoids
	introducing a global constant array.  This function returns the
	specified index without *any* checks.  The caller must ensure that
	`index' is within array limits.

	* src/sfnt/sfwoff2.c (woff2_open_font): Change `KnownTags[...]'
	notation to `woff2_known_tags( ...  )'.

	* src/sfnt/woff2tags.c: Perform changes.

	* src/sfnt/woff2tags.h: Update definitions.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Minor.

	* src/sfnt/sfwoff2.c (woff2_uncompress): Add error message
	(woff2_open_font): Free `uncompressed_buf'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Uncompress Brotli streams and `face_index' support.

	WOFF2 compressed stream is now uncompressed if Brotli is available.
	This data is stored in a separate buffer (uncompressed_buf) because
	it does not contain direct table data.  Certain tables have
	transformations applied to them, and they must be reconstructed
	before we can write those tables to the SFNT stream.

	`face_index' is now being passed as a parameter to
	`woff2_open_font'.

	* src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
	`face_instance_index'.

	* src/sfnt/sfwoff2.c (woff2_uncompress): New function.
	(woff2_open_font): Call `woff2_uncompress'.
	(compute_first_table_offset): Fix return type.

	* src/sfnt/sfwoff2.h (woff2_open_font): Modify declaration.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* builds/unix/configure.raw: Change argument name to `brotli'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add Brotli dependency and required checks.

	Brotli is required for decompressing WOFF2 font directory streams.
	The library is thus being added as an optional dependency for
	FreeType.

	* builds/unix/configure.raw: Add checks for `libbrotlidec'.
	(REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Write SFNT Offset table.

	* src/sfnt/sfwoff2.c (WRITE_USHORT, WRITE_ULONG): New macros.
	(compare_tags): New function.
	(woff2_open_font): Implement it.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* src/sfnt/sfwoff2.c: #undef macros.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Read table and collection directory.

	* include/freetype/internal/wofftypes.h (WOFF2_TtcFontRec): New
	structure.
	(WOFF2_HeaderRec): Add more fields.

	* src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128, ROUND4): New
	macros.
	(Read255UShort, CollectionHeaderSize, compute_first_table_offset):
	New functions.
	(ReadBase128): Use `FT_READ_BYTE'.
	(woff2_open_font): Add functionality to read table directory and
	collection directory (if present).

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Include `woff2tags.c' for building.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `woff2tags.c'.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Add WOFF2 constants.

	Add constants required for WOFF2, and known table tags as defined in
	the specification.  See

	  https://www.w3.org/TR/WOFF2/#table_dir_format

	for details.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Read WOFF 2 header.

	Check for WOFF2 tag, call `woff2_open_font', and implement it to read
	header according to specification.

	* include/freetype/internal/fttrace.h: Add `sfwoff2.c'.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `sfwoff2.c'.

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

	* src/sfnt/sfobjs.c (sfnt_open_font): Check for `wOF2' tag and call
	`woff2_open_font'.

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

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add structures for WOFF2.

	Add structures and macro for WOFF 2 header and table directory.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec,
	WOFF2_TableRec_): New structures.

	* include/freetype/tttags.h (TTAG_wOF2): New macro.

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

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

	Reported as

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

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

	[type1] Fix `FT_Get_Var_Axis_Flags' (#56804).

	* src/type1/t1load.c (T1_Get_MM_Var): Allocate space for axis flags.
	Also remove redundant assignment.

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

	* src/base/ftbbox.c (cubic_peak): Sanitize left shift (#56586).

2019-07-22  Weiyi Wu  <w1w2y3@gmail.com>

	* src/cid/cidload.c (cid_hex_to_binary): Fix typo (#56653).

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

	[sfnt, winfonts] Avoid memory leaks in case of error (#56587).

	* src/sfnt/sfwoff.c (woff_open_font): Call `FT_FRAME_EXIT' in case
	of error.

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Ditto.

2019-07-12  Ben Wagner  <bungeman@google.com>

	Properly handle phantom points for variation fonts (#56601).

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Scale phantom
	points if HVAR and/or VVAR is present.

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

	[psaux] (2/2) Handle fonts that use SEAC for ligatures (#56580).

	The same as previous commit but for the old engine.

	* src/psaux/t1decode.c (t1operator_seac): Implement it.

2019-07-04  Chris Liddell <chris.liddell@artifex.com>

	[psaux] (1/2) Handle fonts that use SEAC for ligatures (#56580).

	As originally intended, a Type 1 SEAC charstring would be used for
	an accented glyph (like `acaron' or `uumlaut'), where the advance
	width of the SEAC glyph is the same as that of the `base' glyph
	(like `a' or `u').  In this case it is not uncommon for the SEAC
	glyph to not use an (H)SBW opcode of its own but to rely on the
	value from the base glyph.

	However, out-of-spec fonts also use SEAC glyphs for ligatures (like
	`oe' or `fi'), and in those cases the overall advance width is
	greater than that of the `base' glyph.  For this reason we have to
	allow that the SEAC glyph can have an (H)SBW value of its own, and
	if it has, retain this value, rather than the one from the base
	glyph.

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escSEAC>:
	Implement it.

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

	* Version 2.10.1 released.
	==========================


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

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

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.10.0/2.10.1/, s/2100/2101/.

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

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

	* include/freetype/fterrors.h (FT_Error_String): Fix C++ compilation.

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

	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Fix inequality.

	Reported by Armin Hasitzka.

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

	* src/tools/apinames.c: Formatting, minor edits.

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

	[autofit] Disable hinting if no blue zones are available (#56450).

	* src/autofit/afglobal.c (af_face_global_get_metrics): Start again
	(with dummy hinter module) if no blue zones are present.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Change
	signature to return error code.
	If no blue zones are found, update `glyph_styles' array to hold
	AF_STYLE_NONE_DFLT instead of the current style.
	(af_latin_metrics_init): Return internal error code if no blue zones
	are found.

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

	Towards better VMS support.

	More to come.

	* builds/vms/LIBS.OPT_IA64, builds/vms/_LINK.OPT_IA64,
	builds/vms/vmslib.dat: New files provided by Jouk Jansen
	<joukj@hrem.nano.tudelft.nl>.

	* builds/vms/ftconfig.h: Update, also from Jouk.

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

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

2019-06-13  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Restore the span buffering for direct mode only.

	The buffer size FT_MAX_GRAY_SPANS is set to 10 spans, which should be
	enough to cover the entire scanline for simple glyphs in most cases:
	each slightly slanted edge needs up to two spans, plus a filling span
	in-between.  This is not new, we used to do it before cb4388783cecc.

	* src/smooth/ftgrays.c (gray_TWorker): Add `spans' and `num_spans'.
	(gray_hline, gray_sweep): Implement the span buffering.
	(gray_raster_render): Use negative `num_spans' to avoid the direct
	mode.

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

	* include/freetype/ftmodapi.h (FT_DebugHook_Func): Return error.

	Fix a warning by adding a return value as in `TT_RunIns',
	which should not be a compatibility issue.

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

	* src/truetype/ttobjs.c (tt_check_trickyness_family): Add `const'.

2019-06-11  Moazin Khatti  <moazinkhatri@gmail.com>

	[gzip] Add support for `gzip' encoded header.

	* src/gzip/ftgzip.c (FT_Gzip_Uncompress): Modify the the call to
	`inflateInit2' to enable support for `gzip' encoded headers.

2019-06-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type1,type42] Use `const' for string literals.

	* include/freetype/internal/psaux.h (PS_Table_FuncsRec): Updated.
	* include/freetype/internal/t1types.h (T1_EncodingRec): Updated.
	* src/psaux/psobjs.[ch] (ps_table_add): Updated.
	* src/type1/t1load.c (T1_Open_Face, parse_encoding): Updated.
	* src/type42/t42objs.c (T42_Open_Face): Updated.
	* src/type42/t42parse.c (t42_parse_encoding): Updated.

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

2019-06-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf,pcf] Use `const' for string literals.

	* src/bdf/bdf.h (bdf_property_t): Updated `name'.
	* src/bdf/bdflib.c (_bdf_list_split,bdf_create_property,
	_bdf_add_property,_bdf_ato*): Updated.
	* src/bdf/bdfdrivr.c (bdf_interpret_style): Updated.
	* src/pcf/pcfread.c (pcf_intrpret_style): Ditto.

2019-06-07  Philip Race  <philip.race@oracle.com>

	* src/base/ftinit.c (FT_Set_Default_Properties): Fix crash.

	Terminate loop at end of environment.

2019-05-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Solidify VC2005 builds.

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly
	declare `_BitScanReverse' intrinsic.
	* builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics.

2019-05-30  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Separate WOFF sources and headers.

	Move WOFF sources and headers to separate files.

	* include/freetype/internal/wofftypes.h, src/sfnt/sfwoff.c,
	src/sfnt/sfwoff.h: New files.

	* include/freetype/internal/fttrace.h: Register `sfwoff.c'.

	* include/freetype/internal/internal.h: Define
	FT_INTERNAL_WOFF_TYPES_H.

	* include/freetype/internal/sfnt.h: Include FT_INTERNAL_WOFF_TYPES_H.

	* include/freetype/internal/tttypes.h: Move out WOFF structures.

	* src/sfnt/rules.mk: Add `sfwoff.c'.

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

	* src/sfnt/sfobjs.c: Include `sfwoff.h', move out WOFF sources.

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

	[base] Fix `make multi'.

	Reported by Nikhil.

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

2019-05-29  Ben Wagner  <bungeman@google.com>

	[truetype] Fix copy-and-paste error (#56409).

	* src/truetype/ttgload.c (load_truetype_glyph): Use correct indices
	into `unrounded' array for phantom points.

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

	[truetype] Fix 32bit builds (#56404).

	Patch suggested by Ben Wagner <bungeman@google.com>.

	* src/truetype/ttgxvar.c (FT_fixedToInt, FT_fixedToFdot6): Remove
	harmful cast to unsigned type.

2019-05-26  Ben Wagner  <bungeman@google.com>

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Improve accuracy.

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

	[truetype] Draw glyphs without deltas in variation font (#56374).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Always fill
	`unrounded' array.

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

	* src/truetype/ttinterp.c (opcode_name): Improve mnemonics.

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

	[truetype] Actually scale varied CVT values.

	Up to now, only the unscaled CVT values were varied; in other words,
	the `CVAR' data was never used for bytecode hinting.

	* src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
	function.
	(tt_face_vary_cvt): Use it to trigger rescaling of CVT values.

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

	[truetype] Use 26.6 format for storing unscaled CVT values.

	If `CVAR' data is applied to variation fonts, fractional values are
	possible.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Change type of
	`cvt' from `FT_Short' to `FT_Int32'.

	* src/truetype/ttgxvar.c (FT_fdot6ToFixed): New macro.
	(tt_face_vary_cvt): Use it to update code to 26.6 format.

	* src/truetype/ttobjs.c (tt_size_run_prep): Update code to 26.6
	format.

	* src/truetype/ttpload.c (tt_face_load_cvt): Stora data in 26.6
	format.

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

	* src/truetype/ttgload.c (load_truetype_glyph): Init `unrounded'.

	This fixes linear advance width values for spacing glyphs.  Bug
	introduced 2019-05-09.

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

	[truetype] Avoid code duplication.

	* src/truetype/ttobjs.c (tt_size_run_prep): Scale CVT values in this
	function.
	(tt_size_ready_bytecode): Updated.
	* src/truetype/ttgload.c (tt_loader_init): Updated.

2019-05-13  Jouk Jansen  <joukj@hrem.nano.tudelft.nl>

	* vms_make.com: Updated.  Handle `bzip2' directory, too.

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

	* src/psaux/psfont.c (cf2_font_setup): Fix compiler warning.

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

	[truetype] Doh.  Fix last commit to make it work.

	Very embarassing :-)

	Reported as

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

	* src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): Move up and add
	argument; update all callers.
	(TT_Process_Simple_Glyph): Use it.  The `unrounded' array is active
	for variation fonts only, thus also enclose related code with
	`#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT ...  #endif' where
	necessary.
	Revert commit a113e5d from 2019-05-09, and don't use `extra_points2'
	but allocate a temporary array.
	Speed up the scaling of the `unrounded' array.

	* src/truetype/ttgxvar.c (FT_fixedToInt, FT_FixedToFdot6): Fix type
	conversions and rounding.  The unsigned type must have more or equal
	bits to the signed type.

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

	[truetype] Increase precision of font variation (#54371).

	This patch makes FreeType use font units in 26.6 format internally
	instead of integers.

	* src/truetype/ttgxvar.c (FT_fixedToFdot6): New macro.
	(TT_Vary_Apply_Glyph_Deltas): Add argument to output unrounded font
	coordinates.
	* src/truetype/ttgxvar.h: Updated.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Use
	`extra_points2' array to temporarily hold unrounded point
	coordinates; use them to compute scaled coordinates and linear
	advance width and height.
	(load_truetype_code): Adjust similarly.

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

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

2019-05-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Faster fractions.

	* src/smooth/ftgrays.c (SUBPIXELS): Replace with...
	(FRACT): A fractional coordinate macro to use in...
	(gray_render_line, gray_render_scanline): ... here.

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

	* src/raster/ftraster.c (Draw_Sweep): Unbreak.

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

	* src/raster/ftraster.c: Clean-ups.

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

	* src/truetype/ttgxvar.c: More use of `FT_fdot14ToFixed'.

2019-05-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_render_line): Small shortcut.

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

	Various clang 8.0 static analyzer fixes.

	Reported by Sender Ghost <lightside@gmx.com>.

	* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Catch a corner
	case where `edge->first' could be NULL.

	* src/pfr/pfrobjs.c (pfr_slot_load): Remove unnecessary test of
	`size'.

	* src/raster/ftraster.c (Draw_Sweep): Catch a corner case where
	`draw_right' might be NULL.

	* src/sfnt/ttmtx.c (tt_face_get_metrics): Fix limit test for
	`aadvance'.
	Ensure `abearing' always hold a meaningful result.

	* src/truetype/ttgload.c (load_truetype_glyph): Ensure `subglyph' is
	not NULL before accessing it.
	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Remove unnecessary
	test of `namedstyle'.

	* src/type42/t42parse.c (t42_parser_done): Ensure
	`parser->root.funcs.done' is not NULL before accessing it.

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

	Miscellaneous macro updates.

	* src/base/ftoutln.c (SCALED): Updated.
	* src/smooth/ftgrays.c (SCALED): Ditto.
	(FLOOR, ROUND, CEILING): Removed.
	* src/psaux/psfixed.h (cf2_fracToFixed): Updated.

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

	Tweak LCD filtering.

	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
	Choose direction from bitmap's pixel_mode.
	* include/freetype/internal/ftobjs.c (FT_Bitmap_LcdFilterFunc):
	Updated.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.

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

	* vms_make.com: Updated (#56253).

	Remove no longer existing directories (`autohint', `otlayout').
	Update used base extensions.
	Activate `autofit' module.
	Add `gxvalid' module.
	Update copyright notices.

2019-04-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Simplify cubic Bézier flattening.

	The previous implementation is correct but it is too complex.
	The revised algorithm is based on the fact that each split moves
	the control points closer to the trisection points on the chord.
	The corresponding distances are good surrogates for the curve
	deviation from the straight line.

	This cubic flattening algorithm is somewhat similar to the conic
	algorithm based the distance from the control point to the middle of
	the chord.  The cubic distances, however, decrease less predictably
	but are easy enough to calculate on each step.

	The new algorithm produces slightly larger number of splits, which is
	compensated by its simplicity.  The overall rendering performance is
	improved by 1-2%.  The larger number of splits does not necessarily
	result in higher quality, which stays comparable.

	* src/smooth/ftgrays.c (gray_render_cubic): Replace the split
	condition.

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

	[smooth] Bithacks and cosmetics.

	* src/smooth/ftgrays.c (gray_record_cell, gray_set_cell, gray_hline,
	gray_render_conic, gray_convert_glyph_inner): Updated.

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

	Optimize Bézier bisections.

	This change makes bisections faster by 20-30%. When inlined into
	`gray_render_cubic', this makes the function faster by 10% and is
	noticeable in the overall rendering performance.

	* src/raster/ftraster.c (Split_Conic, Split_Cubic): Use shifts and
	refactor.
	* src/smooth/ftgrays.c (gray_split_conic, gray_split_cubic): Ditto.
	* src/base/ftstroke.c (ft_conic_split, ft_cubic_split): Ditto.
	* src/base/ftbbox.c (cubic_peak): Use shifts.

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

	* src/sfnt/ttcmap.c (tt_cmap12_next): Remove dead code.

	Found by clang 8.0's static analyzer and reported by Sender Ghost
	<lightside@gmx.com>.

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

	[base] Fix thinko in previous commit.

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Check final width, not
	target pitch.

	Problem reported by Sender Ghost <lightside@gmx.com>.

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

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Check target pitch.

	Problem reported by Sender Ghost <lightside@gmx.com>.

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

	Fix return value of `FT_Set_Named_Instance' (#56186).

	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Correctly handle
	internal return value -1 of `TT_Set_Var_Design'.

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

	[pcf] Fix handling of undefined glyph (#56067).

	This commit fixes the changes from 2018-07-21, which broke charmap
	iteration.  We now add the default character as a new glyph with
	index 0, thus increasing the number of glyphs by one (as before).

	* src/pcf/pcfread.c (pcf_get_metrics): Adjust to new artificial
	glyph with index 0.
	Limit number of elements to 65534.
	(pcf_get_bitmaps): Ditto.
	Unify two loops into one; this avoids allocation of an intermediate
	array.
	(pcf_get_encodings): Don't flip indices but copy glyph metrics of
	default character to index 0.
	Also handle invalid default character.

	* docs/CHANGES: Updated.

2019-04-15  Minmin Gong  <gongminmin@msn.com>

	* CMakeLists.txt: Avoid rewriting of unchanged configuration files.

	Reported as

	  https://savannah.nongnu.org/patch/index.php?9755

2019-04-15  JDG  <JonathanG@iQmetrix.com>

	* src/tools/apinames.c (main): Fix error message.

	Reported as

	  https://savannah.nongnu.org/patch/?9796

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

	[smooth] Fix segfault in direct mode (#56092).

	* src/base/ftoutln.c (FT_Outline_Render): Set missing clip_box for
	direct mode.
	* src/smooth/ftgrays.c (gray_raster_render): Use it.

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

	* src/sfnt/ttcmap.c (tt_get_glyph_name): Pacify compiler (#56061).

	This is for Visual Studio 2019 on ARM.

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

	For distribution, replace `.tar.bz2' with `.tar.xz' bundles.

	* builds/toplevel.mk (build): Do it.

	* README, docs/CHANGES, docs/release: Updated.

2019-04-06  Antony Lee  <anntzer.lee@gmail.com>

	Make `glyph_name' parameter to `FT_Get_Name_Index' a `const'.

	* include/freetype/freetype.h (FT_Get_Name_Index),
	include/freetype/internal/ftobjs.h (FT_Face_GetGlyphNameIndexFunc),
	include/freetype/internal/services/svgldict.h
	(FT_GlyphDict_NameIndexFunc), src/base/ftobjs.c (FT_Get_Name_Index),
	src/cff/cffdrivr.c (cff_get_name_index), src/sfnt/sfdriver.c
	(sfnt_get_name_index), src/type1/t1driver.c (t1_get_name_index),
	src/type42/t42drivr.c (t42_get_name_index): Add `const' to second
	argument.

2019-03-31  Armin Hasitzka  <prince.cherusker@gmail.com>

	[cff] Fix boundary checks.

	642bc7590c701c8cd35a9f60fa899cfa518b17ff introduced dynamically
	allocated memory when parsing CFF files with the "old" engine.  Bounds
	checks have never been updated, however, leading to pointless
	comparisons of pointers in some cases.  This commit presents a
	solution for bounds checks in the CFF module with an extended logic
	for the "old" engine while staying as concise as possible for the
	"new" one.

	* src/cff/cffparse.h: Introduce the struct `CFF_T2_StringRec' and
	the additional field `t2_strings' within `CFF_ParserRec'.

	* src/cff/cffparse.c (cff_parser_within_limits): Move all boundary
	checks into this new function and update the rest of `cffparse.c' to
	use it.

	Reported as

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

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

	[autofit] Fix Mongolian blue zone characters.

	* src/autofit/afblue.dat: Use U+200D (ZERO-WIDTH JOINER) characters
	to get medial forms for some Mongolian characters.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

2019-03-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Mongolian script.

	As a de-facto standard, layouts using this script are constructed
	horizontally line by line, then the lines are rotated clockwise for
	vertical display.

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

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

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

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

	* Version 2.10.0 released.
	==========================


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

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

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.9.1/2.10.0/, s/291/2100/.

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

	* builds/unix/configure.raw (version_info): Set to 23:0:17.
	* CMakeLists.txt (VERSION_MINOR): Set to 10.
	(VERSION_PATCH): Set to 0.

	* builds/toplevel.mk (version, winversion): Since the minor version
	number has two digits now, never omit the patch number.  We would
	get ambiguous zip file names otherwise.
	(dist): Remove remnants of `docmaker' tool.
	(do-dist): Remove unused intermediate files.

	* src/cff/cffparse.c (destrict_c2s_item): Guard function with
	CFF_CONFIG_OPTION_OLD_ENGINE macro.

2019-03-07  Andrei Alexeyev  <0x416b617269@gmail.com>
            Werner Lemberg  <wl@gnu.org>

	Fix invalid function pointer casts.

	This change should allow Freetype to work on WASM/Emscripten without
	needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'.

	* src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.

	* src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,
	parse_expansion_factor, parse_font_name): Return `void', not
	`FT_Error'.

	* include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):
	Fix signature.

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

	[base] Handle numeric overflow (#55827).

	* src/base/ftglyph.c (FT_Glyph_Get_CBox): Use `FT_PIX_CEIL_LONG'.

2019-03-05  Sebastian Rasmussen  <sebras@gmail.com>

	[psaux] Fix use of uninitialized memory (#55832).

	* src/psaux/psintrp.c (cf2_interpT2CharString): The call to
	`cf2_arrstack_setCount' may fail because the allocator ran out of
	memory.  When this happens the stack is still written to before the
	error condition is checked.  This means that FreeType writes outside
	of allocated memory.  This commit moves the error check prior to the
	stack assignment, hence the function now properly returns with an
	error condition.

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

	* src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets.

	The function only provided a framework without an actual
	implementation, which this commit removes.

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

	* src/tools/update-copyright-year: Insert `(C)'.

2019-02-21  Armin Hasitzka  <prince.cherusker@gmail.com>

	[truetype] Mask numeric overflows.

	* src/truetype/ttinterp.c (Move_CVT, Move_CVT_Stretched, Ins_MIRP):
	Mask numeric overflows.

	Reported as

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

2019-02-21  Armin Hasitzka  <prince.cherusker@gmail.com>

	[psaux] Mask numeric overflow.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Mask numeric
	overflow.

	Reported as

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

2019-02-16  Wink Saville  <wink@saville.com>

	* src/autofit/afwarp.h (af_warper_compute): Fix declaration.

2019-02-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Apply MVAR hasc, hdsc and hlgp metrics to current FT_Face metrics.

	Instead of setting typo or win metrics as the new `FT_Face' metrics
	indiscriminately, apply only typo deltas to the currently active
	`FT_Face' metrics.  This prevents line height differences when the
	default outlines were used as the regular face and instances for
	everything else, for example.

	* src/truetype/ttgxvar.c (tt_apply_mvar): Implement.

2019-02-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[sfnt] Use typo metrics if OS/2 fsSelection USE_TYPO_METRICS bit is set.

	If the `OS/2' table exists and `fsSelection' bit 7
	(USE_TYPO_METRICS) is set, use the `sTypo*' set of values to compute
	the `FT_Face's ascender, descender, and height.  Otherwise, fall
	back to old behavior.

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

2019-01-18  John Tytgat  <John.Tytgat@esko.com>

	[sfnt] Handle TT fonts having two PostScript font names (#55471).

	* src/sfnt/sfdriver.c (sfnt_get_name_id): Prefer English over any
	other language found for PostScript font names.

2019-01-08  Chris Liddell <chris.liddell@artifex.com>

	[psaux] Fix closepath (#55414).

	All of the Type 1 path building is done with code common to the
	revised CFF engine, with the exception of closepath, which was still
	calling ps_builder_close_contour(), thus previously cached segments
	were not always written to the path, and glyph corruption, or even
	invalid outlines were possible.

	* src/psauc/psinterp.c (cf2_interpT2CharString) <cf2_cmdCLOSEPATH>:
	Switch to calling `cf2_glyphpath_closeOpenPath'.

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

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

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

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

	Reported as

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

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

	[gxvalid] Fix compiler warnings.

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

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

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

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

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

	[bdf] Ignore data after `ENDFONT'.

	Reported as

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	[cff] Fix compiler warning (#55105).

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

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

	[truetype] Fix numeric overflow (#55103).

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

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

	[builds] Belated DLL support with vc2002-vc2008.

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

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

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

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

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

	[cff] Fix memory overflow.

	Reported as

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

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

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

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

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

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

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

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

	[psaux] Add safety guard (#54985).

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

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

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

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

	[ftstroke] Fix unpredictable failures (#54986).

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

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

	[ftstroke] Fix unpredictable failures (#54976).

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

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

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

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

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

	[pshinter] Fix numeric overflow.

	Reported as

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

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

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

	[psaux] Fix timeout in old CFF engine.

	Reported as

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

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

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

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

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

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

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

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

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

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

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

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

	Reported and tested by Behdad.

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

	[autofit] Prevent SEGV.

	See

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

	for more details on how the bug was found.

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

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

	[truetype] Speed up variation IUP.

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

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

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

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

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

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

	[base] Fix numeric overflow.

	Reported as

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

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

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

	[cff] Fix numeric overflow.

	Reported as

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

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

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

	[sfnt] Make `head' timestamps unsigned.

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

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

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

	Revert: Align FreeType with standard C memory management.

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

	[psaux] Fix numeric overflow.

	Triggered by

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

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

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

	Avoid endless loop while tracing (#54858).

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

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

	* CMakeLists.txt: Specify `RUNTIME DESTINATION'.

	This is needed for DLL builds.

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

	A missing Unicode cmap is not a fatal error.

	This is a follow-up to the previous commit.

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

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

	Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794).

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

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

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

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

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

	[psaux] Fix segfault.

	Reported as

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

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

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

	[psaux] Fix numeric overflow.

	Reported as

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

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

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

	[pshinter] Handle numeric overflow.

	Reported as

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

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

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

	Align FreeType with standard C memory management.

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

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

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

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

	Fix handling of `FT_Bool'.

	Before this commit we had code like

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

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

	  (unsigned char)( 0x8532 & 0x8000)

	which in turn expanded to

	  (unsigned char)( 0x8000)

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

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

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

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

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

	[bdf] Speed up charmap access.

	This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	[pcf] Replace charmap implementation.

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

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

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

	[base] Remove unused function `FT_GlyphLoader_CopyPoints'.

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

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

	[pcf] Prepare to replace charmap implementation.

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

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

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

	Remove unused fields.

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

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

	[pshinter] Handle numeric overflow.

	Reported as

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

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

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

	[truetype] Some fixes for VF checks.

	Reported as

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

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

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

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

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

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

	Reported as

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

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

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

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

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

	[truetype] Improve VF check.

	Triggered by

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

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

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

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

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

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

	Reported as

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

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

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

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

	[truetype] Fix assertion failure.

	Triggered by

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

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

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

	Synchronize `ftdebug.c' files.

	* builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c,
	builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c'.

2018-09-05  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add documentation guidelines file.

	* docs/DOCGUIDE: New file.

2018-09-04  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h: Synchronize with master `ftoption.h'.

2018-09-03  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docwriter] Don't break code snippets accross lines.

	Reported as

	  https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html

	* docs/reference/markdown/stylesheets/extra.css (.md-typeset code):
	Add rule `white-space'.

2018-09-03  Werner Lemberg  <wl@gnu.org>

	*/*: s/PSNames/psnames/.

	Only tracing messages are affected.

2018-09-03  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix heap buffer overflow in CPAL handling.

	* src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test.
	(tt_face_load_cpal): Updated.

2018-09-01  Werner Lemberg  <wl@gnu.org>

	Remove `FT_Outline_{New,Done}_Internal'.

	These public API functions(!) were always undocumented and have
	escaped all clean-up efforts until now.

	* include/freetype/ftoutln.h (FT_Outline_New_Internal,
	FT_Outline_Done_Internal): Removed.

	* src/base/ftoutln.h (FT_Outline_New_Internal,
	FT_Outline_Done_Internal): Merge into...
	(FT_Outline_New, FT_Outline_Done): ... these functions.

	* docs/README: Updated.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format.

2018-08-31  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Refine the macro logic surrounding `FT_Error_String'.

	* include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS,
	FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS' after
	checking it and introduce a new macro that takes proper care of
	multiple-inclusion protection.

2018-08-31  Werner Lemberg  <wl@gnu.org>

	* src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED' calls.

2018-08-31  Werner Lemberg  <wl@gnu.org>

	* src/base/ftdebug.c (FT_Throw): Reduce chattiness.

2018-08-31  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afhints.c (af_glyph_hints_reload): Add initialization.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Consolidate bitmap presetting and size assessment.

	* include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
	Change return type.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap
	size assessment.

	* src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the
	rendering of enourmous or far-fetched outlines.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono.

2018-08-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Introduce a macro to control `FT_Error_String'.

	* devel/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS),
	include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS):
	New macro.

2018-08-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Introduce `FT_Error_String'.

	* include/freetype/fterrors.h (FT_Error_String),
	src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String'.

	* src/base/ftbase.c, src/base/Jamfile (_source),
	src/base/rules.mk (BASE_SRC): Add `fterrors.c' to the build logic.

	* src/base/ftdebug.c (FT_Throw): Use `FT_Error_String'.

2018-08-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Trace `before' and `after' edges of strong points.

	* src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays
	`before' and `after'.

	* src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary
	function.
	(af_glyph_hints_dump_points): Trace `before' and `after' edges.
	(af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set
	`before' and `after' information.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Overflow-resistant bitmap presetting.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Implement it.

2018-08-29  Armin Hasitzka  <prince.cherusker@gmail.com>

	Fix numeric overflows.

	* src/pshint/pshalgo.c (psh_hint_align, psh_hint_align_light,
	psh_hint_table_find_strong_points): Fix numeric overflows.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10083

2018-08-29  Werner Lemberg  <wl@gnu.org>

	[cff] Fix handling of `roll' op in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10080

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Use modulo for loop count, as
	documented in the specification.

2018-08-26  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.c (tt_size_read_bytecode): Trace CVT values.

2018-08-26  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* configure: Copy assets required by docwriter.

	Copy directory `docs/reference/markdown' when FreeType is compiled in a
	different directory.

	Fixes `make refdoc' if builddir != srcdir.

	Reported as

	  https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00083.html

2018-08-26  Werner Lemberg  <wl@gnu.org>

	* src/pshint/pshalgo.c (psh_hint_overlap): Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10057

2018-08-26  Werner Lemberg  <wl@gnu.org>

	Minor tracing adjustments.

	* src/base/ftstream.c (FT_Stream_EnterFrame, FT_Stream_ExitFrame):
	Trace.

	* src/truetype/ttgload.c (TT_Access_Glyph_Frame): Remove tracing.

2018-08-26  Werner Lemberg  <wl@gnu.org>

	[truetype] Avoid nested frames.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10054

	* src/truetype/ttgload.c (load_truetype_glyph): Don't use variable
	`opened_frame' to trace whether a frame must be closed at the end of
	function: This fails because `TT_Vary_Apply_Glyph_Deltas' (which
	gets called for space glyphs) uses a frame by itself.  Instead,
	close the frame after loading the header, then use another frame for
	the remaining part of the glyph later on.

	Also avoid calling `tt_get_metrics' twice under some circumstances.

2018-08-26  Werner Lemberg  <wl@gnu.org>

	Various minor clean-ups.

	* src/base/ftapi.c: Remove.  Unused.
	* src/base/Jamfile (_sources): Updated.

	* src/base/ftstream.c (FT_Stream_ReleaseFrame): Remove redundant
	code.

2018-08-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Convert documentation markup to Markdown.

	It is the result of a GSoC 2018 project; this separate ChangeLog
	commit covers the last four commits

	  ae5d1a4cec37557f31aec270332cfe886a62f9a0
	  53c69ce04faed3dcc68ca0f54cb8d703d8babf69
	  195728d5ba38f34fb2c2c20807c01656f2f59b66
	  c962db28ea59225f0105c03d907d4a9b71765687

	* docs/reference/markdown/images/favico.ico,
	docs/reference/markdown/javascripts/extra.js,
	docs/reference/markdown/stylesheets/extra.css: New files.

	* docs/reference/.gitignore, docs/reference/README: Updated.

	* src/tools/docmaker/*: Removed.  It has been replaced with
	`docwriter', a python package available at

	  https://pypi.org/project/docwriter/

	* Jamfile: Updated.
	* builds/ansi/ansi-def.mk, builds/beos/beos-def.mk,
	builds/dos/dos-def.mk, builds/os2/os2-def.mk (BIN),
	builds/unix/unixddef.mk, builds/windows/win32-def.mk: New variable.

	* builds/unix/configure.raw: Check for `python' and `pip'.
	If not present, warn that `make refdoc' will fail.
	* builds/unix/unix-def.in (PYTHON, PIP, BIN): New variables.

	* builds/freetype.mk (PYTHON, PIP, VENV_NAME, VENV_DIR, ENV_PYTHON,
	ENV_PIP): New variables.
	(refdoc): Updated.
	(refdoc-venv): New target.
	(.PHONY): Updated.

2018-08-23  Werner Lemberg  <wl@gnu.org>

	Add macros for handling over-/underflowing `FT_Int64' values.

	* include/freetype/internal/ftcalc.h (ADD_INT64, SUB_INT64,
	MUL_INT64, DIV_INT64) [FT_LONG64]: New macros.

	* src/base/ftcalc.c (ft_corner_orientation) [FT_LONG64]: Use
	`SUB_INT64' and `MUL_INT64'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10028

2018-08-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve legibility of `glyf' parsing.

	* src/truetype/ttgload.c (ON_CURVE_POINT, X_SHORT_VECTOR,
	Y_SHORT_VECTOR, REPEAT_FLAG, X_POSITIVE, SAME_X, Y_POSITIVE, SAME_Y,
	OVERLAP_SIMPLE): New macros.
	(TT_Load_Simple_Glyph): Use new macros to make code more readable.
	Remove useless adjustment of `outline->tags' elements.

2018-08-21  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Add missing safety check.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9981

2018-08-18  Werner Lemberg  <wl@gnu.org>

	[psaux] Avoid slow PS font parsing in case of error.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9955

	* src/psaux/psobjs.c (ps_parser_to_bytes): Set `parser->cursor' even
	in case of error to avoid potential re-scanning.

2018-08-18  Werner Lemberg  <wl@gnu.org>

	[cff] Fix heap buffer overflow in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9967

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_blend> [CFF_CONFIG_OPTION_OLD_ENGINE]: `num_designs' must be
	non-zero.

2018-08-16  Young Xiao  <yangx92@hotmail.com>

	* builds/mac/ftmac.c (parse_fond): Fix buffer overrun.

	Reported as bug #54515, duplicate of #43540.

2018-08-16  Werner Lemberg  <wl@gnu.org>

	* builds/*/ftsystem.c (FT_COMPONENT): Updated also.

2018-08-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Don't track duplicate encodings.

	There is no harm except some umbiguity in broken fonts with duplicate
	encodings.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Remove duplicate tracking.
	(_bdf_parse_t): Remove large `have' bitfield.

2018-08-15  Werner Lemberg  <wl@gnu.org>

	Don't use `trace_' prefix for FT_COMPONENT arguments.

	* include/freetype/internal/ftdebug.h (FT_TRACE_COMP,
	FT_TRACE_COMP_): New auxiliary macros to add `trace_' prefix.
	(FT_TRACE): Use `FT_TRACE_COMP'.

	*/* (FT_COMPONENT): Updated.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	Use formatting string in FT_TRACEX calls for non-simple arguments.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_hstem, cff_op_hintmask, cff_op_hlineto, cff_op_vhcurveto>:
	Do it.

	* src/psaux/pshints.c (cf2_hintmap_build): Ditto.

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
	cf2_cmdVSTEM, cf2_cmdHLINETO, cf2_cmdRRCURVETO, cf2_cmdCALLSUBR,
	cf2_escHSTEM3, cf2_cmdHINTMASK, cf2_cmdHVCURVETO>: Ditto.

	* src/truetype/ttinterp.c (TT_RunIns): Ditto.

2018-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Remove unused fields.

	* src/bdf/bdf.h (bdf_font_t): Remove `nmod', `umod', and `modified',
	which were set but never used.
	* src/bdf/bdflib.c (_bdf_parse_{glyphs,properties}, bdf_load_font):
	Updated accordingly.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix another segv in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9872

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Disallow invalid T1 opcodes in
	dictionaries.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix missing error handling.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9865

	* src/psaux/cffparse.c (cff_parser_run)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Don't ignore return value of
	`parse_charstrings_old'.

2018-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Remove unused overflow storage.

	* src/bdf/bdf.h (bdf_glyphlist_t): Remove this type.
	(bdf_font_t): Remove `overflow' field.
	* src/bdf/bdflib.c (bdf_free_font): Remove `overflow' freeing.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix segv in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9864

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_random> [CFF_CONFIG_OPTION_OLD_ENGINE]: Use top dict's
	`random' field directly if parsing dictionaries.

2018-08-13  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Use unsigned types.

	* src/bdf/bdf.h (bdf_glyph_t): Unsign `encoding'.
	(bdf_font_t): Unsign `default_char'.
	* src/bdf/bdfdrivr.h (BDF_encoding_el): Unsign `enc'.

	* src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_glyphs,
	_bdf_parse_start): Updated accordingly.
	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Ditto.

2018-08-13  Werner Lemberg  <wl@gnu.org>

	* src/type42/t42parse.c (t42_parse_sfnts): One more format check.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9832

2018-08-11  Werner Lemberg  <wl@gnu.org>

	* src/base/ftcalc.c (FT_Matrix_Check): Fix integer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9811

2018-08-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Follow specs.

2018-08-10  Ben Wagner  <bungeman@google.com>

	* src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435).

2018-08-10  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Improve tracing.

2018-08-10  Werner Lemberg  <wl@gnu.org>

	Fix clang warnings.

	* src/base/ftdebug.c (ft_trace_level_enabled,
	ft_trace_level_disabled): Add `static' keyword.

2018-08-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster, smooth] Reinstate bitmap size limits.

	This again moves outline and bitmap size checks one level up.

	* src/base/ftoutln.c (FT_Outline_Render): Explicitly reject enormous
	outlines.
	* src/raster/ftrend1.c (ft_raster1_render): Reject enormous bitmaps
	and, therefore, outlines that require them.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

	* src/raster/ftraster.c (ft_black_render): Remove outline size checks.
	* src/smooth/ftgrays.c (gray_raster_render): Ditto.
	[STANDALONE]: Remove `FT_Outline_Get_CBox' copy.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Revert massive unsigning.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	[smooth] Improve tracing.

	* src/smooth/ftgrays.c (gray_convert_glyph_inner): Only use tracing
	if called the first time.
	(gray_convert_glyph): Updated.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	Add internal functions `FT_Trace_Disable' and `FT_Trace_Enable'.

	It sometimes makes sense to suppress tracing informations, for
	example, if it outputs identical messages again and again.

	* include/freetype/internal/ftdebug.h: Make `ft_trace_levels' a
	pointer.
	(FT_Trace_Disable, FT_Trace_Enable): New declarations.

	* src/base/ftdebug.c (ft_trace_levels): Rename to...
	(ft_trace_levels_enabled): ... this.
	(ft_trace_levels_disabled): New array.
	(ft_trace_levels): New pointer.
	(FT_Trace_Disable, FT_Trace_Enable): Implement.
	(ft_debug_init): Updated.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	Debugging improvements.

	* src/base/ftobjs.c (pixel_modes): Move this array to top level
	from ...
	(FT_Load_Glyph): ... here.
	(FT_Render_Glyph_Internal): Use `width' x `height' in trace message.
	Use `pixel_modes'.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Massive unsigning (part 2).

	Treat all size related properties as unsigned values.

	* src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name' and
	`value'.
	* src/pcf/pcfread.c (pcf_get_properties, pcf_load_font): Updated
	parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
	RESOLUTION_X and RESOLUTION_Y.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Massive unsigning (part 1).

	Unofficial specifications hesitate to use unsigned 32-bit integers.
	Negative values caused a lot of trouble in the past and it is safer
	and easier to treat some properties as unsigned.

	* src/pcf/pcf.h (PCF_AccelRec): Use unsigned values for `fontAscent',
	`fontDescent', and `maxOverlap'.
	* src/pcf/pcfread.c (pcf_load_font, pcf_get_accel): Updated.
	* src/pcf/pcfdrivr.c (PCF_Glyph_Load, PCF_Size_Select,
	PCF_Size_Request): Updated.

2018-08-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/pcf/pcfread.c (pcf_get_bitmaps): Unsign `offsets' and
	`bitmapSizes'.

2018-08-06  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h: Synchronize with main `ftoption.h'.

2018-08-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Use unsigned types.

	* src/pcf/pcf.h (PCF_Encoding): Use unsigned `enc'.
	* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Ditto.
	* src/pcf/pcfread.c (pcf_get_encodings): Use unsigned types.

2018-08-05  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (compute_glyph_metrics): Fix overflow.

	Reported as

	  https://bugs.chromium.org/p/chromium/issues/detail?id=777151

2018-08-04  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (opcode_name): Fix typos.

2018-08-04  Werner Lemberg  <wl@gnu.org>

	Fix clang warnings.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Fix type of
	`orientation'.

	* src/gxvalid/gxvcommn.c (gx_lookup_value_read): Fix signature.

	* src/pcf/pcfread.c (pcf_get_encodings): Fix type of some variables.
	Add cast.

	* src/type1/t1load.c (parse_weight_vector): Fix cast.

2018-07-31  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidtoken.h: Handle `XUID' keyword.

2018-07-31  Werner Lemberg  <wl@gnu.org>

	[cid] Trace PostScript dictionaries.

	* src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
	(cid_load_keyword, cid_parse_font_matrix, parse_fd_array,
	parse_expansion_factor, cid_parse_dict): Add tracing calls.
	(parse_font_name): New function to trace `/FontName' keywords in
	/FDArray dict.
	(cid_field_records): Register `parse_font_name'.

2018-07-30  Werner Lemberg  <wl@gnu.org>

	[cff] Fix typo.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9409

	* src/cff/cffdrivr.c (cff_get_cid_from_glyph_index): Fix boundary
	check.

2018-07-29  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Another thinko.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9608

2018-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix Harmony memory management.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9501

	* src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer
	after each rendering in case of failure.

2018-07-28  Werner Lemberg  <wl@gnu.org>

	[type1] Avoid segfaults with `FT_Get_PS_Font_Value'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9610

	* src/type1/t1driver.c (t1_ps_get_font_value): Protect against NULL.

2018-07-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Make `TT_Set_MM_Blend' idempotent (#54388).

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Correctly set
	`face->doblend' if the current call to the function yields the same
	blend coordinates as the previous call.

2018-07-27  Werner Lemberg  <wl@gnu.org>

	[psaux, type1]: More tracing improvements.

	* src/psaux/psintrp.c (cf2_interpT2CharString): Trace skipped
	outline commands.

	* src/psaux/t1decode.c (t1_decoder_parse_charstring): Fix
	missing case.
	(t1_decoder_parse_metrics): Make tracing output more compact.

	* src/type1/t1gload.c (T1_Compute_Max_Advance): Be less verbose.
	(T1_Get_Advances): Add tracing.

2018-07-25  Werner Lemberg  <wl@gnu.org>

	[psaux, type1] Trace PostScript dictionaries and other things.

	The tracing of /Encoding, /Subrs, and /Charstrings is rudimentary
	right now.

	* src/psaux/psobjs.c (ps_parser_load_field,
	ps_parser_load_field_table): Add tracing calls.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make tracing
	output more compact.

	* src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances): Add
	tracing messages.

	* src/type1/t1load.c (parse_blend_axis_types,
	parse_blend_design_positions, parse_blend_design_map,
	parse_weight_vector, t1_load_keyword, t1_parse_font_matrix,
	parse_encoding, parse_subrs, parse_charstrings, T1_Open_Face): Add
	tracing calls.

	* src/type1/t1objs.c (T1_Face_Init): Add tracing call.

	* src/sfnt/sfobjs.c (sfnt_init_face): Make tracing message more
	verbose.

2018-07-25  Werner Lemberg  <wl@gnu.org>

	Fix minor ASAN run-time warnings.

	* src/base/ftutil.c (ft_mem_alloc, ft_mem_realloc): Only call
	`FT_MEM_ZERO' if we actually have a buffer.
	(ft_mem_dup): Only call `ft_memcpy' if we actually have a buffer.

2018-07-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Fortify dllexport/dllimport attributes (#53969,#54330).

	We no longer use predefined _DLL, which can be defined for static
	builds too with /MD. We use DLL_EXPORT and DLL_IMPORT instead,
	following libtool convention.

	* CMakeLists.txt [WIN32], builds/windows/vc2010/freetype.vcxproj:
	Define DLL_EXPORT manually.

	* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h, builds/windows/vc2010/index.html,
	src/base/ftver.rc: /_DLL/d, s/FT2_DLLIMPORT/DLL_IMPORT/.

2018-07-24  Werner Lemberg  <wl@gnu.org>

	[type1] Check relationship between number of axes and designs.

	For Multiple Masters fonts we don't support intermediate designs;
	this implies that

	  number_of_designs == 2 ^^ number_of_axes

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9557

	* src/type1/t1load.c (T1_Open_Face): Ensure above constraint.
	(T1_Get_MM_Var): Remove now redundant test.

2018-07-24  Hin-Tak Leung  <htl10@users.sourceforge.net>

	[truetype] Match ttdebug's naming of instruction mnemonics.

	* src/truetype/ttinterp.c: The form used in ttdebug,
	"MDRP[G,B,W,?]", etc., is slightly more readable than
	"MDRP[00,01,02,03]".

2018-07-24  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Thinko.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9561

2018-07-22  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9527

2018-07-22  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs.

	This is an oversight of the module change 2018-07-21.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9524

2018-07-22  Werner Lemberg  <wl@gnu.org>

	[cid] Sanitize `BlueShift' and `BlueFuzz'.

	This code is taken from the type1 module.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9510

	* src/cid/cidload.c (parse_fd_array): Set some private dict default
	values.
	(cid_face_open): Do the sanitizing.
	Fix some tracing messages.

2018-07-21  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix handling of the undefined glyph.

	This change makes the driver use the `defaultChar' property of PCF
	files.

	* src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar' to
	unsigned.

	* src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar' as
	unsigned.
	Validate `defaultChar'.
	If `defaultChar' doesn't point to glyph index zero, swap glyphs with
	index zero and index `defaultChar' and adjust the encodings
	accordingly.

	* src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next,
	PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced
	the first character in the font to be the default character.

2018-07-20  Armin Hasitzka  <prince.cherusker@gmail.com>

	Move the legacy fuzz target to the `freetype-testing' repository.

	It can now be found at

	  https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy

	* src/tools/ftfuzzer: Remove this folder and its contents from the
	repository.

2018-07-20  Werner Lemberg  <wl@gnu.org>

	[cff] Avoid left-shift of negative numbers (#54322).

	* src/cff/cffgload.c (cff_slot_load): Use multiplication.

2018-07-17  Werner Lemberg  <wl@gnu.org>

	Allow FT_ENCODING_NONE for `FT_Select_Charmap'.

	This is a valid encoding tag for BDF, PCF, and Windows FNT, and
	there is no reason to disallow it for these formats.

	* src/base/ftobjs.c (FT_Select_Charmap): Implement it.

2018-07-17  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'.

2018-07-16  Armin Hasitzka  <prince.cherusker@gmail.com>

	* include/freetype/internal/ftcalc.h: Add macros for handling
	harmless over-/underflowing `FT_Int' values.

	* src/sfnt/sfdriver.c (fixed2float): Fix negation of
	`(int)(-2147483648)'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423

2018-07-16  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9412

2018-07-12  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox'.

	Taken from patch #9667, written by Steve Langasek
	<vorlon@debian.org>.

	This fixes a build failure (most probably a bug in gcc) on ppc64el
	when building with -O3.

2018-07-05  Werner Lemberg  <wl@gnu.org>

	Fix typo (#54238).

	* src/base/ftcolor.c (FT_Palette_Set_Foreground_Color)
	[!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value.

2018-07-05  Werner Lemberg  <wl@gnu.org>

	Adjust table size comparisons (#54242).

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it.

2018-07-05  Werner Lemberg  <wl@gnu.org>

	Fix more 32bit issues (#54208).

	* src/cff/cffload.c (cff_blend_build_vector): Convert assertion into
	run-time error.

	* src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against
	numeric overflow.

2018-07-04  Werner Lemberg  <wl@gnu.org>

	Fix 32bit build warnings (#54239).

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed
	vs. unsigned comparisons.

	* srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto.

2018-07-02  Jeff Carey  <Jeff.Carey@monotype.com>

	* src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging.

2018-07-02  Werner Lemberg  <wl@gnu.org>

	s/palette_types/palette_flags/.

	Suggested by Behdad.

2018-07-02  Werner Lemberg  <wl@gnu.org>

	Make `FT_Get_Color_Glyph_Layer' return FT_Bool.

	* include/freetype/freetype.h, src/base/ftobjs.c
	(FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated.

	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func),
	src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer):
	Updated.

2018-07-01  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function.

	Reported by Behdad.

2018-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/fttrigon.c (FT_Tan): Improve accuracy.
	(FT_Vector_Rotate): Simplify.

2018-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (FT_Set_Charmap): Robustify.

2018-06-25  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix memory leak.

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers.
	Fix typo in `goto' destination.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9071

2018-06-25  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9070

2018-06-24  Werner Lemberg  <wl@gnu.org>

	[truetype] Increase precision while applying VF deltas.

	It turned out that we incorrectly round CVT and glyph point deltas
	before accumulation, leading to severe positioning errors if there
	are many delta values to sum up.

	Problem reported by Akiem Helmling <akiem@underware.nl> and analyzed
	by Behdad.

	* src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in
	16.16 format.
	(tt_face_var_cvt): Collect deltas in `cvt_deltas', which is a 16.16
	format array, and add the accumulated values to the CVT at the end
	of the function.
	(TT_Vary_Apply_Glyph_Deltas): Store data in `points_org' and
	`points_out' in 16.16 format.
	Collect deltas in `point_deltas_x' and `point_deltas_y', which are
	16.16 format arrays, and add the accumulated values to the glyph
	coordinates at the end of the function.

2018-06-24  Werner Lemberg  <wl@gnu.org>

	New base function `FT_Matrix_Check' (#54019).

	* src/base/ftcalc.c (FT_Matrix_Check): New base function to properly
	reject degenerate font matrices.

	* include/freetype/internal/ftcalc.h: Updated.

	* src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c
	(cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix),
	src/type42/t42parse.c (t42_parse_font_matrix): Use
	`FT_Matrix_Check'.

2018-06-23  Werner Lemberg  <wl@gnu.org>

	Fix typo.

	Reported by Behdad.

	* src/base/ftcolor.c (FT_Palette_Data_Get)
	[!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/.

2018-06-21  Werner Lemberg  <wl@gnu.org>

	s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.

	* include/freetype/ftcolor.h, include/freetype/internal/sfnt.h,
	src/sfnt/ttcolr.c: Do it.

2018-06-19  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix CPAL heap buffer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8968

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1
	offsets.

2018-06-19  Werner Lemberg  <wl@gnu.org>

	Doh.  Don't use CPAL or COLR data if tables are missing.

	Reported by Alexei.

	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if
	`colr' is NULL.

	* src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if
	`cpal' is NULL.

2018-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Introduce `FT_New_Glyph'.

	This function facilitates access to full capabilities of FreeType
	rendering engine for custom glyphs. This can be quite useful for
	consistent rendering of mathematical and chemical formulas, e.g.

	  https://bugs.chromium.org/p/chromium/issues/detail?id=757078

	* include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New
	function.

2018-06-17  Armin Hasitzka  <prince.cherusker@gmail.com>

	[bdf] Fix underflow of an unsigned value.

	bdflib.c:1562 could be reached with `font->glyphs_used == 0'.  That
	caused an underflow of the unsigned value which results in undefined
	behaviour.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Bail out earlier than before
	if the `ENCODING' keyword cannot be found.

2018-06-17  Werner Lemberg  <wl@gnu.org>

	[base] Add tracing for `FT_Bitmap_Blend'.

	* include/freetype/internal/fttrace.h (trace_bitmap): New
	enumeration.

	* src/base/ftbitmap.c (FT_COMPONENT): Define.
	(FT_Bitmap_Blend): Add `FT_TRACE5' calls.

2018-06-17  Werner Lemberg  <wl@gnu.org>

	s/trace_bitmap/trace_checksum/.

	* include/freetype/internal/fttrace.h: s/bitmap/checksum/.

	* src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/.
	Adjust code.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix color glyph layer loading.

	* src/sfnt/ttcolr.c (Colr): Add `table_size' field.
	(tt_face_load_colr): Set it.
	(tt_face_get_colr_layer): Check pointer limit for layer entries.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix color palette loading.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8933

	* src/sfnt/ttcpal.c (Cpal): Add `table_size' field.
	(tt_face_load_cpal): Set it.
	(tt_face_palette_set): Check pointer limit for color entries.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	Add `FT_Bitmap_Blend' API.

	Still missing: Support for negative bitmap pitch and subpixel offset
	of source bitmap.

	* include/freetype/ftbitmap.h, src/base/ftbitmap.c
	(FT_Bitmap_Blend): New function.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	Replace `FT_Get_GlyphLayers' with `FT_Get_Color_Glyph_Layer'.

	This avoids any additional allocation of COLR related structures in
	a glyph slot.

	* include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec,
	FT_Get_GlyphLayers): Removed.

	* include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed.
	(FT_Slot_InternalRec): Remove `color_layers'.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func):
	Removed.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove
	`load_colr_layer'.

	* src/base/ftobjs.c (ft_glyph_slot_done): Updated.
	(FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer'.
	(FT_Get_GlyphLayers): Removed.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Removed.
	* src/sfnt/ttcolr.h: Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Updated.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	Provide iterative API to access `COLR' data.

	This solution doesn't store any data in an `FT_GlyphSlot' object.

	* include/freetype/freetype.h (FT_LayerIterator): New structure.
	(FT_Get_Color_Glyph_Layer): New function.

	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New
	function type.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it.

	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function.
	* src/sfnt/ttcolr.h: Updated.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	Add glyph index and glyph load flags to glyph slot.

	* include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused
	`reserved' field to `glyph_index'.

	* include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add
	`load_flags' field.

	* src/base/ftobjs.c (FT_Load_Glyph): Set new fields.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	[sfnt] Move `CPAL' stuff into separate files.

	* src/sfnt/sfdriver.c: Include `ttcpal.h'.
	* src/sfnt/sfnt.c: Include `ttcpal.c'.

	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ...
	* src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files.

	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC):
	Updated.

	* include/freetype/internal/fttrace.h: Add support for `colr' and
	`cpal'.
	Sort entries.

2018-06-13  Werner Lemberg  <wl@gnu.org>

	[sfnt] Separate `CPAL' and `COLR' table handling.

	Later on we want to support the `SVG' table also, which needs `CPAL'
	(but not `COLR').

	* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal'
	and `free_cpal' fields.
	(FT_DEFINE_SFNT_INTERFACE): Updated.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Replace
	`colr_and_cpal' fields with `cpal' and `colr'.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.

	* src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field.
	(ColrCpal): Removed.
	(tt_face_load_colr): Split off CPAL handling into...
	(tt_face_load_cpal): ... this new function.
	(tt_face_free_colr): Split off CPAL handling into...
	(tt_face_free_cpal): ... this new function.
	(tt_face_load_colr_layers, tt_face_palette_set): Updated.

	* src/sfnt/ttcolr.h: Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Updated.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix `sizeof' thinko.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't
	use `sizeof' for computing array limit.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (4/4).

	* src/sfnt/ttcolr.c (tt_face_find_color): Removed.
	(tt_face_colr_blend_layer): Use `face->palette' instead of calling
	`tt_face_find_color'.
	Use and set text foreground color.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (3/4).

	* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
	(FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
	functions.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (2/4).

	* src/sfnt/ttcolr.c (tt_face_palette_set): New function.
	(tt_face_load_colr): Allocate `face->palette' and call
	`tt_face_palette_set'.
	Adjust return error code in case of error.

	* src/sfnt/ttcolr.h: Updated.

	* include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New
	function type.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

	* src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c
	(sfnt_done_face): Updated.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (1/4).

	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
	`palette_index', `palette', `have_foreground_color' and
	`foreground_color'.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Minor.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers):
	s/palette_index/palette_entry_index/ for consistency.
	Adjust return error code in case of error.

2018-06-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Clean up.

	* src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):
	Clean up after 5-level gray removal (8dc8635874).
	(Vertical_Sweep_Span): Be brief.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix compiler warnings.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,
	tt_face_colr_blend_layer): Add `NULL' initializers.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.

	* include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,
	src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.

2018-06-10  Nikolaus Waxweiler  <madigens@gmail.com>

	CMakeLists: also accept IOS_PLATFORM=SIMULATOR64

	This might be needed to build FreeType for the iOS simulator. See
	https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed
	by Steve Robinson.

	* CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64

2018-06-10  Werner Lemberg  <wl@gnu.org>

	Implement `FT_Palette_Get'.

	* src/base/ftcolor.c: New file.

	* src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),
	src/base/ftbase.c: Add `ftcolor.c'.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks.

2018-06-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Deal with pitch sign earlier.

	* src/raster/ftraster.c (black_TWorker): Remove unused `traceG',
	s/bTarget/bOrigin/.
	(Render_Glyph): Set `ras.bOrigin' at the bottom-left corner.
	(Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):
	Updated accordingly.

2018-06-09  Werner Lemberg  <wl@gnu.org>

	[sfnt] Read `CPAL' version 1 tables.

	* include/freetype/internal.tttypes.h: Include FT_COLOR_H.
	(TT_FaceRec): Add `palette' field.

	* src/sfnt/ttcolr.c: Include FT_COLOR_H.
	(Cpal): Remove all data covered by the new `palette' field in
	`TT_FaceRec'.
	(tt_face_load_colr): Updated.
	Read `CPAL' version 1 data.
	(tt_face_load_colr_layers, tt_face_find_color): Updated.

	* src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.

2018-06-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] API for Harmony LCD rendering.

	This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
	LCD subpixel geometry including non-striped patterns.

	* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.
	* include/freetype/ftlcdfil.h: Document it.
	* include/freetype/freetype.h: Minor.
	* include/freetype/ftchapters.h: Minor.

2018-06-06  Werner Lemberg  <wl@gnu.org>

	ftcolor.h: Redesign API.

	While going to implement it I noticed that I need access to most of
	the `CPAL' elements; I thus plan to add a `cpal' field to
	`TT_FaceRec', which makes most of the previously suggested API
	functions obsolete because the fields will be directly accessible.

2018-06-06  Parth Wazurkar  <parthwazurkar@gmail.com>

	[bdf, pcf] Remove deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/pcf/pcfread.c (pcf_load_font): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

2018-06-06  Werner Lemberg  <wl@gnu.org>

	[smooth, raster] Limit bitmap size (#54019).

	* src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add
	function.
	[!STANDALONE]: Include FT_OUTLINE_H.
	(ft_black_render): Compute CBox and reject glyphs larger than
	0xFFFF x 0xFFFF.

	* src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger
	than 0xFFFF x 0xFFFF.

2018-06-03  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables.

2018-06-03  Werner Lemberg  <wl@gnu.org>

	* src/tools/glnames.py (main): Emit header in `light' comment style.

2018-06-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Attempt to mitigate bug #54019.

	The robust rendering of estra large glyphs came with unbearable cost.
	The old way of bisecting should fail but fail faster.

	* src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting
	in y-direction.

2018-06-02  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8706

2018-06-02  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033).

2018-05-31  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field.

	This is no longer used.

2018-05-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Get colors from `CPAL' table in right order (#54015).

	* src/sfnt/ttcolr.c (tt_face_find_color): Fix it.

2018-05-30  Werner Lemberg  <wl@gnu.org>

	ftcolor.h: Improve API design, fix typos (#54011, #54014).

	* include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...
	(FT_Palette_Get_Name_IDs): ... this function.
	(FT_Palette_Get_Entry_Names): Replace with...
	(FT_Palette_Get_Entry_Name_IDs): ... this function
	s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.

	* src/autofit/afloader.c (af_loader_load_glyph): Move the
	initialisationand declaration of variables into the if-block.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Fix pointer underflow.

	The declaration of `edge2' can be reached with `edge1 == NULL' and
	`axis->edges == 0' which results in undefined behaviour.

	* src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2'
	after checking `axis->num_edges > 1'.  `edge1 != NULL' can be assumed.

2018-05-30  Werner Lemberg  <wl@gnu.org>

	Various minor color fixes.

	* include/freetype/config/ftheader.h (FT_COLOR_H): New macro.

	* include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change
	type of `load_flags' to `FT_Int32'.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change
	type of `idx' to `FT_UInt'.
	(TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of
	`load_flags' to `FT_Int32'.

	* src/sfnt/ttcolr.c (find_base_glyph_record,
	tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'.
	(tt_face_find_color, tt_face_colr_blend_layer): Change type of
	`color_index' to `FT_UInt'.
	Fix signedness and type issues.

	* src/sfnt/ttcolr.h: Updated.

2018-05-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docmaker] Fix missing `Defined in (...)' under Windows/Cygwin.

	This platform uses backslashes for paths, which docmaker didn't
	understand correctly.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use
	`os.path.normpath' to normalize the path for the platform being
	used.

2018-05-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Formalize Harmony LCD rendering.

	This generalizes magic outline shifts that make Harmony LCD
	rendering work in terms of precise two-dimensional RGB subpixel
	positions. These coordinates are now set in time of the `smooth'
	module initialization and later used to shift a glyph outline for
	rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
	coordinates. The letter, however, rotates them before using.
	The LCD bitmap padding is also calculated using these coordinates.

	* include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field
	`lcd_geometry'.
	* src/base/ftlcdfil.c (ft_lcd_padding): Reworked.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.

	* src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]
	(ft_smooth_init): Initialize `lcd_geometry'.
	(ft_smooth_render_generic): Formalize outline shifts.

2018-05-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Reject elements of composites with invalid glyph indices.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8413

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it.

2018-05-22  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points.

2018-05-20  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftcolor.h: New file.

	This is an interface to the `CPAL' OpenType table.  No
	implementation yet.

2018-05-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'.

	Actually `_BitScanReverse' is available since VS2005.

2018-05-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value.

	Older VC versions don't provide `_BitScanReverse'.  We test for VC
	2013.

	Reported by John Emmas <john@creativepost.co.uk>.

2018-05-17  Werner Lemberg  <wl@gnu.org>

	s/inline/__inline/ for MSVC.

	Reported by John Emmas <john@creativepost.co.uk>.

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.

2018-05-16  Werner Lemberg  <wl@gnu.org>

	Add function `FT_Get_GlyphLayers' to access `COLR' table data.

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this
	structure to...
	* include/freetype/freetype.h (FT_Glyph_LayerRec): ... this
	header file.
	(FT_Glyph_Layer): New typedef.
	Update code to use it where appropriate.

	* src/base/ftobjs.c (FT_Get_GlyphLayers): New function.

2018-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix mono bitmap presetting (#53896).

	It is rather fundamental to set monochrome bitmap based on rounded
	CBox because the b/w rasterizer turns on pixels when their centers are
	inside the glyph outline. The dropout control is unpredictable and can
	distort narrow glyphs if the bitmap is too wide.

	Reported by Chris Liddell.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries
	are too close, adjust them before rounding.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix compiler warning (#53915).

	* src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix memory leak in handling `COLR' data.

	* src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array
	before reassigning allocated memory.
	Only allocate `color_layers' if we don't have one already.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] If `COLR' is present, don't assume that all glyphs use it.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if
	current glyph is not a `COLR' base glyph.

	* src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate
	`color_layers' if there are no color layers.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set.

	* src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.

2018-05-13  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Improve tracing.

2018-05-13  Shao Yu Zhang  <shaozhang@fb.com>
	    Werner Lemberg  <wl@gnu.org>

	[sfnt] Preliminary support of colored layer outlines (#44689).

	This commit enables OpenType's COLR/CPAL table handling; a typical
	application are color emojis that can be scaled to any size.

	If the color palette does not exist or is invalid, the rendering
	step rasterizes the outline instead.  The current implementation
	assumes that the foreground is black.

	Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.

	There are still some issues with metrics; additionally, an API to
	fetch color layers is missing.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_COLOR_LAYERS): New macro.

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,
	FT_Colr_InternalRec): New structures.
	(FT_Slot_InternalRec): Add `color_layers' field.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,
	TT_Blend_Colr_Func): New function types.
	(SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer',
	and `colr_blend' fields.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
	`colr_and_cpal' field.

	* include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New
	macros.

	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.

	* src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):
	Handle glyph color layers.

	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add
	`ttcolr.c'.

	* src/sfnt/sfdriver.c: Include `ttcolr.h'.
	(PUT_COLOR_LAYERS): New macro.
	Update call to `FT_DEFINE_SFNT_INTERFACE'.

	* src/sfnt/sfnt.c: Include `ttcolr.c'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables.
	(sfnt_done_face): Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.

2018-05-12  Arkady Shapkin  <arkady.shapkin@gmail.com>

	Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
	it.

2018-05-10  Alan Coopersmith  <alan.coopersmith@oracle.com>

	Fix DLL compilation on Solaris.

	AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'.  The
	Solaris Studio 12.1 through 12.5 compilers see the
	`-fvisibility=hidden' flag, but ignore it with a warning of:

	  cc: Warning: Option -fvisibility=hidden passed to ld,
	               if ld is invoked, ignored otherwise

	AC_LINK_IFELSE does the compile and then tries to link the result,
	at which point the Solaris linker will issue an error:

	  ld: fatal: option '-fvisibility=hidden' is incompatible with
	      building a dynamic executable

	If we don't use AC_LINK_IFELSE to catch the error, then configure
	will fail further tests which attempt to link, such as those testing
	dependencies like `libbz2'.

	Also, don't try adding `-fvisibility' if we have already added
	`-xldscope', just use one of them, since Sun Studio 12 and earlier
	compilers only issue a warning, and don't try passing through to the
	linker to generate an error, so AC_LINK_IFELSE doesn't catch them.

	Tested on Solaris 11.4 beta with compiler versions:

	  Sun Studio 8 (Sun C 5.5)
	  Sun Studio 10 (Sun C 5.7)
	  Sun Studio 11 (Sun C 5.8)
	  Sun Studio 12 (Sun C 5.9)
	  Sun Studio 12.1 (Sun C 5.10)
	  Oracle Solaris Studio 12.2 (Sun C 5.11)
	  Oracle Solaris Studio 12.3 (Sun C 5.12)
	  Oracle Solaris Studio 12.4 (Sun C 5.13)
	  Oracle Developer Studio 12.5 (Sun C 5.14)
	  Oracle Developer Studio 12.6 (Sun C 5.15)
	  gcc 5.5.0
	  gcc 7.3.0

	and verified the libfreetype.so.6 generated by each of those
	compilers exported the same set of symbols.

	* builds/unix/configure.raw: Implement it.

2018-05-08  Werner Lemberg  <wl@gnu.org>

	[autofit] Avoid potential SEGV if running out of memory.

	Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>.

	* src/autofit/afshaper.c (af_shaper_buf_create,
	af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't
	allocate and free a four-byte buffer.  Instead, make those functions
	no-ops; the calling functions will provide a pointer to a buffer
	instead.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),
	src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues, af_latin_metrics_check_digits)
	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for
	`shaper_buf'.

2018-05-07  Nikolaus Waxweiler  <madigens@gmail.com>

	[cmake] Allow using project as subfolder in other project.

	* CMakeLists.txt: Test for CMake build directory being different
	from source directory.  Provide other parts of the build system
	access the full include directory.

2018-05-07  Werner Lemberg  <wl@gnu.org>

	[build] Suppress configure's `nothing to be done' message.

	This is due to calling the configure script via `make' (within the
	top-level `configure' wrapper script).  The same can happen for all
	other secondary make targets that are used to only modify the
	primary one, e.g., `make setup devel'.

	* builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),
	builds/os2/detect (visualage, watcom, borlandc, devel),
	builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk
	(visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,
	devel-gcc): Use no-op recipe.

2018-05-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Support symbol visibility features of Sun / Oracle C compilers.

	Reported by Kiyoshi Kanazawa:
	https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html
	Thanks to the suggestions by Alexei and Alan Coopersmith.

	* builds/unix/configure.raw: Check if "-xldscope=hidden" is
	accepted, and if so, it is added to CFLAGS.  This is the option
	making Sun / Oracle C compilers hide the symbols from global
	scope.
	* include/freetype/config/ftconfig.h: Use "__global" prefix
	for FT_EXPORT() macro, if SunPro C is newer than Sun ONE
	Studio 8 (2003).
	* builds/unix/ftconfig.in: Ditto.
	* builds/vms/ftconfig.h: Ditto.

2018-05-02  Nikolaus Waxweiler  <madigens@gmail.com>

	Unbreak CMake Windows installation

	* CMakeLists.txt: Generate ftconfig.h on non-UNIX.

2018-05-02  Werner Lemberg  <wl@gnu.org>

	Remove FT_CONFIG_OPTION_PIC and related code.

	*/* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this
	preprocessor symbol.

	*/*: Replace `XXX_GET' macros (which could be either a function in
	PIC mode or an array in non-PIC mode) with `xxx' arrays.

	* include/freetype/internal/ftpic.h, src/autofit/afpic.c,
	src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,
	src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,
	src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,
	src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,
	src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,
	src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
	Removed.


----------------------------------------------------------------------------

Copyright (C) 2018-2021 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This file is part of the FreeType project, and may only be used, modified,
and distributed under the terms of the FreeType project license,
LICENSE.TXT.  By continuing to use, modify, or distribute this file you
indicate that you have read the license and understand and accept it
fully.


Local Variables:
version-control: never
coding: utf-8
End:
