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