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-2020 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:
