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

	[base] Avoid some memory zeroing.

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

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

	[bdf,pcf] Avoid some memory zeroing.

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

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

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

	This fixes

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

	for the generated `ftoption.h` file.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	[cache] Optimize SBit copying.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	[cache] Switch to lazy SBit setting.

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

2021-04-16  Daniel Welty  <@danielwelty>

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

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

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

	The indented `dnl` macros inserted unwanted horizontal space.

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

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

	[sfnt] Safeguard 'COLR' v1 layer extraction

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

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

	[base] Complete `ft_glyphslot_clear`.

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

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

	[truetype] Prevent glyph program state from persisting.

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

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

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

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

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

	Possible solutions to using these in the glyph program are

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

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

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

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

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

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

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

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

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

	[docs] Update docwriter stylesheet for 1.3.1.

	This change is required to support docwriter 1.3.1.

	See

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

	for more information.

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

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

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

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

	[sfnt] Fix memory leak in png loading.

	Reported as

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

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

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

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

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

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

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

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

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

	Handle various VC++ compiler warnings.

	Fixes #1039.

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

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

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

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

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

	[smooth] Reduce copying during integration phase.

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

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

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

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

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

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

	These produce faster or more optimizable code.

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

	[meson] Fix 'mmap' handling on Windows.

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

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

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

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

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

	* .gitlab-ci.yml: New file.

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

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

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

	* meson.build: Updated.

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

	[meson] Make it work with Windows.

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

	Fixes #1029.

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

	[woff2] Fix memory leak.

	Reported as

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

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

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

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

	Fixes #1035.

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

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

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

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

	[unix] Updates for autoconf 2.71.

	This fixes warnings reported by autoupdate.

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

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

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

	* builds/toplevel.mk: Fix previous commit.

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

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

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

	Suggested by Alexei.

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

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

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

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

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

	Move 'dlg' submodule to `subprojects` directory.

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

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

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

	* src/tools/no-copyright: Updated.

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

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

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

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

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

	* CMakeLists.txt: Improve 'bz2' support.

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

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

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

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

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

	Add new function `FT_Get_Transform`.

	See

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

	for some reasons to introduce this function.

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

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

	Decorate `qsort` callbacks with `cdecl`.

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

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

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

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

	[sfnt] Implement 'COLR' v1 sweep gradients.

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

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

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

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

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

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

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

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

	[meson] Fix handling of HarfBuzz library.

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

	Otherwise it causes a dependency cycle:

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

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

	Fixes: #1028.

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

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

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

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

	* meson_options.txt (zlib): Updated.

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

	* meson.build: Fix resource compilation on Windows.

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

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

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

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

	(freetype2_dep): Use it.

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

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

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

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

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

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

	* meson.build (bzip2_dep): Simplify.

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

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

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

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

	* meson.build: Set project version.

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

	[base] Fix Netpbm tracing message.

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

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

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

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

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

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

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

	Fixes #1023.

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

	[psaux] Fix integer overflow.

	Reported as

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

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

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

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

	Fixes #1024.

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

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

	Fixes #1024.

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

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

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

	Always provide logging API.

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

	Problem reported by Alexei.

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

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

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

	Bug introduced in Vincent's last commit bb33f03.

	Fixes issue #1021.

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

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

	Fixes bug #1020.

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

	[stroker] Minor clean-up.

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

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

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

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

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

	Require HarfBuzz 2.0.0.

	This is needed to make commit f1f9705f9 work.

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

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

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

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

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

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

	[afshaper] Fix hb_ot_tags_from_script deprecation warning.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

	* src/sfnt/ttcolr.h: Updated.

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

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

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

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

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

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

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

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

	The old variable name caused confusion.

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

	[builds] Revert `FTMODULE_H' changes.

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

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

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

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

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

	[builds] Relocate `FTMODULE_H'.

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

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

	Fix ABI incompatibility.

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

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

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

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

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

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

	* meson.build: Add summary.

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

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

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

	Without this patch, 'png' is always required.

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

	[builds/windows] Add SDF to VC2010 project.

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

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

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

	We prefer US nomenclature.

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

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

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

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

	[sdf] Remove custom memory tracker.

	The internal FreeType memory tracker is sufficient.

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

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

	Other updates.

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

	[sdf] Fix `make multi`.

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

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

	[sdf] Fix tracing.

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

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

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

	[sdf] Add debugging function.

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

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

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

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

	(ft_bitmap_sdf_renderer_class): New structure.

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

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

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

	(ft_bitmap_sdf_raster): New variable.

	* src/sdf/ftsdf.h: Updated.

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

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

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

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

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

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

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

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

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

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

	[sdf] Add functions to compute pixel edge distances.

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

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

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

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

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

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

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

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

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

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

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

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

	[sdf] Added basic overlapping contour support.

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

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

	[sdf] Add build infrastructure.

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

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

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

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

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

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

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

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

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

	[sdf] Add subdivision and bounding box optimization.

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

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

	[sdf] Add function to generate SDF.

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

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

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

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

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

	[sdf] Add shortest distance finding functions.

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

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

	[sdf] Add function to resolve corner distances.

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

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

	[sdf] Add essential math functions.

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

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

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

	[sdf] Add utility functions for contours.

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

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

	[sdf] Add functions to decompose `FT_Outline`.

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

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

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

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

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

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

	(MUL_26D6, VEC_26D6_DOT): New auxiliary macros.

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

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

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

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

	[sdf] Add raster parameters structure.

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

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

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

	[sdf] Add 'sdf' renderer.

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

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

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

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

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

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

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

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

	Here is a breakdown of what the files will contain.

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

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

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

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

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

	[base] Allow renderers of different formats.

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

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

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

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

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

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

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

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

	[base] Allow renderers of different formats.

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

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

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

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

	Without this patch, we get the error

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

	Reported by Anuj, with a solution from Alexei.

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

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

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

	[autofit] Fix double division in stem darkening.

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

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

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

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

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

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

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

	[truetype] Fix incremental metrics (#59503).

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

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

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

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

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

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

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

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

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

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

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

	*/*: s/FT_LOGGING/FT_DEBUG_LOGGING/.

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

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

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

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

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

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

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

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

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

	* submodules/dlg: Updated to commit 9f0c8b22.

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

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

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

	Improve setup for 'dlg' library.

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

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

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

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

	Other compilers are unchanged.

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

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

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

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

	[dlg] Fix compiler warnings.

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

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

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

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

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

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

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

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

	[base] Implement vertical alignment of log printing.

	Based on a patch by Priyesh.

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

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

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

	Update logging related documentation.

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

	* README.git: Updates related to logging.

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

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

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

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

	We only support Visual C++ 2010 and newer.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* meson.build: Fix .pc file generation.

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

	Reported by Nikolaus.

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

	[truetype] Minor update to forthcoming OpenType 1.8.4 standard.

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

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

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

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

	Patch submitted anonymously in Savannah bug report.

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

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

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

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

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


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

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

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

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

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

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

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

	This is CVE-2020-15999.

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

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

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

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

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

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

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


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

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

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

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

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

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

	[autofit] Synchronize with ttfautohint.

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

	  bb6842bd3bd437b7b4a7921b0376c860f5e73d18  Typo, formatting.
	  d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa  Add Medefaidrin script.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Suggested by Alexei.

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

	* meson.build: Updated.

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

	Add python script for building tarballs.

	* scripts/make_distribution_archives.py: New file.

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

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

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

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

	As an example, the call

	  scripts/make_distribution_archives.py /tmp/freetype2-dist

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

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

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

	* scripts/extract_freetype_version.py: Fix regex typos.

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

	Add Meson build project file.

	Example usage:

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

	[raster] Tune SMART macro (#58352).

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

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

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

	[raster] Introduce SMART macro.

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

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

	[build] Make CMake install basic version information.

	* CMakeLists.txt: Do it.

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

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

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

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

	[truetype] Reduce Infinality footprint.

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

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

	[truetype] Refactor compensation color.

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

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

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

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

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

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

	Segmentation fault reported as

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

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

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

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

	[truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND.

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

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

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

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

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

	Hide internal functions with SunPro.

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

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

	Fix static compilation with Visual C.

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

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

	Fix `-Wformat' compiler warnings.

	* src/*: Fix format specifiers.

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

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

	Fix `-Wformat' compiler warnings.

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

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

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

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

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

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

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

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

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

	Reported by Hin-Tak.

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

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

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

	Fix clang warnings.

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

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

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

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

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

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

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

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

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

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

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

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

	The following builds were still failing due to previous changes:

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

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

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

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

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

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

	[build] Fix multi and C++ builds.

	The following builds were failing due to previous changes:

	  make multi
	  make multi CC="c++"

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

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

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

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

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

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

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

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

	[build] Improve visibility support of library function names.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	[smooth] Introduce direct oversampling for overlaps.

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

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

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

	[smooth] Use direct rendering mode in Harmony.

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

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

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

	[smooth] Separate LCD paths from gray rendering.

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

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

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

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

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

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

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

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

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

	[psaux] Fix memory leak (#58626).

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

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

	[base] Fix memory leak (#58624).

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

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

	[base] Rework d1180b5f9598 until further notice.

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

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

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

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

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

	[base] Fix UBSAN error.

	Reported as

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

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

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

	[woff2] Fix segfault.

	Reported as

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

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

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

	[sfnt] Support Intel compilers.

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

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

	[base] Fix memory leak (#58611).

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

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

	[cff] Fix memory leak (#58610).

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

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

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

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

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

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

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

	Remove redundant inclusion of `ft2build.h'.

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

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

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

	Make macros for header file names optional.

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

	*/*: Replace

	   #include FOO_H

	with

	   #include <freetype/foo.h>

	or something similar.  Also update the documentation.

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

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

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

	Remove obsolete HAVE_STDINT_H probing macro.

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

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

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

	Remove Jamfile files from the tree.

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

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

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

	[smooth] Turn on LCD filtering during FreeType initialization.

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

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

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

	[smooth] Stop using dedicated LCD modules and classes.

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

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

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

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


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

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

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

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

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

	* docs/CHANGES: Updated.

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

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

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

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

	* builds/freetype.mk: Refactor for readability.

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

	[builds] Clean up Windows CE project files.

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

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

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

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

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

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

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

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

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

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

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

	[woff2] Return if single stream operation fails.

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

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

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

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

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

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

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

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

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

	[docwriter] Drop support for Python < 3.5.

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

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

	for more information.

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

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

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

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

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

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

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

	[gzip] Support `gzip' encoded header conditionally.

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

	Problem report in

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

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

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

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

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

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

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

	[docs] Update docwriter stylesheet.

	This change is required to support docwriter 1.2.1.

	See

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

	for more information.

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

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

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

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

	(TT_Vary_Apply_Glyph_Deltas): Improve tracing message.

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

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

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

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

	Fix for CFF space glyph regression (#57541).

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

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

	[woff2] Fix font table access.

	Reported as

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

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

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

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

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

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

	[autofit] Add support for Hanifi Rohingya script.

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

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

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

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

	Require HarfBuzz 1.8.

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

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

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

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

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

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

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

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

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

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

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

	[woff2] Fix memory leaks and a runtime warning.

	Reported as

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

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

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

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

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

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

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

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

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

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

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

	This patch fixes broken hyperlinks in the documentation pointing to
	and from the API Reference.  It also allows web assets to load from
	their relative paths.

	* builds/freetype.mk (DOC_DIR): Adjust.
	(refdoc, refdoc-venv): Add `--site' argument.

	* builds/toplevel.mk (do-dist): Updated.

2019-12-21  Hugh McMaster  <hugh.mcmaster@outlook.com>

	[docs] (1/2) Move static web assets (#56745).

	* docs/reference/*: Move ...
	* docs: ... one directory up.

2019-12-21  Dominik Röttsches  <drott@chromium.org>

	Fix more UBSan warnings on adding offset to nullptr (#57432).

	* src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c
	(cf2_initLocalRegionBuffer): Use `FT_OFFSET'.

2019-12-16  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix UBSan warnings on adding offsets to nullptr.

	Reported as

	  https://bugs.chromium.org/p/chromium/issues/detail?id=1032152

	* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET'.

2019-12-14  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix integer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19305

	* src/truetype/ttinterp.c (Ins_MIRP): Use `ADD_LONG'.

2019-12-13  Werner Lemberg  <wl@gnu.org>

	Another bunch of UBSan warnings on adding offsets to nullptr.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19427
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19433
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19441
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19451
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19452
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19457

	* src/autofit/aflatin.c (af_latin_hints_compute_segments,
	af_latin_hints_compute_edges): Use `FT_OFFSET'.

	* src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET'.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early
	if there is no charstring.

	* src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET'.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for
	zero bitmap dimensions.

2019-12-09  Dominik Röttsches  <drott@chromium.org>

	Fix more UBSan warnings on adding offset to nullptr (#57384).

	* src/smooth/ftsmooth.c (ft_smooth_render_generic),
	src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET'.

2019-12-05  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET'.

	Reported as

	  https://bugs.chromium.org/p/chromium/issues/detail?id=1030614

2019-12-03  Werner Lemberg  <wl@gnu.org>

	More nullptr offset UBSan warnings (#57331, #57347).

	* src/autofit/afcjk.c (af_cjk_hints_compute_segments),
	src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c
	(Ins_UNKNOWN): Use `FT_OFFSET'.

2019-11-29  Dominik Röttsches  <drott@chromium.org>

	Avoid more nullptr offset UBSan warnings (#57316).

	* src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points.
	* src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET'.
	* src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if
	`charstring_base' or `charstring_len' are null.
	* src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET'.

2019-11-23  John Stracke  <jstracke@Google.com>

	[base] Really fix #57194.

	Apply accidentally missed second part of patch.

	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call
	`FT_GlyphLoader_CreateExtra'.

2019-11-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Avoid sanitizer warning (#57289).

	* src/truetype/ttpload.c (tt_face_get_device_metrics): Use
	`FT_OFFSET'.

2019-11-23  Armin Hasitzka  <prince.cherusker@gmail.com>

	[truetype] Fix integer overflow (#57287).

	* src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'.

2019-11-23  Ben Wagner  <bungeman@google.com>

	[sfnt] Avoid sanitizer warning (#57286).

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +
	offset' computation.
	Tag `table' as `const'.

2019-11-23  John Stracke  <jstracke@Google.com>
            Werner Lemberg  <wl@gnu.org>

	[base] Fix `NULL + offset' sanitizer warnings (#57194).

	* src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points,
	FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET'.
	(FT_GlyphLoader_CreateExtra): Add short cut if some values are zero.

2019-11-23  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftmemory.h (FT_OFFSET): New macro.

	Use this for `base + offset' pointer calculations where `base' can
	be NULL (triggering a sanitizer warning even if the resulting
	pointer gets never dereferenced since it is undefined behaviour
	in C).

	Suggested by Ben Wagner.

2019-11-23  Ben Wagner  <bungeman@google.com>

	[sfnt] Ensure OTTO fonts have tables (#57285).

	* src/sfnt/ttload.c (tt_face_load_font_dir): Add test.

2019-11-23  Behdad Esfahbod  <behdad@behdad.org>

	Minor fixes for recent compilers.

	* src/gzip/infutil.h (inflate_mask): Add `const'.

	* src/autofit/aflatin2.c: Include `ft2build.h'.

2019-11-07  Nikolaus Waxweiler  <madigens@gmail.com>

	* CMakeLists.txt: Minor additions to the notes, compile
	  builds/unix/ftsystem.c instead of src/base/ftsystem.c on UNIX.

	The latter change is based on the code proposed by rim in #55235.

2019-10-25  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts' for TTCs.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18494

2019-10-22  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift.

	Also improve tracing.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18390

2019-10-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only.

2019-10-10  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18108

2019-10-09  John Tytgat  <John.Tytgat@esko.com>

	[cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023).

	* src/cff/cffobjs.c (cff_face_init): Don't set
	FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts.

2019-10-08  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix SFNT table checks.

	Also reduce number of SFNT table lookups.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18065

	* include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields
	`glyf_table', `loca_table', and `head_table'.

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature.
	Use table pointers in `info' parameter.
	(get_x_mins): Check `maxp_table'
	Use table pointers in `info' parameter.
	(reconstruct_font):  Use and set table pointers in `info' parameter.
	Fix check for `glyf' and `loca' tables.
	Update call to `reconstruct_glyf'.
	(woff2_open_font): Updated.

2019-10-06  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Fix reallocation.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18046

2019-10-06  Werner Lemberg  <wl@gnu.org>

	Improve memory debugging.

	* include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use
	`FT_DEBUG_INNER' to set source code file name and line.

	* src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of
	tracing message.

2019-10-03  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17966

2019-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (ft_stroker_inside): Speed up.

2019-10-01  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17804

2019-09-30  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17812

2019-09-30  Werner Lemberg  <wl@gnu.org>

	[woff2] Reject fonts without `head' table.

	Also fix memory deallocation in case of error.

	`head' problem reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17820

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Don't use `stream_close'.
	Abort if `head_table' is NULL.
	Don't free `transformed_buf' in case of error.
	(woff2_open_font): Don't set `uncompressed_buf' to NULL.

2019-09-29  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix compiler warnings.

	Problem reported by Alexei.

	* src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min'.
	(reconstruct_font): Initialize `num_hmetrics'.
	(woff2_open_font): Initialize `info'.

2019-09-28  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check.

	Correct thinkos in patch from 2019-09-01.

2019-09-28  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix memory leaks.

	One of them reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17766

	* src/sfnt/sfwoff2.c (woff2_open_font): Free `info->x_mins' and
	`woff2->ttc_fonts'.

	(reconstruct_glyf): Initialize `info->x_mins'.

2019-09-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (ft_stroker_cap): Speed up caps.

2019-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter.
	* include/freetype/ftstroke.h: Wordsmith miter docs.

2019-09-25  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17684

2019-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations.

2019-09-20  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Fix memory leaks.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16896

	* src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling.
	Free `uncompressed_buf'.
	(reconstruct_font): Free `transformed_buf'.

2019-09-17  Werner Lemberg  <wl@gnu.org>

	* src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count'.

	Problem reported by Marc Schönefeld <marc.schoenefeld@gmx.org>.

2019-09-17  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Check table index.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17100

2019-09-15  Avi Halachmi (:avih)  <avihpit@yahoo.com>

	[cmake] Don't fail if brotli is missing (#56894).

	The libs which cmake controls are commented out at

	  include/freetype/config/ftoption.h

	and cmake un-comment each enabled library, but the brotli option was
	not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained
	defined even if brotli was missing/disabled/etc.

	Comment it such that cmake can control it, which means leaving it
	undefined if brotli is missing.

	* include/freetype/config/ftoption.h: Fix typo.

2019-09-05  Werner Lemberg  <wl@gnu.org>

	[cmake] Add brotli support.

	* CMakeLists.txt (FT_WITH_BROTLI): New option.

	* builds/cmake/FindBrotliDec.cmake: New file.

2019-09-05  Werner Lemberg  <wl@gnu.org>

	Fix handling of `AF_CONFIG_OPTION_INDIC'.

	* devel/ftoption.h, include/freetype/config/ftoption.h:
	`AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'.

2019-09-05  Werner Lemberg  <wl@gnu.org>

	CMakeLists.txt: Fix generation of DLL related stuff (#56852).

	Extract `version_info' variable from `builds/unix/configure.raw' and
	use the data to correctly set `LIBRARY_VERSION' and
	`LIBRARY_SOVERSION'.

	Also use the data to set `ft_version' field in `freetype2.pc'.
	Also fix the needed minimum version of HarfBuzz in `freetype2.pc'.

2019-09-03  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (compute_ULong_sum): Fix undefined shift.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16933

2019-09-01  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfwoff2.c (woff2_open_font): Add sanity check.

	Don't trust `totalSfntSize' unconditionally.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16893

2019-08-27  Dominik Röttsches  <drott@chromium.org>

	[woff2] Don't use `FT_UInt64' (#56815).

	* src/sfnt/sfwoff2.c (woff2_open_font): Use `FT_UInt32' for
	`file_offset'.  This fixes builds on platforms where `FT_LONG64' is
	not defined while still being sufficient to store a file offset.

2019-08-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Prevent crash in `TT_Set_Named_Instance' (#56813).

	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Fix error
	handling.

2019-08-27  Werner Lemberg  <wl@gnu.org>

	[woff2] Fix compiler warnings.

	* src/sfnt/sfwoff2.c (read_num_hmetrics): Remove unused argument
	`table_len'.
	Update caller.
	(triplet_decode, compute_bbox, store_loca, reconstruct_glyf): Make
	`i' variable unsigned.
	(reconstruct_glyph): Remove condition which is always false.
	(reconstruct_html): Removed unused argument `transformed_size'.
	Update caller.

	* src/sfnt/woff2tags.c (woff2_known_tags): Remove condition which is
	always false.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Check whether known tag is in array bounds.

	If table tag is not 0x3f, we expect a value between 0 and 62.  If
	this is not the case, exit with errors.

	* src/sfnt/sfwoff2/c: Check whether table tag makes sense.

	* src/sfnt/woff2tags.c: Return 0 if tag is out of bounds.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* src/sfnt/sfwoff2.c: Improve trace comments.

	Adjust tracing levels for comments, and more formatting.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Support `hmtx' reconstruction when `glyf' is untransformed.

	`reconstruct_hmtx' requires `info->x_mins' and `info->num_glyphs' to
	reconstruct the hmtx table.  In case glyf is not transformed, we
	call `get_x_mins' which does the necessary work.

	* src/sfnt/sfwoff2.c (get_x_mins): New function.
	(reconstruct_font): Call get_x_mins.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Support `face->num_faces' for WOFF2 fonts.

	Set correct value of `face->num_faces' for WOFF2 fonts.  This is
	being handled separately because we only load the tables for the
	requested font face in `woff2_open_font' and create a single-face
	sfnt stream.

	The full discussion is at:

	  https://lists.gnu.org/archive/html/freetype-devel/2019-08/msg00000.html

	* src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
	`woff2_num_faces'.
	(sfnt_init_face): Introduce variable `woff2_num_faces', and change
	`face->root.num_faces' if `woff2_num_faces' is set.

	* src/sfnt/sfwoff2.c (woff2_open_font): Validate requested face
	index and handle negative face indices.

	* src/sfnt/sfwoff2.h (woff2_open_font): Add parameter `num_faces' to
	declaration.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Improve memory and error handling.

	Free up memory after use, and improve error handling.

	* src/sfnt/sfwoff2.c (reconstruct_font, woff2_open_font): Implement
	changes.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Avoid too many calls to `FT_REALLOC'.

	We do this by using `totalSfntSize' as an initial reference, and
	extending the buffer when required.  This reduces rendering time
	considerably.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add
	`totalSfntSize', rename `total_sfnt_size' to `actual_sfnt_size'.

	* src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size' to keep
	track of and update total size of stream.

	(WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly.

	(pad4, store_loca, reconstruct_glyf, reconstruct_hmtx,
	reconstruct_font): Update parameters to accept `sfnt_size'.

	(woff2_open_font): Add variable `sfnt_size'.  Use WOFF2 header field
	`totalSfntSize' as initial reference (if value makes sense) and
	allocate `totalSfntSize' bytes for the sfnt stream.  `write_buf'
	handles reallocation if and when required.  Also resize the stream
	to `actual_sfnt_size' after reconstruction.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Reconstruct `loca', `hmtx', and swap out stream.

	Add necessary functions to reconstruct loca and hmtx tables (the two
	remaining tables that can have a transform).  `woff2_open_font' is
	now capable of loading a woff2 font face.  This code may still need
	more refining and better memory management.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total
	(final) size of sfnt stream.

	(WOFF2_InfoRec): Add header checksum value.

	* src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index'
	parameter to its pointer so its value can be modified by
	`woff2_open_font'.

	* src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into
	sfnt buffer at given position.

	(write_buf): Add parameter `extend_buf' which allows caller to
	specify whether buffer should be reallocated before copying data.

	(WRITE_SFNT_BUF): Updated.

	(pad4, store_loca, reconstruct_htmx): New functions.

	(reconstruct_glyf): Calculate loca values and store them.

	(reconstruct_font): Call `reconstruct_hmtx', write table record
	entries, and calculate table checksums.  Also calculate font
	checksum and update `checksumAdjustment' entry in head table.

	(woff2_open_font): Open stream for sfnt buffer, swap out input
	stream and return.

	* src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept
	pointer to `face_index'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Reconstruct transformed `glyf' table.

	Reconstruct `glyf' table if it is transformed in the uncompressed
	table stream.  Also add necessary structures, macros and functions.

	* include/freetype/internal/wofftypes.h (WOFF2_InfoRec,
	WOFF2_SubstreamRec, WOFF2_PointRec): New structures.
	(WOFF2_TableRec): s/OrigLength/dst_length/.

	* src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use
	`FT_SET_ERROR' to set implicit `error' variable.

	(WRITE_SHORT): New macro.

	(N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM,
	COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to
	refer to substreams of the transformed `glyf' tables.

	(Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX'
	macros.

	(with_sign, safe_int_addition): New functions to add sign to values
	based on a flag and perform safe addition respectively.

	(triplet_decode): Decode variable-length (flag, xCoordinate,
	yCoordinate) triplet for a simple glyph.   See

	  https://www.w3.org/TR/WOFF2/#triplet_decoding

	(store_points, compute_bbox, composteGlyph_size, reconstruct_glyf):
	New functions.

	(reconstruct_font): Call `reconstruct_glyf'.

	* src/sfnt/sfwoff2.h: Add required constants.

	* src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Copy un-transformed tables to sfnt stream.

	Copy un-transformed tables to the sfnt stream.

	* src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF): New macro.
	(write_buf): New function.  Extend memory of `dst' buffer and copy
	bytes from `src'.
	(compute_ULong_sum): New function.  Calculate checksum of table.
	(reconstruct_font): Change `FT_Byte* sfnt' to `FT_Byte**
	sfnt_bytes'.  This has been done because we reallocate memory to
	`sfnt' multiple times, which may change the pointer value of `sfnt'.
	This new pointer must be propogated back to the caller.  Same reason
	for using a double pointer in `write_buf'.

	* src/sfnt/woff2tags.h (WOFF2_DEFAULT_MAX_SIZE): New macro used for
	overflow checking.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Create stream for uncompressed buffer.

	Uncompressed buffer is now an `FT_Stream'.

	Perform basic checks and start iterating over tables.

	* src/sfnt/sfwoff2.c (stream_close, find_table, read_num_hmetrics):
	New functions.
	(reconstruct_font): Modify parameters and iterate over tables.
	(woff2_open_font): Updated.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Handle TTCs and start reconstructing font.

	We `handle' TTCs by modifying the `indices' array to point to only
	those tables that are part of the requested `face_index'.

	Set and use `num_tables' in `WOFF2_TtcFont'.

	* src/sfnt/sfwoff2.c (reconstruct_font): New function.
	(woff2_open_font): Start reconstruction of font.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Get known tags from function.

	Change `KnownTags' to a function (`woff2_known_tags').  This avoids
	introducing a global constant array.  This function returns the
	specified index without *any* checks.  The caller must ensure that
	`index' is within array limits.

	* src/sfnt/sfwoff2.c (woff2_open_font): Change `KnownTags[...]'
	notation to `woff2_known_tags( ...  )'.

	* src/sfnt/woff2tags.c: Perform changes.

	* src/sfnt/woff2tags.h: Update definitions.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Minor.

	* src/sfnt/sfwoff2.c (woff2_uncompress): Add error message
	(woff2_open_font): Free `uncompressed_buf'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Uncompress Brotli streams and `face_index' support.

	WOFF2 compressed stream is now uncompressed if Brotli is available.
	This data is stored in a separate buffer (uncompressed_buf) because
	it does not contain direct table data.  Certain tables have
	transformations applied to them, and they must be reconstructed
	before we can write those tables to the SFNT stream.

	`face_index' is now being passed as a parameter to
	`woff2_open_font'.

	* src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
	`face_instance_index'.

	* src/sfnt/sfwoff2.c (woff2_uncompress): New function.
	(woff2_open_font): Call `woff2_uncompress'.
	(compute_first_table_offset): Fix return type.

	* src/sfnt/sfwoff2.h (woff2_open_font): Modify declaration.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* builds/unix/configure.raw: Change argument name to `brotli'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add Brotli dependency and required checks.

	Brotli is required for decompressing WOFF2 font directory streams.
	The library is thus being added as an optional dependency for
	FreeType.

	* builds/unix/configure.raw: Add checks for `libbrotlidec'.
	(REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(FT_CONFIG_OPTION_USE_BROTLI): New macro.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Write SFNT Offset table.

	* src/sfnt/sfwoff2.c (WRITE_USHORT, WRITE_ULONG): New macros.
	(compare_tags): New function.
	(woff2_open_font): Implement it.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* src/sfnt/sfwoff2.c: #undef macros.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[woff2] Read table and collection directory.

	* include/freetype/internal/wofftypes.h (WOFF2_TtcFontRec): New
	structure.
	(WOFF2_HeaderRec): Add more fields.

	* src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128, ROUND4): New
	macros.
	(Read255UShort, CollectionHeaderSize, compute_first_table_offset):
	New functions.
	(ReadBase128): Use `FT_READ_BYTE'.
	(woff2_open_font): Add functionality to read table directory and
	collection directory (if present).

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Include `woff2tags.c' for building.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `woff2tags.c'.

	* src/sfnt/sfnt.c: Include `woff2tags.c'.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Add WOFF2 constants.

	Add constants required for WOFF2, and known table tags as defined in
	the specification.  See

	  https://www.w3.org/TR/WOFF2/#table_dir_format

	for details.

	* src/sfnt/woff2tags.c, src/sfnt/woff2tags.h: New files.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Read WOFF 2 header.

	Check for WOFF2 tag, call `woff2_open_font', and implement it to read
	header according to specification.

	* include/freetype/internal/fttrace.h: Add `sfwoff2.c'.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `sfwoff2.c'.

	* src/sfnt/sfnt.c: Include `sfwoff2.c'.

	* src/sfnt/sfobjs.c (sfnt_open_font): Check for `wOF2' tag and call
	`woff2_open_font'.

	* src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h: New files.

2019-08-27  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add structures for WOFF2.

	Add structures and macro for WOFF 2 header and table directory.

	* include/freetype/internal/wofftypes.h (WOFF2_HeaderRec,
	WOFF2_TableRec_): New structures.

	* include/freetype/tttags.h (TTAG_wOF2): New macro.

2019-08-26  Werner Lemberg  <wl@gnu.org>

	* src/psaux/cffdecode.c (cff_operator_seac): Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16470

2019-08-26  Werner Lemberg  <wl@gnu.org>

	[type1] Fix `FT_Get_Var_Axis_Flags' (#56804).

	* src/type1/t1load.c (T1_Get_MM_Var): Allocate space for axis flags.
	Also remove redundant assignment.

2019-07-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftbbox.c (cubic_peak): Sanitize left shift (#56586).

2019-07-22  Weiyi Wu  <w1w2y3@gmail.com>

	* src/cid/cidload.c (cid_hex_to_binary): Fix typo (#56653).

2019-07-12  Werner Lemberg  <wl@gnu.org>

	[sfnt, winfonts] Avoid memory leaks in case of error (#56587).

	* src/sfnt/sfwoff.c (woff_open_font): Call `FT_FRAME_EXIT' in case
	of error.

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Ditto.

2019-07-12  Ben Wagner  <bungeman@google.com>

	Properly handle phantom points for variation fonts (#56601).

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Scale phantom
	points if HVAR and/or VVAR is present.

2019-07-04  Werner Lemberg  <wl@gnu.org>

	[psaux] (2/2) Handle fonts that use SEAC for ligatures (#56580).

	The same as previous commit but for the old engine.

	* src/psaux/t1decode.c (t1operator_seac): Implement it.

2019-07-04  Chris Liddell <chris.liddell@artifex.com>

	[psaux] (1/2) Handle fonts that use SEAC for ligatures (#56580).

	As originally intended, a Type 1 SEAC charstring would be used for
	an accented glyph (like `acaron' or `uumlaut'), where the advance
	width of the SEAC glyph is the same as that of the `base' glyph
	(like `a' or `u').  In this case it is not uncommon for the SEAC
	glyph to not use an (H)SBW opcode of its own but to rely on the
	value from the base glyph.

	However, out-of-spec fonts also use SEAC glyphs for ligatures (like
	`oe' or `fi'), and in those cases the overall advance width is
	greater than that of the `base' glyph.  For this reason we have to
	allow that the SEAC glyph can have an (H)SBW value of its own, and
	if it has, retain this value, rather than the one from the base
	glyph.

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escSEAC>:
	Implement it.

2019-07-01  Werner Lemberg  <wl@gnu.org>

	* Version 2.10.1 released.
	==========================


	Tag sources with `VER-2-10-1'.

	* docs/VERSION.TXT: Add entry for version 2.10.1.

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.10.0/2.10.1/, s/2100/2101/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.

	* builds/unix/configure.raw (version_info): Set to 23:1:17.
	* CMakeLists.txt (VERSION_PATCH): Set to 1.

	* include/freetype/fterrors.h (FT_Error_String): Fix C++ compilation.

2019-06-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Fix inequality.

	Reported by Armin Hasitzka.

2019-06-16  Werner Lemberg  <wl@gnu.org>

	* src/tools/apinames.c: Formatting, minor edits.

2019-06-16  Werner Lemberg  <wl@gnu.org>

	[autofit] Disable hinting if no blue zones are available (#56450).

	* src/autofit/afglobal.c (af_face_global_get_metrics): Start again
	(with dummy hinter module) if no blue zones are present.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Change
	signature to return error code.
	If no blue zones are found, update `glyph_styles' array to hold
	AF_STYLE_NONE_DFLT instead of the current style.
	(af_latin_metrics_init): Return internal error code if no blue zones
	are found.

2019-06-16  Werner Lemberg  <wl@gnu.org>

	Towards better VMS support.

	More to come.

	* builds/vms/LIBS.OPT_IA64, builds/vms/_LINK.OPT_IA64,
	builds/vms/vmslib.dat: New files provided by Jouk Jansen
	<joukj@hrem.nano.tudelft.nl>.

	* builds/vms/ftconfig.h: Update, also from Jouk.

2019-06-13  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Minor.

2019-06-13  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Restore the span buffering for direct mode only.

	The buffer size FT_MAX_GRAY_SPANS is set to 10 spans, which should be
	enough to cover the entire scanline for simple glyphs in most cases:
	each slightly slanted edge needs up to two spans, plus a filling span
	in-between.  This is not new, we used to do it before cb4388783cecc.

	* src/smooth/ftgrays.c (gray_TWorker): Add `spans' and `num_spans'.
	(gray_hline, gray_sweep): Implement the span buffering.
	(gray_raster_render): Use negative `num_spans' to avoid the direct
	mode.

2019-06-12  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* include/freetype/ftmodapi.h (FT_DebugHook_Func): Return error.

	Fix a warning by adding a return value as in `TT_RunIns',
	which should not be a compatibility issue.

2019-06-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttobjs.c (tt_check_trickyness_family): Add `const'.

2019-06-11  Moazin Khatti  <moazinkhatri@gmail.com>

	[gzip] Add support for `gzip' encoded header.

	* src/gzip/ftgzip.c (FT_Gzip_Uncompress): Modify the the call to
	`inflateInit2' to enable support for `gzip' encoded headers.

2019-06-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type1,type42] Use `const' for string literals.

	* include/freetype/internal/psaux.h (PS_Table_FuncsRec): Updated.
	* include/freetype/internal/t1types.h (T1_EncodingRec): Updated.
	* src/psaux/psobjs.[ch] (ps_table_add): Updated.
	* src/type1/t1load.c (T1_Open_Face, parse_encoding): Updated.
	* src/type42/t42objs.c (T42_Open_Face): Updated.
	* src/type42/t42parse.c (t42_parse_encoding): Updated.

	* src/cff/cffobjs.c (cff_face_init): Minor.

2019-06-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf,pcf] Use `const' for string literals.

	* src/bdf/bdf.h (bdf_property_t): Updated `name'.
	* src/bdf/bdflib.c (_bdf_list_split,bdf_create_property,
	_bdf_add_property,_bdf_ato*): Updated.
	* src/bdf/bdfdrivr.c (bdf_interpret_style): Updated.
	* src/pcf/pcfread.c (pcf_intrpret_style): Ditto.

2019-06-07  Philip Race  <philip.race@oracle.com>

	* src/base/ftinit.c (FT_Set_Default_Properties): Fix crash.

	Terminate loop at end of environment.

2019-05-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Solidify VC2005 builds.

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly
	declare `_BitScanReverse' intrinsic.
	* builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics.

2019-05-30  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[sfnt] Separate WOFF sources and headers.

	Move WOFF sources and headers to separate files.

	* include/freetype/internal/wofftypes.h, src/sfnt/sfwoff.c,
	src/sfnt/sfwoff.h: New files.

	* include/freetype/internal/fttrace.h: Register `sfwoff.c'.

	* include/freetype/internal/internal.h: Define
	FT_INTERNAL_WOFF_TYPES_H.

	* include/freetype/internal/sfnt.h: Include FT_INTERNAL_WOFF_TYPES_H.

	* include/freetype/internal/tttypes.h: Move out WOFF structures.

	* src/sfnt/rules.mk: Add `sfwoff.c'.

	* src/sfnt/sfnt.c: Include `sfwoff.c'.

	* src/sfnt/sfobjs.c: Include `sfwoff.h', move out WOFF sources.

2019-05-30  Werner Lemberg  <wl@gnu.org>

	[base] Fix `make multi'.

	Reported by Nikhil.

	* src/base/fterrors.c: Include FT_INTERNAL_DEBUG_H.

2019-05-29  Ben Wagner  <bungeman@google.com>

	[truetype] Fix copy-and-paste error (#56409).

	* src/truetype/ttgload.c (load_truetype_glyph): Use correct indices
	into `unrounded' array for phantom points.

2019-05-29  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix 32bit builds (#56404).

	Patch suggested by Ben Wagner <bungeman@google.com>.

	* src/truetype/ttgxvar.c (FT_fixedToInt, FT_fixedToFdot6): Remove
	harmful cast to unsigned type.

2019-05-26  Ben Wagner  <bungeman@google.com>

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Improve accuracy.

2019-05-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Draw glyphs without deltas in variation font (#56374).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Always fill
	`unrounded' array.

2019-05-21  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (opcode_name): Improve mnemonics.

2019-05-16  Werner Lemberg  <wl@gnu.org>

	[truetype] Actually scale varied CVT values.

	Up to now, only the unscaled CVT values were varied; in other words,
	the `CVAR' data was never used for bytecode hinting.

	* src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
	function.
	(tt_face_vary_cvt): Use it to trigger rescaling of CVT values.

2019-05-16  Werner Lemberg  <wl@gnu.org>

	[truetype] Use 26.6 format for storing unscaled CVT values.

	If `CVAR' data is applied to variation fonts, fractional values are
	possible.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Change type of
	`cvt' from `FT_Short' to `FT_Int32'.

	* src/truetype/ttgxvar.c (FT_fdot6ToFixed): New macro.
	(tt_face_vary_cvt): Use it to update code to 26.6 format.

	* src/truetype/ttobjs.c (tt_size_run_prep): Update code to 26.6
	format.

	* src/truetype/ttpload.c (tt_face_load_cvt): Stora data in 26.6
	format.

2019-05-16  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph): Init `unrounded'.

	This fixes linear advance width values for spacing glyphs.  Bug
	introduced 2019-05-09.

2019-05-16  Werner Lemberg  <wl@gnu.org>

	[truetype] Avoid code duplication.

	* src/truetype/ttobjs.c (tt_size_run_prep): Scale CVT values in this
	function.
	(tt_size_ready_bytecode): Updated.
	* src/truetype/ttgload.c (tt_loader_init): Updated.

2019-05-13  Jouk Jansen  <joukj@hrem.nano.tudelft.nl>

	* vms_make.com: Updated.  Handle `bzip2' directory, too.

2019-05-13  Werner Lemberg  <wl@gnu.org>

	* src/psaux/psfont.c (cf2_font_setup): Fix compiler warning.

2019-05-12  Werner Lemberg  <wl@gnu.org>

	[truetype] Doh.  Fix last commit to make it work.

	Very embarassing :-)

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14701
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14705
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14710

	* src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): Move up and add
	argument; update all callers.
	(TT_Process_Simple_Glyph): Use it.  The `unrounded' array is active
	for variation fonts only, thus also enclose related code with
	`#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT ...  #endif' where
	necessary.
	Revert commit a113e5d from 2019-05-09, and don't use `extra_points2'
	but allocate a temporary array.
	Speed up the scaling of the `unrounded' array.

	* src/truetype/ttgxvar.c (FT_fixedToInt, FT_FixedToFdot6): Fix type
	conversions and rounding.  The unsigned type must have more or equal
	bits to the signed type.

2019-05-09  Werner Lemberg  <wl@gnu.org>

	[truetype] Increase precision of font variation (#54371).

	This patch makes FreeType use font units in 26.6 format internally
	instead of integers.

	* src/truetype/ttgxvar.c (FT_fixedToFdot6): New macro.
	(TT_Vary_Apply_Glyph_Deltas): Add argument to output unrounded font
	coordinates.
	* src/truetype/ttgxvar.h: Updated.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Use
	`extra_points2' array to temporarily hold unrounded point
	coordinates; use them to compute scaled coordinates and linear
	advance width and height.
	(load_truetype_code): Adjust similarly.

2019-05-09  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Minor.

2019-05-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Faster fractions.

	* src/smooth/ftgrays.c (SUBPIXELS): Replace with...
	(FRACT): A fractional coordinate macro to use in...
	(gray_render_line, gray_render_scanline): ... here.

2019-05-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/raster/ftraster.c (Draw_Sweep): Unbreak.

2019-05-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/raster/ftraster.c: Clean-ups.

2019-05-05  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c: More use of `FT_fdot14ToFixed'.

2019-05-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_render_line): Small shortcut.

2019-05-04  Werner Lemberg  <wl@gnu.org>

	Various clang 8.0 static analyzer fixes.

	Reported by Sender Ghost <lightside@gmx.com>.

	* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Catch a corner
	case where `edge->first' could be NULL.

	* src/pfr/pfrobjs.c (pfr_slot_load): Remove unnecessary test of
	`size'.

	* src/raster/ftraster.c (Draw_Sweep): Catch a corner case where
	`draw_right' might be NULL.

	* src/sfnt/ttmtx.c (tt_face_get_metrics): Fix limit test for
	`aadvance'.
	Ensure `abearing' always hold a meaningful result.

	* src/truetype/ttgload.c (load_truetype_glyph): Ensure `subglyph' is
	not NULL before accessing it.
	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Remove unnecessary
	test of `namedstyle'.

	* src/type42/t42parse.c (t42_parser_done): Ensure
	`parser->root.funcs.done' is not NULL before accessing it.

2019-05-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Miscellaneous macro updates.

	* src/base/ftoutln.c (SCALED): Updated.
	* src/smooth/ftgrays.c (SCALED): Ditto.
	(FLOOR, ROUND, CEILING): Removed.
	* src/psaux/psfixed.h (cf2_fracToFixed): Updated.

2019-05-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Tweak LCD filtering.

	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
	Choose direction from bitmap's pixel_mode.
	* include/freetype/internal/ftobjs.c (FT_Bitmap_LcdFilterFunc):
	Updated.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.

2019-05-02  Werner Lemberg  <wl@gnu.org>

	* vms_make.com: Updated (#56253).

	Remove no longer existing directories (`autohint', `otlayout').
	Update used base extensions.
	Activate `autofit' module.
	Add `gxvalid' module.
	Update copyright notices.

2019-04-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Simplify cubic Bézier flattening.

	The previous implementation is correct but it is too complex.
	The revised algorithm is based on the fact that each split moves
	the control points closer to the trisection points on the chord.
	The corresponding distances are good surrogates for the curve
	deviation from the straight line.

	This cubic flattening algorithm is somewhat similar to the conic
	algorithm based the distance from the control point to the middle of
	the chord.  The cubic distances, however, decrease less predictably
	but are easy enough to calculate on each step.

	The new algorithm produces slightly larger number of splits, which is
	compensated by its simplicity.  The overall rendering performance is
	improved by 1-2%.  The larger number of splits does not necessarily
	result in higher quality, which stays comparable.

	* src/smooth/ftgrays.c (gray_render_cubic): Replace the split
	condition.

2019-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Bithacks and cosmetics.

	* src/smooth/ftgrays.c (gray_record_cell, gray_set_cell, gray_hline,
	gray_render_conic, gray_convert_glyph_inner): Updated.

2019-04-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Optimize Bézier bisections.

	This change makes bisections faster by 20-30%. When inlined into
	`gray_render_cubic', this makes the function faster by 10% and is
	noticeable in the overall rendering performance.

	* src/raster/ftraster.c (Split_Conic, Split_Cubic): Use shifts and
	refactor.
	* src/smooth/ftgrays.c (gray_split_conic, gray_split_cubic): Ditto.
	* src/base/ftstroke.c (ft_conic_split, ft_cubic_split): Ditto.
	* src/base/ftbbox.c (cubic_peak): Use shifts.

2019-04-23  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap.c (tt_cmap12_next): Remove dead code.

	Found by clang 8.0's static analyzer and reported by Sender Ghost
	<lightside@gmx.com>.

2019-04-23  Werner Lemberg  <wl@gnu.org>

	[base] Fix thinko in previous commit.

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Check final width, not
	target pitch.

	Problem reported by Sender Ghost <lightside@gmx.com>.

2019-04-22  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Check target pitch.

	Problem reported by Sender Ghost <lightside@gmx.com>.

2019-04-22  Werner Lemberg  <wl@gnu.org>

	Fix return value of `FT_Set_Named_Instance' (#56186).

	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Correctly handle
	internal return value -1 of `TT_Set_Var_Design'.

2019-04-18  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix handling of undefined glyph (#56067).

	This commit fixes the changes from 2018-07-21, which broke charmap
	iteration.  We now add the default character as a new glyph with
	index 0, thus increasing the number of glyphs by one (as before).

	* src/pcf/pcfread.c (pcf_get_metrics): Adjust to new artificial
	glyph with index 0.
	Limit number of elements to 65534.
	(pcf_get_bitmaps): Ditto.
	Unify two loops into one; this avoids allocation of an intermediate
	array.
	(pcf_get_encodings): Don't flip indices but copy glyph metrics of
	default character to index 0.
	Also handle invalid default character.

	* docs/CHANGES: Updated.

2019-04-15  Minmin Gong  <gongminmin@msn.com>

	* CMakeLists.txt: Avoid rewriting of unchanged configuration files.

	Reported as

	  https://savannah.nongnu.org/patch/index.php?9755

2019-04-15  JDG  <JonathanG@iQmetrix.com>

	* src/tools/apinames.c (main): Fix error message.

	Reported as

	  https://savannah.nongnu.org/patch/?9796

2019-04-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix segfault in direct mode (#56092).

	* src/base/ftoutln.c (FT_Outline_Render): Set missing clip_box for
	direct mode.
	* src/smooth/ftgrays.c (gray_raster_render): Use it.

2019-04-06  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcmap.c (tt_get_glyph_name): Pacify compiler (#56061).

	This is for Visual Studio 2019 on ARM.

2019-04-06  Werner Lemberg  <wl@gnu.org>

	For distribution, replace `.tar.bz2' with `.tar.xz' bundles.

	* builds/toplevel.mk (build): Do it.

	* README, docs/CHANGES, docs/release: Updated.

2019-04-06  Antony Lee  <anntzer.lee@gmail.com>

	Make `glyph_name' parameter to `FT_Get_Name_Index' a `const'.

	* include/freetype/freetype.h (FT_Get_Name_Index),
	include/freetype/internal/ftobjs.h (FT_Face_GetGlyphNameIndexFunc),
	include/freetype/internal/services/svgldict.h
	(FT_GlyphDict_NameIndexFunc), src/base/ftobjs.c (FT_Get_Name_Index),
	src/cff/cffdrivr.c (cff_get_name_index), src/sfnt/sfdriver.c
	(sfnt_get_name_index), src/type1/t1driver.c (t1_get_name_index),
	src/type42/t42drivr.c (t42_get_name_index): Add `const' to second
	argument.

2019-03-31  Armin Hasitzka  <prince.cherusker@gmail.com>

	[cff] Fix boundary checks.

	642bc7590c701c8cd35a9f60fa899cfa518b17ff introduced dynamically
	allocated memory when parsing CFF files with the "old" engine.  Bounds
	checks have never been updated, however, leading to pointless
	comparisons of pointers in some cases.  This commit presents a
	solution for bounds checks in the CFF module with an extended logic
	for the "old" engine while staying as concise as possible for the
	"new" one.

	* src/cff/cffparse.h: Introduce the struct `CFF_T2_StringRec' and
	the additional field `t2_strings' within `CFF_ParserRec'.

	* src/cff/cffparse.c (cff_parser_within_limits): Move all boundary
	checks into this new function and update the rest of `cffparse.c' to
	use it.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=12137

2019-03-20  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix Mongolian blue zone characters.

	* src/autofit/afblue.dat: Use U+200D (ZERO-WIDTH JOINER) characters
	to get medial forms for some Mongolian characters.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

2019-03-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Mongolian script.

	As a de-facto standard, layouts using this script are constructed
	horizontally line by line, then the lines are rotated clockwise for
	vertical display.

	* src/autofit/afblue.dat: Add blue zone data for Mongolian.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Mongolian standard characters.

	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Mongolian
	data.

2019-03-15  Werner Lemberg  <wl@gnu.org>

	* Version 2.10.0 released.
	==========================


	Tag sources with `VER-2-10-0'.

	* docs/VERSION.TXT: Add entry for version 2.10.0.
	* docs/CHANGES: Updated.

	* README, Jamfile (RefDoc), src/base/ftver.rc,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.9.1/2.10.0/, s/291/2100/.

	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 10.
	(FREETYPE_PATCH): Set to 0.

	* builds/unix/configure.raw (version_info): Set to 23:0:17.
	* CMakeLists.txt (VERSION_MINOR): Set to 10.
	(VERSION_PATCH): Set to 0.

	* builds/toplevel.mk (version, winversion): Since the minor version
	number has two digits now, never omit the patch number.  We would
	get ambiguous zip file names otherwise.
	(dist): Remove remnants of `docmaker' tool.
	(do-dist): Remove unused intermediate files.

	* src/cff/cffparse.c (destrict_c2s_item): Guard function with
	CFF_CONFIG_OPTION_OLD_ENGINE macro.

2019-03-07  Andrei Alexeyev  <0x416b617269@gmail.com>
            Werner Lemberg  <wl@gnu.org>

	Fix invalid function pointer casts.

	This change should allow Freetype to work on WASM/Emscripten without
	needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'.

	* src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.

	* src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,
	parse_expansion_factor, parse_font_name): Return `void', not
	`FT_Error'.

	* include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):
	Fix signature.

2019-03-05  Werner Lemberg  <wl@gnu.org>

	[base] Handle numeric overflow (#55827).

	* src/base/ftglyph.c (FT_Glyph_Get_CBox): Use `FT_PIX_CEIL_LONG'.

2019-03-05  Sebastian Rasmussen  <sebras@gmail.com>

	[psaux] Fix use of uninitialized memory (#55832).

	* src/psaux/psintrp.c (cf2_interpT2CharString): The call to
	`cf2_arrstack_setCount' may fail because the allocator ran out of
	memory.  When this happens the stack is still written to before the
	error condition is checked.  This means that FreeType writes outside
	of allocated memory.  This commit moves the error check prior to the
	stack assignment, hence the function now properly returns with an
	error condition.

2019-02-23  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets.

	The function only provided a framework without an actual
	implementation, which this commit removes.

2019-02-23  Werner Lemberg  <wl@gnu.org>

	* src/tools/update-copyright-year: Insert `(C)'.

2019-02-21  Armin Hasitzka  <prince.cherusker@gmail.com>

	[truetype] Mask numeric overflows.

	* src/truetype/ttinterp.c (Move_CVT, Move_CVT_Stretched, Ins_MIRP):
	Mask numeric overflows.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11681
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11734

2019-02-21  Armin Hasitzka  <prince.cherusker@gmail.com>

	[psaux] Mask numeric overflow.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Mask numeric
	overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13041

2019-02-16  Wink Saville  <wink@saville.com>

	* src/autofit/afwarp.h (af_warper_compute): Fix declaration.

2019-02-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[truetype] Apply MVAR hasc, hdsc and hlgp metrics to current FT_Face metrics.

	Instead of setting typo or win metrics as the new `FT_Face' metrics
	indiscriminately, apply only typo deltas to the currently active
	`FT_Face' metrics.  This prevents line height differences when the
	default outlines were used as the regular face and instances for
	everything else, for example.

	* src/truetype/ttgxvar.c (tt_apply_mvar): Implement.

2019-02-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[sfnt] Use typo metrics if OS/2 fsSelection USE_TYPO_METRICS bit is set.

	If the `OS/2' table exists and `fsSelection' bit 7
	(USE_TYPO_METRICS) is set, use the `sTypo*' set of values to compute
	the `FT_Face's ascender, descender, and height.  Otherwise, fall
	back to old behavior.

	* src/sfnt/sfobjs.c (sfnt_load_face): Implement.

2019-01-18  John Tytgat  <John.Tytgat@esko.com>

	[sfnt] Handle TT fonts having two PostScript font names (#55471).

	* src/sfnt/sfdriver.c (sfnt_get_name_id): Prefer English over any
	other language found for PostScript font names.

2019-01-08  Chris Liddell <chris.liddell@artifex.com>

	[psaux] Fix closepath (#55414).

	All of the Type 1 path building is done with code common to the
	revised CFF engine, with the exception of closepath, which was still
	calling ps_builder_close_contour(), thus previously cached segments
	were not always written to the path, and glyph corruption, or even
	invalid outlines were possible.

	* src/psauc/psinterp.c (cf2_interpT2CharString) <cf2_cmdCLOSEPATH>:
	Switch to calling `cf2_glyphpath_closeOpenPath'.

2018-12-29  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin2.c: Some fixes from `aflatin.c' (#55310).

2018-12-25  Werner Lemberg  <wl@gnu.org>

	* src/psaux/cffdecode.c (cff_operaor_seac): Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11915

2018-12-12  Werner Lemberg  <wl@gnu.org>

	[gxvalid] Fix compiler warnings.

	* src/gxvalid/gxvjust.c (gxv_just_check_max_gid),
	src/gxvalid/gxvmort.c (gxv_mort_coverage_validate): Use `FT_UNUSED'.

2018-12-11  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Hint_Glyph): Remove useless test.

	`control_len' only gets its value from `n_ins' (and vice versa),
	which is always read as `unsigned short' and thus can't be larger
	than 0xFFFF.

2018-12-04  Werner Lemberg  <wl@gnu.org>

	[bdf] Ignore data after `ENDFONT'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10798

	* src/bdf/bdflib.c (_bdf_parse_end): New function.
	(_bdf_parse_glyphs): Switch to `_bdf_parse_end' after `ENDFONT' has
	been encountered.

2018-12-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/windows/visualc/freetype.dsp: Dust off.

2018-11-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/windows/vc2010/freetype.vcxproj: Simplify.

2018-11-27  Chris Liddell  <chris.liddell@artifex.com>

	[type1,cff] Add FT_{Set,Get}_MM_WeightVector API calls.

	For multiple master fonts, common usage (in Postscript) is to modify
	the WeightVector of an existing font instance, this addition
	supports that use.

	* include/freetype/ftmm.h, src/base/ftmm.c (FT_Set_MM_WeightVector,
	FT_Get_MM_WeightVector): New API functions.

	* include/freetype/internalservices/svmm.h
	(FT_Set_MM_WeightVector_Func, FT_Get_MM_WeightVector_Func): New
	function types.
	(MultiMasters): Add `set_mm_weightvector' and `get_mm_weightvector'
	members.
	(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.

	* src/cffcffdrivr.c (cff_set_mm_weightvector,
	cff_get_mm_weightvector): New functions.
	(cff_service_multi_masters): Register them.

	* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
	This driver doesn't use the new interface.

	* src/type1/t1load.c (T1_Set_MM_WeightVector,
	T1_Get_MM_WeightVector): New functions.
	* src/type1/t1driver.c (t1_service_multi_masters): Register them.
	* src/type1/t1load.h: Updated.

2018-11-27  Ben Wagner  <bungeman@google.com>

	[cff] Fix compiler warning (#55105).

	* src/cff/cffparse.c (cff_parser_run): Guard label only used if
	CFF_CONFIG_OPTION_OLD_ENGINE is active.

2018-11-27  Ben Wagner  <bungeman@google.com>

	[truetype] Fix numeric overflow (#55103).

	* src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'.

2018-11-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[builds] Belated DLL support with vc2002-vc2008.

	The solution and project files should be automatically upgraded for
	the approriate Visual C++ version.

	* builds/windows/visualc/freetype.{sln,vcproj}: Major upgrades.
	* builds/windows/visualc/index.html: Document the change.
	* builds/windows/vc2005, builds/windows/vc2008: Removed as redundant.

2018-11-22  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/cff/cffparse.c: Please the compiler.

2018-11-22  Armin Hasitzka  <prince.cherusker@gmail.com>

	[cff] Fix memory overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9869
	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10869

	* src/cff/cffparse.c (destruct_t2s_item, cff_parser_run): Store
	evaluated T2 charstrings in separately allocated memory.

2018-11-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/windows/{visualc,vc2005,vc2008}/freetype.vcproj: Fix it.

2018-11-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Placeholder only for library-enabled LCD filtering.

	* src/smooth/ftsmooth.c (ft_smooth_init): Add disabled
	`FT_Library_SetLcdFilter' call.

2018-11-09  Young Xiao  <yangx92@hotmail.com>

	[psaux] Add safety guard (#54985).

	* src/psaux/psobjs.c (cff_builder_close_contour): Do it.

2018-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* builds/unix/configure.raw: Require `windows.h' for windres.

2018-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftstroke] Fix unpredictable failures (#54986).

	* src/base/ftstroke.c (ft_sroke_border_lineto): Fix lineto check.

2018-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[ftstroke] Fix unpredictable failures (#54976).

	* src/base/ftstroke.c (ft_sroke_border_close): Set the start tags.

2018-11-07  Ben Wagner  <bungeman@google.com>

	[truetype] Fix VF check from 2018-09-12 (#54973).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use correct
	offsets for estimates.

2018-11-06  Werner Lemberg  <wl@gnu.org>

	[pshinter] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11242

	* src/pshinter/pshrec.c (ps_dimension_add_t1stem): Implement it.

2018-11-06  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix timeout in old CFF engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11260

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_sqrt> [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix potential endless
	loop.

2018-11-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgxvar.c: Use enum definitions.

2018-11-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Adjust condition.

2018-11-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Tracing tweaks.

2018-11-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Revert due to specs: [truetype] Speed up variation IUP.

2018-11-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic.

	Reported and tested by Behdad.

2018-11-02  Shailesh Mistry  <shailesh.mistry@hotmail.co.uk>

	[autofit] Prevent SEGV.

	See

	  https://bugs.ghostscript.com/show_bug.cgi?id=697545

	for more details on how the bug was found.

	* src/autofit/afloader.c (af_loader_load_glyph): Propagate error
	code.

2018-10-31  Alexei Podtelezhnikov <apodtele@gmail.com>

	[truetype] Speed up variation IUP.

	* src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial
	snapping to the same position from true interpolation.

2018-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/type1/t1load.c (t1_set_mm_blend): Optimized.

2018-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized.

2018-10-29  Werner Lemberg  <wl@gnu.org>

	[base] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11080

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use `MUL_LONG'.

2018-10-29  Werner Lemberg  <wl@gnu.org>

	[cff] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10988

	* src/cff/cffparse.c (cff_parser_run)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Use `NEG_LONG'.

2018-10-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[sfnt] Make `head' timestamps unsigned.

	It's been more than 2^31 seconds since 1904.

	* include/freetype/tttables.h (TT_Header): Change field types.
	* src/sfnt/ttload.c (tt_face_load_generic_header): Updated.

2018-10-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Revert: Align FreeType with standard C memory management.

2018-10-27  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix numeric overflow.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11157

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_blend>
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Fix integer overflow.

2018-10-20  Werner Lemberg  <wl@gnu.org>

	Avoid endless loop while tracing (#54858).

	* src/type1/t1load.c (parse_buildchar): Guard tracing stuff with
	FT_DEBUG_LEVEL_TRACE.

2018-10-17  David Demelier  <markand@malikania.fr>

	* CMakeLists.txt: Specify `RUNTIME DESTINATION'.

	This is needed for DLL builds.

2018-10-07  Werner Lemberg  <wl@gnu.org>

	A missing Unicode cmap is not a fatal error.

	This is a follow-up to the previous commit.

	* src/cff/cffobjs.c (cff_face_init), src/sfnt/sfobjs.c
	(sfnt_load_face), src/type1/t1objs.c (T1_Face_Init),
	src/type42/t42objs.c (T42_Face_Init): Implement it.

2018-10-07  Werner Lemberg  <wl@gnu.org>

	Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794).

	* src/cff/cffcmap.c (cff_cmap_unicode_init), src/psaux/t1cmap.c
	(t1_cmap_unicode_init), src/sfnt/ttcmap.c (tt_cmap_unicode_init):
	Check `unicodes_init' field.

2018-10-03  Werner Lemberg  <wl@gnu.org>

	[ftgrays] Fix typo in stand-alone mode (#54771).

	* src/smooth/ftgrays.c (FT_THROW) [STANDALONE_ &&
	FT_DEBUG_LEVEL_TRACE]: Fix call to `FT_ERR_CAT'.

2018-10-02  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix segfault.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10768

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_callothersubr> [CFF_CONFIG_OPTION_OLD_ENGINE]: Check
	argument.

2018-10-02  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10740

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Use NEG_INT.

2018-10-02  Werner Lemberg  <wl@gnu.org>

	[pshinter] Handle numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10550

	* src/pshinter/pshglob.c (psh_blues_snap_stem): Mask numeric
	overflow.

2018-09-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Align FreeType with standard C memory management.

	* include/freetype/ftsystem.h: Include FT_TYPES_H.
	(*FT_Alloc_Func, *FT_Realloc_Func): Use size_t for the size arguments.
	* src/raster/ftmisc.h: Ditto.

	* builds/amiga/src/base/ftsystem.c, builds/unix/ftsystem.c,
	* builds/vms/ftsystem.c, src/base/ftsystem.c (ft_alloc, ft_realloc):
	Use size_t for the size arguments.

	* src/base/ftdbgmem.c (ft_mem_debug_alloc, ft_mem_debug_realloc): Use
	FT_Offset, aka size_t, for the size arguments.

2018-09-25  Werner Lemberg  <wl@gnu.org>

	Fix handling of `FT_Bool'.

	Before this commit we had code like

	  (FT_Bool)( globals->glyph_styles[gindex] & 0x8000)

	Since `FT_Bool' is defined to be an `unsigned char', the code
	evaluated to something like

	  (unsigned char)( 0x8532 & 0x8000)

	which in turn expanded to

	  (unsigned char)( 0x8000)

	and finally yielded 0x00 – i.e., false – not as expected.

	Problem reported and analyzed by Tony Smith <tony.smith@macro4.com>.

	* include/freetype/fttypes.h (FT_BOOL): Add a comparison against
	zero so that we always have a Boolean expression.

	*/*: Replace castings to `FT_Bool' with calls to `FT_BOOL' where
	possible.

2018-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Speed up charmap access.

	This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.

	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search
	with continuous prediction.

2018-09-22  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Another tweak.

	This one should be clearer. When the rounded monochrome bbox collapses
	we add a pixel that covers most if not all original cbox.

2018-09-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Further tweak.

2018-09-21  Ben Wagner  <bungeman@google.com>

	Improve auto-hinter handling of bitmap fonts (#54681).

	For bitmap fonts, `FT_Load_Glyph' should either return an error or
	not set the format to `FT_GLYPH_FORMAT_OUTLINE'.  However, in this
	case `FT_Load_Glyph' calls into the auto-hinter which calls back
	into `FT_Load_Glyph' with `FT_LOAD_NO_SCALE' in the flags, which
	marks the glyph as `FT_GLYPH_FORMAT_OUTLINE' with an empty path
	(even though it doesn't have any path).  It appears that the
	auto-hinter should not be called when the face doesn't have
	outlines.  The current test for using the auto-hinter in
	`FT_Load_Glyph' checks whether the driver supports scalable
	outlines, but not if the face supports scalable outlines.

	* src/base/ftobjs.c (FT_Load_Glyph): Directly check whether we have
	scalable outlines.

2018-09-21  Werner Lemberg  <wl@gnu.org>

	[raster] Fix disappearing vertical lines (#54589).

	* src/raster/ftraster.c (Vertical_Sweep_Span): Handle special case
	where both left and right outline exactly pass pixel centers.

2018-09-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Tiny rounding tweak.

	This adds pixels in case a contour goes through the center
	and they need to be turned on in the b/w rasterizer.

2018-09-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Replace charmap implementation.

	PCF comes with charmap lookup table, aka PCF encodings.  Using it
	directly makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times
	faster than the original BDF-like binary searches.

	* src/pcf/pcf.h (PCF_EncodingRec): Removed.
	(PCF_FaceRec): Remove `nencodings' and `encodings'.
	* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Replaced.
	* src/pcf/pcfread.c (pcf_get_encodings): Store data differently.

2018-09-20  Werner Lemberg  <wl@gnu.org>

	[base] Remove unused function `FT_GlyphLoader_CopyPoints'.

	* include/freetype/internal/ftgloadr.h, src/base/ftgloadr.c
	(FT_GlyphLoader_CopyPoints): Do it.

2018-09-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Prepare to replace charmap implementation.

	* src/pcf/pcf.h (PCF_FaceRec): Updated to include...
	(PCF_EncRec): ... this new structure to store charmap geometry.

	* src/pcf/pcfread.c (pcf_get_encodings): Store charmap geometry.

2018-09-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Remove unused fields.

	* src/pcf.h (PCF_FaceRec): Remove `charmap' and `charmap_handle'.
	* src/bdfdrvr.h (BDF_FaceRec): Ditto.
	* src/winfonts/winfnt.h (FNT_FaceRec): Ditto.

2018-09-17  Werner Lemberg  <wl@gnu.org>

	[pshinter] Handle numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10396

	* src/pshinter/pshglob.c: Include FT_INTERNAL_CALC_H.
	(psh_blues_snap_stem): Mask numeric overflow.

2018-09-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Some fixes for VF checks.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10317

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Properly exit memory
	frame if we have invalid glyph variation data offsets.
	(tt_face_vary_cvt): Protect against missing `tuplecoords' array.
	Fix typo.

2018-09-13  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Fix last commit.

2018-09-13  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Check `result'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10316

2018-09-12  John Tytgat  <John.Tytgat@esko.com>

	[sfnt] Better PS name handling (#54629).

	* src/sfnt/sfdriver (IS_WIN, IS_APPLE): Omit language ID checks.
	(get_win_string, get_apple_string): Return NULL when the PostScript
	font name characters is not according to specification.
	(get_win_string): Make trace output work if the high byte if
	non-zero.
	(sfnt_get_var_ps_name, sfnt_get_ps_name): Previously we preferred
	Win PS name (when there is also an Apple PS name); change this into
	a fallback to Apple PS name in case the Win PS name is invalid.

2018-09-12  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve VF check.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10255

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Use better limit check
	for `tupleCount'.

2018-09-12  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Check `glyphoffsets'.

2018-09-10  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/pshinter/pshrec.c (t2_hints_stems): Mask numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10215

2018-09-09  Ben Wagner  <bungeman@google.com>

	* builds/freetype.mk (refdoc-venv): Ensure python version (#54631).

2018-09-07  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix assertion failure.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10212

	* src/truetype/ttgload.c (load_truetype_glyph): Reintroduce
	`opened_frame' (removed in a change from 2018-08-26) to handle
	deallocation of the second frame.

2018-09-05  Werner Lemberg  <wl@gnu.org>

	Synchronize `ftdebug.c' files.

	* builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c,
	builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c'.

2018-09-05  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Add documentation guidelines file.

	* docs/DOCGUIDE: New file.

2018-09-04  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h: Synchronize with master `ftoption.h'.

2018-09-03  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docwriter] Don't break code snippets accross lines.

	Reported as

	  https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html

	* docs/reference/markdown/stylesheets/extra.css (.md-typeset code):
	Add rule `white-space'.

2018-09-03  Werner Lemberg  <wl@gnu.org>

	*/*: s/PSNames/psnames/.

	Only tracing messages are affected.

2018-09-03  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix heap buffer overflow in CPAL handling.

	* src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test.
	(tt_face_load_cpal): Updated.

2018-09-01  Werner Lemberg  <wl@gnu.org>

	Remove `FT_Outline_{New,Done}_Internal'.

	These public API functions(!) were always undocumented and have
	escaped all clean-up efforts until now.

	* include/freetype/ftoutln.h (FT_Outline_New_Internal,
	FT_Outline_Done_Internal): Removed.

	* src/base/ftoutln.h (FT_Outline_New_Internal,
	FT_Outline_Done_Internal): Merge into...
	(FT_Outline_New, FT_Outline_Done): ... these functions.

	* docs/README: Updated.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format.

2018-08-31  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Refine the macro logic surrounding `FT_Error_String'.

	* include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS,
	FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS' after
	checking it and introduce a new macro that takes proper care of
	multiple-inclusion protection.

2018-08-31  Werner Lemberg  <wl@gnu.org>

	* src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED' calls.

2018-08-31  Werner Lemberg  <wl@gnu.org>

	* src/base/ftdebug.c (FT_Throw): Reduce chattiness.

2018-08-31  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afhints.c (af_glyph_hints_reload): Add initialization.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Consolidate bitmap presetting and size assessment.

	* include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
	Change return type.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap
	size assessment.

	* src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the
	rendering of enourmous or far-fetched outlines.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono.

2018-08-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Introduce a macro to control `FT_Error_String'.

	* devel/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS),
	include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS):
	New macro.

2018-08-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	[errors] Introduce `FT_Error_String'.

	* include/freetype/fterrors.h (FT_Error_String),
	src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String'.

	* src/base/ftbase.c, src/base/Jamfile (_source),
	src/base/rules.mk (BASE_SRC): Add `fterrors.c' to the build logic.

	* src/base/ftdebug.c (FT_Throw): Use `FT_Error_String'.

2018-08-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Trace `before' and `after' edges of strong points.

	* src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays
	`before' and `after'.

	* src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary
	function.
	(af_glyph_hints_dump_points): Trace `before' and `after' edges.
	(af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set
	`before' and `after' information.

2018-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Overflow-resistant bitmap presetting.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Implement it.

2018-08-29  Armin Hasitzka  <prince.cherusker@gmail.com>

	Fix numeric overflows.

	* src/pshint/pshalgo.c (psh_hint_align, psh_hint_align_light,
	psh_hint_table_find_strong_points): Fix numeric overflows.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10083

2018-08-29  Werner Lemberg  <wl@gnu.org>

	[cff] Fix handling of `roll' op in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10080

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Use modulo for loop count, as
	documented in the specification.

2018-08-26  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttobjs.c (tt_size_read_bytecode): Trace CVT values.

2018-08-26  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	* configure: Copy assets required by docwriter.

	Copy directory `docs/reference/markdown' when FreeType is compiled in a
	different directory.

	Fixes `make refdoc' if builddir != srcdir.

	Reported as

	  https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00083.html

2018-08-26  Werner Lemberg  <wl@gnu.org>

	* src/pshint/pshalgo.c (psh_hint_overlap): Fix numeric overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10057

2018-08-26  Werner Lemberg  <wl@gnu.org>

	Minor tracing adjustments.

	* src/base/ftstream.c (FT_Stream_EnterFrame, FT_Stream_ExitFrame):
	Trace.

	* src/truetype/ttgload.c (TT_Access_Glyph_Frame): Remove tracing.

2018-08-26  Werner Lemberg  <wl@gnu.org>

	[truetype] Avoid nested frames.

	Triggered by

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10054

	* src/truetype/ttgload.c (load_truetype_glyph): Don't use variable
	`opened_frame' to trace whether a frame must be closed at the end of
	function: This fails because `TT_Vary_Apply_Glyph_Deltas' (which
	gets called for space glyphs) uses a frame by itself.  Instead,
	close the frame after loading the header, then use another frame for
	the remaining part of the glyph later on.

	Also avoid calling `tt_get_metrics' twice under some circumstances.

2018-08-26  Werner Lemberg  <wl@gnu.org>

	Various minor clean-ups.

	* src/base/ftapi.c: Remove.  Unused.
	* src/base/Jamfile (_sources): Updated.

	* src/base/ftstream.c (FT_Stream_ReleaseFrame): Remove redundant
	code.

2018-08-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	Convert documentation markup to Markdown.

	It is the result of a GSoC 2018 project; this separate ChangeLog
	commit covers the last four commits

	  ae5d1a4cec37557f31aec270332cfe886a62f9a0
	  53c69ce04faed3dcc68ca0f54cb8d703d8babf69
	  195728d5ba38f34fb2c2c20807c01656f2f59b66
	  c962db28ea59225f0105c03d907d4a9b71765687

	* docs/reference/markdown/images/favico.ico,
	docs/reference/markdown/javascripts/extra.js,
	docs/reference/markdown/stylesheets/extra.css: New files.

	* docs/reference/.gitignore, docs/reference/README: Updated.

	* src/tools/docmaker/*: Removed.  It has been replaced with
	`docwriter', a python package available at

	  https://pypi.org/project/docwriter/

	* Jamfile: Updated.
	* builds/ansi/ansi-def.mk, builds/beos/beos-def.mk,
	builds/dos/dos-def.mk, builds/os2/os2-def.mk (BIN),
	builds/unix/unixddef.mk, builds/windows/win32-def.mk: New variable.

	* builds/unix/configure.raw: Check for `python' and `pip'.
	If not present, warn that `make refdoc' will fail.
	* builds/unix/unix-def.in (PYTHON, PIP, BIN): New variables.

	* builds/freetype.mk (PYTHON, PIP, VENV_NAME, VENV_DIR, ENV_PYTHON,
	ENV_PIP): New variables.
	(refdoc): Updated.
	(refdoc-venv): New target.
	(.PHONY): Updated.

2018-08-23  Werner Lemberg  <wl@gnu.org>

	Add macros for handling over-/underflowing `FT_Int64' values.

	* include/freetype/internal/ftcalc.h (ADD_INT64, SUB_INT64,
	MUL_INT64, DIV_INT64) [FT_LONG64]: New macros.

	* src/base/ftcalc.c (ft_corner_orientation) [FT_LONG64]: Use
	`SUB_INT64' and `MUL_INT64'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10028

2018-08-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve legibility of `glyf' parsing.

	* src/truetype/ttgload.c (ON_CURVE_POINT, X_SHORT_VECTOR,
	Y_SHORT_VECTOR, REPEAT_FLAG, X_POSITIVE, SAME_X, Y_POSITIVE, SAME_Y,
	OVERLAP_SIMPLE): New macros.
	(TT_Load_Simple_Glyph): Use new macros to make code more readable.
	Remove useless adjustment of `outline->tags' elements.

2018-08-21  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Add missing safety check.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9981

2018-08-18  Werner Lemberg  <wl@gnu.org>

	[psaux] Avoid slow PS font parsing in case of error.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9955

	* src/psaux/psobjs.c (ps_parser_to_bytes): Set `parser->cursor' even
	in case of error to avoid potential re-scanning.

2018-08-18  Werner Lemberg  <wl@gnu.org>

	[cff] Fix heap buffer overflow in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9967

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_blend> [CFF_CONFIG_OPTION_OLD_ENGINE]: `num_designs' must be
	non-zero.

2018-08-16  Young Xiao  <yangx92@hotmail.com>

	* builds/mac/ftmac.c (parse_fond): Fix buffer overrun.

	Reported as bug #54515, duplicate of #43540.

2018-08-16  Werner Lemberg  <wl@gnu.org>

	* builds/*/ftsystem.c (FT_COMPONENT): Updated also.

2018-08-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Don't track duplicate encodings.

	There is no harm except some umbiguity in broken fonts with duplicate
	encodings.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Remove duplicate tracking.
	(_bdf_parse_t): Remove large `have' bitfield.

2018-08-15  Werner Lemberg  <wl@gnu.org>

	Don't use `trace_' prefix for FT_COMPONENT arguments.

	* include/freetype/internal/ftdebug.h (FT_TRACE_COMP,
	FT_TRACE_COMP_): New auxiliary macros to add `trace_' prefix.
	(FT_TRACE): Use `FT_TRACE_COMP'.

	*/* (FT_COMPONENT): Updated.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	Use formatting string in FT_TRACEX calls for non-simple arguments.

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_hstem, cff_op_hintmask, cff_op_hlineto, cff_op_vhcurveto>:
	Do it.

	* src/psaux/pshints.c (cf2_hintmap_build): Ditto.

	* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
	cf2_cmdVSTEM, cf2_cmdHLINETO, cf2_cmdRRCURVETO, cf2_cmdCALLSUBR,
	cf2_escHSTEM3, cf2_cmdHINTMASK, cf2_cmdHVCURVETO>: Ditto.

	* src/truetype/ttinterp.c (TT_RunIns): Ditto.

2018-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Remove unused fields.

	* src/bdf/bdf.h (bdf_font_t): Remove `nmod', `umod', and `modified',
	which were set but never used.
	* src/bdf/bdflib.c (_bdf_parse_{glyphs,properties}, bdf_load_font):
	Updated accordingly.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix another segv in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9872

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Disallow invalid T1 opcodes in
	dictionaries.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix missing error handling.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9865

	* src/psaux/cffparse.c (cff_parser_run)
	[CFF_CONFIG_OPTION_OLD_ENGINE]: Don't ignore return value of
	`parse_charstrings_old'.

2018-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Remove unused overflow storage.

	* src/bdf/bdf.h (bdf_glyphlist_t): Remove this type.
	(bdf_font_t): Remove `overflow' field.
	* src/bdf/bdflib.c (bdf_free_font): Remove `overflow' freeing.

2018-08-14  Werner Lemberg  <wl@gnu.org>

	[cff] Fix segv in old engine.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9864

	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
	<cff_op_random> [CFF_CONFIG_OPTION_OLD_ENGINE]: Use top dict's
	`random' field directly if parsing dictionaries.

2018-08-13  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[bdf] Use unsigned types.

	* src/bdf/bdf.h (bdf_glyph_t): Unsign `encoding'.
	(bdf_font_t): Unsign `default_char'.
	* src/bdf/bdfdrivr.h (BDF_encoding_el): Unsign `enc'.

	* src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_glyphs,
	_bdf_parse_start): Updated accordingly.
	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Ditto.

2018-08-13  Werner Lemberg  <wl@gnu.org>

	* src/type42/t42parse.c (t42_parse_sfnts): One more format check.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9832

2018-08-11  Werner Lemberg  <wl@gnu.org>

	* src/base/ftcalc.c (FT_Matrix_Check): Fix integer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9811

2018-08-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Follow specs.

2018-08-10  Ben Wagner  <bungeman@google.com>

	* src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435).

2018-08-10  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Improve tracing.

2018-08-10  Werner Lemberg  <wl@gnu.org>

	Fix clang warnings.

	* src/base/ftdebug.c (ft_trace_level_enabled,
	ft_trace_level_disabled): Add `static' keyword.

2018-08-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster, smooth] Reinstate bitmap size limits.

	This again moves outline and bitmap size checks one level up.

	* src/base/ftoutln.c (FT_Outline_Render): Explicitly reject enormous
	outlines.
	* src/raster/ftrend1.c (ft_raster1_render): Reject enormous bitmaps
	and, therefore, outlines that require them.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

	* src/raster/ftraster.c (ft_black_render): Remove outline size checks.
	* src/smooth/ftgrays.c (gray_raster_render): Ditto.
	[STANDALONE]: Remove `FT_Outline_Get_CBox' copy.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Revert massive unsigning.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	[smooth] Improve tracing.

	* src/smooth/ftgrays.c (gray_convert_glyph_inner): Only use tracing
	if called the first time.
	(gray_convert_glyph): Updated.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	Add internal functions `FT_Trace_Disable' and `FT_Trace_Enable'.

	It sometimes makes sense to suppress tracing informations, for
	example, if it outputs identical messages again and again.

	* include/freetype/internal/ftdebug.h: Make `ft_trace_levels' a
	pointer.
	(FT_Trace_Disable, FT_Trace_Enable): New declarations.

	* src/base/ftdebug.c (ft_trace_levels): Rename to...
	(ft_trace_levels_enabled): ... this.
	(ft_trace_levels_disabled): New array.
	(ft_trace_levels): New pointer.
	(FT_Trace_Disable, FT_Trace_Enable): Implement.
	(ft_debug_init): Updated.

2018-08-08  Werner Lemberg  <wl@gnu.org>

	Debugging improvements.

	* src/base/ftobjs.c (pixel_modes): Move this array to top level
	from ...
	(FT_Load_Glyph): ... here.
	(FT_Render_Glyph_Internal): Use `width' x `height' in trace message.
	Use `pixel_modes'.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Massive unsigning (part 2).

	Treat all size related properties as unsigned values.

	* src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name' and
	`value'.
	* src/pcf/pcfread.c (pcf_get_properties, pcf_load_font): Updated
	parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
	RESOLUTION_X and RESOLUTION_Y.

2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Massive unsigning (part 1).

	Unofficial specifications hesitate to use unsigned 32-bit integers.
	Negative values caused a lot of trouble in the past and it is safer
	and easier to treat some properties as unsigned.

	* src/pcf/pcf.h (PCF_AccelRec): Use unsigned values for `fontAscent',
	`fontDescent', and `maxOverlap'.
	* src/pcf/pcfread.c (pcf_load_font, pcf_get_accel): Updated.
	* src/pcf/pcfdrivr.c (PCF_Glyph_Load, PCF_Size_Select,
	PCF_Size_Request): Updated.

2018-08-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/pcf/pcfread.c (pcf_get_bitmaps): Unsign `offsets' and
	`bitmapSizes'.

2018-08-06  Werner Lemberg  <wl@gnu.org>

	* devel/ftoption.h: Synchronize with main `ftoption.h'.

2018-08-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[pcf] Use unsigned types.

	* src/pcf/pcf.h (PCF_Encoding): Use unsigned `enc'.
	* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Ditto.
	* src/pcf/pcfread.c (pcf_get_encodings): Use unsigned types.

2018-08-05  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (compute_glyph_metrics): Fix overflow.

	Reported as

	  https://bugs.chromium.org/p/chromium/issues/detail?id=777151

2018-08-04  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (opcode_name): Fix typos.

2018-08-04  Werner Lemberg  <wl@gnu.org>

	Fix clang warnings.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Fix type of
	`orientation'.

	* src/gxvalid/gxvcommn.c (gx_lookup_value_read): Fix signature.

	* src/pcf/pcfread.c (pcf_get_encodings): Fix type of some variables.
	Add cast.

	* src/type1/t1load.c (parse_weight_vector): Fix cast.

2018-07-31  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidtoken.h: Handle `XUID' keyword.

2018-07-31  Werner Lemberg  <wl@gnu.org>

	[cid] Trace PostScript dictionaries.

	* src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
	(cid_load_keyword, cid_parse_font_matrix, parse_fd_array,
	parse_expansion_factor, cid_parse_dict): Add tracing calls.
	(parse_font_name): New function to trace `/FontName' keywords in
	/FDArray dict.
	(cid_field_records): Register `parse_font_name'.

2018-07-30  Werner Lemberg  <wl@gnu.org>

	[cff] Fix typo.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9409

	* src/cff/cffdrivr.c (cff_get_cid_from_glyph_index): Fix boundary
	check.

2018-07-29  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Another thinko.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9608

2018-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix Harmony memory management.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9501

	* src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer
	after each rendering in case of failure.

2018-07-28  Werner Lemberg  <wl@gnu.org>

	[type1] Avoid segfaults with `FT_Get_PS_Font_Value'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9610

	* src/type1/t1driver.c (t1_ps_get_font_value): Protect against NULL.

2018-07-27  Werner Lemberg  <wl@gnu.org>

	[truetype] Make `TT_Set_MM_Blend' idempotent (#54388).

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Correctly set
	`face->doblend' if the current call to the function yields the same
	blend coordinates as the previous call.

2018-07-27  Werner Lemberg  <wl@gnu.org>

	[psaux, type1]: More tracing improvements.

	* src/psaux/psintrp.c (cf2_interpT2CharString): Trace skipped
	outline commands.

	* src/psaux/t1decode.c (t1_decoder_parse_charstring): Fix
	missing case.
	(t1_decoder_parse_metrics): Make tracing output more compact.

	* src/type1/t1gload.c (T1_Compute_Max_Advance): Be less verbose.
	(T1_Get_Advances): Add tracing.

2018-07-25  Werner Lemberg  <wl@gnu.org>

	[psaux, type1] Trace PostScript dictionaries and other things.

	The tracing of /Encoding, /Subrs, and /Charstrings is rudimentary
	right now.

	* src/psaux/psobjs.c (ps_parser_load_field,
	ps_parser_load_field_table): Add tracing calls.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make tracing
	output more compact.

	* src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances): Add
	tracing messages.

	* src/type1/t1load.c (parse_blend_axis_types,
	parse_blend_design_positions, parse_blend_design_map,
	parse_weight_vector, t1_load_keyword, t1_parse_font_matrix,
	parse_encoding, parse_subrs, parse_charstrings, T1_Open_Face): Add
	tracing calls.

	* src/type1/t1objs.c (T1_Face_Init): Add tracing call.

	* src/sfnt/sfobjs.c (sfnt_init_face): Make tracing message more
	verbose.

2018-07-25  Werner Lemberg  <wl@gnu.org>

	Fix minor ASAN run-time warnings.

	* src/base/ftutil.c (ft_mem_alloc, ft_mem_realloc): Only call
	`FT_MEM_ZERO' if we actually have a buffer.
	(ft_mem_dup): Only call `ft_memcpy' if we actually have a buffer.

2018-07-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[build] Fortify dllexport/dllimport attributes (#53969,#54330).

	We no longer use predefined _DLL, which can be defined for static
	builds too with /MD. We use DLL_EXPORT and DLL_IMPORT instead,
	following libtool convention.

	* CMakeLists.txt [WIN32], builds/windows/vc2010/freetype.vcxproj:
	Define DLL_EXPORT manually.

	* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h, builds/windows/vc2010/index.html,
	src/base/ftver.rc: /_DLL/d, s/FT2_DLLIMPORT/DLL_IMPORT/.

2018-07-24  Werner Lemberg  <wl@gnu.org>

	[type1] Check relationship between number of axes and designs.

	For Multiple Masters fonts we don't support intermediate designs;
	this implies that

	  number_of_designs == 2 ^^ number_of_axes

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9557

	* src/type1/t1load.c (T1_Open_Face): Ensure above constraint.
	(T1_Get_MM_Var): Remove now redundant test.

2018-07-24  Hin-Tak Leung  <htl10@users.sourceforge.net>

	[truetype] Match ttdebug's naming of instruction mnemonics.

	* src/truetype/ttinterp.c: The form used in ttdebug,
	"MDRP[G,B,W,?]", etc., is slightly more readable than
	"MDRP[00,01,02,03]".

2018-07-24  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Thinko.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9561

2018-07-22  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9527

2018-07-22  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs.

	This is an oversight of the module change 2018-07-21.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9524

2018-07-22  Werner Lemberg  <wl@gnu.org>

	[cid] Sanitize `BlueShift' and `BlueFuzz'.

	This code is taken from the type1 module.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9510

	* src/cid/cidload.c (parse_fd_array): Set some private dict default
	values.
	(cid_face_open): Do the sanitizing.
	Fix some tracing messages.

2018-07-21  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix handling of the undefined glyph.

	This change makes the driver use the `defaultChar' property of PCF
	files.

	* src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar' to
	unsigned.

	* src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar' as
	unsigned.
	Validate `defaultChar'.
	If `defaultChar' doesn't point to glyph index zero, swap glyphs with
	index zero and index `defaultChar' and adjust the encodings
	accordingly.

	* src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next,
	PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced
	the first character in the font to be the default character.

2018-07-20  Armin Hasitzka  <prince.cherusker@gmail.com>

	Move the legacy fuzz target to the `freetype-testing' repository.

	It can now be found at

	  https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy

	* src/tools/ftfuzzer: Remove this folder and its contents from the
	repository.

2018-07-20  Werner Lemberg  <wl@gnu.org>

	[cff] Avoid left-shift of negative numbers (#54322).

	* src/cff/cffgload.c (cff_slot_load): Use multiplication.

2018-07-17  Werner Lemberg  <wl@gnu.org>

	Allow FT_ENCODING_NONE for `FT_Select_Charmap'.

	This is a valid encoding tag for BDF, PCF, and Windows FNT, and
	there is no reason to disallow it for these formats.

	* src/base/ftobjs.c (FT_Select_Charmap): Implement it.

2018-07-17  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'.

2018-07-16  Armin Hasitzka  <prince.cherusker@gmail.com>

	* include/freetype/internal/ftcalc.h: Add macros for handling
	harmless over-/underflowing `FT_Int' values.

	* src/sfnt/sfdriver.c (fixed2float): Fix negation of
	`(int)(-2147483648)'.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423

2018-07-16  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9412

2018-07-12  Werner Lemberg  <wl@gnu.org>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox'.

	Taken from patch #9667, written by Steve Langasek
	<vorlon@debian.org>.

	This fixes a build failure (most probably a bug in gcc) on ppc64el
	when building with -O3.

2018-07-05  Werner Lemberg  <wl@gnu.org>

	Fix typo (#54238).

	* src/base/ftcolor.c (FT_Palette_Set_Foreground_Color)
	[!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value.

2018-07-05  Werner Lemberg  <wl@gnu.org>

	Adjust table size comparisons (#54242).

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it.

2018-07-05  Werner Lemberg  <wl@gnu.org>

	Fix more 32bit issues (#54208).

	* src/cff/cffload.c (cff_blend_build_vector): Convert assertion into
	run-time error.

	* src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against
	numeric overflow.

2018-07-04  Werner Lemberg  <wl@gnu.org>

	Fix 32bit build warnings (#54239).

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed
	vs. unsigned comparisons.

	* srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto.

2018-07-02  Jeff Carey  <Jeff.Carey@monotype.com>

	* src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging.

2018-07-02  Werner Lemberg  <wl@gnu.org>

	s/palette_types/palette_flags/.

	Suggested by Behdad.

2018-07-02  Werner Lemberg  <wl@gnu.org>

	Make `FT_Get_Color_Glyph_Layer' return FT_Bool.

	* include/freetype/freetype.h, src/base/ftobjs.c
	(FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated.

	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func),
	src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer):
	Updated.

2018-07-01  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function.

	Reported by Behdad.

2018-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/fttrigon.c (FT_Tan): Improve accuracy.
	(FT_Vector_Rotate): Simplify.

2018-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftobjs.c (FT_Set_Charmap): Robustify.

2018-06-25  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix memory leak.

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers.
	Fix typo in `goto' destination.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9071

2018-06-25  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9070

2018-06-24  Werner Lemberg  <wl@gnu.org>

	[truetype] Increase precision while applying VF deltas.

	It turned out that we incorrectly round CVT and glyph point deltas
	before accumulation, leading to severe positioning errors if there
	are many delta values to sum up.

	Problem reported by Akiem Helmling <akiem@underware.nl> and analyzed
	by Behdad.

	* src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in
	16.16 format.
	(tt_face_var_cvt): Collect deltas in `cvt_deltas', which is a 16.16
	format array, and add the accumulated values to the CVT at the end
	of the function.
	(TT_Vary_Apply_Glyph_Deltas): Store data in `points_org' and
	`points_out' in 16.16 format.
	Collect deltas in `point_deltas_x' and `point_deltas_y', which are
	16.16 format arrays, and add the accumulated values to the glyph
	coordinates at the end of the function.

2018-06-24  Werner Lemberg  <wl@gnu.org>

	New base function `FT_Matrix_Check' (#54019).

	* src/base/ftcalc.c (FT_Matrix_Check): New base function to properly
	reject degenerate font matrices.

	* include/freetype/internal/ftcalc.h: Updated.

	* src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c
	(cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix),
	src/type42/t42parse.c (t42_parse_font_matrix): Use
	`FT_Matrix_Check'.

2018-06-23  Werner Lemberg  <wl@gnu.org>

	Fix typo.

	Reported by Behdad.

	* src/base/ftcolor.c (FT_Palette_Data_Get)
	[!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/.

2018-06-21  Werner Lemberg  <wl@gnu.org>

	s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.

	* include/freetype/ftcolor.h, include/freetype/internal/sfnt.h,
	src/sfnt/ttcolr.c: Do it.

2018-06-19  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix CPAL heap buffer overflow.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8968

	* src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1
	offsets.

2018-06-19  Werner Lemberg  <wl@gnu.org>

	Doh.  Don't use CPAL or COLR data if tables are missing.

	Reported by Alexei.

	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if
	`colr' is NULL.

	* src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if
	`cpal' is NULL.

2018-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Introduce `FT_New_Glyph'.

	This function facilitates access to full capabilities of FreeType
	rendering engine for custom glyphs. This can be quite useful for
	consistent rendering of mathematical and chemical formulas, e.g.

	  https://bugs.chromium.org/p/chromium/issues/detail?id=757078

	* include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New
	function.

2018-06-17  Armin Hasitzka  <prince.cherusker@gmail.com>

	[bdf] Fix underflow of an unsigned value.

	bdflib.c:1562 could be reached with `font->glyphs_used == 0'.  That
	caused an underflow of the unsigned value which results in undefined
	behaviour.

	* src/bdf/bdflib.c (_bdf_parse_glyphs): Bail out earlier than before
	if the `ENCODING' keyword cannot be found.

2018-06-17  Werner Lemberg  <wl@gnu.org>

	[base] Add tracing for `FT_Bitmap_Blend'.

	* include/freetype/internal/fttrace.h (trace_bitmap): New
	enumeration.

	* src/base/ftbitmap.c (FT_COMPONENT): Define.
	(FT_Bitmap_Blend): Add `FT_TRACE5' calls.

2018-06-17  Werner Lemberg  <wl@gnu.org>

	s/trace_bitmap/trace_checksum/.

	* include/freetype/internal/fttrace.h: s/bitmap/checksum/.

	* src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/.
	Adjust code.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix color glyph layer loading.

	* src/sfnt/ttcolr.c (Colr): Add `table_size' field.
	(tt_face_load_colr): Set it.
	(tt_face_get_colr_layer): Check pointer limit for layer entries.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix color palette loading.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8933

	* src/sfnt/ttcpal.c (Cpal): Add `table_size' field.
	(tt_face_load_cpal): Set it.
	(tt_face_palette_set): Check pointer limit for color entries.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow.

2018-06-16  Werner Lemberg  <wl@gnu.org>

	Add `FT_Bitmap_Blend' API.

	Still missing: Support for negative bitmap pitch and subpixel offset
	of source bitmap.

	* include/freetype/ftbitmap.h, src/base/ftbitmap.c
	(FT_Bitmap_Blend): New function.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	Replace `FT_Get_GlyphLayers' with `FT_Get_Color_Glyph_Layer'.

	This avoids any additional allocation of COLR related structures in
	a glyph slot.

	* include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec,
	FT_Get_GlyphLayers): Removed.

	* include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed.
	(FT_Slot_InternalRec): Remove `color_layers'.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func):
	Removed.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove
	`load_colr_layer'.

	* src/base/ftobjs.c (ft_glyph_slot_done): Updated.
	(FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer'.
	(FT_Get_GlyphLayers): Removed.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Removed.
	* src/sfnt/ttcolr.h: Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Updated.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	Provide iterative API to access `COLR' data.

	This solution doesn't store any data in an `FT_GlyphSlot' object.

	* include/freetype/freetype.h (FT_LayerIterator): New structure.
	(FT_Get_Color_Glyph_Layer): New function.

	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New
	function type.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it.

	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function.
	* src/sfnt/ttcolr.h: Updated.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	Add glyph index and glyph load flags to glyph slot.

	* include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused
	`reserved' field to `glyph_index'.

	* include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add
	`load_flags' field.

	* src/base/ftobjs.c (FT_Load_Glyph): Set new fields.

2018-06-14  Werner Lemberg  <wl@gnu.org>

	[sfnt] Move `CPAL' stuff into separate files.

	* src/sfnt/sfdriver.c: Include `ttcpal.h'.
	* src/sfnt/sfnt.c: Include `ttcpal.c'.

	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ...
	* src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files.

	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC):
	Updated.

	* include/freetype/internal/fttrace.h: Add support for `colr' and
	`cpal'.
	Sort entries.

2018-06-13  Werner Lemberg  <wl@gnu.org>

	[sfnt] Separate `CPAL' and `COLR' table handling.

	Later on we want to support the `SVG' table also, which needs `CPAL'
	(but not `COLR').

	* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal'
	and `free_cpal' fields.
	(FT_DEFINE_SFNT_INTERFACE): Updated.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Replace
	`colr_and_cpal' fields with `cpal' and `colr'.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.

	* src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field.
	(ColrCpal): Removed.
	(tt_face_load_colr): Split off CPAL handling into...
	(tt_face_load_cpal): ... this new function.
	(tt_face_free_colr): Split off CPAL handling into...
	(tt_face_free_cpal): ... this new function.
	(tt_face_load_colr_layers, tt_face_palette_set): Updated.

	* src/sfnt/ttcolr.h: Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Updated.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix `sizeof' thinko.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't
	use `sizeof' for computing array limit.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (4/4).

	* src/sfnt/ttcolr.c (tt_face_find_color): Removed.
	(tt_face_colr_blend_layer): Use `face->palette' instead of calling
	`tt_face_find_color'.
	Use and set text foreground color.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (3/4).

	* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
	(FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
	functions.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (2/4).

	* src/sfnt/ttcolr.c (tt_face_palette_set): New function.
	(tt_face_load_colr): Allocate `face->palette' and call
	`tt_face_palette_set'.
	Adjust return error code in case of error.

	* src/sfnt/ttcolr.h: Updated.

	* include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New
	function type.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

	* src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c
	(sfnt_done_face): Updated.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	Finish CPAL/COLR support (1/4).

	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
	`palette_index', `palette', `have_foreground_color' and
	`foreground_color'.

2018-06-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Minor.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers):
	s/palette_index/palette_entry_index/ for consistency.
	Adjust return error code in case of error.

2018-06-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Clean up.

	* src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):
	Clean up after 5-level gray removal (8dc8635874).
	(Vertical_Sweep_Span): Be brief.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix compiler warnings.

	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,
	tt_face_colr_blend_layer): Add `NULL' initializers.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.

	* include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,
	src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.

2018-06-10  Nikolaus Waxweiler  <madigens@gmail.com>

	CMakeLists: also accept IOS_PLATFORM=SIMULATOR64

	This might be needed to build FreeType for the iOS simulator. See
	https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed
	by Steve Robinson.

	* CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64

2018-06-10  Werner Lemberg  <wl@gnu.org>

	Implement `FT_Palette_Get'.

	* src/base/ftcolor.c: New file.

	* src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),
	src/base/ftbase.c: Add `ftcolor.c'.

2018-06-10  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks.

2018-06-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster] Deal with pitch sign earlier.

	* src/raster/ftraster.c (black_TWorker): Remove unused `traceG',
	s/bTarget/bOrigin/.
	(Render_Glyph): Set `ras.bOrigin' at the bottom-left corner.
	(Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):
	Updated accordingly.

2018-06-09  Werner Lemberg  <wl@gnu.org>

	[sfnt] Read `CPAL' version 1 tables.

	* include/freetype/internal.tttypes.h: Include FT_COLOR_H.
	(TT_FaceRec): Add `palette' field.

	* src/sfnt/ttcolr.c: Include FT_COLOR_H.
	(Cpal): Remove all data covered by the new `palette' field in
	`TT_FaceRec'.
	(tt_face_load_colr): Updated.
	Read `CPAL' version 1 data.
	(tt_face_load_colr_layers, tt_face_find_color): Updated.

	* src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.

2018-06-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] API for Harmony LCD rendering.

	This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
	LCD subpixel geometry including non-striped patterns.

	* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.
	* include/freetype/ftlcdfil.h: Document it.
	* include/freetype/freetype.h: Minor.
	* include/freetype/ftchapters.h: Minor.

2018-06-06  Werner Lemberg  <wl@gnu.org>

	ftcolor.h: Redesign API.

	While going to implement it I noticed that I need access to most of
	the `CPAL' elements; I thus plan to add a `cpal' field to
	`TT_FaceRec', which makes most of the previously suggested API
	functions obsolete because the fields will be directly accessible.

2018-06-06  Parth Wazurkar  <parthwazurkar@gmail.com>

	[bdf, pcf] Remove deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

	* src/pcf/pcfread.c (pcf_load_font): Remove deprecated
	FT_FACE_FLAG_FAST_GLYPHS flag.

2018-06-06  Werner Lemberg  <wl@gnu.org>

	[smooth, raster] Limit bitmap size (#54019).

	* src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add
	function.
	[!STANDALONE]: Include FT_OUTLINE_H.
	(ft_black_render): Compute CBox and reject glyphs larger than
	0xFFFF x 0xFFFF.

	* src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger
	than 0xFFFF x 0xFFFF.

2018-06-03  Armin Hasitzka  <prince.cherusker@gmail.com>

	* src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables.

2018-06-03  Werner Lemberg  <wl@gnu.org>

	* src/tools/glnames.py (main): Emit header in `light' comment style.

2018-06-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Attempt to mitigate bug #54019.

	The robust rendering of estra large glyphs came with unbearable cost.
	The old way of bisecting should fail but fail faster.

	* src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting
	in y-direction.

2018-06-02  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8706

2018-06-02  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033).

2018-05-31  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field.

	This is no longer used.

2018-05-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Get colors from `CPAL' table in right order (#54015).

	* src/sfnt/ttcolr.c (tt_face_find_color): Fix it.

2018-05-30  Werner Lemberg  <wl@gnu.org>

	ftcolor.h: Improve API design, fix typos (#54011, #54014).

	* include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...
	(FT_Palette_Get_Name_IDs): ... this function.
	(FT_Palette_Get_Entry_Names): Replace with...
	(FT_Palette_Get_Entry_Name_IDs): ... this function
	s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.

	* src/autofit/afloader.c (af_loader_load_glyph): Move the
	initialisationand declaration of variables into the if-block.

2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>

	Fix pointer underflow.

	The declaration of `edge2' can be reached with `edge1 == NULL' and
	`axis->edges == 0' which results in undefined behaviour.

	* src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2'
	after checking `axis->num_edges > 1'.  `edge1 != NULL' can be assumed.

2018-05-30  Werner Lemberg  <wl@gnu.org>

	Various minor color fixes.

	* include/freetype/config/ftheader.h (FT_COLOR_H): New macro.

	* include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change
	type of `load_flags' to `FT_Int32'.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change
	type of `idx' to `FT_UInt'.
	(TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of
	`load_flags' to `FT_Int32'.

	* src/sfnt/ttcolr.c (find_base_glyph_record,
	tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'.
	(tt_face_find_color, tt_face_colr_blend_layer): Change type of
	`color_index' to `FT_UInt'.
	Fix signedness and type issues.

	* src/sfnt/ttcolr.h: Updated.

2018-05-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>

	[docmaker] Fix missing `Defined in (...)' under Windows/Cygwin.

	This platform uses backslashes for paths, which docmaker didn't
	understand correctly.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use
	`os.path.normpath' to normalize the path for the platform being
	used.

2018-05-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Formalize Harmony LCD rendering.

	This generalizes magic outline shifts that make Harmony LCD
	rendering work in terms of precise two-dimensional RGB subpixel
	positions. These coordinates are now set in time of the `smooth'
	module initialization and later used to shift a glyph outline for
	rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
	coordinates. The letter, however, rotates them before using.
	The LCD bitmap padding is also calculated using these coordinates.

	* include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field
	`lcd_geometry'.
	* src/base/ftlcdfil.c (ft_lcd_padding): Reworked.
	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.

	* src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]
	(ft_smooth_init): Initialize `lcd_geometry'.
	(ft_smooth_render_generic): Formalize outline shifts.

2018-05-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Reject elements of composites with invalid glyph indices.

	Reported as

	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8413

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it.

2018-05-22  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points.

2018-05-20  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftcolor.h: New file.

	This is an interface to the `CPAL' OpenType table.  No
	implementation yet.

2018-05-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'.

	Actually `_BitScanReverse' is available since VS2005.

2018-05-18  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value.

	Older VC versions don't provide `_BitScanReverse'.  We test for VC
	2013.

	Reported by John Emmas <john@creativepost.co.uk>.

2018-05-17  Werner Lemberg  <wl@gnu.org>

	s/inline/__inline/ for MSVC.

	Reported by John Emmas <john@creativepost.co.uk>.

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.

2018-05-16  Werner Lemberg  <wl@gnu.org>

	Add function `FT_Get_GlyphLayers' to access `COLR' table data.

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this
	structure to...
	* include/freetype/freetype.h (FT_Glyph_LayerRec): ... this
	header file.
	(FT_Glyph_Layer): New typedef.
	Update code to use it where appropriate.

	* src/base/ftobjs.c (FT_Get_GlyphLayers): New function.

2018-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix mono bitmap presetting (#53896).

	It is rather fundamental to set monochrome bitmap based on rounded
	CBox because the b/w rasterizer turns on pixels when their centers are
	inside the glyph outline. The dropout control is unpredictable and can
	distort narrow glyphs if the bitmap is too wide.

	Reported by Chris Liddell.

	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries
	are too close, adjust them before rounding.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix compiler warning (#53915).

	* src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix memory leak in handling `COLR' data.

	* src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array
	before reassigning allocated memory.
	Only allocate `color_layers' if we don't have one already.

2018-05-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] If `COLR' is present, don't assume that all glyphs use it.

	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if
	current glyph is not a `COLR' base glyph.

	* src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate
	`color_layers' if there are no color layers.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'.

2018-05-14  Werner Lemberg  <wl@gnu.org>

	Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set.

	* src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.

2018-05-13  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Load_Glyph): Improve tracing.

2018-05-13  Shao Yu Zhang  <shaozhang@fb.com>
	    Werner Lemberg  <wl@gnu.org>

	[sfnt] Preliminary support of colored layer outlines (#44689).

	This commit enables OpenType's COLR/CPAL table handling; a typical
	application are color emojis that can be scaled to any size.

	If the color palette does not exist or is invalid, the rendering
	step rasterizes the outline instead.  The current implementation
	assumes that the foreground is black.

	Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.

	There are still some issues with metrics; additionally, an API to
	fetch color layers is missing.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_COLOR_LAYERS): New macro.

	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,
	FT_Colr_InternalRec): New structures.
	(FT_Slot_InternalRec): Add `color_layers' field.

	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,
	TT_Blend_Colr_Func): New function types.
	(SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer',
	and `colr_blend' fields.

	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
	`colr_and_cpal' field.

	* include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New
	macros.

	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.

	* src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):
	Handle glyph color layers.

	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add
	`ttcolr.c'.

	* src/sfnt/sfdriver.c: Include `ttcolr.h'.
	(PUT_COLOR_LAYERS): New macro.
	Update call to `FT_DEFINE_SFNT_INTERFACE'.

	* src/sfnt/sfnt.c: Include `ttcolr.c'.

	* src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables.
	(sfnt_done_face): Updated.

	* src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.

2018-05-12  Arkady Shapkin  <arkady.shapkin@gmail.com>

	Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).

	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
	it.

2018-05-10  Alan Coopersmith  <alan.coopersmith@oracle.com>

	Fix DLL compilation on Solaris.

	AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'.  The
	Solaris Studio 12.1 through 12.5 compilers see the
	`-fvisibility=hidden' flag, but ignore it with a warning of:

	  cc: Warning: Option -fvisibility=hidden passed to ld,
	               if ld is invoked, ignored otherwise

	AC_LINK_IFELSE does the compile and then tries to link the result,
	at which point the Solaris linker will issue an error:

	  ld: fatal: option '-fvisibility=hidden' is incompatible with
	      building a dynamic executable

	If we don't use AC_LINK_IFELSE to catch the error, then configure
	will fail further tests which attempt to link, such as those testing
	dependencies like `libbz2'.

	Also, don't try adding `-fvisibility' if we have already added
	`-xldscope', just use one of them, since Sun Studio 12 and earlier
	compilers only issue a warning, and don't try passing through to the
	linker to generate an error, so AC_LINK_IFELSE doesn't catch them.

	Tested on Solaris 11.4 beta with compiler versions:

	  Sun Studio 8 (Sun C 5.5)
	  Sun Studio 10 (Sun C 5.7)
	  Sun Studio 11 (Sun C 5.8)
	  Sun Studio 12 (Sun C 5.9)
	  Sun Studio 12.1 (Sun C 5.10)
	  Oracle Solaris Studio 12.2 (Sun C 5.11)
	  Oracle Solaris Studio 12.3 (Sun C 5.12)
	  Oracle Solaris Studio 12.4 (Sun C 5.13)
	  Oracle Developer Studio 12.5 (Sun C 5.14)
	  Oracle Developer Studio 12.6 (Sun C 5.15)
	  gcc 5.5.0
	  gcc 7.3.0

	and verified the libfreetype.so.6 generated by each of those
	compilers exported the same set of symbols.

	* builds/unix/configure.raw: Implement it.

2018-05-08  Werner Lemberg  <wl@gnu.org>

	[autofit] Avoid potential SEGV if running out of memory.

	Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>.

	* src/autofit/afshaper.c (af_shaper_buf_create,
	af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't
	allocate and free a four-byte buffer.  Instead, make those functions
	no-ops; the calling functions will provide a pointer to a buffer
	instead.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),
	src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues, af_latin_metrics_check_digits)
	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for
	`shaper_buf'.

2018-05-07  Nikolaus Waxweiler  <madigens@gmail.com>

	[cmake] Allow using project as subfolder in other project.

	* CMakeLists.txt: Test for CMake build directory being different
	from source directory.  Provide other parts of the build system
	access the full include directory.

2018-05-07  Werner Lemberg  <wl@gnu.org>

	[build] Suppress configure's `nothing to be done' message.

	This is due to calling the configure script via `make' (within the
	top-level `configure' wrapper script).  The same can happen for all
	other secondary make targets that are used to only modify the
	primary one, e.g., `make setup devel'.

	* builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),
	builds/os2/detect (visualage, watcom, borlandc, devel),
	builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk
	(visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,
	devel-gcc): Use no-op recipe.

2018-05-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Support symbol visibility features of Sun / Oracle C compilers.

	Reported by Kiyoshi Kanazawa:
	https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html
	Thanks to the suggestions by Alexei and Alan Coopersmith.

	* builds/unix/configure.raw: Check if "-xldscope=hidden" is
	accepted, and if so, it is added to CFLAGS.  This is the option
	making Sun / Oracle C compilers hide the symbols from global
	scope.
	* include/freetype/config/ftconfig.h: Use "__global" prefix
	for FT_EXPORT() macro, if SunPro C is newer than Sun ONE
	Studio 8 (2003).
	* builds/unix/ftconfig.in: Ditto.
	* builds/vms/ftconfig.h: Ditto.

2018-05-02  Nikolaus Waxweiler  <madigens@gmail.com>

	Unbreak CMake Windows installation

	* CMakeLists.txt: Generate ftconfig.h on non-UNIX.

2018-05-02  Werner Lemberg  <wl@gnu.org>

	Remove FT_CONFIG_OPTION_PIC and related code.

	*/* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this
	preprocessor symbol.

	*/*: Replace `XXX_GET' macros (which could be either a function in
	PIC mode or an array in non-PIC mode) with `xxx' arrays.

	* include/freetype/internal/ftpic.h, src/autofit/afpic.c,
	src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,
	src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,
	src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,
	src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,
	src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,
	src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
	Removed.


----------------------------------------------------------------------------

Copyright (C) 2018-2021 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This file is part of the FreeType project, and may only be used, modified,
and distributed under the terms of the FreeType project license,
LICENSE.TXT.  By continuing to use, modify, or distribute this file you
indicate that you have read the license and understand and accept it
fully.


Local Variables:
version-control: never
coding: utf-8
End:
