6563 lines
		
	
	
		
			215 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			6563 lines
		
	
	
		
			215 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 2023-08-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* Version 2.13.2 released. | |||
|  | 	========================== | |||
|  | 
 | |||
|  | 	Tag sources with `VER-2-13-2'. | |||
|  | 
 | |||
|  | 	* docs/VERSION.TXT: Add entry for version 2.13.2. | |||
|  | 	* docs/CHANGES: Updated. | |||
|  | 	* docs/release, docs/README, builds/macs/README: 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.13.1/2.13.2/, s/2131/2132/. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (version_info): Set to 26:1:20. | |||
|  | 	* CMakeLists.txt (VERSION_PATCH): Set to 2. | |||
|  | 
 | |||
|  | 2023-08-25  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftcalc.c (FT_MulAddFix): Simplify 32-bit rounding. | |||
|  | 
 | |||
|  | 2023-08-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix clang warnings. | |||
|  | 
 | |||
|  | 	* src/cffload.c (cff_blend_doBlend): Fix type of `sum`. | |||
|  | 	* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Fix type of | |||
|  | 	  `word_delta_count`. | |||
|  | 
 | |||
|  | 2023-08-24  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* subprojects/*.wrap: Updated. | |||
|  | 
 | |||
|  | 2023-08-24  Hugh McMaster  <hugh.mcmaster@outlook.com> | |||
|  | 
 | |||
|  | 	builds/unix/configure.raw: Use variable to specify minimum Python version. | |||
|  | 
 | |||
|  | 2023-08-24  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/toplevel.mk: Simplify version extraction. | |||
|  | 
 | |||
|  | 2023-08-22  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Improve the matrix degeneracy check. | |||
|  | 
 | |||
|  | 	Also fixes #1251. | |||
|  | 
 | |||
|  | 	* src/base/ftcalc.c (FT_Matrix_Check): To avoid overflow, scale by shifting. | |||
|  | 	* include/freetype/internal/ftcalc.h (FT_Matrix_Check): Update description. | |||
|  | 
 | |||
|  | 2023-08-22  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	builds/toplevel.mk: Don't use `\#` in functions. | |||
|  | 
 | |||
|  | 	The behaviour changed in GNU make 4.3, where `#` (without the backslash) | |||
|  | 	would be necessary.  Using a variable instead the code works with both older | |||
|  | 	and newer GNU make versions. | |||
|  | 
 | |||
|  | 	Fixes #1252. | |||
|  | 
 | |||
|  | 2023-08-19  Hugh McMaster  <hugh.mcmaster@outlook.com> | |||
|  | 
 | |||
|  | 	builds/freetype.mk: Invoke `mkdocs` as a Python module | |||
|  | 
 | |||
|  | 	FreeType's `refdoc` target currently allows users to override the | |||
|  | 	default Python path, which is useful for testing and development. | |||
|  | 
 | |||
|  | 	In contrast, `mkdocs` is invoked via the default Python path. | |||
|  | 
 | |||
|  | 	Invoking `mkdocs` via Python's module syntax allows for greater | |||
|  | 	flexibility, although there is no change for the default use case. | |||
|  | 
 | |||
|  | 2023-08-17  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Avoid UB with memcpy | |||
|  | 
 | |||
|  | 	`FT_NEW_ARRAY(p, 0)` sets `p` to `NULL`. `FT_Stream_ReadAt` with a | |||
|  | 	memory based stream uses `FT_MEM_COPY` which is `memcpy` which specifies | |||
|  | 	that it is undefined behavior for either the `src` or `dst` to be | |||
|  | 	`NULL`. Instead of forcing all callers work around calling | |||
|  | 	`FT_Stream_Read` when `buffer == NULL && count == 0` do the check in | |||
|  | 	`FT_StreamRead`. This allows any call with `count == 0` to succesfully | |||
|  | 	read zero bytes without UB. | |||
|  | 
 | |||
|  | 	* src/base/ftstream.c (FT_Stream_ReadAt): skip `FT_MEM_COPY` when | |||
|  | 	`count == 0`. (FT_Stream_TryRead): ditto | |||
|  | 
 | |||
|  | 	Fixes: #1250 | |||
|  | 
 | |||
|  | 2023-08-12  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix warnings in tracing messages for 32bit compilation. | |||
|  | 
 | |||
|  | 	Since we now require C99, use `%td` for `ptrdiff_t` and `%zu` for `size_t`. | |||
|  | 
 | |||
|  | 2023-08-04  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	Avoid overflow in COLR bounds checks. | |||
|  | 
 | |||
|  | 	The values read into `base_glyphs_offset_v1` and `layer_offset_v1` may | |||
|  | 	be in the range 0xFFFFFFFD-0xFFFFFFFF. On systems where `unsigned long` | |||
|  | 	is 32 bits adding 4 to such values will wrap and pass bounds checks but | |||
|  | 	accessing values at such offsets will be out of bounds. | |||
|  | 
 | |||
|  | 	On the other hand `table_size` has already been tested to be at least | |||
|  | 	`COLRV1_HEADER_SIZE` (34) so it is safe to subtract 4 from it. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_load_colr): subtract 4 from `table_size` | |||
|  | 	instead of adding 4 to font data offsets in bounds checks | |||
|  | 
 | |||
|  | 	Fixes: https://crbug.com/1469348 | |||
|  | 
 | |||
|  | 2023-08-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (open_face_from_buffer): Silence `maybe-uninitialized`. | |||
|  | 
 | |||
|  | 	We never call this function without a `driver_name` (#1245). | |||
|  | 
 | |||
|  | 2023-07-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Reduce v40 footprint. | |||
|  | 
 | |||
|  | 	*  src/truetype/ttgload.c (TT_HInt_Glyph, tt_loader_set_pp, | |||
|  | 	tt_loader_init): Refactor code. | |||
|  | 
 | |||
|  | 2023-07-27  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Remove Infinality for good (remaining bits). | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.h: Remove remaining fields. | |||
|  | 	* src/truetype/ttinterp.c: Do not initialize them. | |||
|  | 	* include/freetype/internal/tttypes.h: Remove descriptions. | |||
|  | 
 | |||
|  | 2023-07-27  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Remove Infinality for good. | |||
|  | 
 | |||
|  | 	Remove everything `#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY`, | |||
|  | 	which was undefined for a while now. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/tttypes.h: Ditto. | |||
|  | 	* src/truetype/truetype.c: Ditto. | |||
|  | 	* src/truetype/ttdriver.c: Ditto. | |||
|  | 	* src/truetype/ttgload.c: Ditto. | |||
|  | 	* src/truetype/ttinterp.c: Ditto. | |||
|  | 	* src/truetype/ttinterp.h: Ditto. | |||
|  | 	* src/truetype/ttobjs.c: Ditto. | |||
|  | 	* src/truetype/ttsubpix.[ch]: Remove files. | |||
|  | 	* src/truetype/rules.mk: Don't mention "ttsubpix.c". | |||
|  | 
 | |||
|  | 2023-07-21  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	* vms_make.com: Provide separate library compiled with C++. | |||
|  | 
 | |||
|  | 	Some types on OpenVMS x86_64 (for example, `long') have different sizes | |||
|  | 	depending on whether compiled with either C or C++.  In particular, | |||
|  | 	X-Windows applications crash if linked with the C++ version. | |||
|  | 
 | |||
|  | 	This patch makes `vms_make.com` create a second version of the FreeType | |||
|  | 	library compiled with C++ if OpenVMS is running on the x86_64 platform. | |||
|  | 
 | |||
|  | 2023-07-21  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	* vms_make.com: Fix typos. | |||
|  | 
 | |||
|  | 2023-07-21  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_SSE2): Fix definition for VMS. | |||
|  | 
 | |||
|  | 2023-07-19  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	vms_make.com: Make use of additional libraries optional. | |||
|  | 
 | |||
|  | 	Check whether `.olb` files are present. | |||
|  | 
 | |||
|  | 	Also check for the HarfBuzz library. | |||
|  | 
 | |||
|  | 2023-07-19  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	vms_make.com: Add `/warn=noinfo` to `CFLAGS`. | |||
|  | 
 | |||
|  | 	This reduces enormously the informationals while compiling on x86_64 (i.e., | |||
|  | 	which `.h` file is inluded form where). | |||
|  | 
 | |||
|  | 2023-07-18  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[woff2] Clean up on large brotli expansion | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff2.c (woff2_open_font): set error and goto cleanup | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60711 | |||
|  | 
 | |||
|  | 2023-07-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[woff2] Avoid allocation bomb. | |||
|  | 
 | |||
|  | 	This is a fix for commit 85167dbd5, reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60615 | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff2.c (MAX_SFNT_SIZE): New macro. | |||
|  | 	(woff2_open_font): Use it to limit the maximum size of an uncompressed WOFF2 | |||
|  | 	font. | |||
|  | 
 | |||
|  | 2023-07-14  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[cff] Fix compiler warning. | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c, src/cff/cffparse.h: Make `cff_parse_fixed` a local | |||
|  | 	function. | |||
|  | 
 | |||
|  | 2023-07-14  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[woff2] Remove sfnt size guess check | |||
|  | 
 | |||
|  | 	In WOFF the `totalSfntSize` must be correct, however in WOFF2 this value | |||
|  | 	is now just a hint and a conforming implementation must not reject | |||
|  | 	otherwise valid data if the `totalSfntSize` turns out not to be exact. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff2.c (woff2_open_font): remove check that uncompressed | |||
|  | 	woff2 data would fit in the sfnt size guess. | |||
|  | 
 | |||
|  | 	Fixes: #1235 | |||
|  | 
 | |||
|  | 2023-07-14  Skef Iterum  <github@skef.org> | |||
|  | 
 | |||
|  | 	[cff] Make blend operator work with floats in private dicts. | |||
|  | 
 | |||
|  | 	The CFF2 blend operator takes N default values and corresponding | |||
|  | 	sets of deltas and pushes N values specific to a designspace | |||
|  | 	location.  CFF has a floating point numeric type and the FreeType | |||
|  | 	blending code was not converting those into its internal 16.16 | |||
|  | 	Fixed type format. | |||
|  | 
 | |||
|  | 	Fixes #1243. | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c (do_fixed): Handle floating point numbers. | |||
|  | 	Also fix scaling overflow check for integer-to-fixed conversion. | |||
|  | 
 | |||
|  | 	* src/cff/cffload.c (cff_blend_doBlend): Updated. | |||
|  | 
 | |||
|  | 2023-07-08  Hin-Tak Leung  <htl10@users.sourceforge.net> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Hint_Glyph): More mostly cosmetic update. | |||
|  | 
 | |||
|  | 	This is a follow-up to commit 49c74ac02, which creates a new local variable | |||
|  | 	"exec = loader->exec", and shortening a lot of "loader->exec".  This commit | |||
|  | 	does two more such changes missed in that first commit. | |||
|  | 
 | |||
|  | 2023-07-06  Hugh McMaster  <hugh.mcmaster@outlook.com> | |||
|  | 
 | |||
|  | 	[gzip] Don't compile internal zlib development files when using system zlib. | |||
|  | 
 | |||
|  | 	`src/gzip/rules.mk` compiles the internal zlib sources even when using the | |||
|  | 	zlib development files provided by a host system.  If the internal zlib | |||
|  | 	development files are not present, FreeType fails to build from source. | |||
|  | 
 | |||
|  | 	This patch ensures the internal zlib development files are only | |||
|  | 	prerequisites when not using zlib development files on a host system. | |||
|  | 
 | |||
|  | 	* src/gzip/rules.mk (GZIP_DRV_SRCS): Define conditionally. | |||
|  | 
 | |||
|  | 2023-06-24  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* Version 2.13.1 released. | |||
|  | 	========================== | |||
|  | 
 | |||
|  | 	Tag sources with `VER-2-13-1'. | |||
|  | 
 | |||
|  | 	* docs/VERSION.TXT: Add entry for version 2.13.1. | |||
|  | 	* docs/CHANGES: Updated. | |||
|  | 	* docs/release, docs/README, builds/macs/README: 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.13.0/2.13/1/, s/2130/2131/. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (version_info): Set to 26:0:20. | |||
|  | 	* CMakeLists.txt (VERSION_PATCH): Set to 1. | |||
|  | 
 | |||
|  | 	* subprojects/libpng.wrap, subprojects/zlib.wrap, subprojects/dlg: Updated. | |||
|  | 
 | |||
|  | 2023-06-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	Comment fixes. | |||
|  | 
 | |||
|  | 2023-06-09  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sdf] Correct handling of empty glyphs. | |||
|  | 
 | |||
|  | 	This is a refinement of commit 7b3ebb9. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdfrend.c (ft_sdf_render): Goto 'Exit' instead of directly | |||
|  | 	returning. | |||
|  | 	(fd_bsdf_render): Ditto, also taking care of setting `FT_GLYPH_OWN_BITMAP` | |||
|  | 	correctly. | |||
|  | 
 | |||
|  | 2023-06-05  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	Mark FT_Renderer_Class::raster_class as pointer to const | |||
|  | 
 | |||
|  | 	The `FT_DEFINE_RASTER_FUNCS` macro declares a `const FT_Raster_Funcs`. | |||
|  | 	The address of the definition is taken and assigned to | |||
|  | 	`FT_Renderer_Class::raster_class` which is currently `FT_Raster_Funcs*`. | |||
|  | 	Until recently the `const` was cast away and with the removal of the | |||
|  | 	cast there are now warnings about dropping this `const`. Instead of | |||
|  | 	adding back the casts, make `FT_Renderer_Class::raster_class` a pointer | |||
|  | 	to const, as is done with pointers in other interfaces. | |||
|  | 
 | |||
|  | 	* include/freetype/ftrender.h (FT_Renderer_Class_): mark `raster_class` | |||
|  | 	as const. | |||
|  | 
 | |||
|  | 2023-06-03  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	Fix some `FT_Fixed` vs. `FT_Long` confusion. | |||
|  | 
 | |||
|  | 	`FT_Fixed` and `FT_Long` are both typedef'ed to be `signed long`.  However, | |||
|  | 	`FT_Fixed` implies that the lower 16 bits are being used to express | |||
|  | 	fractional values and so these two types should not be confused. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmm.h (FT_Set_MM_Blend_Func): Use | |||
|  | 	`FT_Fixed` for `coords`.  Users are passing `FT_Fixed` and implementations | |||
|  | 	are taking `FT_Fixed`. | |||
|  | 	(FT_Get_MM_Blend_Func): Ditto. | |||
|  | 
 | |||
|  | 	* src/autofit/afcjk.c (af_cjk_metrics_check_digits): Use `FT_Long` for | |||
|  | 	`advance` and `old_advance`.  `advance`'s address is passed as `FT_Long*` to | |||
|  | 	`af_shaper_get_elem`, which writes the advance in em units (not fixed).  The | |||
|  | 	exact value is not important here as it is only compared to check whether it | |||
|  | 	has changed. | |||
|  | 
 | |||
|  | 	* src/autofit/aflatin.c (af_latin_metrics_check_digits): Ditto. | |||
|  | 
 | |||
|  | 2023-06-03  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	*/*: Remove many function pointer casts. | |||
|  | 
 | |||
|  | 	In C it is undefined behavior to call a function through a function pointer | |||
|  | 	of a different type.  This is now detected by the Control Flow Integrity | |||
|  | 	Sanitizer.  All known issues have already been fixed.  Prevent any | |||
|  | 	accidental re-introduction by removing function pointer casts when defining | |||
|  | 	services.  The services will call the service functions through the function | |||
|  | 	pointers on the service.  As a result the functions must have the same type | |||
|  | 	so there should be no need to cast.  Removing the casts allows compilers to | |||
|  | 	warn about assignment to an incompatible function pointer type. | |||
|  | 
 | |||
|  | 2023-06-03  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor formatting. | |||
|  | 
 | |||
|  | 2023-05-23  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Replace `sprintf` with `snprintf`. | |||
|  | 
 | |||
|  | 	Fixes #1233. | |||
|  | 
 | |||
|  | 	* include/freetype/config/ftstdlib.h (ft_sprintf): Replace with... | |||
|  | 	(ft_snprintf): This new macro. | |||
|  | 
 | |||
|  | 	* src/autofit/afhints.c (af_print_idx): Add argument to pass the buffer | |||
|  | 	size. | |||
|  | 	(af_glyph_hints_dump_points, af_glyph_hints_dump_segments, | |||
|  | 	af_glyph_hints_dump_edges): Updated. | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (BUFSIZE): New macro. | |||
|  | 	(bdf_parse_properties_, bdf_parse_start_): Use `ft_snprintf`. | |||
|  | 
 | |||
|  | 	* src/tools/ftrandom/ftrandom.c (do_test): Use `snprintf`. | |||
|  | 
 | |||
|  | 2023-05-23  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	docs/DEBUG: Formatting. | |||
|  | 
 | |||
|  | 2023-05-20  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[doc] Type1 GX (sfnt-wrapped Type1) is not supported. | |||
|  | 
 | |||
|  | 	* docs/formats.txt: Clarify the reference of Type1 GX, | |||
|  | 	and state that this format is not supported.  This | |||
|  | 	is because the content `TYP1' table is not exactly same | |||
|  | 	with the Type1 font format specification; no eexec | |||
|  | 	encryption is used.  For detail and concrete examples, | |||
|  | 	see the analysis on: | |||
|  | 
 | |||
|  | 	https://gitlab.freedesktop.org/freetype/freetype/-/issues/1231 | |||
|  | 
 | |||
|  | 2023-05-19  Craig White  <gerzytet@gmail.com> | |||
|  | 
 | |||
|  | 	Add missing end quote of a string in the example code of FT_Trace_Set_Level | |||
|  | 
 | |||
|  | 2023-05-19  Seigo Nonaka  <nona@google.com> | |||
|  | 
 | |||
|  | 	[truetype] Reduce heap allocation of `deltaSet` variation data. | |||
|  | 
 | |||
|  | 	`deltaSet` is an array of packed integers that can be 32 bits, 16 bits, or | |||
|  | 	8 bits.  Before this change, these values were unpacked to 32-bit integers. | |||
|  | 	However, this can cause big heap allocations, e.g., around 500 KByte for | |||
|  | 	'NotoSansCJK'.  To reduce this amount, store the packed integers and unpack | |||
|  | 	them just before passing to the calculation.  At calculation time, due to | |||
|  | 	the variable length of region indices, temporary heap allocations are | |||
|  | 	necessary.  This heap allocation is not negligible and visible in `ftbench` | |||
|  | 	results.  So, use stack-allocated arrays for short array calculations. | |||
|  | 
 | |||
|  | 	Fixes #1230. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftmmtypes.h (GX_ItemVarDataRec): New fields | |||
|  | 	`wordDeltaCount` and `longWords`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Load packed | |||
|  | 	data. | |||
|  | 	(tt_var_get_item_delta): Unpack data before applying. | |||
|  | 
 | |||
|  | 2023-05-17  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	vms_make.com: Create shared executable for x86 version of OpenVMS. | |||
|  | 
 | |||
|  | 2023-05-15  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Add new load flag `FT_LOAD_NO_SVG`. | |||
|  | 
 | |||
|  | 	Modern color fonts often contain both an 'SVG' and 'COLR' table.  FreeType | |||
|  | 	always preferred 'SVG' over 'COLR' (this was a design decision), however, | |||
|  | 	this might not be the right choice for the user.  The new flags makes | |||
|  | 	FreeType ignore the 'SVG' table while loading a glyph. | |||
|  | 
 | |||
|  | 	Fixes #1229. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FT_LOAD_NO_SVG): New macro. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Load_Glyph), src/cff/cffgload.c (cff_slot_load), | |||
|  | 	src/truetype/ttgload.c (TT_Load_Glyph): Use it. | |||
|  | 
 | |||
|  | 2023-05-13  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	.mailmap: Updated. | |||
|  | 
 | |||
|  | 2023-05-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Merge functions. | |||
|  | 
 | |||
|  | 	* src/cache/ftccache.c (FTC_Cache_Init): Merge into... | |||
|  | 	(ftc_cache_done): ... this function, with unnecessary checks removed. | |||
|  | 
 | |||
|  | 2023-05-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Minor casting and cosmetic updates. | |||
|  | 
 | |||
|  | 	* src/cache/ftcglyph.c (ftc_gcache_{init,done}): Remove casting. | |||
|  | 	(FTC_GCache_Lookup): Cosmetic variable renaming. | |||
|  | 	* src/cache/ftcsbits.c (ftc_snode_compare): Formatting. | |||
|  | 
 | |||
|  | 2023-05-12  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* include/freetype/ftcache.h: Typo, punctuation. | |||
|  | 
 | |||
|  | 2023-05-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* include/freetype/ftcache.h: Formatted and updated. | |||
|  | 
 | |||
|  | 2023-05-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	* include/freetype/internal/t1types.h: Fix the indentation. | |||
|  | 
 | |||
|  | 2023-05-11  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Revise the dynamic hash table accounting. | |||
|  | 
 | |||
|  | 	Instead of counting entries relative to the middle of the hash table, | |||
|  | 	this switches to the absolute counter with the full index range mask. | |||
|  | 	As a result, some calculations become a bit simpler.  The cache resizing | |||
|  | 	logic stays largely the same. | |||
|  | 
 | |||
|  | 	* src/cache/ftccache.h (FTC_NODE_TOP_FOR_HASH): Revised with new counter. | |||
|  | 	* src/cache/ftccache.c (ftc_get_top_node_for_hash): Ditto. | |||
|  | 	(ftc_cache_resize): Simplify reallocations and stop their zeroing. | |||
|  | 	(ftc_cache_init): Stop over-allocating but keep zeroing initially. | |||
|  | 	(FTC_Cache_Clear, FTC_Cache_RemoveFaceID): Updated accordingly. | |||
|  | 
 | |||
|  | 2023-05-11  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[t1cid] Set FT_FACE_FLAG_CID_KEYED. | |||
|  | 
 | |||
|  | 	* cidobjs.c (cid_face_init): Set FT_FACE_FLAG_CID_KEYED. | |||
|  | 
 | |||
|  | 	* cidriver.c (cid_get_is_cid): Comment about the case that | |||
|  | 	is_cid cannot guarantee the glyph collection specification. | |||
|  | 
 | |||
|  | 2023-05-09  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_SSE2): Don't define for VMS. | |||
|  | 
 | |||
|  | 2023-05-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_glyph_load): Fix guard for `size`. | |||
|  | 
 | |||
|  | 	This was forgotten to change in commit 2b54eba36b (in May 2004). | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58739 | |||
|  | 
 | |||
|  | 2023-05-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor compiler warning fixes. | |||
|  | 
 | |||
|  | 	* src/autofit/afcjk.c (af_cjk_get_standard_widths), src/autofit/aflatin.c | |||
|  | 	(af_latin_get_standard_widths): Use `FT_CALLBACK_DEF`. | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c (cff_parser_run): Initialize and fix allocation of `q`. | |||
|  | 
 | |||
|  | 2023-05-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/psaux/t1cmap.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/bzip2/ftbzip2.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[cache] Signature fixes. | |||
|  | 
 | |||
|  | 	* src/cache/ftcglyph.c, src/cache/ftcglyph.h (FTC_GNode_Compare): Remove | |||
|  | 	redundant function.  It is equivalent to `ftc_gnode_compare` and becomes | |||
|  | 	completely meaningless with fixed signatures. | |||
|  | 	Update all callers. | |||
|  | 
 | |||
|  | 	* src/cache/ftcsbits.c, src/cache/ftcsbits.h (FTC_SNode_Compare): Remove | |||
|  | 	redundant function.  It is equivalent to `ftc_snode_compare` and becomes | |||
|  | 	completely meaningless with fixed signatures. | |||
|  | 	Update all callers. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sdf] Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/svg/ftsvg.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[raster] Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[smooth] Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[pshinter] Signature fixes. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshrec.c (t1_hints_close, t1_hints_apply): New wrapper | |||
|  | 	functions. | |||
|  | 	(t1_hints_funcs_init): Use them. | |||
|  | 	(t2_hints_close, t2_hints_apply): New wrapper functions. | |||
|  | 	(t2_hints_funcs_init): Use them. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[autofit] Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcmap: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/pcf/pcfdrivr.c: Signature fix. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/winfonts/winfnt.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/type42/t42parse.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[pfr] Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cid/cidload.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cff/cffcmap.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c: Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[base] Signature fixes. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/type42/t42drivr.c: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/type1/*: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/truetype/*: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/sfdriver.c, src/sfnt/ttbdf.c: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfdriver.c (sfnt_load_table): New wrapper function. | |||
|  | 	(sfnt_service_sfnt_table): Use it. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/psnames/psmodule.c: Use `FT_CALLBACK_DEF`. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/pfr/pfrdrivr.c: face -> pfrface, pfrface -> face. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/pcf/pcfdrivr.c: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cid/cidriver.c: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/bdf/bdfdrivr.c: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 2023-05-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cff/*: Clean up interface. | |||
|  | 
 | |||
|  | 	Ensure that all driver functions use the signature of the service or driver. | |||
|  | 	This avoids pointer mismatches, which are technically undefined behaviour. | |||
|  | 	Recent compilers are more picky in catching them as part of Control Flow | |||
|  | 	Integrity tests. | |||
|  | 
 | |||
|  | 2023-05-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Fix style name handling for variation fonts. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/tttypes.h (TT_FaceRec): New field | |||
|  | 	`non_var_style_name`. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Initialize `non_var_style_name`. | |||
|  | 	(sfnt_done_face): Free `non_var_style_name`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Restore non-VF style name | |||
|  | 	if switching back to non-VF mode. | |||
|  | 
 | |||
|  | 2023-05-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Fix PostScript name handling for variation fonts. | |||
|  | 
 | |||
|  | 	A variation font's PostScript name of a named instance is usually different | |||
|  | 	from the PostScript name of an unnamed instance.  However, if a change | |||
|  | 	between a named instance and an unnamed instance with exactly the same | |||
|  | 	design axis values happened, it was possible that the PostScript name wasn't | |||
|  | 	correctly updated. | |||
|  | 
 | |||
|  | 	This commit reorganizes the code to handle this issue within the top-level | |||
|  | 	API functions, using a new service to trigger recomputation of the | |||
|  | 	PostScript name. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmm.h (FT_Construct_PS_Name_Func): New | |||
|  | 	typedef. | |||
|  | 	(FT_Service_MultiMasters): New field `construct_ps_name`. | |||
|  | 	(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. | |||
|  | 
 | |||
|  | 	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates, | |||
|  | 	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Call | |||
|  | 	`mm->construct_ps_name` to handle `postscript_name`. | |||
|  | 	(FT_Set_Named_Instance): Call `mm->construct_ps_name` to handle | |||
|  | 	`postscript_name`. | |||
|  | 	Use shortcut. | |||
|  | 	* src/cff/cffdrivr.c (cff_construct_ps_name): New function. | |||
|  | 	(cff_service_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_set_mm_blend): Don't handle `postscript_name`. | |||
|  | 	(TT_Set_MM_Blend): Simplify. | |||
|  | 	(TT_Set_Named_Instance): Return -1 if axis values haven't changed. | |||
|  | 	Don't set `face_index`. | |||
|  | 	(tt_construct_ps_name): New function. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.h: Updated. | |||
|  | 
 | |||
|  | 	* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/type1/t1driver.c (t1_service_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c (T1_Set_MM_Blend): Simplify. | |||
|  | 
 | |||
|  | 2023-05-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmm.h: Minor changes. | |||
|  | 
 | |||
|  | 2023-05-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Fix deactivation of variation font handling. | |||
|  | 
 | |||
|  | 	According to the documentation, the functions `FT_Set_Named_Instance`, | |||
|  | 	`FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and | |||
|  | 	`FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag. | |||
|  | 	(The same is true for `FT_Set_MM_WeightVector` but this information was | |||
|  | 	accidentally omitted from the documentation.) | |||
|  | 
 | |||
|  | 	However, if a call of these functions didn't change the axis values this | |||
|  | 	could fail because internal shortcuts exited too early. | |||
|  | 
 | |||
|  | 	This commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the | |||
|  | 	top-level API functions, also taking care of the issue at hand. | |||
|  | 
 | |||
|  | 	* src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector, | |||
|  | 	FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates, | |||
|  | 	FT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design, | |||
|  | 	TT_Set_Named_Instance) Don't handle `FT_FACE_FLAG_VARIATION`. | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector, | |||
|  | 	T1_Set_MM_Design): Ditto. | |||
|  | 
 | |||
|  | 	* src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of | |||
|  | 	low-level functions. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_face_init): Ditto. | |||
|  | 
 | |||
|  | 2023-05-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	s/set_instance/set_named_instance/ | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmm.h (FT_Set_Instance_Func): Renamed | |||
|  | 	to... | |||
|  | 	(FT_Set_Named_Instance_Func): ...this. | |||
|  | 	(FT_Service_MultiMasters): Rename `set_instance` to `set_named_instance`. | |||
|  | 	(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. | |||
|  | 
 | |||
|  | 	* src/base/ftmm.c (FT_Set_Named_Instance): Updated. | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_set_instance): Renamed to... | |||
|  | 	(cff_set_named_instance): ...this. | |||
|  | 	(cff_service_multi_masters): Updated. | |||
|  | 	* src/cff/cffobjs.c (cff_face_init): Updated. | |||
|  | 
 | |||
|  | 	* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/type1/t1driver.c (t1_service_multi_masters): Updated. | |||
|  | 
 | |||
|  | 2023-05-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	New Variation Font function `FT_Get_Default_Named_Instance`. | |||
|  | 
 | |||
|  | 	* include/freetype/ftmm.h, src/base/ftmm.c (FT_Get_Default_Named_Instance): | |||
|  | 	New function. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmm.h | |||
|  | 	(FT_Get_Default_Named_Instance_Func): New typedef. | |||
|  | 	(FT_Service_MultiMasters): New field `get_default_named_instance`. | |||
|  | 	(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/tttypes.h (TT_Face): New field | |||
|  | 	`var_default_named_instance`. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjc.s (sfnt_init_face): Initialize | |||
|  | 	`var_default_named_instance`. | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_get_default_named_instance): New function. | |||
|  | 	(cff_service_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize | |||
|  | 	`var_default_named_instance`. | |||
|  | 	(TT_Get_Default_Named_Instance): New function. | |||
|  | 	* src/truetype/ttgxvar.h: Updated. | |||
|  | 	* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/type1/t1driver.c (t1_service_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* docs/CHANGES: Updated. | |||
|  | 
 | |||
|  | 2023-05-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[cid] Improve tracing messages; formatting. | |||
|  | 
 | |||
|  | 2023-05-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cache/ftccache.c (ftc_node_hash_unlink): Minor. | |||
|  | 
 | |||
|  | 2023-05-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Purge backwards. | |||
|  | 
 | |||
|  | 2023-05-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Revise list cleansing. | |||
|  | 
 | |||
|  | 	* src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Use one loop to | |||
|  | 	do it. | |||
|  | 	* src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_FlushN): | |||
|  | 	Streamline loops. | |||
|  | 
 | |||
|  | 2023-05-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[t1cid] Improve cid_get_cid_from_glyph_index(). | |||
|  | 
 | |||
|  | 	Update cid_get_cid_from_glyph_index() to | |||
|  | 	return an error and CID=0 in the case that | |||
|  | 	the specified glyph index points to an invalid | |||
|  | 	entry. | |||
|  | 
 | |||
|  | 	cidgload.h (cid_compute_fd_and_offsets): | |||
|  | 	Declare new helper function to set the | |||
|  | 	fd_select and 2 offsets to access the glyph | |||
|  | 	description data. | |||
|  | 
 | |||
|  | 	cidgload.c (cid_compute_fd_and_offsets): | |||
|  | 	Move the part loading fd_select and 2 offsets | |||
|  | 	from cid_load_glyph() to here.  If the loaded | |||
|  | 	parameters are broken, return the Invalid_Offset | |||
|  | 	error.  This function does not load the glyph | |||
|  | 	data, only fills these parameters. | |||
|  | 
 | |||
|  | 	(cid_load_glyph): Use new helper function in above. | |||
|  | 
 | |||
|  | 	cidriver.c (cid_get_cid_from_glyph_index): | |||
|  | 	Check whether the requested glyph index points | |||
|  | 	to a valid entry, by calling cid_compute_fd_and_offsets(). | |||
|  | 	If it is valid, fill the cid by the glyph | |||
|  | 	index (=CID).  If it is invalid, return an | |||
|  | 	error and fill the cid by 0. | |||
|  | 
 | |||
|  | 2023-04-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	API documentation: Re-organize chapters and sections | |||
|  | 
 | |||
|  | 	* Split the very long 'Base Interface' section into smaller sections. | |||
|  | 	* Split the 'Core API' chapter into two chapters. | |||
|  | 	* Remove single enumeration values from `@order` fields since they have no | |||
|  | 	  effect. | |||
|  | 
 | |||
|  | 2023-04-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/pngshim.c (Load_SBit_Png): Remove FALL_THROUGH warning. | |||
|  | 
 | |||
|  | 2023-04-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_font_dir): Add another guard. | |||
|  | 
 | |||
|  | 	Reject 'OTTO' fonts with no valid tables. | |||
|  | 
 | |||
|  | 2023-04-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr/c (cff_get_ps_name): Avoid unnecessary crash. | |||
|  | 
 | |||
|  | 	The situation can happen if `FT_New_Face` (or one of its siblings) is called | |||
|  | 	with a negative index to get the number of contained faces, followed | |||
|  | 	immediately by a call to `FT_Get_Postscript_Name`.  While this is not a valid | |||
|  | 	use of the FreeType library there is no need for a crash. | |||
|  | 
 | |||
|  | 	Fixes #1219. | |||
|  | 
 | |||
|  | 2023-04-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_ps_get_font_info): Reject 'CFF2' format. | |||
|  | 
 | |||
|  | 2023-04-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cid/cidgload.c (cid_load_glyph): Fix compiler warnings. | |||
|  | 
 | |||
|  | 2023-04-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor documentation updates. | |||
|  | 
 | |||
|  | 2023-04-27  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/ttgxvar.c: Minor changes. | |||
|  | 
 | |||
|  | 	(TT_Get_MM_Var): Improve tracing messages. | |||
|  | 	(tt_set_mm_blend): Minor speed-up. | |||
|  | 
 | |||
|  | 2023-04-27  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	s/this is,/that is,/ | |||
|  | 
 | |||
|  | 2023-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[bdf] Clean up the atom property parsing. | |||
|  | 
 | |||
|  | 	* src/bdflib.c (bdf_is_atom_): Refactor code with fewer checks. | |||
|  | 	(bdf_list_join_): Return NULL. | |||
|  | 	(bdf_add_comment_): Use const argument. | |||
|  | 	(bdf_get_property): Ditto, ditto, make the function static. | |||
|  | 	* src/bdf.h (bdf_get_property): Remove prototype. | |||
|  | 
 | |||
|  | 2023-04-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Improve/add source comments and documentation. | |||
|  | 
 | |||
|  | 2023-04-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sfnt] Fix handling of PS names for Variation Fonts. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfdriver.c (get_win_string, get_apple_string): Continue | |||
|  | 	construction of string if an invalid character is encountered. | |||
|  | 
 | |||
|  | 	Fixes #1218. | |||
|  | 
 | |||
|  | 2023-04-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[t1cid] Change the trace messages of the charstrings retrieval errors. | |||
|  | 
 | |||
|  | 	The t1cid driver catches 3 types of errors in | |||
|  | 	the charstrings retrieval; | |||
|  | 	A) The invalid FD number, there are 2 subtypes; | |||
|  | 	  A-1) FD number is the maximum number fitting to FDBytes. | |||
|  | 	  A-2) FD number is greater than num_dicts. | |||
|  | 	B) Declared length is overrunning. | |||
|  | 	C) Declared length is invalid (its end is before its head). | |||
|  | 
 | |||
|  | 	Considering that some widely distributed fonts | |||
|  | 	(e.g., "CJKV" book by O'Reilly) have A-1 errors | |||
|  | 	in the unimplemented glyphs, the trace level for | |||
|  | 	A-1 is calmed to level 1. | |||
|  | 
 | |||
|  | 	The errors A-2, B, and C would be irregular; | |||
|  | 	their trace levels are kept at level 0, but | |||
|  | 	the updated trace messages include the CID number. | |||
|  | 
 | |||
|  | 2023-04-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[truetype] Fix `make multi'. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c: Include freetype/internal/services/svmetric.h | |||
|  | 	for the FT_Service_MetricsVariations type definition. | |||
|  | 
 | |||
|  | 2023-04-19  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[services] FT_Size_Reset_Func to return FT_Error | |||
|  | 
 | |||
|  | 	The `MetricsVariations` `FT_Size_Reset_Func` is currently defined to | |||
|  | 	return `void`, but the implementations return `FT_Error`. Even though | |||
|  | 	the pointers passed will be the same at runtime, calling a function | |||
|  | 	through a pointer of a different type from the original function pointer | |||
|  | 	type is undefined behavior. This may be caught at runtime by Control | |||
|  | 	Flow Integrity with something like clang's `cfi-icall`. | |||
|  | 
 | |||
|  | 	Issue: https://crbug.com/1433651 | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func): | |||
|  | 	return `FT_Error` instead of `void`. | |||
|  | 
 | |||
|  | 2023-04-17  Ben Wagner  <bungeman@chromum.org> | |||
|  | 
 | |||
|  | 	[truetype] tt_size_reset_height to take FT_Size | |||
|  | 
 | |||
|  | 	The `MetricsVariations` `FT_Size_Reset_Func` is defined to take an | |||
|  | 	`FT_Size`. Because `tt_size_reset_height` is to be used as such a | |||
|  | 	function, it must also take an `FT_Size` instead of a `TT_Size`. Even | |||
|  | 	though the pointers passed will be the same at runtime, calling a | |||
|  | 	function through a pointer of a different type from the original | |||
|  | 	function pointer type is undefined behavior. This may be caught at | |||
|  | 	runtime by Control Flow Integrity with something like clang's | |||
|  | 	`cfi-icall`. | |||
|  | 
 | |||
|  | 	Issue: https://crbug.com/1433651 | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.h (tt_size_reset_height): take `FT_Size` | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_size_reset_height): take `FT_Size` and | |||
|  | 	update documentation | |||
|  | 
 | |||
|  | 2023-04-13  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.c: Remove outdated comments. | |||
|  | 
 | |||
|  | 2023-04-11  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt, truetype] Add `size_reset` to `MetricsVariations`. | |||
|  | 
 | |||
|  | 	This is a generalization of commit | |||
|  | 
 | |||
|  | 	``` | |||
|  | 	commit e6699596af5c5d6f0ae0ea06e19df87dce088df8 | |||
|  | 	Author: Werner Lemberg <wl@gnu.org> | |||
|  | 	Date:   Thu Feb 2 11:38:04 2017 +0100 | |||
|  | 
 | |||
|  | 	    [truetype] Fix MVAR post-action handling. | |||
|  | 	``` | |||
|  | 
 | |||
|  | 	It is also possible for plain `CFF ` style fonts to contain an `fvar` and | |||
|  | 	`MVAR` table and use `cff_metrics_adjust`.  `tt_size_reset` should only be | |||
|  | 	called with `TT_Size` and never with `CFF_Size`. | |||
|  | 
 | |||
|  | 	Allow the "metrics-variations" service to specify the correct function (if | |||
|  | 	any) to reset `FT_Size`s after adjusting metrics. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_size_reset): Split off some functionality | |||
|  | 	into... | |||
|  | 	(tt_size_reset_height): ... this new function. | |||
|  | 
 | |||
|  | 	* src/truetype/ttdriver.c (tt_service_metrics_variations): Add | |||
|  | 	`size_reset`. | |||
|  | 	(tt_size_select, tt_size_request): Updated. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.h: Updated. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmetric.h (MetricsVariations): Add | |||
|  | 	`size_reset`. | |||
|  | 	(FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Updated. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/tttypes.h (TT_FaceRec_): Rename `var` to | |||
|  | 	`tt_var` and add `face_var`. | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_service_metrics_variations): Add `size_reset`. | |||
|  | 	(cff_hadvance_adjust, cff_metrics_adjust): Updated. | |||
|  | 
 | |||
|  | 	* src/cff/cffobjs.c (cff_face_init): Use `face_var`. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_init_face): Initialize `face_var`. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttmtx.c (tt_face_get_metrics): Use `tt_var`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_size_reset_iterator): Renamed to... | |||
|  | 	(ft_size_reset_iterator): ... this new function. | |||
|  | 	Call `size_reset`. | |||
|  | 	(tt_apply_mvar): Pass `size_reset` to `ft_size_reset_iterator`. | |||
|  | 
 | |||
|  | 	Fixes #1211 | |||
|  | 
 | |||
|  | 2023-04-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffcmap.c (cff_cmap_encoding_char_next): Abbreviate. | |||
|  | 
 | |||
|  | 2023-04-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Align `char_next` return types. | |||
|  | 
 | |||
|  | 	This is mostly cosmetic because FT_UInt and FT_UInt32 are likely identical. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcmap.c, src/cff/cffcmap.c, src/psaux/t1cmap.c, | |||
|  | 	src/psnames/psmodule.c, include/freetype/internal/service/svpcsmap.h, | |||
|  | 	src/pfr/pfrcmap.c, src/winfonts/winfnt.c (*_char_next): return FT_UInt. | |||
|  | 
 | |||
|  | 2023-04-09  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[sfnt] Clean up CMAP{4,12,13} handling. | |||
|  | 
 | |||
|  | 	This moves the charcode overflow checks upstream and turns some | |||
|  | 	while-loops into the do-while ones to avoid the uninitialized warnings. | |||
|  | 	This should slightly reduce the number of checks and jumps. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcmap.c (tt_cmap{4,12,13}_next, | |||
|  | 	tt_cmap{4.12.13}_char_map_linear): Remove the charcode overflow check. | |||
|  | 	(tt_cmap{4,12,13}_char_map_binary): Ditto and use do-while. | |||
|  | 	(tt_cmap{12,13}_char_next): Add the overflow check. | |||
|  | 
 | |||
|  | 2023-04-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttpost.c (load_format_25): Do not abort frame reading. | |||
|  | 
 | |||
|  | 2023-04-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttpost.c (load_format_*): Streamline frame reading. | |||
|  | 
 | |||
|  | 2023-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttpost.c: Formatting and comments. | |||
|  | 
 | |||
|  | 2023-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[sfnt] Consolidate POST version 2.0 and 2.5 (pt 2). | |||
|  | 
 | |||
|  | 	* src/sfnt/ttpost.c (load_format_20, load_format_25): Update arguments | |||
|  | 	and move shared calls and checks upstream to... | |||
|  | 	(load_post_names): ... this function. | |||
|  | 	(tt_face_free_ps_names, tt_face_get_ps_name): Updated. | |||
|  | 
 | |||
|  | 2023-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[sfnt] Consolidate POST version 2.0 and 2.5 (pt 1). | |||
|  | 
 | |||
|  | 	The deprecated POST version 2.5 can be handled using the data | |||
|  | 	structures of version 2.0.  The goal is to reduce the footprint. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/tttypes.h (TT_Post_Names): Absorb and... | |||
|  | 	(TT_Post_20, TT_Post_25): ... remove these structures. | |||
|  | 	src/sfnt/ttpost.c (load_post_names, tt_face_get_ps_name, | |||
|  | 	tt_face_free_ps_names, load_format_20): Updated accordingly. | |||
|  | 	(load_format_25): ditto and convert offsets to glyph indices. | |||
|  | 
 | |||
|  | 2023-04-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[sfnt] Miscellaneous POST clean-ups. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttpost.c (load_format_20): Decrease casts. | |||
|  | 	(load_format_25): Check the table length and impose a theoretical | |||
|  | 	glyph number limit usable with 8-bit offset.  Decrease casts. | |||
|  | 	(load_post_names): Pass the mapping data length without 2 bytes. | |||
|  | 
 | |||
|  | 2023-03-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttpost.c (load_format_20): Simplify comutations. | |||
|  | 
 | |||
|  | 2023-03-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[sfnt] Streamline POST format 2.0 handing (cont'd). | |||
|  | 
 | |||
|  | 	* src/sfnt/ttpost.c (load_format_20): Co-allocate the string data and | |||
|  | 	their pointers, which makes it easier to handle and free them. | |||
|  | 	(tt_face_free_ps_names): Updated. | |||
|  | 	* include/freetype/internal/tttypes.h (TT_Post_20): Update type. | |||
|  | 
 | |||
|  | 2023-03-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cff] Simplify `t2_strings` management in the old engine. | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c (cff_parser_run): Allocate the charstring buffers | |||
|  | 	and the list nodes together so that they can be freed at once. | |||
|  | 	(finalize_t2_strings): Removed as no longer needed. | |||
|  | 	(cff_parser_done): Updated. | |||
|  | 
 | |||
|  | 2023-03-19  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cff] Rework the stream limit checks. | |||
|  | 
 | |||
|  | 	The old stream limit checks, before 6986ddac1ece, were good but | |||
|  | 	pointless for the crafted t2_strings.  Checking limits there is | |||
|  | 	not necessary as they are created to hold all data.  By using two | |||
|  | 	conditions, we can detect the actual crossing of the stream boundary | |||
|  | 	as appropriate for the stream pointer only.  The t2_strings parsing | |||
|  | 	will not be triggering these checks. | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c (cff_parser_within_limits): Removed. | |||
|  | 	(cff_parse_real, cff_parse_integer): Redesign the stream limit check. | |||
|  | 	(cff_parse_num, do fixed, cff_parse_fixed_dynamic): Update callers. | |||
|  | 
 | |||
|  | 2023-03-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use for-loop. | |||
|  | 
 | |||
|  | 	Even though we never call `TT_Load_Simple_Glyph` with zero contours, | |||
|  | 	out of abundance of precaution, let's handle this case properly. | |||
|  | 
 | |||
|  | 2023-03-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Clean up zeroing and local variables. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Avoid zeroing. | |||
|  | 	(load_truetype_glyph): Avoid zeroing and clean local variables. | |||
|  | 
 | |||
|  | 2023-03-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* include/freetype/ftsystem.h (FT_Stream_IoFunc): Improve documentation. | |||
|  | 
 | |||
|  | 	Fixes #1208. | |||
|  | 
 | |||
|  | 2023-03-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API. | |||
|  | 
 | |||
|  | 2023-03-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Clean up glyph loading. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean space checking. | |||
|  | 	(TT_Hint_Glyph): Don't copy the outline structure. | |||
|  | 	(TT_Process_Simple_Glyph): Cosmetic update. | |||
|  | 
 | |||
|  | 2023-03-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean up. | |||
|  | 
 | |||
|  | 2023-03-13  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	builds/vms/apinames_vms.bash: Fix `unzip` artifact | |||
|  | 
 | |||
|  | 	The problem occured when unpacking a zip file created on OpenVMS on Linux. | |||
|  | 	While OpenVMS knows many different file formats, Unix only knows stream-LF | |||
|  | 	and binary.  In principle `zip` on Linux should have translated the file to | |||
|  | 	stream-LF but failed to do so.  That caused the file to incorrectly contain | |||
|  | 	only one line with control-characters. | |||
|  | 
 | |||
|  | 2023-03-11  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Fix recent fallout in memory management. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Process_Composite_Glyph, | |||
|  | 	TT_Load_Simple_Glyph): Clean up old instructions regardless of | |||
|  | 	new ones, postpone setting `control_len` and `control_data` until... | |||
|  | 	(TT_Load_Glyph): ... the exit from this function. | |||
|  | 
 | |||
|  | 2023-03-10  Jouk Jansen  <joukj@hrem.nano.tudelft.nl> | |||
|  | 
 | |||
|  | 	Update VMS installation support. | |||
|  | 
 | |||
|  | 2023-03-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Hint_Glyph): Mostly cosmetic update. | |||
|  | 
 | |||
|  | 	The number of instructions is now taken from the executed context. | |||
|  | 	Technically, this means that `control_len` and `control_data` | |||
|  | 	values are no longer _used_ internally but only expose them. | |||
|  | 
 | |||
|  | 2023-03-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	apinames.c: Add comment. | |||
|  | 
 | |||
|  | 2023-03-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[gzip] File `infback.c` is not needed. | |||
|  | 
 | |||
|  | 	* src/gzip/infback.c: Remove. | |||
|  | 	* src/gzip/rules.mk (GZIP_DRV_SRCS): Updated. | |||
|  | 
 | |||
|  | 2023-03-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[apinames] Fix VMS handling of overly long function names. | |||
|  | 
 | |||
|  | 	Based on ideas from Jouk Jansen <joukj@hrem.nano.tudelft.nl>. | |||
|  | 
 | |||
|  | 	* src/tools/vms_shorten_symbol.c: New file, taken from | |||
|  | 
 | |||
|  | 	  https://sourceforge.net/p/vms-ports/vmsshortsym/ci/default/tree/vms_shorten_symbol.c | |||
|  | 
 | |||
|  | 	with some minor edits to allow compilation with C++ and being included in | |||
|  | 	another source code file. | |||
|  | 
 | |||
|  | 	* src/tools/apinames.c: Include `vms_shorten_symbol.c`. | |||
|  | 	(PROGRAM_VERSION): Set to '0.5'. | |||
|  | 	(names_dump) [OUTPUT_VMS_OPT]: Call `vms_shorten_symbol` to get unique function | |||
|  | 	identifiers not longer than 31 characters. | |||
|  | 
 | |||
|  | 2023-03-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/tools/apinames.c (panic): Accept variable number of arguments. | |||
|  | 
 | |||
|  | 2023-03-07  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix leak too. | |||
|  | 
 | |||
|  | 2023-03-07  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Triage memory leak. | |||
|  | 
 | |||
|  | 	This leak has been introduced in the previous commit and immediately | |||
|  | 	detected: | |||
|  | 	  https://chromium-review.googlesource.com/c/chromium/src/+/4313202 | |||
|  | 
 | |||
|  | 2023-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Simplify memory management. | |||
|  | 
 | |||
|  | 	Instead of using `Update_Max`, switch to regular FreeType memory | |||
|  | 	allocation macros, stop pre-allocating the glyph instruction arrays. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Simple_Glyph, | |||
|  | 	TT_Process_Composite_Glyph): Switch to regular memory allocation. | |||
|  | 	* src/truetype/ttinterp.c (Update_Max): Removed. | |||
|  | 	(TT_Load_Context): Reallocate stack and free old instructions. | |||
|  | 	(Modify_CVT_Check, Ins_WS): Switch to regular memory allocation. | |||
|  | 	* src/truetype/ttinterp.h (Update_Max): Removed. | |||
|  | 
 | |||
|  | 2023-03-06  David PROVENT  <dprovent@annecy-elec.local> | |||
|  | 
 | |||
|  | 	Added information about the zlib version update in the changelog | |||
|  | 
 | |||
|  | 2023-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Fix a couple of MSVC warnings. | |||
|  | 
 | |||
|  | 	* src/base/ftcalc.c (FT_MulAddFix): Add cast. | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Ditto. | |||
|  | 
 | |||
|  | 2023-03-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Suppress C4267 on _WIN64. | |||
|  | 
 | |||
|  | 	This usually comes from `strlen` returning 64-bit `size_t`, which | |||
|  | 	we often assign to 32-bit `FT_ULong` on Windows-64 (LLP64). | |||
|  | 
 | |||
|  | 2023-03-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c (cff_parser_run): Thinko. | |||
|  | 
 | |||
|  | 2023-03-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cff] Clean up CharString number encoding. | |||
|  | 
 | |||
|  | 	* src/cff/cffparser.c (cff_parser_run): Work with signed numbers. | |||
|  | 
 | |||
|  | 2023-03-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c (cff_parser_run): Fix variable type. | |||
|  | 
 | |||
|  | 2023-03-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cff] Clean up memory management in the old engine. | |||
|  | 
 | |||
|  | 	* src/cff/cffparse.c (finalize_t2_strings): Fix NULL-dereferencing | |||
|  | 	in the out-of-memory situation, use `FT_FREE`. | |||
|  | 	(cff_parser_run): Use FreeType memory allocation macros and avoid | |||
|  | 	uninitialized pointers. | |||
|  | 
 | |||
|  | 2023-03-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffobjs.c (cff_size_init): Synonymous change. | |||
|  | 
 | |||
|  | 2023-03-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Shorten de-referencing. | |||
|  | 
 | |||
|  | 2023-03-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pfr] Shorten de-referencing. | |||
|  | 
 | |||
|  | 	* src/pfr/pfrobjs.c (pfr_face_done, pfr_face_init): Use closer `memory`. | |||
|  | 	* src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove `loader`. | |||
|  | 
 | |||
|  | 2023-03-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffobjs.c (cff_size_get_globals_funcs): Shorten de-referencing. | |||
|  | 
 | |||
|  | 2023-03-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cff,cid,type1] Shorten de-referencing. | |||
|  | 
 | |||
|  | 	* src/cff/cffobjs.c (cff_clot_init): Use immediate library reference. | |||
|  | 	* src/cid/cidobjs.c (cid_slot_init): Ditto. | |||
|  | 	* src/type1/t1objs.c (T1_GlyphSlot_Init): Ditto. | |||
|  | 
 | |||
|  | 2023-03-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* configure: Use `sed` instead of `grep`. | |||
|  | 
 | |||
|  | 	This is more portable and consistent with `autogen.sh`. | |||
|  | 
 | |||
|  | 2023-03-02  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	Avoid strtol on non-null-terminated data. | |||
|  | 
 | |||
|  | 	Technically, `strtol` can only be used with C strings terminated with | |||
|  | 	`\0`.  CID data is not generally null-terminated and often does not | |||
|  | 	contain a `\0` if it is hex-encoded.  AddressSanitizer with `ASAN_OPTIONS` | |||
|  | 	containing `strict_string_checks=1` verifies this by using an adversarial | |||
|  | 	`strtol` that always reads to the terminating `\0`. | |||
|  | 
 | |||
|  | 	To avoid undefined behavior from `strtol` in `cid_parser_new`, use the | |||
|  | 	parser to parse the tokens instead of attempting to parse them ad-hoc. | |||
|  | 	This will internally use `PS_Conv_Strtol` to parse the integer, which | |||
|  | 	respects the parser's limits and directly implements the PostScript | |||
|  | 	parsing rules for integers. | |||
|  | 
 | |||
|  | 	* src/cid/cidparse.c (cid_parser_new): Use the parser to parse the | |||
|  | 	tokens. | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1420329 | |||
|  | 
 | |||
|  | 2023-03-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffload.c (cff_subfont_load): Synonymous update. | |||
|  | 
 | |||
|  | 2023-03-01  ubawurinna  <ubawurinna-6079@yopmail.com> | |||
|  | 
 | |||
|  | 	* src/gzip/README.freetype: Update version. | |||
|  | 
 | |||
|  | 2023-03-01  ubawurinna  <you@example.com> | |||
|  | 
 | |||
|  | 	[gzip] Fix static linking. | |||
|  | 
 | |||
|  | 	Without this patch, static linking with MS Visual Studio causes linking | |||
|  | 	errors. | |||
|  | 
 | |||
|  | 	* src/gzip/ftgzip.c: Set `ZEXPORT` to nothing and `ZEXTERN` to static for | |||
|  | 	all compilers. | |||
|  | 
 | |||
|  | 2023-03-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. | |||
|  | 
 | |||
|  | 	This follows | |||
|  | 
 | |||
|  | 	  https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00200.html | |||
|  | 
 | |||
|  | 2023-02-28  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Treat 38 as 40 without Infinality. | |||
|  | 
 | |||
|  | 	* include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Reinstate. | |||
|  | 	* src/truetype/ttdriver.c (tt_property_set): Fallback from 38 to 40. | |||
|  | 
 | |||
|  | 2023-02-26  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. | |||
|  | 
 | |||
|  | 	This follows | |||
|  | 
 | |||
|  | 	  https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00159.html | |||
|  | 
 | |||
|  | 2023-02-26  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/*: Replace leading underscores with trailing ones in dummy variables. | |||
|  | 
 | |||
|  | 	This is to avoid clang warnings. | |||
|  | 
 | |||
|  | 2023-02-26  Karl Berry  <karl@freefriends.org> | |||
|  | 
 | |||
|  | 	* configure: Don't hardcode `grep -E`. | |||
|  | 
 | |||
|  | 	TeXLive still supports Solaris 5.10, where the system's `grep` doesn't | |||
|  | 	accept the `-E` option.  We thus introduce an `EGREP` variable that is set | |||
|  | 	to either `grep -E` or `-egrep`. | |||
|  | 
 | |||
|  | 2023-02-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffload.c (cff_encoding_load): Optimize array zeroing. | |||
|  | 
 | |||
|  | 	This is unnecessary for predefined standard and expert encodings. | |||
|  | 	Even for custom encodings the arrays might be already zeroed when | |||
|  | 	CFF_FontRec is created but we keep it just in case. | |||
|  | 
 | |||
|  | 2023-02-25  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c (T1_Get_MM_Var): Optimize array zeroing. | |||
|  | 
 | |||
|  | 2023-02-25  Tamir Duberstein  <tamird@google.com> | |||
|  | 
 | |||
|  | 	* src/base/ftsystem.c (ft_ansi_stream_io): Avoid undefined behaviour. | |||
|  | 	Also short-circuit on `offset` to avoid checking `count` a second time when | |||
|  | 	`ft_ansi_stream_io` is used for reading. | |||
|  | 
 | |||
|  | 	Per ISO/IEC 9899: | |||
|  | 
 | |||
|  | 	  If an argument to a function has an invalid value (such as a value outside | |||
|  | 	  the domain of the function, or a pointer outside the address space of the | |||
|  | 	  program, or a null pointer, or apointer to non-modifiable storage when the | |||
|  | 	  corresponding parameter is not const-qualified) or a type (after | |||
|  | 	  promotion) not expected by a function with variable number of arguments, | |||
|  | 	  the behavior is undefined.  If a function argument is described as being | |||
|  | 	  an array, the pointer actually passed to the function shall have a value | |||
|  | 	  such that all address computations and accesses to objects (that would be | |||
|  | 	  valid if the pointer did point to the first element of such an array) are | |||
|  | 	  in fact valid. | |||
|  | 
 | |||
|  | 	Per IEEE Std 1003.1: | |||
|  | 
 | |||
|  | 	  size_t fread(void *restrict ptr, size_t size, size_t nitems, | |||
|  | 	               FILE *restrict stream); | |||
|  | 
 | |||
|  | 	  The `fread` function shall read into the array pointed to by `ptr` up to | |||
|  | 	  `nitems` elements whose size is specified by `size` in bytes, from the | |||
|  | 	  stream pointed to by `stream`. | |||
|  | 
 | |||
|  | 	Since the first argument to `fread` is described as being an array, its | |||
|  | 	behavior is undefined when that argument is a null pointer. | |||
|  | 
 | |||
|  | 	Per the documentation on `ft_ansi_stream_io`: | |||
|  | 
 | |||
|  | 	  If `count' is zero (this is, the function is used for seeking), a non-zero | |||
|  | 	  return value indicates an error. | |||
|  | 
 | |||
|  | 	Thus the intent is clear, and the call to `fread` can be skipped, avoiding | |||
|  | 	undefined behaviour. | |||
|  | 
 | |||
|  | 2023-02-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[raster] Clean up contour indexing. | |||
|  | 
 | |||
|  | 	* src/raster/ftraster.c (Decompose_Curve, Convert_Glyph): Use consistent | |||
|  | 	index types (Int) and compact iterations. | |||
|  | 
 | |||
|  | 2023-02-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[autofit] Clean up contour indexing. | |||
|  | 
 | |||
|  | 	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Refactor. | |||
|  | 	* src/autofit/afcjk.c (af_cjk_metrics_init_blues): Ditto. | |||
|  | 
 | |||
|  | 2023-02-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftoutln.c (FT_Outline_Check): Fix C4701 warning. | |||
|  | 
 | |||
|  | 2023-02-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (get_min_distance_cubic): Fix C4701, typos. | |||
|  | 
 | |||
|  | 2023-02-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftstroke.c (FT_Stroker_ParseOutline): Clean up contour indexing. | |||
|  | 
 | |||
|  | 2023-02-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Clean up contour indexing. | |||
|  | 
 | |||
|  | 	* src/base/ftoutln.c (FT_Outline_Reverse, FT_Outline_EmboldenXY, | |||
|  | 	FT_Outline_Get_Orientation): Set the first and last indexes together. | |||
|  | 	(FT_Outline_Decompose): Ditto and check them more stringently. | |||
|  | 	* src/smooth/ftgrays.c (FT_Outline_Decompose)[STANDALONE_]: Ditto. | |||
|  | 
 | |||
|  | 2023-02-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftoutln.c (FT_Outline_Check): Update error code, clean up. | |||
|  | 
 | |||
|  | 2023-02-17  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Hide Infinality. | |||
|  | 
 | |||
|  | 	Remove Infinality as an option before its complete extraction. | |||
|  | 
 | |||
|  | 	* include/freetype/ftoption.h: Remove the Infinality option. | |||
|  | 	* devel/ftoption.h: Ditto. | |||
|  | 	* include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Is 40 now. | |||
|  | 
 | |||
|  | 2023-02-17  Alex Ringlein  <aringlein@figma.com> | |||
|  | 
 | |||
|  | 	* src/base/ftoutln.c (FT_Outline_Reverse): Anchor first contour points. | |||
|  | 
 | |||
|  | 	A cubic contour has to always start from an on-point. Therefore, we | |||
|  | 	should not swap the first with the last point, which might be off, and | |||
|  | 	obtain an invalid contour. This does not matter for conic contours. | |||
|  | 	If anything, it also saves one swap there. Fixes #1207. | |||
|  | 
 | |||
|  | 2023-02-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Documentation improvement for `FT_Bitmap`. | |||
|  | 
 | |||
|  | 	Fixes #1205. | |||
|  | 
 | |||
|  | 2023-02-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[type1/MM] Round design coordinates. | |||
|  | 
 | |||
|  | 	The design coordinates for MM fonts were not rounded. For example, | |||
|  | 	`FT_Get_Var_Design_Coordinates` returned values with fractional part. | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c (mm_axis_unmap): Refactor with rounding. | |||
|  | 
 | |||
|  | 	* include/freetype/ftmm.h (FT_Var_Axis, FT_Set_Var_Design_Coordinates, | |||
|  | 	FT_Get_Var_Design_Coordinates): Reword documentation. | |||
|  | 
 | |||
|  | 2023-02-09  Jan Alexander Steffens (heftig)  <heftig@archlinux.org> | |||
|  | 
 | |||
|  | 	* builds/meson/parse_modules_cfg.py: Handle `gxvalid` and `otvalid`. | |||
|  | 
 | |||
|  | 	These need a name mapping similar to what was done for other modules, | |||
|  | 	or linking will fail. | |||
|  | 
 | |||
|  | 2023-02-09  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* build/toplevel.mk (do_dist): Fix typo. | |||
|  | 
 | |||
|  | 2023-02-09  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* Version 2.13 released. | |||
|  | 	========================== | |||
|  | 
 | |||
|  | 	Tag sources with `VER-2-13-0'. | |||
|  | 
 | |||
|  | 	* docs/VERSION.TXT: Add entry for version 2.13. | |||
|  | 	* 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.12.1/2.13/, s/2121/2130/. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 13. | |||
|  | 	(FREETYPE_PATCH): Set to 0. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (version_info): Set to 25:0:19. | |||
|  | 	* CMakeLists.txt (VERSION_MINOR): Set to 13. | |||
|  | 	(VERSION_PATCH): Set to 0. | |||
|  | 
 | |||
|  | 2023-02-09  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Comment on `FT_GlyphSlot_Slant'. | |||
|  | 
 | |||
|  | 2023-02-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[autofit] Fix 'multi' compilation. | |||
|  | 
 | |||
|  | 	* src/autofit/ft-hb.c: Decorate with `FT_LOCAL_DEF`. | |||
|  | 	Add ANSI boilerplate code for otherwise empty file. | |||
|  | 	* src/autofit/ft-hb.h: Include `compiler-macros.h` and `freetype.h`. | |||
|  | 	Use `FT_BEGIN_HEADER` and `FT_END_HEADER`. | |||
|  | 	Decorate with `FT_LOCAL`. | |||
|  | 
 | |||
|  | 	* src/autofit/rules.mk (AUTOF_DRV_SRC): Add `ft-hb.c`. | |||
|  | 
 | |||
|  | 2023-02-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix `FT_LOCAL` and `FT_LOCAL_DEF` tags. | |||
|  | 
 | |||
|  | 2023-02-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix 'fall-through' warning messages. | |||
|  | 
 | |||
|  | 	Modern compilers get more insistent on that... | |||
|  | 
 | |||
|  | 	* include/freetype/internal/compiler-macros.h (FALL_THROUGH): Define. | |||
|  | 	* src/*: Use it instead of `/* fall through */` comments. | |||
|  | 
 | |||
|  | 2023-02-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	For debugging, avoid implicit conversion from integer to double. | |||
|  | 
 | |||
|  | 	Otherwise we get zillions of clang 15 warnings. | |||
|  | 
 | |||
|  | 	* src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c, | |||
|  | 	src/base/ftobjs.c, src/base/ftoutln.c, src/cff/cffparse.c, | |||
|  | 	src/raster/ftraster.c, src/sfnt/pngshim.c, src/truetype/ttgload.c, | |||
|  | 	src/truetype/ttgxvar.c, src/truetype/ttobjs.c, src/type1/t1gload.c: Use | |||
|  | 	`double` cast in debugging and tracing macros. | |||
|  | 
 | |||
|  | 2023-02-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Avoid reserved identifiers that are globally defined. | |||
|  | 
 | |||
|  | 	This is mandated by the C99 standard, and clang 15 produces zillions of | |||
|  | 	warnings otherwise. | |||
|  | 
 | |||
|  | 	* devel/ftoption.h, include/freetype/config/ftoption.h, | |||
|  | 	include/freetype/internal/ftmemory.h, src/autofit/afhints.h, | |||
|  | 	src/autofit/afmodule.c, src/autofit/aftypes.h, src/base/ftadvanc.c, | |||
|  | 	src/base/ftdbgmem.c, src/base/ftstream.c, src/bdf/bdflib.c, | |||
|  | 	src/truetype/ttinterp.c: Replace identifiers of the form `_foo` with `foo_`. | |||
|  | 
 | |||
|  | 2023-02-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix minor clang and clang++ warnings. | |||
|  | 
 | |||
|  | 2023-02-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype, type1] Additional variation tags. | |||
|  | 
 | |||
|  | 	Sync with | |||
|  | 	  https://learn.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg#registered-axis-tags | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.h (TTAG_ital): New tag. | |||
|  | 	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Use it. | |||
|  | 	* src/type1/t1load.c (T1_Get_MM_Var): Handle 'slnt' and 'ital'. | |||
|  | 
 | |||
|  | 2023-02-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftsynth.c (FT_GlyphSlot_Slant): Add vertical slant. | |||
|  | 	* include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Update it. | |||
|  | 
 | |||
|  | 2023-02-08  anuj  <95867901+anuj99@users.noreply.github.com> | |||
|  | 
 | |||
|  | 	[sdf] Use 32-bit integers internally. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdfcommon.h (FT_16D16, FT_26D6): Use 32-bit integers | |||
|  | 	  instead of `FT_Fixed` for internal data types. `FT_Fixed` i.e. | |||
|  | 	  `signed long` is 64-bit on some architectures. | |||
|  | 
 | |||
|  | 2023-02-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	docs/CHANGES: Updated. | |||
|  | 
 | |||
|  | 2023-02-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Comment on optional ascender and descender. | |||
|  | 
 | |||
|  | 2023-02-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/type1/t1afm.c (T1_Read_Metrics): Reaffirm ascender and descender. | |||
|  | 
 | |||
|  | 2023-02-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/type1/t1afm.c (T1_Read_Metrics): Validate ascender and descender. | |||
|  | 
 | |||
|  | 	The ascender and descender are optional in the AFM specifications. | |||
|  | 	They could be omitted or even set to zero, e.g., in the current release | |||
|  | 	of URW++ base 35 fonts. | |||
|  | 
 | |||
|  | 2023-02-02  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/cff/cffgload.c (cff_slot_load): Avoid memory leak. | |||
|  | 
 | |||
|  | 	Fixes issue #1204. | |||
|  | 
 | |||
|  | 2023-02-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_var_get_item_delta): Check `face->blend`. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=55581 | |||
|  | 
 | |||
|  | 2023-02-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* docs/CHANGES: Add news for 'freetype-demos'. | |||
|  | 
 | |||
|  | 2023-01-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* subprojects/harfbuzz.wrap, subprojects/libpng.wrap: Updated. | |||
|  | 
 | |||
|  | 2023-01-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor changes. | |||
|  | 
 | |||
|  | 	Comment fixes, typos, removing of unnecessary parentheses. | |||
|  | 
 | |||
|  | 2023-01-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Whitespace. | |||
|  | 
 | |||
|  | 2023-01-27  Behdad Esfahbod  <behdad@behdad.org> | |||
|  | 
 | |||
|  | 	[ttgxvar] Fix crash in COLRv1. | |||
|  | 
 | |||
|  | 	This is a stopgap until issue #1202 is properly fixed. | |||
|  | 
 | |||
|  | 	* src/truetype/ttxgvar.c (tt_var_get_item_delta): Check `normalizedcoords`. | |||
|  | 
 | |||
|  | 2023-01-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	The 'COLR' v1 API will no longer be experimental in the next release. | |||
|  | 
 | |||
|  | 2023-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* docs/oldlogs/ChangeLog.210: Typos. | |||
|  | 
 | |||
|  | 2023-01-18  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Fix typo. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Request module 't1cid', | |||
|  | 	not 'cid'. | |||
|  | 
 | |||
|  | 2023-01-18  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Return error if requested driver is not found. | |||
|  | 
 | |||
|  | 	In `open_face_from_buffer` it is possible that a driver is requested but | |||
|  | 	FreeType was built without the requested module.  Return an error in this | |||
|  | 	case to indicate that the request could not be satisfied, rather than trying | |||
|  | 	all existing driver modules. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (open_face_from_buffer): Return `FT_Err_Missing_Module` | |||
|  | 	if a driver is specified but not found. | |||
|  | 
 | |||
|  | 2023-01-18  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Avoid nullptr dereference in reading malformed 'COLR' v1 table. | |||
|  | 
 | |||
|  | 	Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1408044. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_load_colr): When the 'COLR' v1 table header is | |||
|  | 	too small, don't deallocate delta set index map structures. | |||
|  | 
 | |||
|  | 2023-01-17  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/tools/update-copyright: Allow execution from other repositories. | |||
|  | 
 | |||
|  | 	We use this for `freetype-demos`. | |||
|  | 
 | |||
|  | 2023-01-17  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Update all copyright notices. | |||
|  | 
 | |||
|  | 2023-01-17  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/tools/no-copyright: Updated. | |||
|  | 
 | |||
|  | 2023-01-17  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] 'close' callback may not use `stream->memory`. | |||
|  | 
 | |||
|  | 	The documentation for `FT_StreamRec::memory` states that it 'shouldn't be | |||
|  | 	touched by stream implementations'.  This is true even for internal | |||
|  | 	implementations of the 'close' callback, since it is not guaranteed that | |||
|  | 	`memory` will even be set when the 'close' callback occurs. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (new_memory_stream): stash current `memory` in | |||
|  | 	`stream->descriptor`. | |||
|  | 	(memory_stream_close): Use it. | |||
|  | 
 | |||
|  | 2023-01-17  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Always close user-provided stream. | |||
|  | 
 | |||
|  | 	The `FT_Open_Face` documentation states | |||
|  | 
 | |||
|  | 	> If `FT_OPEN_STREAM` is set in `args->flags`, the stream in `args->stream` | |||
|  | 	> is automatically closed before this function returns any error (including | |||
|  | 	> `FT_Err_Invalid_Argument`). | |||
|  | 
 | |||
|  | 	However, if the user provides a stream in `args.stream` with | |||
|  | 	`FT_OPEN_STREAM` set and a `close` function, but then for some reason passes | |||
|  | 	NULL for `aface` and a non-negative `face_index`, the error | |||
|  | 	`Invalid_Argument` is returned but the `close` callback will not be called | |||
|  | 	on the user-provided stream.  This may cause resource leaks if the caller is | |||
|  | 	depending on the `close` callback to free resources. | |||
|  | 
 | |||
|  | 	The difficulty is that a user may fill out a `FT_StreamRec` and pass its | |||
|  | 	address as `args.stream`, but the stream isn't really 'live' until | |||
|  | 	`FT_Stream_New` is called on it (and `memory` is set).  In particular, it | |||
|  | 	cannot really be cleaned up properly in `ft_open_face_internal` until the | |||
|  | 	stream pointer has been copied into the `stream` local variable. | |||
|  | 
 | |||
|  | 	* src/base/ftobj.c (ft_open_face_internal): Ensure that user-provided | |||
|  | 	`args.stream.close` is called even with early errors. | |||
|  | 
 | |||
|  | 2023-01-17  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Fix leak of internal stream marked external. | |||
|  | 
 | |||
|  | 	`open_face_from_buffer` allocates a new `FT_Stream` to pass to | |||
|  | 	`ft_open_face_internal`.  Because this is an `FT_OPEN_STREAM`, | |||
|  | 	`ft_open_face_internal` will mark this as an 'external stream', which the | |||
|  | 	caller must free.  However, `open_face_from_buffer` cannot directly free it | |||
|  | 	because the stream must last as long as the face.  There is currently an | |||
|  | 	attempt at this by clearing the 'external stream' bit after | |||
|  | 	`open_face_from_buffer` returns successfully.  However, this is too late as | |||
|  | 	the original stream may have already been closed and the stream on the face | |||
|  | 	may not be the same stream as originally passed. | |||
|  | 
 | |||
|  | 	It is tempting to use `FT_OPEN_MEMORY` and let `ft_open_face_internal` | |||
|  | 	create the stream internally.  However, with this method there is no means | |||
|  | 	to pass through a 'close' function to the created stream to free the | |||
|  | 	underlying data, which must be owned by the stream. | |||
|  | 
 | |||
|  | 	A possibility is to check on success if the stream of the face is the same | |||
|  | 	as the original stream.  If it is then unset the external flag.  If not, | |||
|  | 	then free the original stream.  Unfortunately, while no current | |||
|  | 	implementation does so, it is possible that the face still has the original | |||
|  | 	stream somewhere other than as the `FT_FaceRec::stream`.  The stream needs | |||
|  | 	to remain available for the life of the face or until it is closed, | |||
|  | 	whichever comes earlier. | |||
|  | 
 | |||
|  | 	The approach taken here is to let the stream own itself.  When the stream is | |||
|  | 	closed it will free itself. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (memory_stream_close): Free `stream`. | |||
|  | 	(open_face_from_buffer): Simplify error handling, since | |||
|  | 	`ft_open_face_internal` always closes `args.stream` on any error. | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54930 | |||
|  | 
 | |||
|  | 2023-01-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	sr/*.c: Various minor fixes. | |||
|  | 
 | |||
|  | 	* src/autofit/ft-hb.c (_hb_ft_reference_table): Call `FT_UNUSED` after | |||
|  | 	variable declarations. | |||
|  | 
 | |||
|  | 	* src/gxvalid/gxvjust.c (gxv_just_widthDeltaClusters_validate): Eliminate | |||
|  | 	unused variable. | |||
|  | 
 | |||
|  | 	* src/gzip/ftgzip.c: Don't call GCC '-Wstrict-prototypes' pragma for C++ | |||
|  | 	compiler. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (ENSURE_READ_BYTES): Remove final semicolon to avoid | |||
|  | 	compiler warning. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsvg.c (tt_face_load_svg_doc): Fix signedness warning. | |||
|  | 
 | |||
|  | 2023-01-16  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Remove temporary runtime flag for variable 'COLR' v1. | |||
|  | 
 | |||
|  | 	Fixes #1187. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (top level, read_paint, tt_face_load_colr, | |||
|  | 	tt_face_free_colr, get_deltas_for_var_index_base, | |||
|  | 	tt_face_get_color_glyph_clipbox, tt_face_get_colorline_stops): Remove macro | |||
|  | 	definition `VARIABLE_COLRV1_ENABLED` and its usage. | |||
|  | 
 | |||
|  | 	* src/truetype/ttdriver.c (tt_property_set): Remove parsing of | |||
|  | 	'TEMPORARY-enable-variable-colrv1' property name. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.h (TT_DriverRec): Remove `enable_variable_colrv1` | |||
|  | 	flag. | |||
|  | 
 | |||
|  | 2023-01-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/autofit/ft-hb.c (_hb_ft_reference_table): Minor integration fixes. | |||
|  | 
 | |||
|  | 2023-01-07  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Reset cvt and storage in context load. | |||
|  | 
 | |||
|  | 	Currently the cvt and storage are saved and restored in `TT_RunIns`. | |||
|  | 	However, this is too granular as the cvt and storage area should be set to | |||
|  | 	the original cvt and storage area only when setting up the hinting context. | |||
|  | 	This allows for the cvt and storage area to be modified while parsing | |||
|  | 	multiple glyphs, as is the case with composite glyphs. | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.h (TT_ExecContextRec): Remove `origCvt` and | |||
|  | 	`origStorage`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.c (TT_RunIns): Don't save and restore the cvt and | |||
|  | 	storage area. | |||
|  | 	(Modify_CVT_Check, Ins_WS): Switch from "if in glyph and using original data | |||
|  | 	do copy on write" to "if in glyph and not using glyph specific data do copy | |||
|  | 	on write". | |||
|  | 
 | |||
|  | 2023-01-06  Matthias Clasen  <mclasen@redhat.com> | |||
|  | 
 | |||
|  | 	[autofit] Don't depend on 'hb-ft'. | |||
|  | 
 | |||
|  | 	The circular dependency is still there, but at least we no longer depend on | |||
|  | 	the HarfBuzz API that is only present if HarfBuzz has been built with | |||
|  | 	FreeType support, making the bootstrapping a bit easier. | |||
|  | 
 | |||
|  | 	* src/autofit/ft-hb.c, src/autofit/ft-hb.h: New files, providing | |||
|  | 	`_hb_ft_font_create`, which is more or less a verbatim copy of the | |||
|  | 	corresponding HarfBuzz code from file `hb-ft.cc`. | |||
|  | 
 | |||
|  | 	* src/autofit/afglobal.c (af_face_globals_new): Use it. | |||
|  | 	* src/autofit/afshaper.h: Don't include `hb-ft.h` but `ft-hb.h`. | |||
|  | 	* src/autofit/autofit.c: Include `ft-hb.c`. | |||
|  | 
 | |||
|  | 	* LICENSE.TXT: Updated. | |||
|  | 
 | |||
|  | 2023-01-06  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Keep variation store consistent. | |||
|  | 
 | |||
|  | 	`tt_var_load_item_variation_store` fills out a `GX_ItemVarStore`.  While it | |||
|  | 	may return an error, the item store must be left in a consistent state so | |||
|  | 	that any use or destruction of the item store can properly use or free the | |||
|  | 	data in it.  Before this change the counts from the font data were read | |||
|  | 	directly into the item store before the actual allocation of the arrays to | |||
|  | 	which they referred.  There exist many opportunities between the time the | |||
|  | 	counts are read and the arrays are allocated to return early due to invalid | |||
|  | 	data.  When this happened the item store claimed to have entires it actually | |||
|  | 	did not, leading to crashes later when it was used. | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54449 | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Read the counts | |||
|  | 	into local variables and store them in the item store only after the related | |||
|  | 	arrays are actually created on the item store. | |||
|  | 
 | |||
|  | 2023-01-05  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Report used stream's external status. | |||
|  | 
 | |||
|  | 	In `open_face` the initial stream is set on the face, along with the | |||
|  | 	information about if FreeType is the owner of the stream object itself.  The | |||
|  | 	loaders may in the course of their work replace this stream with a new | |||
|  | 	stream (as is the case for 'woff' and 'woff2'), which may have a different | |||
|  | 	ownership than the initial stream object (likely the original stream object | |||
|  | 	is owned by the user and is external, while the new stream object is created | |||
|  | 	internally to FreeType and is internal).  When the stream is replaced, the | |||
|  | 	face's flags are updated with the new ownership status. | |||
|  | 
 | |||
|  | 	However, `open_face` cannot itself free this stream as its caller | |||
|  | 	`ft_open_face_internal` is responsible for this.  In addition, in the case | |||
|  | 	of an error `open_face` cannot return an actual face with the new stream and | |||
|  | 	its ownership status to the caller.  As a result, it must pass this | |||
|  | 	information back to the caller as a sort of "failed face" so that the caller | |||
|  | 	can clean up. | |||
|  | 
 | |||
|  | 	`open_face` was already passing back the new stream but was not passing back | |||
|  | 	the stream ownership information.  As a result the stream may not have been | |||
|  | 	free'd when needed. | |||
|  | 
 | |||
|  | 	Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54700 | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (open_face): Pass back the ownership information as | |||
|  | 	well. | |||
|  | 	(ft_open_face_internal): Updated. | |||
|  | 
 | |||
|  | 2023-01-05  Noah Cabral  <cnoah1705@gmail.com> | |||
|  | 
 | |||
|  | 	fix spelling err in LICENSE.txt | |||
|  | 
 | |||
|  | 2023-01-05  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Fix color stop bounds check calculation at table end. | |||
|  | 
 | |||
|  | 	Fixes https://bugs.chromium.org/p/skia/issues/detail?id=14021 | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (VAR_IDX_BASE_SIZE): New macro. | |||
|  | 	(tt_face_get_colorline_stops): Fix off-by-one bounds check calculation, take | |||
|  | 	`VarColorStop` into account, and hopefully make it easier to read. | |||
|  | 
 | |||
|  | 2023-01-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Request_Metrics): Avoid division by zero. | |||
|  | 
 | |||
|  | 	The division-by-zero might happen in broken fonts (see #1194). | |||
|  | 	Instead of returning a huge number from FT_DivFix and failing | |||
|  | 	to scale later, we now bail immediately. | |||
|  | 
 | |||
|  | 2022-12-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[psaux] Delay the upem validity assertion. | |||
|  | 	 | |||
|  | 	Fixes #1194. | |||
|  | 	 | |||
|  | 	* src/psaux/psft.c (cf2_getUnitsPerEm): Remove the upem assert. | |||
|  | 	(cf2_checkTransform): Assert the upem validity after checking the scale. | |||
|  | 
 | |||
|  | 2022-12-14  David Vanderson  <david.vanderson@gmail.com> | |||
|  | 	    Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[gzip] Make static compilation not leak global symbols. | |||
|  | 
 | |||
|  | 	* src/gzip/ftgzip.c (HAVE_HIDDEN): Do not define; it is no longer needed | |||
|  | 	because everything is static. | |||
|  | 	(HAVE_MEMCPY): Define. | |||
|  | 	(zcalloc, zcfree): Remove no longer needed definitions (because `Z_SOLO` is | |||
|  | 	active). | |||
|  | 
 | |||
|  | 	* src/gzip/patches/freetype-zlib.diff: Regenerated. | |||
|  | 
 | |||
|  | 	Fixes #1146. | |||
|  | 
 | |||
|  | 2022-12-14  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/gzip/ftzconf.h: Updated to zlib 1.2.13. | |||
|  | 
 | |||
|  | 	I forgot to copy that file. | |||
|  | 
 | |||
|  | 2022-12-14  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw: Don't check for `memcpy` and `memmove`. | |||
|  | 
 | |||
|  | 	We expect a C99 compiler, and both functions are part of this standard. | |||
|  | 
 | |||
|  | 2022-12-13  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sdf, sfnt] Handle minor compiler warnings. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (get_min_distance_conic): Initialize `nearest_point`. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsvg.c (find_doc): Initialize `mid_doc`. | |||
|  | 
 | |||
|  | 	Fixes #1195. | |||
|  | 
 | |||
|  | 2022-12-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* subprojects/zlib.wrap: Micro-update from upstream. | |||
|  | 
 | |||
|  | 2022-12-06  Jiří Malák  <malak.jiri@gmail.com> | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftcalc.h (FT_MSB): Support Open Watcom 2.0. | |||
|  | 
 | |||
|  | 	Closes !232. | |||
|  | 
 | |||
|  | 2022-11-23  Luca Bacci  <luca.bacci982@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftdbgmem.c (ft_mem_source_compare): Add FT_COMPARE_DEF. | |||
|  | 
 | |||
|  | 	Closes !230. | |||
|  | 
 | |||
|  | 2022-11-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/autofit/afloader.c (af_loader_load_glyph): Remove `size` check. | |||
|  | 
 | |||
|  | 	This is done by `FT_Load_Glyph`. | |||
|  | 
 | |||
|  | 2022-11-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Comments added. | |||
|  | 
 | |||
|  | 2022-11-16  Johan Matsson  <mjunix@ at github> | |||
|  | 
 | |||
|  | 	* src/autofit/afloader.c (af_loader_load_glyph): Fix dereference. | |||
|  | 
 | |||
|  | 	This must happen after the NULL check. | |||
|  | 
 | |||
|  | 	Taken from | |||
|  | 
 | |||
|  | 	  https://github.com/freetype/freetype/pull/2 | |||
|  | 
 | |||
|  | 2022-11-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/pcf/pcfutil.c ({Two,Four}ByteSwap): Use builtins or shifts. | |||
|  | 
 | |||
|  | 	We trust glibc which uses shifts or builtins to swap bytes.  This | |||
|  | 	must be more efficient. | |||
|  | 
 | |||
|  | 2022-11-14  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Integer overflow. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50462 | |||
|  | 
 | |||
|  | 2022-11-14  Loïc Yhuel  <loic.yhuel@softathome.com> | |||
|  | 
 | |||
|  | 	[meson] Use generated ftmodule.h | |||
|  | 
 | |||
|  | 	ftmodule.h is generated at the root of the build directory, but FT_CONFIG_MODULES_H | |||
|  | 	(freetype/config/ftmodule.h) is used instead. | |||
|  | 	This makes the build fail when disabling modules in modules.cfg. | |||
|  | 
 | |||
|  | 	* meson.build (harfbuzz_dep): Add '-DFT_CONFIG_MODULES_H=<ftmodule.h>'. | |||
|  | 
 | |||
|  | 2022-11-14  Loïc Yhuel  <loic.yhuel@softathome.com> | |||
|  | 
 | |||
|  | 	[meson] Fix generated ftmodule.h | |||
|  | 
 | |||
|  | 	The sdf module wasn't recognized, so the generated ftmodule.h had "None_renderer_class". | |||
|  | 
 | |||
|  | 	* builds/meson/parse_modules_cfg.py: Handle sdf in RASTER_MODULES. | |||
|  | 
 | |||
|  | 2022-11-12  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	Add `TT_CONFIG_OPTION_NO_BORING_EXPANSION` configuration macro. | |||
|  | 
 | |||
|  | 	This gives users a possibility to deactivate new features not (yet) in the | |||
|  | 	OpenType standard. | |||
|  | 
 | |||
|  | 	* include/freetype/config/ftoption.h, devel/ftoption.h | |||
|  | 	(TT_CONFIG_OPTION_NO_BORING_EXPANSION): New macro. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_load_avar): Use it to disable 'avar' | |||
|  | 	version 2.0 support. | |||
|  | 
 | |||
|  | 2022-11-12  Behdad Esfahbod  <behdad@behdad.org> | |||
|  | 
 | |||
|  | 	[truetype] Improve bounds checks for `ItemVariationStore`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Move bounds check ... | |||
|  | 	(tt_var_get_item_delta): ...  to this function, because it is safer.  For | |||
|  | 	example, the 'avar' table 2.0 codepath was not performing a bounds check at | |||
|  | 	all. | |||
|  | 
 | |||
|  | 2022-11-12  Behdad Esfahbod  <behdad@behdad.org> | |||
|  | 
 | |||
|  | 	[truetype] In `ItemVariationStore`, value 0xFFFF for `dataCount` is valid. | |||
|  | 
 | |||
|  | 	It corresponds to outer indices of 0 to 0xFFFE. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Remove invalid | |||
|  | 	code. | |||
|  | 
 | |||
|  | 2022-11-11  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pcf] Improve CMap efficiency and readability. | |||
|  | 
 | |||
|  | 	* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Check and walk | |||
|  | 	the encoding array indexes. | |||
|  | 
 | |||
|  | 2022-11-10  Sam James  <sam@gentoo.org> | |||
|  | 
 | |||
|  | 	Fix `-Wstrict-prototypes`. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw: Fix `-Wstrict-prototypes`. | |||
|  | 	Clang 16 warns on these and they will be dropped in C23. | |||
|  | 
 | |||
|  | 	* builds/unix/freetype2.m4: Ditto. | |||
|  | 
 | |||
|  | 2022-11-09  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Check avar_segment before access | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_done_blend): check `avar_segment` before | |||
|  | 	accessing to free its `correspondence`. | |||
|  | 
 | |||
|  | 	Reported as: | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53062 | |||
|  | 
 | |||
|  | 2022-11-09  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Restore behavior of ft_var_load_hvvar | |||
|  | 
 | |||
|  | 	* src/truetype/ttgcvar.c (ft_var_load_hvvar): restore previous behavior | |||
|  | 
 | |||
|  | 	In a previous change [0] the behavior of `ft_var_load_hvvar` was changed | |||
|  | 	to not load the item variation store if it was at offset 0, but not | |||
|  | 	return an error when this happened. This broke any users, like | |||
|  | 	`tt_hvadvance_adjust`, that rely on successful completion of | |||
|  | 	`ft_var_load_hvvar` to imply that returned table's `itemStore` had been | |||
|  | 	initialized. This lead such users to dereference NULL. | |||
|  | 
 | |||
|  | 	This change appears to have been unintentional and unrelated to the | |||
|  | 	actual avar2 changes. As a result, fix these NULL dereferences by | |||
|  | 	restoring the code to always attempt to initialize the `itemStore`. | |||
|  | 
 | |||
|  | 	[0] ae4eb996 "[truetype] Add support for `avar` table 2.0 format." | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53061 | |||
|  | 
 | |||
|  | 2022-11-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	docs/CHANGES: Updated. | |||
|  | 
 | |||
|  | 2022-11-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[build] use AC_CHECK_PROG() macro for libpng-config detection | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw: use AC_CHECK_PROG() instead of `which` to find `libpng-config`. | |||
|  | 
 | |||
|  | 2022-11-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[build] fix for make multi | |||
|  | 
 | |||
|  | 	Fix "make multi" by MR !223 | |||
|  | 
 | |||
|  | 	* include/freetype/internal/services/svmm.h: include ftmm.h to define FT_Get_MM_Func. | |||
|  | 	* src/truetype/ttgxvar.h: include ftmmtypes.h to use GX_AVarTable properly. | |||
|  | 	* src/base/ftmac.c: include ftdebug.h to use FT_THROW() properly. | |||
|  | 
 | |||
|  | 2022-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search. | |||
|  | 
 | |||
|  | 	This is mostly for consistency because PFR fonts with bitmap strikes | |||
|  | 	do not seem to exist. | |||
|  | 
 | |||
|  | 2022-11-06  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[bdf, pfr, psnames] Accelarate charmap searches. | |||
|  | 
 | |||
|  | 	The binary searches within charmaps can be accelerated because they | |||
|  | 	often contain dense continuous blocks of character codes. Within such | |||
|  | 	blocks, you can predict matches based on misses.  This method has been | |||
|  | 	deployed in `bdf` since 0f122fef34; we only refactor it there.  We now | |||
|  | 	use it in `pfr` and `psnames`, which speeds up the unicode charmap | |||
|  | 	access by about 50% in PFR and Type 1 fonts. | |||
|  | 
 | |||
|  | 	* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Refactor. | |||
|  | 	* src/pfr/pfrcmap.c (pfr_cmap_char_{index,next}): Predict `mid` based | |||
|  | 	on the mismatch distance. | |||
|  | 	* src/psnames/psmodule.c (ps_unicodes_char_{index,next}): Ditto. | |||
|  | 
 | |||
|  | 2022-11-04  Behdad Esfahbod  <behdad@behdad.org> | |||
|  | 
 | |||
|  | 	[truetype] Add support for `avar` table 2.0 format. | |||
|  | 
 | |||
|  | 	See | |||
|  | 
 | |||
|  | 	  https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md | |||
|  | 
 | |||
|  | 	for the specification. | |||
|  | 
 | |||
|  | 	Currently, this is implemented only in most recent OS versions on Apple | |||
|  | 	platforms and in the HarfBuzz library, but it is expected to be added to the | |||
|  | 	OpenType standard soon. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.h (GX_AVarTableRec): New structure. | |||
|  | 	(GX_BlendRec): Use it to replace `avar_segment` with `avar_table`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_load_avar): Load new table version. | |||
|  | 	(ft_var_to_normalized, tt_done_blend): Extend for new format. | |||
|  | 	(ft_var_load_hvvar, ft_var_to_design): Updated. | |||
|  | 
 | |||
|  | 2022-10-24  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Replace '1/64th' (and similar entries) with '1/64' in docs and comments. | |||
|  | 
 | |||
|  | 2022-10-24  Ivan Panchenko  <ivanpan3@gmail.com> | |||
|  | 
 | |||
|  | 	* include/freetype/*: Fix documentation typos. | |||
|  | 
 | |||
|  | 2022-10-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c: Cosmetic changes. | |||
|  | 
 | |||
|  | 2022-10-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cff, truetype] Simplify SVG metrics scaling. | |||
|  | 
 | |||
|  | 	Use pre-calculated scaling factors. Also, the advance widths used | |||
|  | 	to be rounded, which was incorrect. | |||
|  | 
 | |||
|  | 	* src/cff/cffgload.c (cff_slot_load): Use `x_scale` and `y_scale`. | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Glyph): Ditto. | |||
|  | 
 | |||
|  | 2022-10-20  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* subprojects/zlib.wrap: Update to zlib version 1.2.13. | |||
|  | 
 | |||
|  | 2022-10-18  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Additional bounds checks for `COLR` v1 table handling. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): Add `colr` argument, necessary for... | |||
|  | 	... another use of `ENSURE_READ_BYTES`. | |||
|  | 	Update callers. | |||
|  | 	(tt_face_get_paint_layers): Ensure that the 4-byte paint table | |||
|  | 	offset can be read. | |||
|  | 
 | |||
|  | 	This is a follow-up to !124 and issue | |||
|  | 	https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 | |||
|  | 
 | |||
|  | 2022-10-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[gzip] Update sources to zlib 1.2.13. | |||
|  | 
 | |||
|  | 2022-10-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Simplify calculations. | |||
|  | 
 | |||
|  | 2022-10-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor formatting. | |||
|  | 
 | |||
|  | 2022-10-18  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Guard individual `COLR` v1 paint field reads. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (ENSURE_READ_BYTES): New macro. | |||
|  | 	(read_paint): Use it – after the start pointer `p` has been checked for | |||
|  | 	whether it allows reading the format byte, each successive paint table field | |||
|  | 	read need to be bounds-checked before reading further values. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 | |||
|  | 
 | |||
|  | 2022-10-17  Xiang Xiao  <xiaoxiang@xiaomi.com> | |||
|  | 
 | |||
|  | 	* builds/toplevel.mk: Prefix all paths with `$(TOP_DIR)/`. | |||
|  | 
 | |||
|  | 	This is useful for builds that are not started from the root directory. | |||
|  | 
 | |||
|  | 2022-10-17  Liu Kunpeng(柳鲲鹏)  <liukunpeng@ts-it.cn> | |||
|  | 
 | |||
|  | 	* src/base/ftsynth.c (FT_GlyphSlot_Slant): New API with custom slant. | |||
|  | 	* include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Declare it. | |||
|  | 
 | |||
|  | 2022-10-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Note the lack of floating-point data types. | |||
|  | 
 | |||
|  | 2022-10-10  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[cff] Remove `FT_CONFIG_OPTION_NO_GLYPH_NAMES`. | |||
|  | 
 | |||
|  | 	This ancient option stayed completely undocumented.  Given that the 'cff' | |||
|  | 	driver requires the 'psnames' module, it makes no sense today to have this | |||
|  | 	macro. | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_services), src/cff/cffobjs.c (cff_face_init): | |||
|  | 	Remove corresponding conditional code. | |||
|  | 
 | |||
|  | 2022-10-10  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Synchronize `ftoption.h` flavours. | |||
|  | 
 | |||
|  | 2022-10-10  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor comment changes. | |||
|  | 
 | |||
|  | 2022-10-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Improve FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name. | |||
|  | 
 | |||
|  | 2022-10-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[autofit] Reset the face charmap directly. | |||
|  | 
 | |||
|  | 	There is no need to validate the original charmap in `FT_Set_Charmap`. | |||
|  | 	It can be reset directly. | |||
|  | 
 | |||
|  | 	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage): | |||
|  | 	Use direct assignment. | |||
|  | 	* src/autofit/af{latin,cjk,indic}.c (af_latin_metrics_init): Ditto. | |||
|  | 
 | |||
|  | 2022-10-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly. | |||
|  | 
 | |||
|  | 	As with the previous commit, we can avoid the validation checks | |||
|  | 	of `FT_Set_Charmap` and set it directly when choosing from the | |||
|  | 	available list. | |||
|  | 
 | |||
|  | 2022-10-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid `FT_Set_Charmap`. | |||
|  | 	 | |||
|  | 	Set charmap aggressively without all validations of `FT_Set_Charmap` | |||
|  | 	because we take it from the available array and only temporarily. | |||
|  | 	Even CMap Format 14 will gracefully return 0. | |||
|  | 
 | |||
|  | 2022-10-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cache/ftcbasic.c (ftc_basic_family_get_count): Remove redundancy. | |||
|  | 
 | |||
|  | 2022-09-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/psaux/pshints.c (cf2_hintmap_insertHint): Fix midpoint computation. | |||
|  | 
 | |||
|  | 	Replace '(start + end) / 2' with 'start + (end - start) / 2' to avoid | |||
|  | 	overflow. | |||
|  | 
 | |||
|  | 	Fixes #1180. | |||
|  | 
 | |||
|  | 2022-09-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/psaux/pshints.c (cf2_hintmap_build): Improve debugging output. | |||
|  | 
 | |||
|  | 2022-09-29  mlugg  <mlugg@mlugg.co.uk> | |||
|  | 
 | |||
|  | 	[truetype] Fix undefined pointer arithmetic. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_var_get_item_delta, ft_var_load_mvar): Use | |||
|  | 	`FT_OFFSET`. | |||
|  | 
 | |||
|  | 2022-09-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Use lighter FT_DivFix. | |||
|  | 
 | |||
|  | 2022-09-29  Ali Chraghi  <alichraghi@pm.me> | |||
|  | 
 | |||
|  | 	[base] FT_Attach_Stream: Make `parameters` argument constant. | |||
|  | 
 | |||
|  | 2022-09-29  Azamat Hackimov  <azamat.hackimov@gmail.com> | |||
|  | 
 | |||
|  | 	* src/tools/*.py: Migrate to Python 3. | |||
|  | 
 | |||
|  | 	Fixes #1185, closes !205. Formatting changes according to PEP8. | |||
|  | 
 | |||
|  | 2022-09-27  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Guard access in 'COLR' table when requesting child table pointer. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Tighten | |||
|  | 	pointer bounds checks. | |||
|  | 	(get_child_table_pointer): Check whether incoming pointer `p` lies within | |||
|  | 	the 'COLR' table. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51816 | |||
|  | 
 | |||
|  | 2022-09-27  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Add SVG document bounds checking. | |||
|  | 
 | |||
|  | 	Add a check that the document content is actually contained within the | |||
|  | 	`SVG ` table.  Without this check a malformed font may claim arbitrary | |||
|  | 	memory as its document content. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsvg.c (tt_face_load_svg): Take `numEntries` into account when | |||
|  | 	testing 'documentRecord' extents. | |||
|  | 	(find_doc): Rename `stream` to `document_records` for clarity. | |||
|  | 	(tt_face_load_svg_doc): Split `doc` from `doc_list` pointer for clarity. | |||
|  | 	Test that the document content is contained within the table. | |||
|  | 	Ensure minimum length of document before testing for gzip format. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51812 | |||
|  | 
 | |||
|  | 2022-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Clean up the bitmap flow control. | |||
|  | 
 | |||
|  | 	* src/base/ftbitmap.c (FT_Bitmap_Copy): Flip the copy if its pitch | |||
|  | 	is trully opposite, zero is not a positive value. | |||
|  | 	(FT_Bitmap_Convert): Set negative pitch as needed, accept negative | |||
|  | 	alignment values. | |||
|  | 
 | |||
|  | 2022-09-22  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Discard and recreate bitmaps for copying and converting. | |||
|  | 	 | |||
|  | 	Reusing target bitmaps for copying and converting is permitted.  It is, | |||
|  | 	however, pointless to preserve their content before overwriting.  Free- | |||
|  | 	malloc might be faster than realloc. | |||
|  | 	 | |||
|  | 	* src/base/ftbitmap.c (FT_Bitmap_Copy, FT_Bitmap_Convert): Free | |||
|  | 	an old buffer and create a new one. | |||
|  | 
 | |||
|  | 2022-09-16  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	Reject 'COLR' table if version is 1 but header too small. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_load_colr): If the version is determined to | |||
|  | 	be 1, then the table size has to be at least the size of the v1 header. | |||
|  | 	Also, for peeking the number of base glyphs and entries in the layer list, | |||
|  | 	ensure that the table is sufficiently long. | |||
|  | 
 | |||
|  | 	Fixes #1179.  Original patch by Sergey Temnikov. | |||
|  | 
 | |||
|  | 2022-09-15  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix format 1 handling. | |||
|  | 
 | |||
|  | 	Fixes #1181. | |||
|  | 
 | |||
|  | 2022-09-06  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Reject 'fvar' loading when `num_instances` is too small. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Reject retrieving master when | |||
|  | 	'fvar' values locally do not match with sanitized values from initialization | |||
|  | 	at `sfnt_init_face` time. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/chromium/issues/detail?id=1360295 | |||
|  | 
 | |||
|  | 2022-09-05  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Handle variable `COLR` v1 fonts without delta set index map | |||
|  | 
 | |||
|  | 	Fixes #1178. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Set outer index to | |||
|  | 	0 and inner index to the delta index when retrieving deltas if the | |||
|  | 	`COLR` table has no delta set index map. | |||
|  | 
 | |||
|  | 2022-09-05  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Pointer sanity checks before reading layer info in 'COLR' v0 | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Check that the pointer to | |||
|  | 	read from is within the 'COLR' table. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50633 | |||
|  | 
 | |||
|  | 2022-09-05  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[autofit] Minor fix. | |||
|  | 
 | |||
|  | 	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Avoid | |||
|  | 	compiler warning. | |||
|  | 
 | |||
|  | 2022-09-05  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Don't require 'gvar' table to support variation fonts. | |||
|  | 
 | |||
|  | 	Fixes #1172. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Tag font as Multiple Masters font if | |||
|  | 	`fvar` is present; do not require other tables to be present. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_set_mm_blend): Allow for a missing 'gvar' table | |||
|  | 	when setting variation coordinates.  However, if a 'gvar' table is actually | |||
|  | 	present, do perform a sanity check and fail on malformedness. | |||
|  | 	(TT_Get_MM_Var): Don't assume 'fvar' needs 'gvar' or 'CFF2 tables in all | |||
|  | 	cases, which is an overly tight check. | |||
|  | 
 | |||
|  | 2022-08-27  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftver.rc: Explicitly use UTF-16. | |||
|  | 
 | |||
|  | 	Fixes #1177 to avoid mistranslation and other problems. | |||
|  | 
 | |||
|  | 2022-08-26  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Avoid undefined shifts in `COLR` v1 color line retrieval | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_colorline_stops): Disambiguate shift | |||
|  | 	behavior by using multiplication using macros from ftcalc.h. | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50573 | |||
|  | 
 | |||
|  | 2022-08-21  Sean Farrell  <sean.farrell@rioki.org> | |||
|  | 
 | |||
|  | 	CMakeLists.txt (FT_ENABLE_ERROR_STRINGS): New configuration option. | |||
|  | 
 | |||
|  | 	This option uncomments FreeType configuration macro | |||
|  | 	`FT_CONFIG_OPTION_ERROR_STRINGS` to make function `FT_Error_String` return | |||
|  | 	meaningful error strings. | |||
|  | 
 | |||
|  | 	This option is off by default. | |||
|  | 
 | |||
|  | 2022-08-21  Chris Liddell  <chris.liddell@artifex.com> | |||
|  | 
 | |||
|  | 	[base, type1] Better handling of out-of-memory situations. | |||
|  | 
 | |||
|  | 	This follows similar code in `cff_slot_done`. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (ft_glyphslot_done), src/type1/t1objs.c | |||
|  | 	(T1_GlyphSlot_Done): Check `internal` pointer. | |||
|  | 
 | |||
|  | 	The Type1 problems was reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50057. | |||
|  | 
 | |||
|  | 2022-08-06  Tim-Philipp Müller  <tim@centricular.com> | |||
|  | 
 | |||
|  | 	ci: bump windows image and use newer runner and vs2019 | |||
|  | 
 | |||
|  | 	The old 1809 runner will be decommissioned at some point. | |||
|  | 
 | |||
|  | 2022-08-04  @udoudou  <> | |||
|  | 
 | |||
|  | 	* src/cache/ftcmanag.c (FTC_Manager_New): Initialize `cur_weight`. | |||
|  | 
 | |||
|  | 	See !192. | |||
|  | 
 | |||
|  | 2022-08-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c: Trace formatting updates. | |||
|  | 
 | |||
|  | 2022-08-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/psaux/psobjs.c (ps_table_release): Remove redundant casting. | |||
|  | 
 | |||
|  | 2022-08-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Reduce casting. | |||
|  | 
 | |||
|  | 2022-08-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Remove some casts, clean up tracing. | |||
|  | 
 | |||
|  | 	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup): | |||
|  | 	Clean up tracing types. | |||
|  | 	* src/cache/ftccache.c (ftc_node_destroy): Ditto. | |||
|  | 	* src/cache/ftcmanag.c (FTC_Manager_Check): Ditto. | |||
|  | 	(FTC_Manager_Check, FTC_Node_Unref): Remove a cast. | |||
|  | 	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto. | |||
|  | 
 | |||
|  | 2022-08-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[autofit] Updated to reduce casting (cont'd). | |||
|  | 
 | |||
|  | 	* src/autofit/afmodule.h (AF_ModuleRec): Change `default_script` type. | |||
|  | 	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage): | |||
|  | 	Remove casting. | |||
|  | 	* src/autofit/afmodule.c (af_property_{set,get}): Updated accordingly. | |||
|  | 
 | |||
|  | 2022-08-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[autofit] Updated to reduce casting. | |||
|  | 
 | |||
|  | 	* src/autofit/afglobal.h (AF_FaceGlobalsRec): Change `glyph_count` type. | |||
|  | 	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage, | |||
|  | 	af_face_globals_get_metrics, af_face_globals_is_digit, | |||
|  | 	af_face_globals_new): Changed local types and updated accordingly. | |||
|  | 	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Ditto. | |||
|  | 
 | |||
|  | 2022-08-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[psaux] Remove unused structure field. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/psaux.h (PS_TableRec): Remove `num_elems`. | |||
|  | 	* src/psaux/psobjs.c (ps_table_new): Remoove its initialization. | |||
|  | 
 | |||
|  | 2022-07-30  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Implement VarClipBox. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Depending on the | |||
|  | 	format, read `var_index_base`, then retrieve and apply scaled deltas. | |||
|  | 
 | |||
|  | 2022-07-30  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Fix typo in clip box computation. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Use appropriate | |||
|  | 	scale factor for `yMin` and `yMax`. | |||
|  | 
 | |||
|  | 2022-07-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[autofit] Use unsigned accounting for hints. | |||
|  | 
 | |||
|  | 	* src/autofit/afhints.h (AF_AxisHintsRec): Use unsigned types. | |||
|  | 
 | |||
|  | 	* src/autofit/afhints.c (af_axis_hints_new_{segment,edge}, | |||
|  | 	af_glyph_hints_get_num_segments, af_glyph_hints_get_segment_offset): | |||
|  | 	Updated accordingly. | |||
|  | 	* src/autofit/aflatin.c (af_cjk_hints_compute_edges): Ditto. | |||
|  | 	* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Ditto. | |||
|  | 
 | |||
|  | 2022-07-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/autofit/afhints.h: Remove dead code. | |||
|  | 
 | |||
|  | 2022-07-29  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/base/ftglyph.c (FT_Get_Glyph): Set `*aglyph` to NULL in case of error. | |||
|  | 
 | |||
|  | 2022-07-29  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix compilation if `TT_CONFIG_OPTION_GX_VAR_SUPPORT` is not set. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c: Protect relevant code with | |||
|  | 	`TT_CONFIG_OPTION_GX_VAR_SUPPORT`. | |||
|  | 
 | |||
|  | 2022-07-29  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix clang14 compiler warnings. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftstream.h (FT_GET_SHORT_LE, FT_GET_USHORT_LE): | |||
|  | 	Fix type. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Always return boolean | |||
|  | 	value. | |||
|  | 	(tt_face_get_colorline_stops): Fix type of `var_index_base`. | |||
|  | 
 | |||
|  | 2022-07-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pfr] Fortify the kerning code. | |||
|  | 
 | |||
|  | 	Any array index must be strictly less then the array size. Therefore, | |||
|  | 	we must reject indexes that are equal to the array size.  Alternatively, | |||
|  | 	we should move the bounds check before the index decrement but that | |||
|  | 	would be confusing. | |||
|  | 
 | |||
|  | 	In addition, it is ok to decrement zero (.notdef) and get UINT_MAX, | |||
|  | 	which is then automatically rejected in the bounds check. | |||
|  | 
 | |||
|  | 	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix the bounds checking. | |||
|  | 
 | |||
|  | 2022-07-26  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[pfr] Add some safety guards. | |||
|  | 
 | |||
|  | 	* src/pfr/pfrload.c (pfr_phy_font_load): Check resolutions and number of | |||
|  | 	characters. | |||
|  | 
 | |||
|  | 	Fixes #1174. | |||
|  | 
 | |||
|  | 2022-07-26  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/pfr/*.c: Trivial improvements and formatting. | |||
|  | 
 | |||
|  | 2022-07-24  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* configure: s/egrep/grep -E/ | |||
|  | 
 | |||
|  | 	`egrep` is deprecated. | |||
|  | 
 | |||
|  | 2022-07-23  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Build outlines in amortized constant time. | |||
|  | 
 | |||
|  | 	When resizing the loader's points and contours, resize them to at least 1.5 | |||
|  | 	times their current size.  The code currently only reserves as much space as | |||
|  | 	is currently required, leading to O(n^2) runtime when adding points one at a | |||
|  | 	time. | |||
|  | 
 | |||
|  | 	This change does not attempt to ever shrink the loader's point and contour | |||
|  | 	storage since this was not attempted previously either.  The 1.5 multiple | |||
|  | 	was chosen as a trade-off between potentially unused space and the runtime. | |||
|  | 
 | |||
|  | 	* src/base/ftgloader.c (FT_GlyphLoader_CheckPoints): Implement it. | |||
|  | 
 | |||
|  | 	Fixes #1173. | |||
|  | 
 | |||
|  | 2022-07-09  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Support variable 'COLR' v1 `PaintVarSkew*`. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW`, | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_SKEW_CENTER`, and | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW_CENTER`. | |||
|  | 	(read_paint): Handle new enumeration values. | |||
|  | 
 | |||
|  | 2022-07-09  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Support variable 'COLR' v1 `PaintVarRotate*`. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE` and | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE_CENTER`. | |||
|  | 	(read_paint): Handle new enumeration values. | |||
|  | 
 | |||
|  | 2022-07-09  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Support 'COLR' v1 variable `PaintVarScale*`. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c: (FT_PaintFormatInternal): New enumeration values | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE`, | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_CENTER`, | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM`, and | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM_CENTER`. | |||
|  | 	(read_paint): Handle new enumeration values. | |||
|  | 
 | |||
|  | 2022-07-09  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Support for 'COLR' v1 variable translate. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSLATE`. | |||
|  | 	(read_paint): Handle new enumeration value. | |||
|  | 
 | |||
|  | 2022-07-09  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Support for 'COLR' v1 variable transforms. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSFORM`. | |||
|  | 	(read_paint): Handle new enumeration value. | |||
|  | 
 | |||
|  | 2022-07-09  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Deltas for 'COLR' v1 gradient coordinates. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Read and | |||
|  | 	apply deltas to radial, linear, and sweep gradient coordinates such as 'p0', | |||
|  | 	'p1', 'p2', 'center', 'radii', and 'angles'. | |||
|  | 
 | |||
|  | 2022-07-08  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Support variable 'COLR' v1 color lines. | |||
|  | 
 | |||
|  | 	* include/freetype/ftcolor.h (FT_ColorStopIterator): Add field | |||
|  | 	`read_variable` to indicate whether a variation index base should be read. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c: (FT_PaintFormat_Internal): New enumerations | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_LINEAR_GRADIENT` | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_RADIAL_GRADIENT`, and | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SWEEP_GRADIENT`. | |||
|  | 	(read_color_line): New parameter `read_variable`; update callers. | |||
|  | 	(read_paint): Handle new enumerations. | |||
|  | 
 | |||
|  | 2022-07-07  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Apply variation deltas to `PaintVarSolid`. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (FT_PaintFormat_Internal_): New enumeration | |||
|  | 	`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. | |||
|  | 
 | |||
|  | 	(get_deltas_for_var_index_base) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New | |||
|  | 	function to retrieve an array of delta values, which will be used for most | |||
|  | 	of 'COLR' v1 variation formats (in follow-up commits). | |||
|  | 
 | |||
|  | 	(read_paint): Add `face` parameter; update caller. | |||
|  | 	Handle `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. | |||
|  | 
 | |||
|  | 2022-07-07  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Check safety of cast to `TT_Driver` before accessing member. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (VARIABLE_COLRV1_ENABLED): Access | |||
|  | 	`enable_variable_colrv1` only if driver class matches. | |||
|  | 
 | |||
|  | 2022-07-06  Stephen Holdaway  <stecman@gmail.com> | |||
|  | 
 | |||
|  | 	doc: Clarify description of `FT_Stream_IoFunc`. | |||
|  | 
 | |||
|  | 	The existing documentation comments on `FT_Stream_IoFunc` hinted at the dual | |||
|  | 	seek/read behavior required for custom stream implementations to work, but | |||
|  | 	it didn't explicitly explain it.  Without looking at the internals of | |||
|  | 	FreeType, it was easy for someone to assume their implementation should | |||
|  | 	handle both seek and read operations all the time.  If this is done, you get | |||
|  | 	a variety of errors, but mostly just `Unknown_File_Format` (error code | |||
|  | 	0x02). | |||
|  | 
 | |||
|  | 2022-07-04  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Load variation store for 'COLR' v1. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c: Include `ttobjs.h` temporarily. | |||
|  | 	(VARIABLE_COLRV1_ENABLED): New temporary macro to detect whether variable | |||
|  | 	COLRv1 is enabled. | |||
|  | 	(Colr): New fields `var_store` and `delta_set_idx_map`. | |||
|  | 	(tt_face_load_colr, tt_face_free_colr) [VARIABLE_COLRV1_ENABLED]: Load and | |||
|  | 	free variation store data using the functions from the Multiple Masters | |||
|  | 	service. | |||
|  | 
 | |||
|  | 2022-07-03  Chris Liddell  <chris.liddell@artifex.com> | |||
|  | 
 | |||
|  | 	[base] Improve error handling in `FT_GlyphLoader_CheckPoints`. | |||
|  | 
 | |||
|  | 	If `FT_GlyphLoader_CreateExtra` returns an error (and a couple of other | |||
|  | 	places), `FT_GlyphLoader_CheckPoints` would propagate the error immediately, | |||
|  | 	rather than cleaning up the partially set up `FT_GlyphLoader`.  As a | |||
|  | 	consequence, a subsequent attempt to create a glyph could result in a crash. | |||
|  | 
 | |||
|  | 	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Ensure all the error | |||
|  | 	conditions exits are consistent, eventually calling `FT_GlyphLoader_Reset`. | |||
|  | 
 | |||
|  | 2022-07-03  Thomas Sondergaard  <thomas@sondergaard.cc> | |||
|  | 
 | |||
|  | 	CMakeLists.txt: Provide both 'freetype' and 'Freetype::Freetype' targets. | |||
|  | 
 | |||
|  | 	FreeType can be located by consuming projects that use | |||
|  | 	`find_package(Freetype)` either via the old `MODULE` path (which uses | |||
|  | 	`FindFreetype.cmake` supplied by CMake), or via the new `CONFIG` path (which | |||
|  | 	uses `freetype-config.cmake` as supplied by this project).  Up to this point | |||
|  | 	the CMake module has supplied the target `Freetype::Freetype` and the config | |||
|  | 	file provided by this project the target `freetype`.  Now we supply both | |||
|  | 	`freetype` and `Freetype::Freetype` so that consuming projects can always | |||
|  | 	use the target `Freetype::Freetype` regardless of what path was taken by | |||
|  | 	`find_package(Freetype)`. | |||
|  | 
 | |||
|  | 	Fixes #1165. | |||
|  | 
 | |||
|  | 2022-07-02  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	include/freetype/ftmm.h: Improve documentation. | |||
|  | 
 | |||
|  | 2022-07-01  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[base] Round values in `FT_MulAdd_Fix`. | |||
|  | 
 | |||
|  | 	This avoids regressing Blink layout tests and makes `FT_MulAdd_Fix` delta | |||
|  | 	retrieval implementation consistent with the previous implementation, which | |||
|  | 	used `FT_fixedToInt` and included rounding. | |||
|  | 
 | |||
|  | 	* src/base/ftcalc.c (FT_MulAdd_Fix): Implement it. | |||
|  | 	Also fix remaining `temp` initialization compilation issue. | |||
|  | 
 | |||
|  | 	Fixes #1169. | |||
|  | 
 | |||
|  | 2022-07-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor formatting. | |||
|  | 
 | |||
|  | 2022-06-30  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	Fix initialisation of temp variable in new FT_MulAddFix | |||
|  | 
 | |||
|  | 	src/truetype/ttgxvar.c (FT_MulAddFix): Initialise `temp`. | |||
|  | 
 | |||
|  | 2022-06-29  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Perform variation store delta computation with 64-bit precision. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Make type | |||
|  | 	explicitly 32-bit. | |||
|  | 	* include/freetype/internal/services/svmm.h | |||
|  | 	(FT_Var_Get_Item_Delta_Func): Change return type to `FT_ItemVarDelta` | |||
|  | 	* truetype/ttgxvar.h (tt_var_get_item_delta): Change return type to | |||
|  | 	`FT_ItemVarDelta`. | |||
|  | 	* truetype/ttgxvar.c (tt_var_get_item_delta): Store scalars and deltas | |||
|  | 	to intermediate array, perform computation using new method | |||
|  | 	`FT_MulAddFix`. | |||
|  | 
 | |||
|  | 2022-06-29  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	New function `FT_MulAddFix` to compute the sum of fixed-point products. | |||
|  | 
 | |||
|  | 	This function, based on the code of `FT_MulFix`, uses 64-bit precision | |||
|  | 	internally for intermediate computations. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftcalc.h, base/ftcalc.c (FT_MulAddFix): | |||
|  | 	Implement it. | |||
|  | 
 | |||
|  | 2022-06-22  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	CMakeLists.txt: Move inclusion of `FindPkgConfig` down. | |||
|  | 
 | |||
|  | 	It must come after `CMAKE_TOOLCHAIN_FILE`. | |||
|  | 
 | |||
|  | 	Fixes #1167. | |||
|  | 
 | |||
|  | 2022-06-22  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Upgrade stop_offset to FT_Fixed from FT_F2Dot14 | |||
|  | 
 | |||
|  | 2022-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* docs/CHANGES: Announce impending Infinality removal. | |||
|  | 
 | |||
|  | 2022-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* ttgload.c (TT_Process_Composite_Glyph): Fix a signedness warning. | |||
|  | 
 | |||
|  | 2022-06-21  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	s/fixed point/fixed-point/ | |||
|  | 
 | |||
|  | 2022-06-21  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	.gitlab-ci.yml: Correctly upgrade `meson`. | |||
|  | 
 | |||
|  | 2022-06-21  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	Proposal: Feature control for variable COLRv1 | |||
|  | 
 | |||
|  | 	* include/freetype/ftdriver.h (variable-color-v1 property): Add documentation | |||
|  | 	for variable-colr-v1 property. | |||
|  | 	* src/truetype/ttdriver.c (tt_property_set): Ingest variable-control property | |||
|  | 	when called, set to enable_variable_colrv1 driver flag. | |||
|  | 	* src/truetype/ttobjs.h (TT_DriverRec): Add enable_variable_colrv1 flag. | |||
|  | 
 | |||
|  | 2022-06-21  Xavier Claessens  <xavier.claessens@collabora.com> | |||
|  | 
 | |||
|  | 	[meson] Disable FreeType in HarfBuzz fallback. | |||
|  | 
 | |||
|  | 	This avoids cyclic subproject configuration when the 'harfbuzz' feature is | |||
|  | 	enabled, or `--wrap-mode=forcefallback` is used, but HarfBuzz is built as a | |||
|  | 	subproject.  HarfBuzz does the same and disables HarfBuzz support when | |||
|  | 	configuring FreeType as a subproject. | |||
|  | 
 | |||
|  | 	* meson.build (harfbuzz_dep): Implement it. | |||
|  | 
 | |||
|  | 	* subprojects/harfbuzz.wrap: New file. | |||
|  | 
 | |||
|  | 	* .gitlab-ci.yml [windows meson]: Use latest version of the meson 0.59 | |||
|  | 	  series, which has a necessary bug fix to make CI work. | |||
|  | 
 | |||
|  | 2022-06-19  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Clean up phantom point accounting. | |||
|  | 
 | |||
|  | 	This formalizes that the phantom points appended in the outline | |||
|  | 	do not increase its point count, nor are they tagged or included | |||
|  | 	in any additional contours.  Only their coordinates are stored. | |||
|  | 	They are counted in the glyph zone, however. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Infer `n_points` | |||
|  | 	from the outline size plus four phantom points. | |||
|  | 	* src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Remove this | |||
|  | 	argument. | |||
|  | 	* src/truetype/ttgload.c (tt_prepare_zone): Add phantom four. | |||
|  | 	(TT_Process_Simple_Glyph, load_truetype_glyph): Update all callers. | |||
|  | 
 | |||
|  | 2022-06-19  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype/GX] Clean up phantom point adjustment. | |||
|  | 
 | |||
|  | 	This moves phantom point and advance variation adjustment next to | |||
|  | 	calculations. The logic stays the same, HVAR and VVAR take priority. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (load_truetype_glyph): Move it from here... | |||
|  | 	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here | |||
|  | 	and check for HVAR and VVAR presence outside the main loop. | |||
|  | 
 | |||
|  | 2022-06-18  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[stream] Fix reading s32 when long is s64 | |||
|  | 
 | |||
|  | 	`FT_READ_LONG`, `FT_GET_LONG`, and related macros did not return | |||
|  | 	negative values when `long` is more than 32 bits. `FT_Stream_ReadULong` | |||
|  | 	would read four bytes into the LSB of an `FT_ULong` and return that. | |||
|  | 	Since this can never set the MSb of the `FT_ULong` when `FT_ULong` is | |||
|  | 	more than 32 bits the cast to `FT_Long` never resulted in a negative | |||
|  | 	value. | |||
|  | 
 | |||
|  | 	Fix this by modifying `FT_Stream_Read*` to return a type of the same | |||
|  | 	size as the bytes it is reading and changing the `FT_READ_*` and | |||
|  | 	`FT_GET_*` macros to cast to the same type returned by `FT_Stream_Read*` | |||
|  | 	but with the correctly signed type (instead of casting to what is | |||
|  | 	assumed to be the type of `var` which will happen automatically anyway). | |||
|  | 
 | |||
|  | 	There exist a few cases like with the `OFF3` variants where there isn't | |||
|  | 	generally a type with the correct size. `FT_PEEK_OFF3` works around this | |||
|  | 	loading the bytes into the three most significant bits and then doing a | |||
|  | 	signed shift down. `FT_NEXT_OFF3` also already worked correctly by | |||
|  | 	casting this signed value to another signed type. `FT_Stream_GetUOffset` | |||
|  | 	works correctly but one must be careful not to attempt to cast the | |||
|  | 	returned value to a signed type. Fortunately there is only | |||
|  | 	`FT_GET_UOFF3` and no `FT_GET_OFF3`. | |||
|  | 
 | |||
|  | 	All of these cases are handled correctly when reading values through | |||
|  | 	`FT_Stream_ReadFields` since it generically computes the signed value | |||
|  | 	through an `FT_Int32`. This change is essentially doing the same for | |||
|  | 	these macros. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftstream.h (FT_NEXT_*, FT_GET_*, FT_READ*): | |||
|  | 	Update macros and return types to use fixed size types for fixed size | |||
|  | 	values. | |||
|  | 
 | |||
|  | 	* src/base/ftstream.c (FT_StreamGet*, FT_StreamRead*): Dito. | |||
|  | 
 | |||
|  | 	Issue: #1161 | |||
|  | 
 | |||
|  | 2022-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype/GX] Fix an old typo. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Vertical | |||
|  | 	advance is measured along y-coordinate. | |||
|  | 
 | |||
|  | 2022-06-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype/GX] Clean up advance adjustment (Brrr). | |||
|  | 	 | |||
|  | 	* src/truetype/ttgload.c (load_truetype_glyph): Remove remaining code. | |||
|  | 
 | |||
|  | 2022-06-16  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[type1] Directly search for eexec in private dict | |||
|  | 
 | |||
|  | 	This code originally just searched for `eexec`. This was later modified | |||
|  | 	to check that the `eexec` found is valid (not in a string or comment). | |||
|  | 	This was done by searching for `eexec` as before and then, for each | |||
|  | 	`eexec` found, searching from the beginning using the correct parsing to | |||
|  | 	see if the `eexec` was still found. If the private dictionary is large | |||
|  | 	and contains many copies of `eexec` which are not valid, the initial | |||
|  | 	part of the private dictionary is scanned once for each, potentially | |||
|  | 	leading to n^2 parsing time. | |||
|  | 
 | |||
|  | 	Instead of finding an initial `eexec` and then re-parsing to discover if | |||
|  | 	it is valid, drop the initial search for `eexec` and just parse to find | |||
|  | 	a valid `eexec`. This is strictly faster since the validation must | |||
|  | 	happen anyway and avoids restarting from the beginning each time an | |||
|  | 	`eexec` is found in the data. | |||
|  | 
 | |||
|  | 	* src/type1/t1parse.c (T1_Get_Private_Dict): avoid n^2 parsing | |||
|  | 
 | |||
|  | 	Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1328883 | |||
|  | 
 | |||
|  | 2022-06-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype/GX] Clean up advance adjustment. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Process_Simple_Glyph, load_truetype_glyph): | |||
|  | 	Move the advance adjustment from here... | |||
|  | 	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here and | |||
|  | 	simplify arguments. | |||
|  | 	* src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Update prototype | |||
|  | 	with fewer arguments. | |||
|  | 
 | |||
|  | 2022-06-14  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[gzip] Handle inflate returning Z_NEED_DICT | |||
|  | 
 | |||
|  | 	When `inflate` returns `Z_NEED_DICT` this is currently not reported as | |||
|  | 	an error and callers may assume that the decompression succeeded when it | |||
|  | 	did not. In particular, a compressed table in a woff file may not | |||
|  | 	actually be decompressed and written as expected, leaving the backing | |||
|  | 	memory for the expanded table uninitialized. | |||
|  | 
 | |||
|  | 	* src/gzlip/ftgzip.c (FT_Gzip_Uncompress): treat `Z_NEED_DICT` as | |||
|  | 	indicating invalid data since there is no means to provide a dictionary. | |||
|  | 
 | |||
|  | 	Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1335712 | |||
|  | 
 | |||
|  | 2022-06-13  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[woff] Don't allocate table entries until needed | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff.c (woff_open_font): delay allocating space for the | |||
|  | 	table entries until they are actually written out with the data. | |||
|  | 
 | |||
|  | 2022-06-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff2.c (woff2_open_font): Partial revert. | |||
|  | 
 | |||
|  | 	Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47981. | |||
|  | 
 | |||
|  | 2022-06-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Cosmetic macro change. | |||
|  | 
 | |||
|  | 2022-06-11  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[woff, woff2] Avoid buffer zeroing. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff.c (woff_open_font): Use Q-macros. | |||
|  | 	* src/sfnt/sfwoff2.c: Ditto. | |||
|  | 	(reconstruct_font): Allocate table_entry on stack. | |||
|  | 
 | |||
|  | 2022-06-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[smooth] Fix GCC LTO crashes on Windows. | |||
|  | 
 | |||
|  | 	Fixes #1164 by using a volatile variable around `setjmp`.  It is hard to | |||
|  | 	say how this fixes crashes related to certain link-time optimizations. | |||
|  | 	This does not decrease the rendering performance. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (gray_convert_glyph_inner): Use volatile `error`. | |||
|  | 
 | |||
|  | 2022-06-09  bruvzg  <@bruvzg> | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c [FT_STATIC_RASTER]: Fix compilation. | |||
|  | 
 | |||
|  | 2022-06-06  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[svg] Set linear advances when loading SVG glyphs | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FT_GlyphSlotRec_): update doc | |||
|  | 	* src/cff/cffgload.c (cff_slot_load): do it | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Glyph): do it | |||
|  | 
 | |||
|  | 	Fixes: #1156 | |||
|  | 
 | |||
|  | 2022-06-01  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[svg] Clear correct flags for doc ownership | |||
|  | 
 | |||
|  | 	This issue was discovered with an SVG based font with some documents | |||
|  | 	compressed and other uncompressed. After loading the first compressed | |||
|  | 	document the ownership flag on the glyph slot was set to true but never | |||
|  | 	set to false. As a result after loading a compressed document a glyph | |||
|  | 	from an uncompressed document would load fine, but when this glyph slot | |||
|  | 	was cleared it would try to free its document resulting in a wild free. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (ft_glyphslot_clear): clear correct flags | |||
|  | 
 | |||
|  | 	Fixes: #1162 | |||
|  | 
 | |||
|  | 2022-06-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[docs] Correct favicon. | |||
|  | 
 | |||
|  | 2022-06-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[docs] Use hinted favicon. | |||
|  | 
 | |||
|  | 2022-05-27  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[docs] Update favicon. | |||
|  | 
 | |||
|  | 2022-05-25  Behdad Esfahbod (بهداد اسفهبد)  <behdad@behdad.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttmtx.c (tt_face_get_metrics): Apply variations unconditionally. | |||
|  | 
 | |||
|  | 	This causes a speed-up of approx. 20% for getting advance widths. | |||
|  | 
 | |||
|  | 2022-05-23  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Support reading 32bit/16bit VarStore deltas | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Define type | |||
|  | 	to be used for delta arrays, upgrade to FT_long. | |||
|  | 	* src/truetype/ttgxvar.c: Adhere to long_words bit and read either | |||
|  | 	Short/Byte pairs or Long/Short pairs, as defined by spec. For better | |||
|  | 	readability, define macro for repetitive read code. | |||
|  | 
 | |||
|  | 2022-05-20  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Handle 0xFFFF special value inside delta retrieval function | |||
|  | 
 | |||
|  | 	* truetype/ttgxvar.c (tt_hvadvance_adjust, tt_apply_mvar, | |||
|  | 	tt_var_get_item_delta): Remove special 0xFFFF handling in favor of less | |||
|  | 	redundant handling inside the tt_var_get_item_delta function, as it is | |||
|  | 	equivalent to returning a 0 delta. Avoids code-duplication checking for | |||
|  | 	special value 0xFFFF. | |||
|  | 
 | |||
|  | 2022-05-19  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype, snft] Add service methods for `DeltaSetIdxMap` and `VarStore`. | |||
|  | 
 | |||
|  | 	This will be needed for 'COLR' v1 variation support. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.h (GX_ItemVarData, GX_AxisCoords, GX_VarRegion, | |||
|  | 	GX_VarItemStore, GX_DeltaSetIdxMap): Move structures to... | |||
|  | 	* include/freetype/internal/ftmmtypes.h: ... this new file. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/service/svmm.h (MultiMasters): Include | |||
|  | 	`ftmmtypes.h`. | |||
|  | 	(FT_Var_Load_Delta_Set_Idx_Map_Func, FT_Var_Load_Item_Var_Store_Func, | |||
|  | 	FT_Var_Get_Item_Delta_Func, FT_Var_Done_Item_Var_Store_Func, | |||
|  | 	FT_Var_Done_Delta_Set_Idx_Map_Func): New function typedefs. | |||
|  | 	(MultiMasters): Add them. | |||
|  | 	(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_load_item_variation_store, | |||
|  | 	cff_load_delta_set_index_mapping, cff_get_item_delta, | |||
|  | 	cff_done_item_variation_store, cff_done_delta_set_index_map): New wrapper | |||
|  | 	methods calling into mm service. | |||
|  | 	(cff_service_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_load_item_variation_store, | |||
|  | 	ft_var_load_delta_set_index_mapping, ft_var_get_item_delta, | |||
|  | 	ft_var_done_item_variation_store, ft_var_done_delta_set_index_map): Renamed | |||
|  | 	to ... | |||
|  | 	(tt_var_load_item_variation_store, tt_var_load_delta_set_index_mapping, | |||
|  | 	tt_var_get_item_delta, tt_var_done_item_variation_store, | |||
|  | 	tt_var_done_delta_set_index_map): ... this for consistency. | |||
|  | 	Mark them as non-static. | |||
|  | 	* src/truetype/ttgxvar.h: Add corresponding prototypes. | |||
|  | 
 | |||
|  | 	* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. | |||
|  | 
 | |||
|  | 	* src/type1/t1driver.c (t1_service_multi_masters): Updated. | |||
|  | 
 | |||
|  | 2022-05-19  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Move deallocation of `DeltaSetIdxMap` into own function. | |||
|  | 
 | |||
|  | 	This is a preparation for handling `DeltaSetIdxMap` and `VarStore` as a | |||
|  | 	FreeType service. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_done_delta_set_index_map): New function. | |||
|  | 	(tt_done_blend): Use it. | |||
|  | 
 | |||
|  | 2022-05-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* builds/toplevel.mk (do-dist): Don't remove meson wrap files. | |||
|  | 
 | |||
|  | 	Fixes #1157. | |||
|  | 
 | |||
|  | 2022-05-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* subprojects/zlib.wrap: Update to zlib version 1.2.12. | |||
|  | 
 | |||
|  | 2022-05-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	REAMDE: Mention that gitlab's 'download' button doesn't work. | |||
|  | 
 | |||
|  | 	This is because the `git archive` command doesn't preserve submodules. | |||
|  | 
 | |||
|  | 	Note that currently there is no support for disabling the 'download' button | |||
|  | 	in gitlab (https://gitlab.com/gitlab-org/gitlab/-/issues/17032). | |||
|  | 
 | |||
|  | 	Fixes issue #1158. | |||
|  | 
 | |||
|  | 2022-05-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Handle inner/outer index values 0xFFFF/0xFFFF. | |||
|  | 
 | |||
|  | 	This was introduced in OpenType 1.8.4. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping, | |||
|  | 	tt_hvadvance_adjust, ft_var_load_mvar, tt_apply_mvar): Handle special | |||
|  | 	inner/outer index values. | |||
|  | 	(ft_var_load_item_variation_store): Add test. | |||
|  | 
 | |||
|  | 	Fixes #1154. | |||
|  | 
 | |||
|  | 2022-05-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* Version 2.12.1 released. | |||
|  | 	========================== | |||
|  | 
 | |||
|  | 	Tag sources with `VER-2-12-1'. | |||
|  | 
 | |||
|  | 	* docs/VERSION.TXT: Add entry for version 2.12.1. | |||
|  | 	* docs/CHANGES, docs/release: 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.12.0/2.12.1/, s/2120/2121/. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (version_info): Set to 24:3:18. | |||
|  | 	* CMakeLists.txt (VERSION_PATCH): Set to 1. | |||
|  | 
 | |||
|  | 2022-04-30  Anuj Verma  <anuj@posteo.net> | |||
|  | 
 | |||
|  | 	[sdf] Do not throw errors for invisible glyphs. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Return `FT_Err_Ok` if | |||
|  | 	width or height is zero, since some glyphs do not generate visible bitmaps. | |||
|  | 
 | |||
|  | 	Fixes #1150. | |||
|  | 
 | |||
|  | 2022-04-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_COLOR` for SVG fonts. | |||
|  | 
 | |||
|  | 	Fixes #1151. | |||
|  | 
 | |||
|  | 2022-04-27  Brendan Shanks  <bshanks@codeweavers.com> | |||
|  | 
 | |||
|  | 	autogen.sh: Fix building when freetype is itself a git submodule. | |||
|  | 
 | |||
|  | 	There are situations where .git is not a directory, like when | |||
|  | 	freetype is a submodule in another repository. | |||
|  | 
 | |||
|  | 2022-04-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Simplify non-desktop UWP check. | |||
|  | 
 | |||
|  | 	Fixes mingw compilation described in !159. | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c: Do not use WINAPI_FAMILY_PARTITION macro. | |||
|  | 
 | |||
|  | 2022-04-25  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Reset IUP flags in `TT_RunIns`. | |||
|  | 
 | |||
|  | 	Fixes #1148 by moving the flag initialization back, partly reverting | |||
|  | 	7809007a and fd03dcc1.  Initializing these flags elsewhere skips 'cvt'. | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.c (TT_RunIns): Initialize the IUP flag here... | |||
|  | 	(TT_Run_Context): ... instead of here. | |||
|  | 
 | |||
|  | 2022-04-24  Xavier Claessens  <xavier.claessens@collabora.com> | |||
|  | 
 | |||
|  | 	[meson] Remove `default_library=both` from `default_options`. | |||
|  | 
 | |||
|  | 	It is inconsistent with what all other Meson projects do. | |||
|  | 
 | |||
|  | 	It also prevents static linking to FreeType when it is a subproject because | |||
|  | 	`default_options` in a subproject takes precedence on values set on the main | |||
|  | 	project.  For example, building 'GStreamer' with `-Ddefault_library=static` | |||
|  | 	would still dynamically link on FreeType unless the user also sets | |||
|  | 	`-Dfreetype2:default_library=static`. | |||
|  | 
 | |||
|  | 	* meson.build: Updated. | |||
|  | 
 | |||
|  | 	* .gitlab-ci.yml: Retain `both` option for testing. | |||
|  | 
 | |||
|  | 2022-04-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Integer overflow. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46792 | |||
|  | 
 | |||
|  | 2022-04-16  Georg Brandl  <georg@python.org> | |||
|  | 
 | |||
|  | 	* src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_SVG]: Fix segfault. | |||
|  | 
 | |||
|  | 	This can happen if the function is called with `size` being `NULL`. | |||
|  | 
 | |||
|  | 	Fixes #1147. | |||
|  | 
 | |||
|  | 2022-04-14  Steve Lhomme  <robux4@ycbcr.xyz> | |||
|  | 
 | |||
|  | 	.gitlab-ci.yml: Add a Universal Windows build target | |||
|  | 
 | |||
|  | 	It's compiled for Windows 10 and up, ensuring UNICODE is set (default for UWP) | |||
|  | 	and selecting the proper WINAPI_FAMILY (WINAPI_FAMILY_APP). | |||
|  | 
 | |||
|  | 	Do not try to run the UWP exe in the Docker as it doesn't work. | |||
|  | 
 | |||
|  | 2022-04-04  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Correct FT_ColorStopIterator documentation. | |||
|  | 
 | |||
|  | 	* include/freetype/ftcolor.h (FT_ColorStopIterator): the user should not | |||
|  | 	 set `p` to NULL before calling `FT_Get_Colorline_Stops`. `p` and | |||
|  | 	`num_color_stops` are set by `FT_Get_Paint`. `p` and | |||
|  | 	`current_color_stop` are updated by `FT_Get_Colorline_Stops`. | |||
|  | 
 | |||
|  | 2022-04-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw: Add option `--with-librsvg`. | |||
|  | 
 | |||
|  | 	Since 'librsvg' is written in Rust, this option allows distributions to | |||
|  | 	avoid a dependency on the entire Rust toolchain to provide the FreeType demo | |||
|  | 	programs. | |||
|  | 
 | |||
|  | 	Suggested by Lars Wendler in !156. | |||
|  | 
 | |||
|  | 2022-04-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff.c (reconstruct_glyf): Fix gcc 10 warning. | |||
|  | 
 | |||
|  | 2022-04-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[gzip] Update sources to zlib 1.2.12. | |||
|  | 
 | |||
|  | 2022-04-01  Eric Jing  <@CPUcontrol> | |||
|  | 
 | |||
|  | 	CMakeLists.txt: Fix `Info.plist` path. | |||
|  | 
 | |||
|  | 	When building a framework using CMake with `add_subdirectory`, CMake must be | |||
|  | 	able to find `freetype-Info.plist` when configuring the framework | |||
|  | 	properties. | |||
|  | 
 | |||
|  | 	Fixes #1145. | |||
|  | 
 | |||
|  | 2022-04-01  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Whitespace. | |||
|  | 
 | |||
|  | 2022-04-01  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Use SUB_LONG for component offset. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Process_Composite_Component): do it. | |||
|  | 
 | |||
|  | 	Bug: https://crbug.com/1309429 | |||
|  | 
 | |||
|  | 2022-03-31  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	CMakeList.txt: Update code to handle recent changes for `freetype.pc`. | |||
|  | 
 | |||
|  | 	Fixes #1144. | |||
|  | 
 | |||
|  | 2022-03-31  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	CMakeLists.txt: s/PKG_CONFIG/PKGCONFIG/, s/REQUIRED_/REQUIRES_/. | |||
|  | 
 | |||
|  | 2022-03-31  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* Version 2.12.0 released. | |||
|  | 	========================== | |||
|  | 
 | |||
|  | 	Tag sources with `VER-2-12-0'. | |||
|  | 
 | |||
|  | 	* docs/VERSION.TXT: Add entry for version 2.12.0. | |||
|  | 	* docs/CHANGES, docs/release: 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.11.1/2.12.0/, s/2111/2120/. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 12. | |||
|  | 	(FREETYPE_PATCH): Set to 0. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (version_info): Set to 24:2:18. | |||
|  | 	* CMakeLists.txt (VERSION_MINOR): Set to 12. | |||
|  | 	(VERSION_PATCH): Set to 0. | |||
|  | 
 | |||
|  | 	* builds/toplevel.mk (do-dist): Generate `ChangeLog` entries for all commits | |||
|  | 	since version 2.11.0 (when we stopped creating this file manually). | |||
|  | 
 | |||
|  | 2022-03-31  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix clang++ warnings. | |||
|  | 
 | |||
|  | 	* src/base/ftglyph.c (ft_svg_glyph_prepare), src/base/ftobj.c | |||
|  | 	(ft_glyphslot_init), src/cache/ftccmap.c (ftc_cmap_node_new), | |||
|  | 	src/cache/ftcimage.c (FTC_INode_New), src/lzw/ftlzw.c (FT_Stream_OpenLZW), | |||
|  | 	src/psaux/psobjs.c (ps_parser_load_field), src/pshinter/pshglob.c | |||
|  | 	(psh_globals_new), src/sfnt/ttsvg.c (tt_face_load_svg_doc): Initialize | |||
|  | 	variables used for allocation. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (split_sdf_conic, split_sdf_cubic): Change type of | |||
|  | 	`max_splits` to FT_UInt. | |||
|  | 	(sdf_generate_bounding_box): Add cast. | |||
|  | 
 | |||
|  | 2022-03-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Whitespace. | |||
|  | 
 | |||
|  | 2022-03-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[builds] Fix creation of `freetype2.pc` for static-only builds. | |||
|  | 
 | |||
|  | 	We have to help `pkg-config` since it can't recognize that there is no | |||
|  | 	shared library installed. | |||
|  | 
 | |||
|  | 	Note that meson already does exactly the same. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (REQUIRES_PRIVATE, LIBS_PRIVATE): Rename to... | |||
|  | 	(PKGCONFIG_REQUIRES_PRIVATE, PKGCONFIG_LIBS_PRIVATE): This.  Adjust them | |||
|  | 	depending on `$enable_shared`. | |||
|  | 	(PKGCONFIG_REQUIRES, PKGCONFIG_LIBS): New variables. | |||
|  | 
 | |||
|  | 	* builds/unix/freetype2.in, builds/unix/unix-def.in: Use new and updated | |||
|  | 	variables. | |||
|  | 
 | |||
|  | 2022-03-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Add `FT_FACE_FLAG_SBIX_OVERLAY` and `FT_HAS_SBIX_OVERLAY`. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FT_FACE_FLAG_SBIX_OVERLAY, | |||
|  | 	FT_HAS_SBIX_OVERLAY): New macro. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsbit.c (tt_face_load_sbit): Handle `FT_FACE_FLAG_SBIX_OVERLAY`. | |||
|  | 	Remove obsolete tracing message. | |||
|  | 
 | |||
|  | 2022-03-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Add `FT_PARAM_TAG_IGNORE_SBIX`. | |||
|  | 
 | |||
|  | 	This is another bit to handle 'sbix' tables as described in the OpenType | |||
|  | 	specification. | |||
|  | 
 | |||
|  | 	* include/freetype/ftparams.h (FT_PARAM_TAG_IGNORE_SBIX): New macro. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjc.c (is_apple_sbix): Rename to... | |||
|  | 	(has_sbix): ... this. | |||
|  | 	Check for more sbit tables. | |||
|  | 	Handle `FT_PARAM_TAG_IGNORE_SBIX` to eventually control `has_sbix`. | |||
|  | 	Only call sbit table loader if an sbit table is present. | |||
|  | 
 | |||
|  | 2022-03-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Fix 'sbix' table handling. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Correct calculation of | |||
|  | 	'metrics->horiBearingY'. | |||
|  | 	Set vertical metrics. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Adjust setting of `FT_FACE_FLAG_SBIX`. | |||
|  | 	Handle metrics of fonts with 'sbix' table. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Glyph): For 'sbix' embedded bitmaps, apply | |||
|  | 	bbox offset and bearing values of the corresponding glyph in the 'glyf' | |||
|  | 	table if it exists and has a contour. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_face_init): Handle font with 'sbix' table. | |||
|  | 
 | |||
|  | 	Fixes issue #998. | |||
|  | 
 | |||
|  | 2022-03-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Add `FT_FACE_FLAG_SBIX` and `FT_HAS_SBIX`. | |||
|  | 
 | |||
|  | 	Fonts with 'sbix' tables need special handling by the application. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FT_FACE_FLAG_SBIX, FT_HAS_SBIX): New macros. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_SBIX` if 'sbix' | |||
|  | 	table is present. | |||
|  | 
 | |||
|  | 2022-03-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): Tag macro as public. | |||
|  | 
 | |||
|  | 2022-03-24  Carlo Bramini  <carlo.bramix@libero.it> | |||
|  | 
 | |||
|  | 	[builds/windows] Fix WCE support. | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c [_WIN32_WCE]: Include <malloc.h> needed by | |||
|  | 	_alloca. | |||
|  | 
 | |||
|  | 2022-03-24  Steve Lhomme  <robux4@ycbcr.xyz> | |||
|  | 
 | |||
|  | 	[build/windows] Improve UWP support. | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c [UWP]: Wrap CreateFile2 into CreateFileA. | |||
|  | 
 | |||
|  | 2022-03-21  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttkern.c (tt_face_get_kerning): Exit early if no table. | |||
|  | 
 | |||
|  | 	Fixes #1141. | |||
|  | 
 | |||
|  | 2022-03-20  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[woff2] Support overlap flag for simple glyphs. | |||
|  | 
 | |||
|  | 	In the woff2 spec it has been proposed to allow the OVERLAP_SIMPLE flag | |||
|  | 	to be retained through the woff2 format [0]. | |||
|  | 
 | |||
|  | 	[0] https://www.w3.org/TR/WOFF2/#glyf_table_format | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff2.h (GLYF_OVERLAP_SIMPLE): add glyf flag. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff2.c (reconstruct_glyf): parse optionFlags and | |||
|  | 	overlapSimpleBitmap[]. (store_points): set OVERLAP_SIMPLE on first point's | |||
|  | 	flag if the overlap bit is set. | |||
|  | 
 | |||
|  | 2022-03-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[cff] Synchronize `cff_slot_load` with `TT_Load_Glyph`. | |||
|  | 
 | |||
|  | 	* src/cff/cffgload.c (IS_DEFAULT_INSTANCE): New macro. | |||
|  | 	(cff_slot_load): Use it. | |||
|  | 
 | |||
|  | 2022-03-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Request_Size): Guard `face->size`. | |||
|  | 
 | |||
|  | 	Fixes #1140. | |||
|  | 
 | |||
|  | 2022-03-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (ft_open_face_internal): Thinko. | |||
|  | 
 | |||
|  | 2022-03-19  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[doc] FT_OUTLINE_OVERLAP was introduced in 2.10.3. | |||
|  | 
 | |||
|  | 	* include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Document when added. | |||
|  | 
 | |||
|  | 2022-03-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (ft_open_face_internal): Properly guard `face_index`. | |||
|  | 
 | |||
|  | 	We must ensure that the cast to `FT_Int` doesn't change the sign. | |||
|  | 
 | |||
|  | 	Fixes #1139. | |||
|  | 
 | |||
|  | 2022-03-17  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sfnt] Avoid invalid face index. | |||
|  | 
 | |||
|  | 	Fixes #1138. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_init_face), src/sfnt/sfwoff2.c (woff2_open_font): | |||
|  | 	Check `face_index` before decrementing. | |||
|  | 
 | |||
|  | 2022-03-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Documentation, whitespace. | |||
|  | 
 | |||
|  | 2022-03-05  Anuj Verma  <anuj@womp.xyz> | |||
|  | 
 | |||
|  | 	[sdf] Fix corner checks and improve performance. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for a corner if | |||
|  | 	two distances (for different curves) are very close. | |||
|  | 
 | |||
|  | 	(sdf_conic_to): Check whether the conic curve can be treated as a line | |||
|  | 	(which happens if the control point coincides with any end point). | |||
|  | 
 | |||
|  | 2022-03-05  Anuj Verma  <anuj@womp.xyz> | |||
|  | 
 | |||
|  | 	[sdf] Implement deviation-based splitting for Bezier curves. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Add checks to figure | |||
|  | 	out the deviation of Bezier curves and stop splitting if the curve is flat | |||
|  | 	enough. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdfcommon.h (ONE_PIXEL): New macro. | |||
|  | 
 | |||
|  | 2022-03-05  Anuj Verma  <anuj@womp.xyz> | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h: Improve SDF documentation. | |||
|  | 
 | |||
|  | 2022-03-03  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Fix bounds check in SVG. | |||
|  | 
 | |||
|  | 	The `SVG_DOCUMENT_LIST_MINIMUM_SIZE` macro is non trivial and not | |||
|  | 	protected by parentheses. As a result, the expression | |||
|  | 	`table_size - SVG_DOCUMENT_LIST_MINIMUM_SIZE` expands to | |||
|  | 	`table_size - 2U + SVG_DOCUMENT_RECORD_SIZE` instead of the expected | |||
|  | 	`table_size - (2U + SVG_DOCUMENT_RECORD_SIZE)`. This causes an incorrect | |||
|  | 	bounds check which may lead to reading past the end of the `SVG ` table. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsvg.c (tt_face_load_svg): wrap macro definitions in | |||
|  | 	parentheses. | |||
|  | 
 | |||
|  | 	Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45179 | |||
|  | 
 | |||
|  | 2022-02-23  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[psaux] Full bounds check for OtherSubr 19. | |||
|  | 
 | |||
|  | 	It is possible for OtherSubr 19 to be invoked when `decoder->buildchar` is | |||
|  | 	NULL (so that `decoder->len_buildchar` is 0), the `blend` is non-NULL with | |||
|  | 	`blend->num_designs` set to 2, and the user supplied `idx` to be large (for | |||
|  | 	example 0xFFFFFFFE).  Since these are all `FT_UInt32` the existing bounds | |||
|  | 	check overflows in a well defined manner, allowing for an invalid call to | |||
|  | 	`memcpy`. | |||
|  | 
 | |||
|  | 	In addition, it is possible to call OtherSubr 19 with | |||
|  | 	`decoder->len_buildchar`, `blend->num_designs`, and `idx` all zero (implying | |||
|  | 	that `blend->weight_vector` and `decoder->buildchar` are NULL).  This passes | |||
|  | 	the bounds check (it is logically always fine to copy nothing starting at | |||
|  | 	index zero) but may invoke undefined behavior in `ft_memcpy` if it is backed | |||
|  | 	by `memcpy`.  Calling `memcpy` with either the `src` or `dst` NULL is | |||
|  | 	undefined behavior (even if `count` is zero). | |||
|  | 
 | |||
|  | 	* src/psaux/psintrp.c (cf2_interpT2CharString): Correctly check that | |||
|  | 	`blend->num_designs` can be copied to `decoder->buildchar[idx]`. | |||
|  | 	Also avoid passing NULL to `ft_memcpy`. | |||
|  | 
 | |||
|  | 	Bug: https://crbug.com/1299259 | |||
|  | 
 | |||
|  | 2022-02-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[cmake] Drop the support of CMake 2.x. | |||
|  | 
 | |||
|  | 	* CMakeLists.txt: Require CMake 3.0 (released on 2014) or newer. | |||
|  | 
 | |||
|  | 	The issue #1059 reports the difficulty to support both of | |||
|  | 	CMake 2.x and newer one by single CMakeLists.txt without | |||
|  | 	the inflation of cmake_policy() workarounds. | |||
|  | 
 | |||
|  | 	For better maintainability, the support of CMake 2.x is | |||
|  | 	dropped. | |||
|  | 
 | |||
|  | 2022-02-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/bdf/README: Updated. | |||
|  | 
 | |||
|  | 2022-02-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* builds/mac/ftmac.c, src/base/ftmac.c: s|FT_MAC_H|<freetype/ftmac.h>|. | |||
|  | 
 | |||
|  | 2022-02-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	src/sfnt/ttkern.c (tt_face_load_kern): Micro-optimize. | |||
|  | 
 | |||
|  | 	A kerning table can be handled by binary search if it has equal entries. | |||
|  | 
 | |||
|  | 	Fixes #1132. | |||
|  | 
 | |||
|  | 2022-02-17  Steve Lhomme  <robux4@ycbcr.xyz> | |||
|  | 	    Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Add support for legacy UWP builds. | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c: Add neccessary macro substitutions to | |||
|  | 	enable strict UWP builds. | |||
|  | 
 | |||
|  | 	See !141. | |||
|  | 
 | |||
|  | 2022-02-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	ftmm.h: Minor documentation improvement. | |||
|  | 
 | |||
|  | 2022-02-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Tune PSH_STRONG_THRESHOLD_MAXIMUM value. | |||
|  | 
 | |||
|  | 	Before the change, the hinting engine frequently confused horizontal | |||
|  | 	stem and serif hints making some stems too thin and some serifs too | |||
|  | 	thick. The value was tuned using serif fonts from the URW+ base 35 | |||
|  | 	collection. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.c [PSH_STRONG_THRESHOLD_MAXIMUM]: s/30/12/. | |||
|  | 
 | |||
|  | 2022-02-12  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	t1tables.h: Documentation improvements. | |||
|  | 
 | |||
|  | 2022-02-12  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	t1tables.h: Whitespace. | |||
|  | 
 | |||
|  | 2022-02-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[type42] Fix `FT_Get_PS_Font_Private` for this format. | |||
|  | 
 | |||
|  | 	Since Type42 fonts don't have a 'Private' dictionary, the return value | |||
|  | 	should be `FT_Err_Invalid_Argument`. | |||
|  | 
 | |||
|  | 	* src/type42/t42drivr.c (t42_ps_get_font_private): Removed. | |||
|  | 	(t42_service_ps_info): Updated. | |||
|  | 
 | |||
|  | 2022-02-09  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Clear reused mask. | |||
|  | 	 | |||
|  | 	In PS hinter, memory allocations persist until the module is done. | |||
|  | 	Therefore, we have to clear reused masks. | |||
|  | 	 | |||
|  | 	* src/pshinter/pshrec.c (ps_mask_table_alloc): Clear reused mask. | |||
|  | 
 | |||
|  | 2022-02-09  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Use unsigned indices. | |||
|  | 	 | |||
|  | 	This reduces casting and eliminates some checks. | |||
|  | 	 | |||
|  | 	* src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_table_merge, | |||
|  | 	ps_dimension_add_t1stem, ps_hints_t1stem3): Updated. | |||
|  | 	(ps_dimension_add_counter): Updated, unnecessary checks removed. | |||
|  | 
 | |||
|  | 2022-02-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Fix mask merging. | |||
|  | 
 | |||
|  | 	We forgot to update the number of bits when merging a larger mask | |||
|  | 	into a smaller one.  This fix might have rendering effects. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshrec.c (ps_mask_table_merge): Inherit the number | |||
|  | 	of bits from a larger mask. There is no need to zero unused bits, | |||
|  | 	already zeroed during allocation. | |||
|  | 	(ps_mask_clear_bit): Removed. | |||
|  | 	(ps_mask_ensure): Minor. | |||
|  | 
 | |||
|  | 2022-02-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Revise the hint table handling. | |||
|  | 	 | |||
|  | 	* src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size | |||
|  | 	check; avoid array zeroing because it is fully initialized when used. | |||
|  | 	(ps_hint_table_alloc): Fix off-by-one comparison and remove another | |||
|  | 	zeroing of the array elements. | |||
|  | 
 | |||
|  | 2022-02-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Various minor doc fixes. | |||
|  | 
 | |||
|  | 2022-02-06  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Add SVG to to project files. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Updated. | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj.filters: Updated. | |||
|  | 	* builds/windows/visualc/freetype.vcproj: Updated. | |||
|  | 
 | |||
|  | 2022-02-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Trace font resources. | |||
|  | 
 | |||
|  | 2022-02-02  Eric Jing  <@CPUcontrol> | |||
|  | 
 | |||
|  | 	[cmake] Fix build on MacOS. | |||
|  | 
 | |||
|  | 	* CMakeLists.txt (CMAKE_OSX_ARCHITECTURES): Update value to fix the building | |||
|  | 	of a framework on MacOS. | |||
|  | 
 | |||
|  | 	* builds/mac/freetype-Info.plist (CFBundleExecutable): Make identifier | |||
|  | 	lowercase only. | |||
|  | 
 | |||
|  | 	Fixes #1127. | |||
|  | 
 | |||
|  | 2022-02-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[psaux] Revise `PS_Table` handling. | |||
|  | 
 | |||
|  | 	The old impleemntation was not using `FT_REALLOC`, buing too careful | |||
|  | 	with the offset rebasing.  It shoudl be safe to rely on the base | |||
|  | 	movements. | |||
|  | 
 | |||
|  | 	* src/psaux/psobjs.c (reallocate_t1_table, shift_elements): Combine | |||
|  | 	into... | |||
|  | 	(ps_table_realloc): ... this function based on `FT_REALLOC`. | |||
|  | 	(ps_table_done): Simplified. | |||
|  | 	(ps_table_add): Updated. | |||
|  | 
 | |||
|  | 2022-02-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cache/ftcmru.c (FTC_MruList_New): Explain zeroing. | |||
|  | 
 | |||
|  | 2022-01-31  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Partially revert 9870b6c07e2c. | |||
|  | 	 | |||
|  | 	Fix crashes reported by Werner. | |||
|  | 	 | |||
|  | 	* src/cache/ftcmru.c (FTC_MruList_New): Use `FT_ALLOC` again. | |||
|  | 
 | |||
|  | 2022-01-31  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	freetype.h: Minor documentation improvement. | |||
|  | 
 | |||
|  | 2022-01-31  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Fix fallouts from edd4fedc5427. | |||
|  | 
 | |||
|  | 	Reported by Werner. | |||
|  | 
 | |||
|  | 	* src/cache/ftcimage.c (FTC_INode_New): Always initialize FT_Glyph. | |||
|  | 	* src/cache/ftcsbits.c (FTC_SNode_New): Always initialize FT_SBit. | |||
|  | 
 | |||
|  | 2022-01-31  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Clean-up - do not doubt FT_FREE. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (memory_stream_close): Do not reassign zero | |||
|  | 	after `FT_FREE`. | |||
|  | 	* src/sfnt/sfwoff.c (sfnt_stream_close): Ditto. | |||
|  | 	* src/sfnt/sfwoff2.c (stream_close): Ditto. | |||
|  | 	* src/psaux/psobjs.c (ps_parser_load_field): Ditto. | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_load_avar, tt_set_mm_blend, | |||
|  | 	tt_set_mm_blend): Ditto. | |||
|  | 
 | |||
|  | 2022-01-30  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* CMakeLists.txt: Include 'FindPkgConfig' module. | |||
|  | 
 | |||
|  | 	Older cmake versions don't provide `pkg_check_modules` by default. | |||
|  | 
 | |||
|  | 	Fixes #1126. | |||
|  | 
 | |||
|  | 2022-01-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/psaux/psobjs.c (ps_parser_load_field): Reduce `string` scope. | |||
|  | 
 | |||
|  | 2022-01-29  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[cmake] Check the availability of `bzip2.pc'. | |||
|  | 
 | |||
|  | 	(CMakeLists.txt): Check the availability of `bzip2.pc'. | |||
|  | 
 | |||
|  | 	* If `bzip2.pc' is available, Requires.private should include | |||
|  | 	bzip2, but Libs.private should not include -lbz2. | |||
|  | 
 | |||
|  | 	* If `bzip2.pc' is unavailable, Requires.private cannot include | |||
|  | 	bzip2, but Libs.private should include -lbz2. | |||
|  | 
 | |||
|  | 	Fix #897. | |||
|  | 
 | |||
|  | 2022-01-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* unix/configure.raw: We need 'librsvg' version 2.46.0 or newer. | |||
|  | 
 | |||
|  | 	Older versions don't have function `rsvg_handle_get_intrinsic_dimensions`. | |||
|  | 
 | |||
|  | 2022-01-28  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Minor clean-ups. | |||
|  | 
 | |||
|  | 	* src/base/ftrfork.c (raccess_make_file_name): Do not set error. | |||
|  | 	* src/sfnt/sfdriver.c (get_win_string, get_apple_string): Ditto. | |||
|  | 	* src/cff/cffobjs.c (cff_strcpy): Do not confuse about error. | |||
|  | 	* src/psaux/psobjs.c (ps_table_done): Ditto. | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_readpacked*, ft_var_load_avar): Ditto. | |||
|  | 
 | |||
|  | 2022-01-27  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	Document `FT_Outline_Decompose` degenerate segments. | |||
|  | 
 | |||
|  | 	`FT_Outline_Decompose` does not filter out and can return degenerate | |||
|  | 	segments in an outline. This can be surprising when attemping to | |||
|  | 	stroke such an outline. Clarify the existing documentation on this | |||
|  | 	matter to cover all forms of degeneracy (without specifying exactly | |||
|  | 	how they will be reported), why they might arise, and better explain in | |||
|  | 	what cases they may be an issue. | |||
|  | 
 | |||
|  | 	* include/freetype/ftoutlin.h (FT_Outline_Decompose): update | |||
|  | 	documentation. | |||
|  | 
 | |||
|  | 	Fixes #952. | |||
|  | 
 | |||
|  | 2022-01-27  Anuj Verma  <anujv@posteo.net> | |||
|  | 
 | |||
|  | 	Fix sdf computation while `USE_SQUARED_DISTANCES`. | |||
|  | 
 | |||
|  | 	Function `map_fixed_to_sdf` expects spread to be absolute | |||
|  | 	and not squared. | |||
|  | 
 | |||
|  | 	* src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread | |||
|  | 	while `map_fixed_to_sdf`. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto. | |||
|  | 
 | |||
|  | 2022-01-27  Tapish Ojha  <tapishojha2000@gmail.com> | |||
|  | 
 | |||
|  | 	[sfnt] Improve sRGB constants. | |||
|  | 
 | |||
|  | 	* src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use slightly | |||
|  | 	more precise values. | |||
|  | 
 | |||
|  | 	Fixes #1018. | |||
|  | 
 | |||
|  | 2022-01-27  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	docs/release: Updated. | |||
|  | 
 | |||
|  | 2022-01-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/pfr/pfrload.c (pfr_phy_font_load): Use FT_QNEW_ARRAY. | |||
|  | 
 | |||
|  | 2022-01-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (sdf_*_new): Use standard macro. | |||
|  | 
 | |||
|  | 2022-01-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pcf] Delay encoding allocation and avoid its zeroing. | |||
|  | 
 | |||
|  | 	* src/pcf/pcfread.c (pcf_get_encodings): Refactor and use FT_QNEW_ARRAY. | |||
|  | 
 | |||
|  | 2022-01-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Aarg, typo. | |||
|  | 
 | |||
|  | 2022-01-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	freetype.h: More updates to `FT_LOAD_COLOR` description. | |||
|  | 
 | |||
|  | 2022-01-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (FT_DEMO_CFLAGS): Pass `-DHAVE-LIBRSVG`. | |||
|  | 
 | |||
|  | 	This helps in decoupling library support from `pkg-config` for other | |||
|  | 	platforms. | |||
|  | 
 | |||
|  | 2022-01-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Update documentation for `FT_LOAD_COLOR`. | |||
|  | 
 | |||
|  | 2022-01-24  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[pshinter] Ensure all point flags are initialized. | |||
|  | 
 | |||
|  | 	Only off curve point flags were fully initialized. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.c (psh_glyph_init): always initialize flags. | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43930 | |||
|  | 
 | |||
|  | 2022-01-24  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	.mailmap: Typo. | |||
|  | 
 | |||
|  | 2022-01-23  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers. | |||
|  | 
 | |||
|  | 2022-01-23  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	.mailmap: Updated. | |||
|  | 
 | |||
|  | 2022-01-23  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	More documentation on handling OT-SVG. | |||
|  | 
 | |||
|  | 2022-01-23  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/svg/ftsvg.c: Rename `svg_hooks` to `svg-hooks` for consistency. | |||
|  | 
 | |||
|  | 2022-01-22  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sfnt] Reject malformed SVG tables. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsvg.c (SVG_TABLE_HEADER_SIZE, SVG_DOCUMENT_RECORD_SIZE, | |||
|  | 	SVG_DOCUMENT_LIST_MINIMUM_SIZE, SVG_MINIMUM_SIZE): New macros. | |||
|  | 	(tt_face_load_svg): Check offsets. | |||
|  | 	Check table and record sizes. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43918 | |||
|  | 
 | |||
|  | 2022-01-22  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/psaux/psobjs.c (ps_table_new): Revert to zeroing. | |||
|  | 
 | |||
|  | 2022-01-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[psaux, type1, type42] Avoid annecessary zeroing. | |||
|  | 
 | |||
|  | 	* src/psaux/psobjs.c (ps_table_new): Use FT_QNEW_ARRAY. | |||
|  | 	* src/type1/t1load.c (parse_encoding): Ditto. | |||
|  | 	* src/type42/t42parse.c (t42_parse_encoding): Ditto. | |||
|  | 
 | |||
|  | 2022-01-20  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[builds/unix] Handle 'librsvg' for demo programs. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw: Check for 'librsvg'. | |||
|  | 	(LIB_CLOCK_GETTIME): Don't call `AC_SUBST` on this but on... | |||
|  | 	(FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. | |||
|  | 
 | |||
|  | 	* builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): Replaced by... | |||
|  | 	(FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. | |||
|  | 
 | |||
|  | 2022-01-20  Moazin Khatti  <moazinkhatri@gmail.com> | |||
|  | 
 | |||
|  | 	Add 'svg' module for OT-SVG rendering. | |||
|  | 
 | |||
|  | 	* CMakeLists.txt (BASE_SRCS): Add svg module file. | |||
|  | 	* meson.build (ft2_public_headers): Add `otsvg.h`. | |||
|  | 
 | |||
|  | 	* modules.cfg (RASTER_MODULES): Add `svg` module. | |||
|  | 
 | |||
|  | 	* builds/meson/parse_modules_cfg.py: Add svg module. | |||
|  | 
 | |||
|  | 	* include/freetype/config/ftmodule.h: Add `ft_svg_renderer_class`. | |||
|  | 	* include/freetype/fterrdef.h: Add `Invalid_SVG_Document` and | |||
|  | 	`Missing_SVG_Hooks` error codes. | |||
|  | 	* include/freetype/internal/fttrace.h: Add tracing for `otsvg`. | |||
|  | 	* include/freetype/internal/svginterface.h: New file.  It adds an interface | |||
|  | 	to enable the presetting hook from the `base` module. | |||
|  | 	* include/freetype/otsvg.h (SVG_Lib_Init_Func, SVG_Lib_Free_Func, | |||
|  | 	SVG_Lib_Render_Func, SVG_Lib_Preset_Slot_Func): New hooks for SVG rendering. | |||
|  | 	(SVG_RendererHooks): New structure to access them. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c: Include `svginterface.h`. | |||
|  | 	(ft_glyphslot_preset_bitmap): Add code for presetting the slot for SVG | |||
|  | 	glyphs. | |||
|  | 	(ft_add_renderer): Updated. | |||
|  | 
 | |||
|  | 	* src/svg/*: New files. | |||
|  | 
 | |||
|  | 2022-01-20  Moazin Khatti  <moazinkhatri@gmail.com> | |||
|  | 
 | |||
|  | 	Add `FT_Glyph` support for OT-SVG glyphs. | |||
|  | 
 | |||
|  | 	* include/freetype/ftglyph.h (FT_SvgGlyphRec, FT_SvgGlyph): New structure. | |||
|  | 
 | |||
|  | 	* src/base/ftglyph.c: Include `otsvg.h`. | |||
|  | 	(ft_svg_glyph_init, ft_svg_glyph_done, ft_svg_glyph_copy, | |||
|  | 	ft_svg_glyph_transform, ft_svg_glyph_prepare): New function. | |||
|  | 	(ft_svg_glyph_class): New class. | |||
|  | 	(FT_New_Glyph, FT_Glyph_To_Bitmap): Updated to handle OT-SVG glyphs. | |||
|  | 	* src/base/ftglyph.h: Updated. | |||
|  | 
 | |||
|  | 2022-01-20  Moazin Khatti  <moazinkhatri@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype, cff] Add code to load SVG document. | |||
|  | 
 | |||
|  | 	* src/cff/cffgload.c (cff_slot_load): Add code to load SVG doc. | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Glyph): Add code to load SVG doc. | |||
|  | 
 | |||
|  | 2022-01-20  Moazin Khatti  <moazinkhatri@gmail.com> | |||
|  | 
 | |||
|  | 	Add code to load OT-SVG glyph documents. | |||
|  | 
 | |||
|  | 	* include/freetype/config/ftheader.h (FT_OTSVG_H): New macro. | |||
|  | 	* include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros. | |||
|  | 	(FT_LOAD_SVG_ONLY): New internal macro. | |||
|  | 	* include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value | |||
|  | 	`FT_GLYPH_FORMAT_SVG`. | |||
|  | 	* include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro. | |||
|  | 	* include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`. | |||
|  | 	* include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New | |||
|  | 	functions. | |||
|  | 	* include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for | |||
|  | 	the SVG table. | |||
|  | 	* include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the | |||
|  | 	SVG document and other necessary information of an OT-SVG glyph in a glyph | |||
|  | 	slot. | |||
|  | 	* include/freetype/tttags.h (TTAG_SVG): New macro. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c: Include `otsvg.h`. | |||
|  | 	(ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot->other` | |||
|  | 	if the SVG table exists. | |||
|  | 	(ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed | |||
|  | 	glyph. | |||
|  | 	(ft_glyphslot_done): Free the document data if it is a GZIP compressed | |||
|  | 	glyph. | |||
|  | 	(FT_Load_Glyph): Don't auto-hint SVG documents. | |||
|  | 
 | |||
|  | 	* src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for | |||
|  | 	FT_GLYPH_FORMAT_SVG. | |||
|  | 
 | |||
|  | 	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`. | |||
|  | 	* src/sfnt/sfdriver.c: Include `ttsvg.h`. | |||
|  | 	(sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and | |||
|  | 	`tt_face_load_svg_doc`. | |||
|  | 	* src/sfnt/sfnt.c: Include `ttsvg.c`. | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and | |||
|  | 	free data of the the SVG table. | |||
|  | 	* src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`, | |||
|  | 	`tt_face_free_svg` and `tt_face_load_svg_doc`. | |||
|  | 	* src/sfnt/ttsvg.h: Declarations of the SVG functions in | |||
|  | 	`ttsvg.c`. | |||
|  | 
 | |||
|  | 2022-01-20  Moazin Khatti  <moazinkhatri@gmail.com> | |||
|  | 
 | |||
|  | 	Add flag `FT_CONFIG_OPTION_SVG`. | |||
|  | 
 | |||
|  | 	This flag is going to be used to conditionally compile support for OT-SVG | |||
|  | 	glyphs.  FreeType will do the parsing and rely on external hooks for | |||
|  | 	rendering of OT-SVG glyphs. | |||
|  | 
 | |||
|  | 	* devel/ftoption.h, include/freetype/config/ftoption.h | |||
|  | 	(FT_CONFIG_OPTION_SVG): New flag. | |||
|  | 
 | |||
|  | 2022-01-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Avoid unnecessary zeroing. | |||
|  | 	 | |||
|  | 	* src/pshinter/pshalgo.c (psh_hint_table_init,psh_glyph_init, | |||
|  | 	psh_glyph_interpolate_normal_points): Use FT_QNEW_ARRAY. | |||
|  | 
 | |||
|  | 2022-01-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h: Clarify `FT_Size` life cycle. | |||
|  | 
 | |||
|  | 2022-01-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Undefined scale means no scale. | |||
|  | 
 | |||
|  | 	It might be surprising that FreeType does not have default ppem and | |||
|  | 	the size has to be set explicitly or face undefined behavior with | |||
|  | 	undefined variables and errors. This offers an alternative to | |||
|  | 	missing or zero scale by simply setting FT_LOAD_NO_SCALE.  Defined | |||
|  | 	behavior is bettr than undefined one. | |||
|  | 
 | |||
|  | 	This is alternative to !132 and discussed in | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43708 | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Load_Glyph): Deal with zero scale. | |||
|  | 	* include/freetype/freetype.h: Document it. | |||
|  | 
 | |||
|  | 2022-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/autofit/afglobal.c (af_face_globals_new): Reduce zeroing. | |||
|  | 
 | |||
|  | 	Everything in AF_FaceGlobals is initialized except metrics.  Those | |||
|  | 	are zeroed here and initialized on demand later. | |||
|  | 
 | |||
|  | 2022-01-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[bdf,type1] Avoid unnecessary hash zeroing. | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_bdf_parse_start): Use `FT_QALLOC`. | |||
|  | 	* src/type1/t1load.c (parse_subrs): Use `FT_QNEW`. | |||
|  | 
 | |||
|  | 2022-01-16  Ozkan Sezer  <sezeroz@gmail.com> | |||
|  | 
 | |||
|  | 	Add Watcom C/C++ calling. | |||
|  | 
 | |||
|  | 	In the unlikely case the source is built with OpenWatcom's -ec? | |||
|  | 	switches to enforce a calling convention, the qsort() compare | |||
|  | 	function must still be set to __watcall. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF): | |||
|  | 	Updated. | |||
|  | 
 | |||
|  | 2022-01-15  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[pshinter] Avoid accessing uninitialized zone. | |||
|  | 
 | |||
|  | 	The `normal_top.count` may be 0, implying no `normal_top.zones` exist. | |||
|  | 	The code must not access these (non-existent) `normal_top.zones`. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.c (ps_hints_apply): Do not assume that | |||
|  | 	`normal_top.zones[0]` is initialized. Test `normal_top.count` | |||
|  | 	before using `normal_top.zones[0]`. Do not rescale if there are no | |||
|  | 	`zones`. | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43675 | |||
|  | 
 | |||
|  | 2022-01-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Avoid unnecessary zeroing. | |||
|  | 
 | |||
|  | 	* src/cache/ftccmap.c (ftc_cmap_node_new): Use `FT_QNEW`. | |||
|  | 	* src/cache/ftcimage.c (FTC_INode_New): Ditto. | |||
|  | 	* src/cache/ftcsbits.c (FTC_SNode_New): Ditto. | |||
|  | 
 | |||
|  | 2022-01-15  Ozkan Sezer  <sezeroz@gmail.com> | |||
|  | 
 | |||
|  | 	Add Watcom C/C++ support. | |||
|  | 
 | |||
|  | 	* include/freetype/config/integer-types.h: Make sure `long long` is | |||
|  | 	used then available. | |||
|  | 	* include/freetype/internal/ftcalc.h (FT_MSB): Add Watcom C/C++ pragma. | |||
|  | 
 | |||
|  | 2022-01-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sdf/ftbsdf.c (ED): s/near/prox/. | |||
|  | 
 | |||
|  | 	This works around the Watcom C definition of `near` as restricted | |||
|  | 	__near. | |||
|  | 
 | |||
|  | 2022-01-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* include/freetype/internal/compiler-macros.h [FT_COMPARE_DEF]: Tighten. | |||
|  | 
 | |||
|  | 	This works around Watcom C library using __watcall. | |||
|  | 
 | |||
|  | 2022-01-14  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/pshinter/pshglob.c (psh_globals_new): Avoid zeroing. | |||
|  | 
 | |||
|  | 	This large allocation is followed by careful initialization. Whatever | |||
|  | 	is missed should be initialized manually. | |||
|  | 
 | |||
|  | 2022-01-14  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/fthash.c (hash_insert): Avoid unnecessary zeroing. | |||
|  | 
 | |||
|  | 2022-01-14  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_bdf_parse_glyphs): Remove redundant assignment. | |||
|  | 
 | |||
|  | 2022-01-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/lzw/ftlzw.c (FT_Stream_OpenLZW): Avoid unnecessary zeroing. | |||
|  | 
 | |||
|  | 2022-01-13  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[bzip2] Reset bzip stream on any error. | |||
|  | 
 | |||
|  | 	According to the bzip documentation it is undefined what will happen if | |||
|  | 	`BZ2_bzDecompress` is called on a `bz_stream` it has previously returned an | |||
|  | 	error against.  If `BZ2_bzDecompress` returns anything other than `BZ_OK` | |||
|  | 	the only valid next action is `BZ2_bzDecompressEnd`. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43564 | |||
|  | 
 | |||
|  | 	* src/bzip2/ftbzip2.c (FT_BZip2FileRec_): Add `reset` to track the need to | |||
|  | 	reset the stream. | |||
|  | 	(ft_bzip2_file_init): Initialize `reset` to 0. | |||
|  | 	(ft_bzip2_file_reset): Set `reset` to 0 after resetting. | |||
|  | 	(ft_bzip2_file_fill_output): Set `reset` to 1 when `BZ2_bzDecompress` | |||
|  | 	returns anything other than `BZ_OK`. | |||
|  | 
 | |||
|  | 2022-01-12  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	.gitlab-ci.yml: Minor comment cleanups. | |||
|  | 
 | |||
|  | 2022-01-12  Azamat H. Hackimov  <azamat.hackimov@gmail.com> | |||
|  | 
 | |||
|  | 	.gitlab-ci.yml: Add steps to `before_script` to ensure recent CA. | |||
|  | 
 | |||
|  | 	Fetch current list of valid CAs from Windows Update and manually import them | |||
|  | 	to trusted datastore.  This action is required to make downloads work from | |||
|  | 	sites that need recent Let's Encrypt ISRG Root X1 certificate. | |||
|  | 
 | |||
|  | 2022-01-11  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	Revert "[bzip2] Avoid use of uninitialized memory." | |||
|  | 
 | |||
|  | 	This reverts commit d276bcb7f0c02c20d3585b2e5626702df6d140a6. | |||
|  | 
 | |||
|  | 	The original commit did avoid the use of uninitialized memory. However, | |||
|  | 	it appears that the original commit is no longer required. The | |||
|  | 	underlying issue was resolved by a change in freetype2-testing "Build | |||
|  | 	bzip2 correctly." [0]. Prior to [0] bzip2 was built without msan, so | |||
|  | 	bzip2 writes were not tracked or considered initialized. Clearing | |||
|  | 	`buffer` in the original commit allowed msan to see the `buffer` content | |||
|  | 	initialized once in FreeType code, but msan saw no writes into buffer | |||
|  | 	from bzip2.  With bzip2 now built with msan, the bzip2 writes are | |||
|  | 	properly instrumented and msan sees the bzip2 writes into the buffer. As | |||
|  | 	a result the original commit can be safely reverted to allow for better | |||
|  | 	detection of other uninitialized data scenarios. | |||
|  | 
 | |||
|  | 	* src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Revert to using `FT_QNEW`. | |||
|  | 
 | |||
|  | 	[0] https://github.com/freetype/freetype2-testing/commit/3c052a837a3c960709227a0d6ddd256e87b88853 | |||
|  | 
 | |||
|  | 2022-01-11  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[type42] Track how much type42 ttf data is available. | |||
|  | 
 | |||
|  | 	Currently `T42_Open_Face` eagerly allocates 12 bytes for the ttf header | |||
|  | 	data which it expects `t42_parse_sfnts` to fill out from /sfnts data. | |||
|  | 	However, there is no guarantee that `t42_parse_sfnts` will actually be | |||
|  | 	called while parsing the type42 data as the /sfnts array may be missing | |||
|  | 	or very short. This is also confusing behavior as it means | |||
|  | 	`T42_Open_Face` is tightly coupled to the implementation of the very | |||
|  | 	distant `t42_parse_sfnts` code which requires at least 12 bytes to | |||
|  | 	already be reserved in `face->ttf_data`. | |||
|  | 
 | |||
|  | 	`t42_parse_sfnts` itself eagerly updates `face->ttf_size` to track how | |||
|  | 	much space is reserved for ttf data instead of traking how much data has | |||
|  | 	actually been written into `face->ttf_data`. It will also act strangely | |||
|  | 	in the presense of multiple /sfnts arrays. | |||
|  | 
 | |||
|  | 	* src/type42/t42objs.c (T42_Open_Face): ensure `ttf_data` is initialized | |||
|  | 	to NULL. Free `ttf_data` on error. | |||
|  | 
 | |||
|  | 	* src/type42/t42parse.c (t42_parse_sfnts): delay setting `ttf_size` and | |||
|  | 	set it to the actual number of bytes read. Ensure `ttf_data` is freed | |||
|  | 	if there are multiple /sfnts arrays or there are any errors. | |||
|  | 
 | |||
|  | 2022-01-11  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Fix limit checks for `COLR` v1 ClipBoxes | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Fix off-by-one in | |||
|  | 	limit checks. | |||
|  | 
 | |||
|  | 2022-01-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Update all copyright notices. | |||
|  | 
 | |||
|  | 2022-01-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): Fix undefined left-shift operation. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43151 | |||
|  | 
 | |||
|  | 2022-01-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/type42/t42objs.c (T42_Open_Face): Avoid use of uninitialized memory. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43508 | |||
|  | 
 | |||
|  | 2022-01-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	.gitlab-ci.yml: Fix typo in previous commit. | |||
|  | 
 | |||
|  | 2022-01-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	.gitlab-ci.yml: Update Windows image. | |||
|  | 
 | |||
|  | 	The old image produced errors like | |||
|  | 
 | |||
|  | 	``` | |||
|  | 	Downloading zlib patch from | |||
|  | 	  https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch | |||
|  | 	A fallback URL could be specified using patch_fallback_url key in the wrap file | |||
|  | 	WrapDB connection failed to | |||
|  | 	  https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch | |||
|  | 	with error | |||
|  | 	  <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify | |||
|  | 	   failed: certificate has expired (_ssl.c:1122)> | |||
|  | 	``` | |||
|  | 
 | |||
|  | 2022-01-11  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* subprojects/zlib.wrap: Update from upstream. | |||
|  | 
 | |||
|  | 2022-01-10  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Add limit checks. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40716 | |||
|  | 
 | |||
|  | 2022-01-10  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[zlib] Don't typedef `ptrdiff_t`. | |||
|  | 
 | |||
|  | 	While using zlib in 'solo' mode (via the `Z_SOLO` macro), we actually | |||
|  | 	include some standard header files, making the typedef fail on systems where | |||
|  | 	the native `ptrdiff_t` type differs. | |||
|  | 
 | |||
|  | 	Fixes #1124. | |||
|  | 
 | |||
|  | 	* src/zlib/zutil.h: Comment out definition; it doesn't work on Windows. | |||
|  | 
 | |||
|  | 	* src/zlib/patches/freetype-zlib.diff: Updated. | |||
|  | 
 | |||
|  | 2022-01-10  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[zlib] Some organizational changes. | |||
|  | 
 | |||
|  | 	We now first apply zlib's `zlib2ansi` script, then FreeType's patch file. | |||
|  | 
 | |||
|  | 	* src/gzip/README.freetype: Updated. | |||
|  | 
 | |||
|  | 	* patches/0001-zlib-Fix-zlib-sources-to-compile-for-FreeType.patch: Renamed | |||
|  | 	to... | |||
|  | 	* patches/freetype-zlib.diff: This. | |||
|  | 	Clean up description, then regenerate it as follows: | |||
|  | 
 | |||
|  | 	  - Copy unmodified files from `zlib` repository. | |||
|  | 	  - Run `zlib2ansi` script. | |||
|  | 	  - Run `git diff -R > patches/freetype-zlib.diff.new`. | |||
|  | 	  - Insert patch description of old diff file, then replace old diff with | |||
|  | 	    new diff file. | |||
|  | 
 | |||
|  | 2022-01-09  David Turner  <david@freetype.org> | |||
|  | 
 | |||
|  | 	[gzip] Update sources to zlib 1.2.11 | |||
|  | 
 | |||
|  | 	This can be tested by building with the Unix development build | |||
|  | 
 | |||
|  | 	  make setup devel | |||
|  | 	  make | |||
|  | 
 | |||
|  | 	or by building the freetype-demos programs with | |||
|  | 
 | |||
|  | 	  meson setup build -Dfreetype2:zlib=internal | |||
|  | 	  meson compile -C out | |||
|  | 
 | |||
|  | 	and trying to run `ftview` with a `.pcf.gz` font file. | |||
|  | 
 | |||
|  | 	* src/gzip/ftgzip.c, src/gzip/rules.mk: Update for new zlib sources.  Also | |||
|  | 	remove the temporary fix introduced in commit 6a431038 to work around the | |||
|  | 	fact that the internal sources were too old. | |||
|  | 
 | |||
|  | 	* src/gzip/README.freetype: New file describing the origin of the sources | |||
|  | 	and how they were modified. | |||
|  | 
 | |||
|  | 	* src/gzip/patches/*: Patch files applied to original sources. | |||
|  | 
 | |||
|  | 	* src/gzip/*: Updated zlib sources with the patch file(s) from | |||
|  | 	`src/gzip/patches/` applied, followed by a conversion with zlib's | |||
|  | 	`zlib2ansi` script. | |||
|  | 
 | |||
|  | 2022-01-09  David Turner  <david@freetype.org> | |||
|  | 
 | |||
|  | 	[meson] Change Zlib configuration option. | |||
|  | 
 | |||
|  | 	* meson_options.txt, meson.build: Change the format of the 'zlib' meson | |||
|  | 	build configuration option to be a combo with the following choices: | |||
|  | 
 | |||
|  | 	  - none: Do not support gzip-compressed streams at all. | |||
|  | 
 | |||
|  | 	  - internal: Support gzip-compressed streams using the copy of the gzip | |||
|  | 	    sources under `src/gzip/`; this should only be used during development | |||
|  | 	    to ensure these work properly. | |||
|  | 
 | |||
|  | 	  - external: Support gzip-compressed streams using the 'zlib' Meson | |||
|  | 	    subproject, linked as a static library. | |||
|  | 
 | |||
|  | 	  - system: Support gzip-compressed streams using a system-installed version | |||
|  | 	    of zlib. | |||
|  | 
 | |||
|  | 	  - auto: Support gzip-compressed streams using a system-installed version | |||
|  | 	    of zlib, if available, or using the 'zlib' subproject otherwise.  This | |||
|  | 	    is the default. | |||
|  | 
 | |||
|  | 	  - disabled: Backward-compatible alias for 'none'. | |||
|  | 
 | |||
|  | 	  - enabled: Backward-compatible alias for 'auto'. | |||
|  | 
 | |||
|  | 2022-01-09  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[bzip2] Avoid use of uninitialized memory. | |||
|  | 
 | |||
|  | 	* src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Don't use `FT_QNEW` but | |||
|  | 	`FT_NEW` for setting up `zip` to avoid uninitialized memory access while | |||
|  | 	handling malformed PCF fonts later on. | |||
|  | 
 | |||
|  | 	Fixes | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42800 | |||
|  | 
 | |||
|  | 2022-01-09  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[sfnt] Fix off-by-one error. | |||
|  | 
 | |||
|  | 	The 0-base index is equal to the number of previosly parsed entries. | |||
|  | 	It is an error to adjust it by one to get the number truncated by | |||
|  | 	a stream error.  This is probably inconsequential because valid | |||
|  | 	entries are correctly accounted for. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (check_table_dir): Do not adjust the truncated | |||
|  | 	number of tables. | |||
|  | 
 | |||
|  | 2022-01-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sfnt, type42] Correct previous commit. | |||
|  | 
 | |||
|  | 	Really fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (check_table_dir): Revert change. | |||
|  | 
 | |||
|  | 	* src/type42/t42.parse.c (t42_parse_sfnts): Don't use `FT_QREALLOC` but | |||
|  | 	`FT_REALLOC` for setting up `ttf_data` to avoid uninitialized memory access | |||
|  | 	while handling malformed TrueType fonts later on. | |||
|  | 
 | |||
|  | 2022-01-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (check_table_dir): Initialize `table`. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773 | |||
|  | 
 | |||
|  | 2022-01-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sfnt] Avoid 'runtime error: applying zero offset to null pointer'. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_byte_aligned): Exit early if | |||
|  | 	`line` is NULL. | |||
|  | 
 | |||
|  | 2022-01-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[autofit, pshinter] Use `FT_OFFSET`. | |||
|  | 
 | |||
|  | 	This avoids | |||
|  | 
 | |||
|  | 	``` | |||
|  | 	runtime error: applying zero offset to null pointer | |||
|  | 	``` | |||
|  | 
 | |||
|  | 	warnings of clang's undefined behaviour sanitizer. | |||
|  | 
 | |||
|  | 	* src/autofit/afcjk.c (af_cjk_hints_link_segments, | |||
|  | 	af_cjk_hints_compute_edges, af_cjk_hints_compute_blue_edges, | |||
|  | 	af_cjk_hint_edges, af_cjk_align_edge_points): Do it. | |||
|  | 
 | |||
|  | 	* src/autofit/afhints.c (af_glyph_hints_align_edge_points, | |||
|  | 	af_glyph_hints_align_strong_points): Ditto. | |||
|  | 
 | |||
|  | 	* src/autofit/aflatin.c (af_latin_metrics_init_widths, | |||
|  | 	af_latin_hints_link_segments, af_latin_hints_compute_edges, | |||
|  | 	af_latin_hints_compute_blue_edges, af_latin_hint_edges): Ditto. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.c (psh_hint_table_init): Ditto. | |||
|  | 
 | |||
|  | 2022-01-06  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Reset localpoints when varying cvt. | |||
|  | 
 | |||
|  | 	When iterating over the cvt tuples and reading in the points it is necessary | |||
|  | 	to set all of `localpoints`, `points`, and `point_count` in all cases.  The | |||
|  | 	existing code did not reset `localpoints` to `NULL` when there were no | |||
|  | 	private point numbers.  If the previous tuple did have private point numbers | |||
|  | 	and set `localpoints` to `ALL_POINTS` this would not be cleared and the | |||
|  | 	wrong branch would be taken later, leading to possible heap buffer overflow. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_face_vary_cvt): Reset `localpoints` to `NULL` | |||
|  | 	when it isn't valid. | |||
|  | 
 | |||
|  | 	Fixes: https://crbug.com/1284742 | |||
|  | 
 | |||
|  | 2022-01-02  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw: Restore `SYSTEM_ZLIB` variable. | |||
|  | 
 | |||
|  | 	This was accidentally removed with commit 93ebcbd0 almost eight years ago. | |||
|  | 
 | |||
|  | 2021-12-27  Alexander Borsuk  <me@alex.bio> | |||
|  | 
 | |||
|  | 	Fix warnings for CMake Unity builds. | |||
|  | 
 | |||
|  | 	* src/cache/ftcbasic.c (FT_COMPONENT): Undefine macro before redefinition. | |||
|  | 	* src/smooth/ftgrays.c (TRUNC, FRACT): Ditto. | |||
|  | 
 | |||
|  | 2021-12-18  Alexander Borsuk  <alexander.borsuk@qnective.com> | |||
|  | 
 | |||
|  | 	Clang-Tidy warning fixes. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Get_Paint): Operator has equivalent nested operands. | |||
|  | 	* src/bdf/bdflib.c (_bdf_add_property): Value stored to `fp` is never read. | |||
|  | 	* src/sdf/ftbsdf.c (bsdf_init_distance_map): Value stored to `pixel` is | |||
|  | 	never read. | |||
|  | 	* src/sdf/ftsdf.c (split_sdf_shape): Value stored to `error` is never read. | |||
|  | 
 | |||
|  | 2021-12-17  Eli Schwartz  <eschwartz@archlinux.org> | |||
|  | 
 | |||
|  | 	* meson.build: Optimize lookup for `python3` program. | |||
|  | 
 | |||
|  | 	The python module's `find_installation` method is intended to provide | |||
|  | 	routines for compiling and installing python modules into the | |||
|  | 	`site-packages` directory.  It does a couple of slow things, including run | |||
|  | 	an introspection command to scrape sysconfig info from the detected | |||
|  | 	interpreter, which are not needed for the sole use case of invoking the | |||
|  | 	found installation as an executable. | |||
|  | 
 | |||
|  | 	Furthermore, when invoked without the name or path of a python binary, it is | |||
|  | 	hardcoded to always look for `python3` corresponding to the interpreter | |||
|  | 	meson itself uses to run.  So using `find_installation` did not even allow | |||
|  | 	detecting `python2` as a fallback. | |||
|  | 
 | |||
|  | 	Instead, switch to a simple `find_program` lookup that finishes as soon as | |||
|  | 	the program is found. | |||
|  | 
 | |||
|  | 2021-12-17  Eli Schwartz  <eschwartz@archlinux.org> | |||
|  | 
 | |||
|  | 	* builds/meson/*.py: Fix name of python executable for auxiliary scripts. | |||
|  | 
 | |||
|  | 	The previous change to check the return code of `run_command` invocations | |||
|  | 	caused the CI to fail.  Although most scripts used `python_exe` as the | |||
|  | 	program command, the script to determine the project version did not. | |||
|  | 
 | |||
|  | 	But, all scripts used `python` as the shebang, and this is not available on | |||
|  | 	all systems.  Particularly Debian does not provide a `python` command, | |||
|  | 	though `python3` does exist.  This meant that formerly the version number | |||
|  | 	was lacking, and now the build simply fails. | |||
|  | 
 | |||
|  | 	Instead, rely on `python3` since it is guaranteed to exist when running | |||
|  | 	meson, and `python2` is end of life anyway. | |||
|  | 
 | |||
|  | 2021-12-17  Eli Schwartz  <eschwartz@archlinux.org> | |||
|  | 
 | |||
|  | 	* meson.build: Check the return value of `run_command`. | |||
|  | 
 | |||
|  | 	By default, errors are not checked and a command that is somehow broken will | |||
|  | 	just capture incorrect output (likely an empty string).  Current development | |||
|  | 	versions of meson now raise a warning for this implicit behavior, and advise | |||
|  | 	explicitly setting the `check:` keyword argumend to determine whether a | |||
|  | 	failing return code should be considered an error. | |||
|  | 
 | |||
|  | 	Since none of the commands in this project are expected to fail, mark them | |||
|  | 	as required to succeed. | |||
|  | 
 | |||
|  | 2021-12-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Upstream the hdmx binary search. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.h (TT_SizeRec): Add `widthp` for the hdmx | |||
|  | 	widths. | |||
|  | 	* src/truetype/ttobjs.c (tt_size_reset): Initialize `widthp` even | |||
|  | 	though it might never be used by the interpreter. | |||
|  | 	* src/truetype/ttgload.c (tt_loader_init): Avoid repeated searches | |||
|  | 	in the hdmx table. | |||
|  | 
 | |||
|  | 2021-12-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Reset the IUP-called flags for each subglyph. | |||
|  | 
 | |||
|  | 	This fixes fall-out from 7809007a5b88b15, where the composite | |||
|  | 	accents were no longer hinted. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (ttloader_init): Move the IUP-called flag | |||
|  | 	initialization from here... | |||
|  | 	* src/truetype/ttinterp.c (TT_Run_Context): ... to here. | |||
|  | 
 | |||
|  | 2021-12-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Binary search through the `hdmx` records. | |||
|  | 
 | |||
|  | 	The `hdmx` table is supposed to be sorted by ppem size, which | |||
|  | 	enables binary search.  We also drop the check for the sufficient | |||
|  | 	length of the record because it is now enforced when the table | |||
|  | 	is loaded. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/tttypes.h (TT_FaceRec): Store the `hdmx` | |||
|  | 	record pointers sorted by ppem instead of ppem's themselves. | |||
|  | 	* src/truetype/ttpload.c (tt_face_load_hdmx): Prudently sort records. | |||
|  | 	(tt_face_get_device_metrics): Implement binary search to retrieve | |||
|  | 	advances. | |||
|  | 
 | |||
|  | 2021-12-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable. | |||
|  | 
 | |||
|  | 	This simply shortcuts the glyph loading if FT_LOAD_ADVANCE_ONLY | |||
|  | 	is specified by FT_Get_Advances and the `hdmx` data are located. | |||
|  | 	Particularly, the classic v35 interpreter or "verified" ClearType | |||
|  | 	fonts might see 100x speed up in retrieving the hdmx cache. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (TT_Load_Glyph): Insert the shortcut. | |||
|  | 
 | |||
|  | 2021-12-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Initialize the loader with `hdmx` data. | |||
|  | 
 | |||
|  | 	The `hdmx` matching can be done before the glyph is loaded. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/tttypes.h (TT_LoaderRec): Add a field. | |||
|  | 	* src/truetype/ttgload.c (compute_glyph_metrics): Relocate the `hdmx` | |||
|  | 	code from here... | |||
|  | 	(tt_loader_init): ... to here, before the glyph is loaded. | |||
|  | 
 | |||
|  | 2021-12-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Relocate subpixel flag setting. | |||
|  | 
 | |||
|  | 	`TT_RunIns` is too busy to deal with subpixel flags. It is better | |||
|  | 	to set them in `tt_loader_init`, which is executed before each | |||
|  | 	glyph program. | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.c (TT_RunIns): Move the flag setting from | |||
|  | 	here... | |||
|  | 	* src/truetype/ttgload.c (tt_loader_init): ... to here. | |||
|  | 
 | |||
|  | 2021-12-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Limit INSTCTRL appication within specs. | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.c (Ins_INSTCTRL): Limit its global effects | |||
|  | 	to the CVT program and local effects to the glyph program. | |||
|  | 
 | |||
|  | 	This also fixes an Infinality buglet. The `ignore_x_mode` should be | |||
|  | 	locally unset by the glyph program. | |||
|  | 
 | |||
|  | 2021-12-09  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[bdf] Fix use of uninitialized value. | |||
|  | 
 | |||
|  | 	In _bdf_readstream if the data contained no newline then the buffer | |||
|  | 	would continue to grow and uninitialized data read until either the | |||
|  | 	uninitialized data contained a newline or the buffer reached its | |||
|  | 	maxiumum size. The assumption was that the line was always too long and | |||
|  | 	the buffer had been filled, however this case can also happen when there | |||
|  | 	is not enough data to fill the buffer. | |||
|  | 
 | |||
|  | 	Correct this by properly setting the cursor to the end of the available | |||
|  | 	data, which may be different from the end of the buffer. This may still | |||
|  | 	result in one extra allocation, but only on malformed fonts. | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_bfd_readstream): Correctly update cursor. Remove | |||
|  | 	unread set of `avail`. | |||
|  | 
 | |||
|  | 	Bug: https://lists.nongnu.org/archive/html/freetype-devel/2021-12/msg00001.html | |||
|  | 
 | |||
|  | 2021-12-07  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Reduce Infinality footprint again. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (compute_glyph_metrics): Streamline and | |||
|  | 	prioritize the Infinality checks to use `hdmx`. | |||
|  | 
 | |||
|  | 2021-12-07  Cameron Cawley  <ccawley2011@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Guard some non-ancient API. | |||
|  | 
 | |||
|  | 	We can support Windows 98 and NT 4.0 in principle... | |||
|  | 
 | |||
|  | 	* builds/windows/ftdebug.c, builds/windows/ftsystem.c: Check for the | |||
|  | 	ancient SDK using _WIN32_WINDOWS, _WIN32_WCE, or _WIN32_WINNT. | |||
|  | 
 | |||
|  | 2021-12-07  Cameron Cawley  <ccawley2011@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/visualc/freetype.vcproj: Add missing file. | |||
|  | 
 | |||
|  | 2021-12-02  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* Version 2.11.1 released. | |||
|  | 	========================== | |||
|  | 
 | |||
|  | 	Tag sources with `VER-2-11-1'. | |||
|  | 
 | |||
|  | 	* docs/VERSION.TXT: Add entry for version 2.11.1. | |||
|  | 	* docs/CHANGES, docs/release: 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.11.0/2.11.1/, s/2110/2111/. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. | |||
|  | 
 | |||
|  | 	* builds/unix/configure.raw (version_info): Set to 24:1:18. | |||
|  | 	* CMakeLists.txt (VERSION_PATCH): Set to 1. | |||
|  | 
 | |||
|  | 	* builds/toplevel.mk (version_tag, CHANGELOG_SCRIPT): New variables. | |||
|  | 	(do-dist): Generate `ChangeLog` file with all commits since last release. | |||
|  | 
 | |||
|  | 2021-11-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Improve debugging. | |||
|  | 
 | |||
|  | 	* builds/windows/ftdebug.c (FT_Message, FT_Panic): Buffer output | |||
|  | 	and call `OutputDebugStringA` only if `IsDebuggerPresent`. | |||
|  | 	[_WIN32_WCE] (OutputDebugStringA): Implement the missing API. | |||
|  | 
 | |||
|  | 2021-11-29  Seigo Nonaka  <nona@google.com> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Request_Metrics): Fix build warning on Android. | |||
|  | 
 | |||
|  | 	Use casts since `FT_USHORT_MAX` is unsigned short in bionic (libc used in | |||
|  | 	Android). | |||
|  | 
 | |||
|  | 2021-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj (DlgCopy): Minor tweak. | |||
|  | 
 | |||
|  | 2021-11-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttpload.c (tt_face_load_hdmx): Added comments. | |||
|  | 
 | |||
|  | 2021-11-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Quietly reject out-of-spec `hdmx` tables. | |||
|  | 
 | |||
|  | 	The `hdmx` table is optional and can be safely rejected without | |||
|  | 	an error if it does not follow specifications. The record size | |||
|  | 	must be equal to the number of glyphs + 2 + 32-bit padding. | |||
|  | 
 | |||
|  | 	* src/truetype/ttpload.c (tt_face_load_hdmx): Thoroughly check | |||
|  | 	the record size and improve tracing. | |||
|  | 
 | |||
|  | 2021-11-23  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Partly revert 5b626281. | |||
|  | 
 | |||
|  | 	Fixes #1118. | |||
|  | 
 | |||
|  | 	* src/truetype/ttpload.c (tt_face_load_hdmx): Do not assume that | |||
|  | 	`record_size` is rounded even though the records are padded. | |||
|  | 
 | |||
|  | 2021-11-23  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj (DlgCopy): Use transforms. | |||
|  | 
 | |||
|  | 2021-11-22  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Update `CHANGES` files, other minor whitespace and documentation issues. | |||
|  | 
 | |||
|  | 2021-11-21  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	formats.txt: Add info about WOFF and WOFF2. | |||
|  | 
 | |||
|  | 2021-11-21  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	meson.build: Initialize `common_ldflags`. | |||
|  | 
 | |||
|  | 2021-11-21  Lukas Oberhuber  <@lukaso> | |||
|  | 
 | |||
|  | 	* meson.build: Fix compatibility version on MacOS. | |||
|  | 
 | |||
|  | 	Fixes #1117. | |||
|  | 
 | |||
|  | 2021-11-21  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.c (Ins_MD): Avoid `FT_ABS`. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38562 | |||
|  | 
 | |||
|  | 2021-11-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* include/freetype/fttypes.h (FT_MAKE_TAG): Remove the same casting. | |||
|  | 
 | |||
|  | 2021-11-20  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[gxvalid] Fix minor compilation warning. | |||
|  | 
 | |||
|  | 	* src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup): Declare | |||
|  | 	as static. | |||
|  | 
 | |||
|  | 2021-11-20  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[smooth] Fix stand-alone compilation. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_Trace_Enable, FT_Trace_Disable)[STANDALONE_]: | |||
|  | 	Define. | |||
|  | 
 | |||
|  | 2021-11-20  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Avoid undefined left-shifts. | |||
|  | 
 | |||
|  | 	We really have to use double casts to avoid issues with C's and C++'s | |||
|  | 	signedness propagation rules in implicit casts. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41178 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41182 | |||
|  | 
 | |||
|  | 	* include/freetype/config/public-macros.h (FT_STATIC_CAST, | |||
|  | 	FT_REINTERPRET_CAST): Modify macro to take two arguments. | |||
|  | 	Update all callers. | |||
|  | 	(FT_STATIC_BYTE_CAST): New macro. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FT_ENC_TAG): Use `FT_STATIC_BYTE_CAST`. | |||
|  | 	* include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. | |||
|  | 	* include/freetype/fttypes.h (FT_MAKE_TAG): Ditto. | |||
|  | 	Use `FT_Tag` for casting. | |||
|  | 
 | |||
|  | 	* src/ftraster/ftmisc.h (FT_MAKE_TAG): Removed, no longer needed. | |||
|  | 	(FT_STATIC_BYTE_CAST): New macro. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_STATIC_CAST): Replace with... | |||
|  | 	(FT_STATIC_BYTE_CAST): ... this. | |||
|  | 
 | |||
|  | 2021-11-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Provide C++ versions for public macros with casts. | |||
|  | 
 | |||
|  | 	Many FreeType clients use C++.  However `g++ -Wold-style-cast` warns for | |||
|  | 	macros with C-style casts even for system header files; this also affects | |||
|  | 	directories included with `-isystem`.  While this could be seen as a problem | |||
|  | 	with g++, the problem is more a philosophical one: Over the time, C and C++ | |||
|  | 	diverged more and more, and some features of C are no longer the 'right' | |||
|  | 	solution in C++. | |||
|  | 
 | |||
|  | 	* include/freetype/config/public-macros.h (FT_STATIC_CAST, | |||
|  | 	FT_REINTERPRET_CAST): New macros. | |||
|  | 
 | |||
|  | 	* include/freetype/freetype.h (FT_ENC_TAG, FT_LOAD_TARGET_, | |||
|  | 	FT_LOAD_TARGET_MODE): Use `FT_STATIC_CAST`. | |||
|  | 	Correctly handle negative 'signed char' input. | |||
|  | 	* include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. | |||
|  | 	* include/freetype/fttypes.h (FT_MAKE_TAG, FT_BOOL): Ditto. | |||
|  | 	* include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): Use | |||
|  | 	`FT_REINTERPRET_CAST`. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_STATIC_CAST)[STANDALONE_]: New macro. | |||
|  | 	[!STANDALONE]: Include `FT_CONFIG_CONFIG_H`. | |||
|  | 
 | |||
|  | 	Fixes #1116. | |||
|  | 
 | |||
|  | 2021-11-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix clang++ warnings. | |||
|  | 
 | |||
|  | 	* src/*: Initialize some variables to NULL. | |||
|  | 
 | |||
|  | 2021-11-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Updates for the forthcoming OpenType 1.9 standard (2/2). | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_load_item_variation_store): | |||
|  | 	s/shortDeltaCount/wordDeltaCount/ (as done in the specification, too). | |||
|  | 	Recognize new format and reject it for now. | |||
|  | 
 | |||
|  | 2021-11-16  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Updates for the forthcoming OpenType 1.9 standard (1/2). | |||
|  | 
 | |||
|  | 	This is in preparation for implementing `DeltaSetIndexMap` format 1, which | |||
|  | 	is used by `COLR` v1 tables, and which allows 32bit indices. | |||
|  | 
 | |||
|  | 	  https://docs.microsoft.com/en-us/typography/opentype/otspec190/delta/otvarcommonformats_delta.html | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.h (GX_DeltaSetIdxMapRec): Change type of `mapCount` | |||
|  | 	to `FT_ULong`. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add argument | |||
|  | 	for passing the table size; update caller. | |||
|  | 	Implement new format. | |||
|  | 
 | |||
|  | 2021-11-14  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix clang warnings. | |||
|  | 
 | |||
|  | 	* src/gxvalid/gxvcmmn.h (GXV_SET_ERR_IF_PARANOID): Use 'do' block. | |||
|  | 	* src/gxvalid/gxvmod.c (GXV_TABLE_LOAD, GXV_TABLE_VALIDATE): Ditto. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (gray_convert_glyph): Add cast. | |||
|  | 
 | |||
|  | 	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Remove cast. | |||
|  | 	* src/type1/t1load.c (read_binay_data): Use `FT_ULong` for `size` parameter. | |||
|  | 	(parse_subrs, parse_charstrings, parse_dict): Ditto; also add some casts. | |||
|  | 
 | |||
|  | 2021-11-13  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Avoid undefined shifts in `COLR` v1 paint parsing | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Tighten shift | |||
|  | 	behavior by using multiplication, mostly using macros from ftcalc.h. | |||
|  | 
 | |||
|  | 	Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1269168 | |||
|  | 
 | |||
|  | 2021-11-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Improve `DlgCopy` target. | |||
|  | 
 | |||
|  | 	Fixes #1113. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Run `DlgCopy` conditionally | |||
|  | 	and decouple it from `Build`. | |||
|  | 
 | |||
|  | 2021-11-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Explicitly define `FT_MSB` for Clang. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftcalc.h [__clang__] (FT_MSB): Updated. | |||
|  | 
 | |||
|  | 2021-11-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_to_normalized): Edge optimization. | |||
|  | 
 | |||
|  | 2021-11-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Additional `FT_MSB` macro definitions. | |||
|  | 
 | |||
|  | 	Better macros for Windoes CE and ARM in general, based on !109 | |||
|  | 	from metarutaiga. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated. | |||
|  | 
 | |||
|  | 2021-11-09  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[build/windows] Remove logging from default debug configurations. | |||
|  | 
 | |||
|  | 	DLG is rather costly for performance and should be used judiciously. | |||
|  | 	This removes it from the default configurations but gives an example | |||
|  | 	how to enable it using the `UserDefines` property. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Hide FT_DEBUG_LOGGING. | |||
|  | 
 | |||
|  | 2021-11-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_open_font): Fix typo. | |||
|  | 
 | |||
|  | 2021-11-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/gxvalid.*, src/otvalid.*: Fix `-Wformat` warnings. | |||
|  | 
 | |||
|  | 2021-11-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[pshinter] Fix C++ compilation. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.c (psh_compute_dir): Fix type of `result`. | |||
|  | 	(psh_hint_table_find_strong_points): Add cast. | |||
|  | 
 | |||
|  | 2021-11-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[sfnt] Reduce footprint if WOFF and WOFF2 support is not needed. | |||
|  | 
 | |||
|  | 	Based on a patch from metarutaiga (MR !106).  The gist of this commit is | |||
|  | 	that it doesn't make sense to support WOFF without compression (which would | |||
|  | 	be only possible in WOFF 1.0 anyway). | |||
|  | 
 | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_open_font): Guard WOFF code with | |||
|  | 	`FT_CONFIG_OPTION_USE_ZLIB` block. | |||
|  | 	Guard WOFF2 code with `FT_CONFIG_OPTION_USE_BROTLI` block. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff.c, src/sfnt/sfwoff.h: Guard files with | |||
|  | 	`FT_CONFIG_OPTION_USE_ZLIB` blocks, not parts of the code. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h, src/sfnt/woff2tags.c, | |||
|  | 	src/sfnt/woff2tags.h: Guard files with `FT_CONFIG_OPTION_USE_BROTLI` blocks, | |||
|  | 	not parts of the code. | |||
|  | 
 | |||
|  | 	Fixes #1111. | |||
|  | 
 | |||
|  | 2021-11-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Make trickyness checks depend on TT_USE_BYTECODE_INTERPRETER. | |||
|  | 
 | |||
|  | 	Based on a patch from metarutaiga (MR !106). | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag, | |||
|  | 	tt_check_trickyness_family, tt_synth_sfnt_checksum, tt_get_sfnt_checksum, | |||
|  | 	tt_check_trickyness_sfnt_ids, tt_check_trickyness): Put functions into a | |||
|  | 	`TT_USE_BYTECODE_INTERPRETER` block. | |||
|  | 	(tt_face_init): Put trickyness checks into a `TT_USE_BYTECODE_INTERPRETER` | |||
|  | 	block. | |||
|  | 
 | |||
|  | 	Fixes #1111. | |||
|  | 
 | |||
|  | 2021-11-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_gasp): Fix a type mismatch warning. | |||
|  | 
 | |||
|  | 2021-11-07  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[dlg] Define DLG_STATIC explicitly. | |||
|  | 
 | |||
|  | 	DLG_STATIC is intended to disable Windows DLL linking attributes. | |||
|  | 	It does not hurt to define it explicitly when we wrap DLG code. | |||
|  | 	This fixes tons of LNK4286 and C4273 warnings from MSVC if we | |||
|  | 	forget to define DLG_STATIC as a compiler option. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Remove DLG_STATIC option. | |||
|  | 	* src/dlg/dlgwrap.c [FT_DEBUG_LOGGING]: Define DLG_STATIC. | |||
|  | 	* include/freetype/internal/ftdebug.h [FT_DEBUG_LOGGING]: Ditto. | |||
|  | 
 | |||
|  | 2021-11-07  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[dlg] Lighten up the inclusions. | |||
|  | 
 | |||
|  | 	The DLG wrapper needs to know if FT_DEBUG_LOGGING is defined in | |||
|  | 	`ftoption.h`. It does not need entire FreeType. | |||
|  | 
 | |||
|  | 	* src/dlg/dlgwrap.c: Include FT_CONFIG_OPTIONS_H directly. | |||
|  | 
 | |||
|  | 2021-11-07  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Avoid some memory zeroing in variations. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (ft_var_readpackeddeltas, ft_var_load_avar, | |||
|  | 	ft_var_load_item_variation_store, ft_var_load_gvar): Use FT_QNEW_ARRAY | |||
|  | 	if memory immediately initialized or discarded otherwise. | |||
|  | 
 | |||
|  | 2021-11-05  Jany Belluz  <jany.belluz@daltonmaag.com> | |||
|  | 
 | |||
|  | 	[truetype] Fix handling of packed deltas in Variation Fonts. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar (ft_var_readpackeddeltas): Don't expect the number of | |||
|  | 	bytes used to encode the deltas to be higher than the number of encoded | |||
|  | 	values.  The specification allows a very compact encoding; for example, a | |||
|  | 	list of 200 zeros can be encoded with just a couple of bytes. | |||
|  | 
 | |||
|  | 	We now count the consumed bytes to make sure to not read more than expected. | |||
|  | 
 | |||
|  | 2021-11-04  Jany Belluz  <jany.belluz@daltonmaag.com> | |||
|  | 
 | |||
|  | 	[truetype] Fix CVAR handling of tuples for all points. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar (tt_face_vary_cvt): Function | |||
|  | 	`ft_var_readpackedpoints`, when it returns `ALL_POINTS`, also sets | |||
|  | 	`point_count` to value 0.  However, the CVAR code was incorrectly expecting | |||
|  | 	that `point_count` would be set to match the length of the CVT table. | |||
|  | 
 | |||
|  | 2021-11-04  Jany Belluz  <jany.belluz@daltonmaag.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c: Fix typos in macros that guard CVAR code. | |||
|  | 
 | |||
|  | 2021-11-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* docs/INSTALL: Mention Meson and MSBuild more prominently. | |||
|  | 
 | |||
|  | 2021-11-03  Gabor Kertesz  <gabor.kertesz@linaro.org> | |||
|  | 
 | |||
|  | 	[libpng] Update Meson wrap for win-arm64 | |||
|  | 
 | |||
|  | 	1.6.37-5 released patches for win-arm64 to successfully build | |||
|  | 	libpng with Meson: | |||
|  | 	https://github.com/mesonbuild/wrapdb/pull/205 | |||
|  | 	https://github.com/mesonbuild/wrapdb/pull/216 | |||
|  | 
 | |||
|  | 	Updated by the following command: | |||
|  | 	meson wrap update libpng | |||
|  | 
 | |||
|  | 	Tested on win-arm64 and x64. | |||
|  | 
 | |||
|  | 2021-11-03  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Clarify `COLR` v1 FT_Paint* format representations | |||
|  | 
 | |||
|  | 	* include/freetype/ftcolor.h (FT_PaintLinearGradient, | |||
|  | 	FT_PaintRadialGradient, FT_PaintSweepGradient, FT_PaintTransform, | |||
|  | 	FT_PaintTranslate, FT_PaintScale, FT_PaintRotate, FT_PaintSkew): Clarify | |||
|  | 	16.16 fixed point representation of struct fields. | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): Shift coordinates for | |||
|  | 	FT_PaintLinearGradient, FT_PaintRadialGradient, FT_PaintSweepGradient | |||
|  | 	accordingly. | |||
|  | 
 | |||
|  | 	Fixes: https://gitlab.freedesktop.org/freetype/freetype/-/issues/1110 | |||
|  | 
 | |||
|  | 2021-11-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Let MSBuild handle DLG copy. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Specify DlgCopy target. | |||
|  | 	* builds/windows/vc2010/script.bat: Deleted. | |||
|  | 
 | |||
|  | 2021-10-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (load_truetype_glyph): Fix MSVC warning C4312. | |||
|  | 
 | |||
|  | 2021-10-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Separate MSVC linker and librarian. | |||
|  | 
 | |||
|  | 	MSVC uses LIB for static and LINK for dynamic libraries. They are | |||
|  | 	related but the former has much smaller set of options. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Updated. | |||
|  | 
 | |||
|  | 2021-10-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Revise MSVC linking optimizations. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Optimize DLL linking only. | |||
|  | 	* builds/windows/visualc/freetype.dsp: Ditto. | |||
|  | 	* builds/windows/visualc/freetype.vcproj: Ditto. | |||
|  | 
 | |||
|  | 2021-10-28  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[woff] Optimize table tagging. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/wofftypes.h (WOFF_TableRec): Use | |||
|  | 	32-bit tag. | |||
|  | 	* src/sfnt/sfwoff.c (woff_open_font): Use 32-bit tag. | |||
|  | 
 | |||
|  | 2021-10-28  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[woff2] Optimize table tagging. | |||
|  | 
 | |||
|  | 	Fixes #1107. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/wofftypes.h (WOFF2_TableRec): Use | |||
|  | 	32-bit tag. | |||
|  | 	* src/sfnt/sfwoff2.c (compare_tags, find_table, woff2_open_font): | |||
|  | 	Use 32-bit tag. | |||
|  | 	* src/sfnt/woff2tags.[ch] (woff2_known_tags): Use static storage and | |||
|  | 	return 32-bit tag. | |||
|  | 
 | |||
|  | 2021-10-26  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Formatting. | |||
|  | 
 | |||
|  | 2021-10-26  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[mm] Tolerate missing Blend dictionary entries | |||
|  | 
 | |||
|  | 	In a Multiple Master font, the Blend dictionary must contain valid | |||
|  | 	Private, FontInfo, and FontBBox. The current code will error if any of | |||
|  | 	these are present and invalid, but will not error and will provide | |||
|  | 	uninitialized data if the Blend dictionary exists but does not contain | |||
|  | 	one of these entries. This change reverts to the older behavior of | |||
|  | 	treating any missing entries as containing all zero data and not | |||
|  | 	returning an error. | |||
|  | 
 | |||
|  | 	In the future it may be best to keep track of when these are actually | |||
|  | 	initialized and error if they are not. | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c (t1_allocate_blend): Zero initiailize. | |||
|  | 
 | |||
|  | 2021-10-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Add MSVC linker optimazations. | |||
|  | 
 | |||
|  | 	We continue to build static libraries with statically linked C run- | |||
|  | 	time and add options to optimize references. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Sort entries, add options. | |||
|  | 
 | |||
|  | 2021-10-23  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Use MachineARM64. | |||
|  | 
 | |||
|  | 2021-10-22  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Prioritize x64. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.sln: Sort entries. | |||
|  | 
 | |||
|  | 2021-10-22  Gabor Kertesz  <gabor.kertesz@linaro.org> | |||
|  | 
 | |||
|  | 	[builds/windows] Add ARM64 platform. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.sln: Updated | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: Updated. | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj.filters: Minor fix. | |||
|  | 
 | |||
|  | 2021-10-21  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[mm] Delay setting blend weight and design position. | |||
|  | 
 | |||
|  | 	Previously the `blend->weight_vector`, `blend->default_weight_vector`, | |||
|  | 	and `blend->design_pos` were set early to allocated but uninitialized | |||
|  | 	memory under the assumption that the memory would eventually be | |||
|  | 	initialized. However, it is possible that some of the required | |||
|  | 	keywords may not actually be present, leaving the memory uninitialized. | |||
|  | 	This is different from a present but invalid table, which would produce | |||
|  | 	an error. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 	  https://bugs.chromium.org/p/chromium/issues/detail?id=1261762 | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c (t1_allocate_blend): Remove early allocation and | |||
|  | 	initialization. | |||
|  | 	(parse_blend_design_positions, parse_weight_vector): Parse into local | |||
|  | 	and assign to blend if valid. | |||
|  | 	(T1_Open_Face): Check that if a blend exists that it has the weight | |||
|  | 	vector and design positions. | |||
|  | 
 | |||
|  | 2021-10-21  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[cff] Commit vstore data and regions on allocation. | |||
|  | 
 | |||
|  | 	The vstore->regionCount and vstore->dataCount were read directly | |||
|  | 	from the data. However, vstore->varRegionList and vstore->varData | |||
|  | 	would still contain uninitialized entries with uninitialized | |||
|  | 	pointers in the event of an error, leading to issues when attempting | |||
|  | 	to clean up. | |||
|  | 
 | |||
|  | 	Reportd as | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40104 | |||
|  | 
 | |||
|  | 	* src/cff/cffload.c (cff_vstore_load): Read the region and data counts | |||
|  | 	into locals and update the vstore counts immediately after each entry | |||
|  | 	becomes free-able. | |||
|  | 
 | |||
|  | 2021-10-20  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Delay setting gasp ranges and count until computed. | |||
|  | 
 | |||
|  | 	Previously, the gasp.numRanges was set and gasp.gaspRanges was | |||
|  | 	allocated and assigned before a possible early exit if the frame could | |||
|  | 	not be entered. It is also possible that the gaspRanges allocation | |||
|  | 	could fail but the numRanges still be set to non-zero. In such cases | |||
|  | 	an error would be returned, but the face would have a gasp in an | |||
|  | 	inconsistent state which may still be accessed. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 	  https://bugs.chromium.org/p/chromium/issues/detail?id=1261450 | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_gasp): Delay setting gasp.numRanges | |||
|  | 	and gasp.gaspRanges until after the ranges are initialized. | |||
|  | 
 | |||
|  | 2021-10-20  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Delay setting names and langTags until computed. | |||
|  | 
 | |||
|  | 	Previously, the table->names and table->langTags fields were created | |||
|  | 	pointing to uninitialized memory and an early exit could happen if the | |||
|  | 	frame could not be entered. The caller would then be unable to properly | |||
|  | 	dispose of the memory as the string fields had not been initialized. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 	  https://bugs.chromium.org/p/chromium/issues/detail?id=1261343 | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_name): delay setting table->langTags | |||
|  | 	and table->names until after the memory they will point to is fully | |||
|  | 	initialized. | |||
|  | 
 | |||
|  | 2021-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* tests/issue-1063/main.c: s/PATH_MAX/FILENAME_MAX/. | |||
|  | 
 | |||
|  | 	Closes !97 for Windows by using a standard macro. | |||
|  | 
 | |||
|  | 2021-10-19  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[bdf, cid, pfr, winfonts] Improve rejection of other font formats. | |||
|  | 
 | |||
|  | 	This is mainly for better diagnostics of malformed fonts. | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_bfd_readstream): Stop font format testing if the first | |||
|  | 	input line is too long or doesn't end with `\r` or `\n`. | |||
|  | 
 | |||
|  | 	* src/cid/cidparse.c (cid_parser_new): Don't handle too short input as an | |||
|  | 	error but as an unknown format. | |||
|  | 
 | |||
|  | 	* src/pfr/pfrobjs.c (pfr_face_init): Ditto. | |||
|  | 
 | |||
|  | 	* src/winfonts/winfnt.c (fnt_font_load, fnt_face_get_dll_font): Ditto. | |||
|  | 
 | |||
|  | 2021-10-19  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pcf] Zero out the allocated properties. | |||
|  | 
 | |||
|  | 	Fallout reported as | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40033 | |||
|  | 
 | |||
|  | 	* src/pcf/pcfread.c (pcf_get_properties): Use FT_NEW_ARRAY and zero | |||
|  | 	out `properties` in case of failure. | |||
|  | 
 | |||
|  | 2021-10-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	configure: Use string comparison for directory inodes. | |||
|  | 
 | |||
|  | 	Inode values might be larger than integers supported by the shell. | |||
|  | 
 | |||
|  | 	Fixes #1105. | |||
|  | 
 | |||
|  | 2021-10-17  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_name): NULL-initialize langTag. | |||
|  | 
 | |||
|  | 	Another attempt to fix fallout reported as | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40024 | |||
|  | 
 | |||
|  | 2021-10-17  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[bdf] Fix up user properties. | |||
|  | 
 | |||
|  | 	Fallout reported as | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40027 | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_bdf_add_property): Cosmetic NULL. | |||
|  | 	(bdf_create_property): Limit allocations to customary signed | |||
|  | 	FT_Long and NULL-initialize unused storage. | |||
|  | 	(bdf_free_font): Do not free unused storage. | |||
|  | 
 | |||
|  | 2021-10-17  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_name): Accounting fix. | |||
|  | 
 | |||
|  | 	Fallout reported as | |||
|  | 	  https://crbug.com/40024 | |||
|  | 
 | |||
|  | 2021-10-16  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	Fix typos in memory macros. | |||
|  | 
 | |||
|  | 	FT_QNEW_ARRAY and FT_QRENEW_ARRAY were using the non-Q | |||
|  | 	FT_MEM_NEW_ARRAY and FT_MEM_RENEW_ARRAY. Change these to use the Q | |||
|  | 	versions. Also fix the one issue discovered in tt_face_load_name | |||
|  | 	where table->names is created with FT_QNEW_ARRAY but the extra | |||
|  | 	string member is not initialized to NULL. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftmemory.h (FT_Q(RE)NEW_ARRAY): | |||
|  | 	Use FT_MEM_Q(RE)NEW_ARRAY as needed. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_name): Initialize `entry->string`. | |||
|  | 
 | |||
|  | 2021-10-15  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[truetype] Reload context after re-executing `prep`. | |||
|  | 
 | |||
|  | 	When a different hinting mode from the current is selected, the `prep` table | |||
|  | 	must be re-executed with the new mode.  After this happens the context must | |||
|  | 	be re-loaded in preparation for the glyph program to be run. | |||
|  | 
 | |||
|  | 	Fixes #1104. | |||
|  | 
 | |||
|  | 	* truetype/ttgload.c (tt_loader_init): Add call to `TT_Load_Context`. | |||
|  | 
 | |||
|  | 2021-10-15  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Minor documentation improvements. | |||
|  | 
 | |||
|  | 2021-10-14  Anurag Thakur  <anuthadev@gmail.com> | |||
|  | 
 | |||
|  | 	Add clang build to linux CI | |||
|  | 
 | |||
|  | 2021-10-12  Anurag Thakur  <anuthadev@gmail.com> | |||
|  | 
 | |||
|  | 	CI: Add macOS CI, including a clang build | |||
|  | 
 | |||
|  | 2021-10-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cid/cidload.c (parse_fd_array): Protect against trancation. | |||
|  | 
 | |||
|  | 2021-10-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[type1] Revert to signed size for binary data. | |||
|  | 
 | |||
|  | 	Recently introduced and reported as | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39838 | |||
|  | 
 | |||
|  | 	* src/type1/t1load.c (read_binary_data): Reject negative size. | |||
|  | 	(parse_subrs, parse_charstrings): Use customary signed size. | |||
|  | 
 | |||
|  | 2021-10-11  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[psaux] Signedness revisions. | |||
|  | 
 | |||
|  | 	Unsigned indexes are easier to check. | |||
|  | 
 | |||
|  | 	* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Updated. | |||
|  | 	* src/psaux/psintrp.c (cf2_interpT2CharString): Ditto. | |||
|  | 	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto. | |||
|  | 	* src/type1/t1load.c (read_binary_data): Ditto. | |||
|  | 
 | |||
|  | 2021-10-11  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cid] Signedness revisions. | |||
|  | 
 | |||
|  | 	Unsigned checks are simpler. | |||
|  | 
 | |||
|  | 	* include/freetype/t1tables.h (CID_FaceInfoRec): Change to unsignd | |||
|  | 	`num_dicts`. | |||
|  | 	* src/cid/cidparse.h (CID_Parser): Change to unsigned `num_dict`. | |||
|  | 
 | |||
|  | 	* src/cid/cidgload.c (cid_load_glyph): Updated. | |||
|  | 	* src/cid/cidload.c (cid_load_keyword, parse_fd_array, | |||
|  | 	parse_expansion_factor, parse_font_name, cid_read_subrs, | |||
|  | 	cid_face_open): Updated. | |||
|  | 	* src/cid/cidobjs.c (cid_face_done): Updated. | |||
|  | 	* src/cid/cidparse.c (cid_parser_new): Updated. | |||
|  | 
 | |||
|  | 2021-10-09  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cid/cidload.c (cid_face_open): Streamline CIDCount check. | |||
|  | 
 | |||
|  | 2021-10-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cid/cidload.c (cid_face_open): Streamline SubrCount check. | |||
|  | 
 | |||
|  | 2021-10-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading. | |||
|  | 
 | |||
|  | 2021-10-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Signedness revisions. | |||
|  | 
 | |||
|  | 	This eliminates explicit casting by switching to unsigned fields. | |||
|  | 	The revisions mostly impact the handling of CID fonts. | |||
|  | 
 | |||
|  | 	* include/freetype/fttypes.h (FT_Data): Change to unsigned `length`. | |||
|  | 	* include/freetype/t1tables.h (CID_FaceDictRec): Ditto for `sd_bytes`. | |||
|  | 	(CID_FaceInfoRec): Ditto for `gd_bytes` and `gd_bytes`. | |||
|  | 	* include/freetype/internal/tttypes.h (TT_LoaderRec): Ditto for | |||
|  | 	`byte_len`. | |||
|  | 
 | |||
|  | 	* src/cid/cidgload.c (cid_load_glyph): Updated. | |||
|  | 	* src/cid/cidload.h (cid_get_offset): Update argument. | |||
|  | 	* src/cid/cidload.c (cid_get_offset, cid_read_subrs, cid_face_open): | |||
|  | 	Updated. | |||
|  | 	* src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data): | |||
|  | 	Updated. | |||
|  | 	* src/psaux/psft.c (cf2_getT1SeacComponent): Updated. | |||
|  | 	* src/truetype/ttgload.c (TT_Process_Composite_Glyph, | |||
|  | 	load_truetype_glyph): Updated. | |||
|  | 
 | |||
|  | 2021-10-07  Jan Alexander Steffens (heftig)  <jan.steffens@gmail.com> | |||
|  | 
 | |||
|  | 	meson.build (gen_docs): Use `current_source_dir` instead of `source_root`. | |||
|  | 
 | |||
|  | 	These two are not equal when FreeType is used as a subproject, such as in | |||
|  | 	`freetype-demos`.  In that case, `source_root` points at the root project, | |||
|  | 	causing the docs build to fail. | |||
|  | 
 | |||
|  | 2021-10-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround. | |||
|  | 
 | |||
|  | 2021-10-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/unix, builds/vms] Standardize `mmap` failure. | |||
|  | 
 | |||
|  | 	* builds/unix/ftsystem.c (FT_Stream_Open): Check for MAP_FAILED. | |||
|  | 	* builds/vms/ftsystem.c (FT_Stream_Open): Ditto. | |||
|  | 
 | |||
|  | 	This should cover https://savannah.nongnu.org/patch/?5909 as well. | |||
|  | 
 | |||
|  | 2021-10-05  Hugh McMaster  <hugh.mcmaster@outlook.com> | |||
|  | 
 | |||
|  | 	autogen.sh: Only copy submodules if building from a git branch. | |||
|  | 
 | |||
|  | 	`autogen.sh` fails if building from a standard source tarball.  Firstly, git | |||
|  | 	expects to be called in a git repository, then `copy_submodule_files` | |||
|  | 	blindly attempts to copy files. | |||
|  | 
 | |||
|  | 	Debian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh` | |||
|  | 	before compiling to regenerate build files. | |||
|  | 
 | |||
|  | 	This patch ensures that various git commands are only called and 'dlg' files | |||
|  | 	are only copied if `autogen.sh` is called from a git repository. | |||
|  | 
 | |||
|  | 2021-10-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftgloadr.h: Add missing header. | |||
|  | 
 | |||
|  | 	Noticed by Jouk Jansen. | |||
|  | 
 | |||
|  | 2021-10-05  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Additional clean-ups. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code. | |||
|  | 	* src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields. | |||
|  | 
 | |||
|  | 2021-10-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] More convenient direction definition. | |||
|  | 
 | |||
|  | 	It is easier to check directions using flags than integer values. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.h (PSH_Dir): Redefine directions. | |||
|  | 	(PSH_PointRec): Use them as an enum type. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.c (psh_compute_dir): Modify return type. | |||
|  | 	(psh_glyph_init, psh_hint_table_find_strong_points, | |||
|  | 	psh_glyph_find_blue_points): Update users. | |||
|  | 
 | |||
|  | 2021-10-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[pshinter] Remove unnecessary check. | |||
|  | 
 | |||
|  | 	* src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not | |||
|  | 	check if direction is defined before checking how. | |||
|  | 
 | |||
|  | 2021-10-02  AnuthaDev  <anuthadev@gmail.com> | |||
|  | 
 | |||
|  | 	CI: Hardcode meson version to fix build failure on windows | |||
|  | 
 | |||
|  | 2021-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Additional `FT_MSB` macro definitions. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftcalc.h [__DECC,_CRAYC]: Use builtins | |||
|  | 	and intrinsics. | |||
|  | 
 | |||
|  | 2021-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting. | |||
|  | 
 | |||
|  | 2021-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/tools/apinames.c: Facilitate OpenVMS linker options. | |||
|  | 
 | |||
|  | 2021-09-29  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation. | |||
|  | 
 | |||
|  | 2021-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/unix] Do not use autoconf SIZEOF. | |||
|  | 
 | |||
|  | 	* builds/unix/ftconfig.h.in [FT_USE_AUTOCONF_SIZEOF_TYPES]: Removed. | |||
|  | 	* builds/unix/configure.raw: Remove AC_CHECK_SIZEOF and update. | |||
|  | 
 | |||
|  | 	After this commit, autoconf builds will fully rely on <limits.h> | |||
|  | 	rather than falling back on it if AC_CHECK_SIZEOF failed for some | |||
|  | 	reason.  There is a risk that misconfigured cross-compilation might | |||
|  | 	have wrong headers.  Note that Meson and CMake builds always relied on | |||
|  | 	<limits.h> for sizes and availability of integer types. | |||
|  | 
 | |||
|  | 2021-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Propagate sign when reading OFF3. | |||
|  | 
 | |||
|  | 	Signed 24-bit values are extremely rare.  FreeType only reads them in | |||
|  | 	PFR fonts with bitmap strikes conditionally. They have not been seen | |||
|  | 	in the known fonts.  That is why this bug could never be discovered. | |||
|  | 	`FT_FRAME_OFF3` propagates sign correctly. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftstream.h (FT_PEEK_OFF3, FT_PEEK_OFF3_LE): | |||
|  | 	Propagate sign into 32-bit value. | |||
|  | 	(FT_GET_OFF3, FT_READ_OFF3): Needed fixing but removed as unused. | |||
|  | 
 | |||
|  | 2021-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[bdf] Simplify comment collection or lack thereof. | |||
|  | 
 | |||
|  | 	BDF comments are neither actually collected nor retrieved. There is | |||
|  | 	no need to be fancy with delimiters. | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_add_bdf_comment): Delimit comments with zeros... | |||
|  | 	(bdf_load_font): ...and do not null-terminate comments additionally. | |||
|  | 	(_bdf_parse_glyphs): Check if comments are kept, which they are not. | |||
|  | 	(_bdf_parse_start): Minor clean up. | |||
|  | 
 | |||
|  | 2021-09-24  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Use NULL for pointers only. | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (*): Code changes. | |||
|  | 	* include/freetype/freetype.h: Comments only. | |||
|  | 	* src/cff/cffload.c, src/cff/cffobjs.c: Ditto. | |||
|  | 	* src/winfonts/winfnt.c: Ditto. | |||
|  | 
 | |||
|  | 2021-09-23  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Minor documentation fixes and improvements. | |||
|  | 
 | |||
|  | 2021-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Reference `fopen` in the docs. | |||
|  | 
 | |||
|  | 2021-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[bdf, pcf] Minor optimization. | |||
|  | 
 | |||
|  | 	* src/pcf/pcfread.c (pcf_load_font): Do not call `FT_MulDiv` for a | |||
|  | 	small job. | |||
|  | 	* src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto. | |||
|  | 	* src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a comment. | |||
|  | 
 | |||
|  | 2021-09-22  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Initialize stream memory earlier. | |||
|  | 
 | |||
|  | 	With Windows memory management tracking heap, it is important to use | |||
|  | 	it during the stream opening fallback. In Unix, the argument is | |||
|  | 	unused, but it is better to set it correctly. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Stream_New): Set memory before calling | |||
|  | 	`FT_Stream_Open`. | |||
|  | 	* builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open, | |||
|  | 	ft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper | |||
|  | 	memory argumment. | |||
|  | 
 | |||
|  | 2021-09-22  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Revert back to `CreateFileA` only. | |||
|  | 
 | |||
|  | 	Calling `CreateFileW` without making sure that the patname is really | |||
|  | 	`wchar_t` is a bad idea and can lead to unpredictable overreads. For | |||
|  | 	Windows CE, we impelemnt the missing API. | |||
|  | 
 | |||
|  | 	Fixes #1098 and !76 again. | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c (FT_Stream_Open): Call `CreateFileA`. | |||
|  | 	[_WIN32_WCE] (CreateFileA, FileSizeEx): Implement missing interfaces. | |||
|  | 
 | |||
|  | 2021-09-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner. | |||
|  | 
 | |||
|  | 2021-09-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Minor. | |||
|  | 
 | |||
|  | 2021-09-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW. | |||
|  | 
 | |||
|  | 2021-09-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Minor clean-ups. | |||
|  | 
 | |||
|  | 	* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses. | |||
|  | 	* src/cache/ftccache.c (FTC_Cache_Lookup): Ditto. | |||
|  | 	(FTC_Cache_RemoveFaceID): Remove unnecessary variable. | |||
|  | 
 | |||
|  | 2021-09-17  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Try both wide and narrow `CreateFile` | |||
|  | 
 | |||
|  | 	Windows handles wchar_t* UTF-16 and char* ANSI (presently UTF-8) | |||
|  | 	filenames using alternative -A and -W API. We'll try them both | |||
|  | 	when opening a file. This means that you should not worry about | |||
|  | 	about conversions. | |||
|  | 
 | |||
|  | 	Fixes #1098 and !76. | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c (FT_Stream_Open): Call alternative | |||
|  | 	`CreateFile` in the case of failure. | |||
|  | 
 | |||
|  | 2021-09-17  Edwin Steiner  <edwin.steiner@gmail.com> | |||
|  | 
 | |||
|  | 	[cff] Explicitly set StandardEncoding or ExpertEncoding offsets. | |||
|  | 
 | |||
|  | 	Fixes #1097. | |||
|  | 
 | |||
|  | 	* src/cff/cffload.c (cff_encoding_load): Set special offset values. | |||
|  | 
 | |||
|  | 2021-09-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Miscellaneous clean-ups. | |||
|  | 
 | |||
|  | 	* src/cache/ftccache.c (ftc_get_top_node_for_hash, FTC_Cache_Clear): | |||
|  | 	Remove barely used variables. | |||
|  | 	(ftc_cache_add): Adjust casting. | |||
|  | 	* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Remove casting. | |||
|  | 	* src/cache/ftcsbits.c (ftc_snode_load): Remove casting. | |||
|  | 
 | |||
|  | 2021-09-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cff/cffload.c (cff_fd_select_get): Remove casting. | |||
|  | 
 | |||
|  | 2021-09-16  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/pcf/pcfread.c (pcf_read_TOC): Remove casting. | |||
|  | 
 | |||
|  | 2021-09-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Minor type adjustments. | |||
|  | 
 | |||
|  | 	* src/cff/cffobjs.c (cff_face_init): Reduce casting. | |||
|  | 	* src/truetype/ttobjs.c (tt_size_ready_bytecode): Ditto. | |||
|  | 	* src/type1/t1load.c (T1_Set_MM_Design): Ditto. | |||
|  | 
 | |||
|  | 2021-09-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Replace boolean allocation macros with MEM ones. | |||
|  | 
 | |||
|  | 	* src/base/ftbitmap.c (FT_Bitmap_Copy): Use MEM-macro. | |||
|  | 	* src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Ditto. | |||
|  | 	* src/bzip2/ftbzip2.c (ft_bzip2_alloc): Ditto. | |||
|  | 	* src/cache/ftccache.c (ftc_cache_init): Ditto | |||
|  | 	* src/gzip/ftgzip.c (ft_gzip_alloc): Ditto. | |||
|  | 	* src/psnames/psmodule.c (ps_unicodes_init): Ditto. | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Ditto. | |||
|  | 	* src/sfnt/ttload.c (tt_face_load_name): Ditto. | |||
|  | 
 | |||
|  | 2021-09-15  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Revert to some zeroing. | |||
|  | 
 | |||
|  | 	* src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero | |||
|  | 	`buckets` again to fix some crashes. | |||
|  | 
 | |||
|  | 2021-09-14  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops. | |||
|  | 
 | |||
|  | 	Fixes fallout from 731d0b685685 reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38685 | |||
|  | 
 | |||
|  | 2021-09-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cff, pshinter] Clean up unsigned counters. | |||
|  | 
 | |||
|  | 	Loops with unsigned decrement can be reliably stopped when the counter | |||
|  | 	wraps around after reaching zero. | |||
|  | 
 | |||
|  | 	* src/cff/cffload.c (cff_charset_compute_cids): Use unsigned counter. | |||
|  | 	* src/pshinter/pshalgo.c (psh_hint_table_activate_mask): Ditto. | |||
|  | 	* src/pshinter/pshrec.c (ps_mask_table_merge): Ditto. | |||
|  | 
 | |||
|  | 2021-09-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[bdf, psnames, sfnt] Avoid some memory zeroing. | |||
|  | 
 | |||
|  | 	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use Q-macro. | |||
|  | 	* src/sfnt/sfobjs.c (sfnt_load_face): Ditto. | |||
|  | 	* src/psnames/psmodule.c (src/psnames/psmodule.c): Remove zero. | |||
|  | 
 | |||
|  | 2021-09-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_CMap_New): Revert to zeroing. | |||
|  | 
 | |||
|  | 	Fixes fallout from c1fa7aa2bc96, reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38641 | |||
|  | 
 | |||
|  | 2021-09-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Clean up `exec` initialization. | |||
|  | 
 | |||
|  | 	* src/truetype/ttinterp.c (Init_Context): Absorbed into... | |||
|  | 	(TT_New_Context): ... this function. | |||
|  | 
 | |||
|  | 2021-09-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Avoid some memory zeroing. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgload.c (load_truetype_glyph): Use Q-macro. | |||
|  | 	* src/truetype/ttinterp.c (Update_Max): Ditto. | |||
|  | 	* src/truetype/ttpload.c (src/truetype/ttpload.c): Ditto. | |||
|  | 
 | |||
|  | 2021-09-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Avoid some memory zeroing. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done, | |||
|  | 	ft_open_face_internal, ft_open_face_internal): Use Q-macros. | |||
|  | 
 | |||
|  | 2021-09-13  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache, psaux] Remove zeros. | |||
|  | 
 | |||
|  | 	* src/cache/ftcmru.c (FTC_MruList_New): Remove initialization. | |||
|  | 	* src/psaux/psstack.c (cf2_stack_init): Ditto. | |||
|  | 
 | |||
|  | 2021-09-12  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[cache] Avoid some memory zeroing. | |||
|  | 
 | |||
|  | 	* src/cache/ftcmru.c (FTC_MruList_New): Use Q-macro. | |||
|  | 	* src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Ditto. | |||
|  | 	* src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Ditto. | |||
|  | 
 | |||
|  | 2021-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero. | |||
|  | 
 | |||
|  | 	Fixes fall out from a7b199d081e7. | |||
|  | 
 | |||
|  | 2021-09-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Tweak `hdmx` checking. | |||
|  | 
 | |||
|  | 	Fixes #1096. | |||
|  | 
 | |||
|  | 	* src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding. | |||
|  | 
 | |||
|  | 2021-09-10  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[truetype] Tweak `loca` clamping. | |||
|  | 
 | |||
|  | 	Fixes #1095. | |||
|  | 
 | |||
|  | 	* src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping. | |||
|  | 	* include/freetype/internal/tttypes.h (TT_Face): Correct docs. | |||
|  | 
 | |||
|  | 2021-09-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Fortify memory debugging (cont'd). | |||
|  | 
 | |||
|  | 	* src/base/ftdbgmem.c (FT_DumpMemory): Check for active debugger. | |||
|  | 	(ft_mem_table_destroy): Move `FT_DumpMemory` call from here... | |||
|  | 	(ft_mem_debug_done): ... to here. | |||
|  | 
 | |||
|  | 2021-09-08  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Fortify memory debugging. | |||
|  | 
 | |||
|  | 	These changes are neccessary to properly recover `memory->user` that | |||
|  | 	holds the Windows heap handle now. | |||
|  | 
 | |||
|  | 	* src/base/ftdbgmem.c (ft_mem_debug_init): Handle all table allocations, | |||
|  | 	initializations, and sizing instead of... | |||
|  | 	(ft_mem_table_new): ... this function removed. | |||
|  | 	(ft_mem_debug_done): Better check for the active debugger and free the | |||
|  | 	debugger table here instead of... | |||
|  | 	(ft_mem_table_destroy): ... here. | |||
|  | 
 | |||
|  | 2021-09-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600. | |||
|  | 
 | |||
|  | 	This allows C99 compilation on Solaris. | |||
|  | 
 | |||
|  | 	Problem reported by Mojca Miklavec. | |||
|  | 
 | |||
|  | 2021-09-07  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Use native memory allocation API. | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free): | |||
|  | 	Wrap HeapAlloc, HeapReAlloc, and HeapFree. | |||
|  | 	(FT_New_Memory): Set the heap handle. | |||
|  | 
 | |||
|  | 2021-09-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[dlg] Synchronize with upstream. | |||
|  | 
 | |||
|  | 	* src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600. | |||
|  | 
 | |||
|  | 	Fixes #1093. | |||
|  | 
 | |||
|  | 2021-09-04  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Cosmetic zeros. | |||
|  | 
 | |||
|  | 2021-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory. | |||
|  | 
 | |||
|  | 2021-09-03  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	autogen.sh: Make it work with old Solaris 10 shell. | |||
|  | 
 | |||
|  | 2021-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[smooth, raster, sdf] Clean up initialization calls. | |||
|  | 
 | |||
|  | 	* src/raster/ftraster.c (ft_black_init): Removed. | |||
|  | 	(ft_black_new): Clean up. | |||
|  | 	* src/sdf/ftbsdf.c (bsdf_raster_new): Ditto. | |||
|  | 	* src/sdf/ftsdf.c (sdf_raster_new): Ditto. | |||
|  | 	* src/smooth/ftgrays.c (gray_raster_new): Ditto. | |||
|  | 
 | |||
|  | 2021-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing. | |||
|  | 
 | |||
|  | 2021-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling. | |||
|  | 
 | |||
|  | 2021-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Cosmetic zeros. | |||
|  | 
 | |||
|  | 2021-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Clean up stream reading. | |||
|  | 
 | |||
|  | 	* src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset, | |||
|  | 	FT_Stream_ReadULong and their LE variants): Remove unnecessary | |||
|  | 	initialization and slightly refactor. | |||
|  | 	(FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned | |||
|  | 	value and align with sister functions. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftstream.h (FT_Stream_GetByte, | |||
|  | 	FT_Stream_ReadByte): Update prototypes and caller macros. | |||
|  | 
 | |||
|  | 2021-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	s/0/NULL/ where appropriate. | |||
|  | 
 | |||
|  | 2021-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c (FT_Stream_Open): Fix double-close. | |||
|  | 
 | |||
|  | 2021-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[smooth] Reduce shift in multiply-shift optimization. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): Reduce shift. | |||
|  | 
 | |||
|  | 	Smaller shifts that keep the division operands of FT_UDIVPREP within | |||
|  | 	32 bits result in slightly faster divisions, which is noticeable in | |||
|  | 	the overall performance.  The loss of precision is tolerable until the | |||
|  | 	divisors (the components dx and dy) approach 32 - PIXEL_BITS. With | |||
|  | 	PIXEL_BITS = 8, this corresponds to 65,000 pixels or the bitmap size | |||
|  | 	that we refuse to render anyway. | |||
|  | 
 | |||
|  | 	Using `ftbench -p -s60 -t5 -bc timesi.ttf`, | |||
|  | 
 | |||
|  | 	Before: 8.52 us/op | |||
|  | 	After:  8.32 us/op | |||
|  | 
 | |||
|  | 2021-08-28  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[truetype] Fix compilation if !TT_CONFIG_OPTION_BYTECODE_INTERPRETER. | |||
|  | 
 | |||
|  | 	* src/truetype/ttgxvar.c (tt_cvt_ready_iterator): Compile function | |||
|  | 	conditionally. | |||
|  | 	(tt_face_vary_cvt) [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Add code. | |||
|  | 
 | |||
|  | 	Fixes #1091. | |||
|  | 
 | |||
|  | 2021-08-27  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Revise SSE2 settings. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj [x64]: Remove explicit SSE2. | |||
|  | 	* builds/windows/visualc/freetype.vcproj [Win32]: Add explicit SSE2. | |||
|  | 
 | |||
|  | 2021-08-27  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[smooth] Detect SSE2 with MSVC for x86 | |||
|  | 
 | |||
|  | 	MSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is | |||
|  | 	defined and greater than or equal to 2. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_SSE2): New macro. | |||
|  | 	Use it where appropriate. | |||
|  | 
 | |||
|  | 2021-08-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Expand comment (cont'd). | |||
|  | 
 | |||
|  | 2021-08-26  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Expand comment. | |||
|  | 
 | |||
|  | 2021-08-24  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (gray_render_conic): Refactor redundancy. | |||
|  | 
 | |||
|  | 2021-08-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[truetype] Fix for the family name shorter than 8 characters. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): | |||
|  | 	If the family name to be checked is shorter than 8 characters, | |||
|  | 	do not check its syntax. | |||
|  | 
 | |||
|  | 2021-08-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[truetype] Simplify `trick_names'. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_check_trickyness_family): For the case | |||
|  | 	that the beginning part of a long tricky family name is already | |||
|  | 	registered as another tricky family name, no need to double-check | |||
|  | 	the longer one.  Such long tricky family names are removed from | |||
|  | 	the `trick_names'. | |||
|  | 
 | |||
|  | 2021-08-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[truetype] Add 2 tricky font names. | |||
|  | 
 | |||
|  | 	Additional fix for the issue #1087. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_check_trickyness_family): Add 2 tricky | |||
|  | 	font names reported in #1087. | |||
|  | 
 | |||
|  | 2021-08-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[truetype] New function to skip the randomization tag. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): | |||
|  | 	New function to skip the randomization tag in the names of the | |||
|  | 	fonts embedded in a PDF.  It is used by tt_check_trickyness_family(), | |||
|  | 	to keep from mistaking "DLC" in the randomization tag as a | |||
|  | 	tricky font name. See discussion in: | |||
|  | 
 | |||
|  | 	https://lists.nongnu.org/archive/html/freetype-devel/2021-02/msg00002.html | |||
|  | 
 | |||
|  | 	For technical detail about the randomization tag, please find | |||
|  | 	PDF Reference 5.5.3 "Font Subsets".  Thanks to Justyna Wawrzynska | |||
|  | 	for pointing out the issue caused by the randomization tag. | |||
|  | 
 | |||
|  | 2021-08-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp> | |||
|  | 
 | |||
|  | 	[truetype] Add checksums for 2 tricky fonts. | |||
|  | 
 | |||
|  | 	Thanks to Ting717 for providing sample PDF. Fixes #1087. | |||
|  | 
 | |||
|  | 	* src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Add | |||
|  | 	checksums for 2 tricky fonts `DFHei-Bd-WIN-HK-BF' and | |||
|  | 	`DFMing-Md-WIN-HK-BF'. | |||
|  | 
 | |||
|  | 2021-08-23  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Whitespace formatting. | |||
|  | 
 | |||
|  | 2021-08-22  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Decorate const arguments. | |||
|  | 
 | |||
|  | 	* src/base/ftglyph.c (FT_Glyph_Transform, FT_Glyph_To_Bitmap): Do it. | |||
|  | 	* include/freetype/ftglyph.h (FT_Glyph_Transform, FT_Glyph_To_Bitmap): | |||
|  | 	Do it. | |||
|  | 
 | |||
|  | 2021-08-21  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[smooth] Clean up the null cell usage. | |||
|  | 
 | |||
|  | 	Put the null cell at the end of the pool and store it explicitly so that | |||
|  | 	we can use it as both the limit and the dumpster. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (gray_TWorker): Store the last `cell_null` and | |||
|  | 	remove unnecesary fields. | |||
|  | 	(NULL_CELL_PTR, CELL_IS_NULL): Remove in favor of explicit `cell_null`. | |||
|  | 	(gray_dump_cells, gray_set_cell, gray_sweep{,_direct}): Update callers. | |||
|  | 	(gray_convert_glyph_inner): Trace remaining cells (oh well). | |||
|  | 	(gray_convert_glyph): Set up `cell_null` and slightly improve the pool | |||
|  | 	management. | |||
|  | 
 | |||
|  | 2021-08-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[base] Restore quiet no-op rendering of bitmap glyphs. | |||
|  | 
 | |||
|  | 	Fixes #1076. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when | |||
|  | 	rendering a bitmap glyph. | |||
|  | 
 | |||
|  | 2021-08-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[smooth] Fortify 64-bit algorithm. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): s/long/FT_Int64/ and | |||
|  | 	s/unsigned long/FT_UInt64/. | |||
|  | 	(gray_render_line): Adjust a critical variable type. | |||
|  | 
 | |||
|  | 2021-08-20  Carlo Bramini  <carlo.bramix@libero.it> | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c (FT_Stream_Open): Support legacy Windows. | |||
|  | 
 | |||
|  | 2021-08-20  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Determine `long long` availability based on its size. | |||
|  | 
 | |||
|  | 	MSVC, for example, used `long long` even without full C99 support. | |||
|  | 
 | |||
|  | 	* include/freetype/config/ftstdlib.h: Check if `long long` limits are | |||
|  | 	defined in <limits.h>. | |||
|  | 	* include/freetype/config/integer-types.h: Check `long long` size and | |||
|  | 	use it to typedef FT_Int64. | |||
|  | 
 | |||
|  | 2021-08-19  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Fix format expectation for `COLR` v1 ClipList | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Change ClipList | |||
|  | 	format expectation to 1 instead of 0 to make it compliant with the | |||
|  | 	latest spec. | |||
|  | 
 | |||
|  | 2021-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Readily use `long long` as a 64-bit type in C99 mode. | |||
|  | 
 | |||
|  | 	* include/freetype/config/integer-types.h (FT_INT64): | |||
|  | 	FT_CONFIG_OPTION_FORCE_INT64 is no longer required to use `long long`. | |||
|  | 
 | |||
|  | 2021-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	Use FT_INT64 instead of FT_LONG64. | |||
|  | 
 | |||
|  | 	* include/freetype/config/integer-types.h: Remove synonymous FT_LONG64. | |||
|  | 	* include/freetype/internal/ftcalc.h: s/FT_LONG64/FT_INT64/. | |||
|  | 	* src/base/ftcalc.c: Ditto. | |||
|  | 	* src/base/fttrigon.c: Ditto. | |||
|  | 	* src/smooth/ftgrays.c: Ditto. | |||
|  | 
 | |||
|  | 2021-08-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	[builds/windows] Do not set CharacterSet for VC++. | |||
|  | 
 | |||
|  | 	* builds/windows/vc2010/freetype.vcxproj: s/Unicode/NotSet/. | |||
|  | 	* builds/windows/visualc/freetype.vcproj: s/"1"/"0"/. | |||
|  | 
 | |||
|  | 2021-08-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdf.c (get_control_box): Fix compiler warning. | |||
|  | 
 | |||
|  | 2021-08-18  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[base] Fix ppem size overflow. | |||
|  | 
 | |||
|  | 	Fixes #1086. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Request_Metrics): Add return value. | |||
|  | 	Check whether ppem values fit into unsigned short values. | |||
|  | 	(FT_Request_Size): Updated. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/ftobjs.h: Updated. | |||
|  | 
 | |||
|  | 	* src/cff/cffobjs.c (cff_size_request), src/cid/cidobjs.c | |||
|  | 	(cid_size_request), src/truetype/ttdriver.c (tt_size_request), | |||
|  | 	src/type1/t1objs.c (T1_Size_Request): Updated. | |||
|  | 
 | |||
|  | 2021-08-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c (FT_Stream_Open): Cast to remove warning. | |||
|  | 
 | |||
|  | 2021-08-18  Alexei Podtelezhnikov  <apodtele@gmail.com> | |||
|  | 
 | |||
|  | 	* builds/windows/ftsystem.c (FT_Stream_Open): Support UNICODE compilation. | |||
|  | 
 | |||
|  | 2021-08-09  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor fix. | |||
|  | 
 | |||
|  | 2021-08-09  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Add missing blend mode 'plus' to 'COLR' v1. | |||
|  | 
 | |||
|  | 	* include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode | |||
|  | 	'plus' after it was added to the spec. | |||
|  | 
 | |||
|  | 2021-08-08  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	include/freetype/freetype.h (FT_Encoding): Improve documentation. | |||
|  | 
 | |||
|  | 	Based on a suggestion by Antony Lee <anntzer.lee@gmail.com>. | |||
|  | 
 | |||
|  | 2021-08-07  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[smooth] Avoid integer overflow. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36243 | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c(ADD_LONG, SUB_LONG, MUL_LONG, NEG_LONG) | |||
|  | 	[STANDALONE_]: Removed, unused. | |||
|  | 	(ADD_INT) [STANDALONE_]: New macro. | |||
|  | 	(FT_INTEGRATE): Use ADD_INT. | |||
|  | 
 | |||
|  | 2021-08-07  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Add API for retrieving a 'COLR' v1 'ClipBox' table. | |||
|  | 
 | |||
|  | 	The optional 'COLR' v1 glyph-specific clip box helps upstream graphics | |||
|  | 	libraries allocate a sufficiently large bitmap for a glyph without having to | |||
|  | 	traverse the glyph graph for that.  See | |||
|  | 
 | |||
|  | 	  https://github.com/googlefonts/colr-gradients-spec/issues/251 | |||
|  | 
 | |||
|  | 	for background on the introduction of this specification change. | |||
|  | 
 | |||
|  | 	* include/freetype/ftcolor.h (FT_ClipBox): New structure. | |||
|  | 	(FT_Get_Color_Glyph_ClipBox): New function declaration. | |||
|  | 
 | |||
|  | 	* include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func): | |||
|  | 	New function type. | |||
|  | 	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it. | |||
|  | 
 | |||
|  | 	* src/base/ftobjs.c (FT_Get_Color_Glyph_ClipBox): New function to link API | |||
|  | 	with SFNT implementation. | |||
|  | 
 | |||
|  | 	* src/sfnt/sfdriver.c (sfnt_interface): Updated. | |||
|  | 	* src/sfnt/ttcolr.c (Colr): New field `clip_list`. | |||
|  | 	(tt_face_load_colr): Parse global clip list offset. | |||
|  | 	(tt_face_get_color_glyph_clipbox): New function to find the clip box for a | |||
|  | 	glyph id from the clip list array. | |||
|  | 	* src/sfnt/ttcolr.h: Updated. | |||
|  | 
 | |||
|  | 2021-08-06  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	[smooth] Fix left shifts of negative numbers. | |||
|  | 
 | |||
|  | 	Reported as | |||
|  | 
 | |||
|  | 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36241 | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (LEFT_SHIFT): New macro. | |||
|  | 	(gray_render_conic) [BEZIER_USE_DDA]: Use it. | |||
|  | 
 | |||
|  | 2021-08-02  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	* meson.build: Fix zlib support. | |||
|  | 
 | |||
|  | 	This commit synchronizes zlib support with both autotools and cmake: If no | |||
|  | 	external zlib is found (or intentionally disabled on the command line), use | |||
|  | 	the internal zlib by undefining `FT_CONFIG_OPTION_SYSTEM_ZLIB` without | |||
|  | 	modifying `FT_CONFIG_OPTION_USE_ZLIB`. | |||
|  | 
 | |||
|  | 	Also improve summary output. | |||
|  | 
 | |||
|  | 	Problem reported by Moazin. | |||
|  | 
 | |||
|  | 2021-08-02  Anuj Verma  <anujv@iitbhilai.ac.in> | |||
|  | 
 | |||
|  | 	[sdf] Fix out-of-range-access. | |||
|  | 
 | |||
|  | 	* src/sdf/ftbsdf.c (first_pass, second_pass): Fix range during forward pass. | |||
|  | 	Otherwise the index goes out of range for the last column. | |||
|  | 
 | |||
|  | 	Fixes issue #1077. | |||
|  | 
 | |||
|  | 2021-08-02  Anuj Verma  <anujv@iitbhilai.ac.in> | |||
|  | 
 | |||
|  | 	Fix invalid memory access in `bsdf` rasterizer. | |||
|  | 
 | |||
|  | 	Do not generate SDF from bitmap if the `FT_GLYPH_OWN_BITMAP` flag is not | |||
|  | 	set.  In some cases the bitmap buffer is freed but still points to a valid | |||
|  | 	address; to handle those cases check the flag before accessing the memory. | |||
|  | 
 | |||
|  | 	* src/sdf/ftsdfrend.c (ft_bsdf_render): Handle the above case. | |||
|  | 	Also, return an error message if the bitmap's rows/pitch is invalid, | |||
|  | 	otherwise `slot->buffer` might be assigned to some invalid memory location. | |||
|  | 	(ft_sdf_render): Same as above. | |||
|  | 	Plus, move the outline back to original state after rasterization and not if | |||
|  | 	any error occurs. | |||
|  | 
 | |||
|  | 2021-07-29  Heiko Becker  <heirecka@exherbo.org> | |||
|  | 
 | |||
|  | 	* meson.build: Honor `--includedir` instead of hard-coding 'include'. | |||
|  | 
 | |||
|  | 2021-07-29  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	src/sfnt/ttcolr.c: Minor formatting. | |||
|  | 
 | |||
|  | 2021-07-29  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] 'COLR' v1 PaintSweepGradient spec update | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): PaintSweepGradient follows other | |||
|  | 	spec changes and now has the angles specified as F2DOT14, reflect | |||
|  | 	that in the implementation. | |||
|  | 	* include/freetype/ftcolor.h (FT_PaintSweepGradient): Update | |||
|  | 	documentation. | |||
|  | 
 | |||
|  | 2021-07-29  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] Retrieve affine matrix from offset in 'COLR' v1 parsing. | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): Implement spec change where | |||
|  | 	affine transform matrix is now referenced by offset instead of | |||
|  | 	being placed inline in the PaintTransform table. | |||
|  | 
 | |||
|  | 2021-07-29  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] 'COLR' v1 PaintSkew related spec updates | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): Implement spec changes around | |||
|  | 	PaintSkew, PaintSkewAroundCenter.  Update parsing to read shorter | |||
|  | 	values as changed in the spec. | |||
|  | 	* include/freetype/ftcolor.h (FT_PaintSkew): Update documentation. | |||
|  | 
 | |||
|  | 2021-07-29  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] PaintRotate/PaintRotateAroundCenter spec updates | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): Implement spec change where | |||
|  | 	PaintRotate and PaintRotateAroundCenter were split for a more | |||
|  | 	compact format definition.  Update parsing to read shorter values | |||
|  | 	as changed in the spec. | |||
|  | 	* include/freetype/ftcolor.h (FT_PaintRotate): Update documentation. | |||
|  | 
 | |||
|  | 2021-07-29  Dominik Röttsches  <drott@chromium.org> | |||
|  | 
 | |||
|  | 	[sfnt] 'COLR' v1 PaintTranslate and PaintScale precision | |||
|  | 
 | |||
|  | 	* src/sfnt/ttcolr.c (read_paint): Implement spec changes in | |||
|  | 	PaintTranslate and PaintScale and friends.  Update parsing to read | |||
|  | 	new shorter values. | |||
|  | 
 | |||
|  | 2021-07-29  AnuthaDev  <anuthadev@gmail.com> | |||
|  | 
 | |||
|  | 	README.git: Add Code of Conduct. | |||
|  | 
 | |||
|  | 2021-07-25  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	ChangeLog housekeeping. | |||
|  | 
 | |||
|  | 	Archive old `ChangeLog` file. | |||
|  | 
 | |||
|  | 	We no longer write ChangeLog entries manually; instead, the file will be | |||
|  | 	created from commit messages (which should be formatted in GNU's ChangeLog | |||
|  | 	style) by a call to | |||
|  | 
 | |||
|  | 	  gitlog-to-changelog --format='%B%n' | |||
|  | 
 | |||
|  | 	or something similar (this script is part of the 'gnulib' repository). | |||
|  | 
 | |||
|  | 2021-07-24  Werner Lemberg  <wl@gnu.org> | |||
|  | 
 | |||
|  | 	Fix some `cppcheck` warnings. | |||
|  | 
 | |||
|  | 	* src/bzip2/ftbzip2.c (ft_bzip2_file_skip_output), src/gzip/ftgzip.c | |||
|  | 	(ft_gzip_file_skip_output): Reduce scope of `delta`. | |||
|  | 
 | |||
|  | 	* src/psaux/psintrp.c, src/psaux/psintrp.h (cf2_interpT2CharString): Add | |||
|  | 	`const` to `buf` parameter. | |||
|  | 
 | |||
|  | 	* src/raster/ftraster.c (DelOld): Add `const` to `profile` parameter. | |||
|  | 	(Vertical_Sweep_Span): Reduce scope of `target`. | |||
|  | 	(FT_Outline_Get_CBox): Reduce scope of `xMin`, `xMax`, `yMin`, `yMax`. | |||
|  | 
 | |||
|  | 	* src/smooth/ftgrays.c (gray_render_conic): Reduce scope of `split`. | |||
|  | 	(gray_sweep, gray_sweep_direct): Reduce scope of `area`. | |||
|  | 
 | |||
|  | 	* src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Reduce scope of | |||
|  | 	`temp`. | |||
|  | 
 | |||
|  | 2021-07-24  AnuthaDev  <anuthadev@gmail.com> | |||
|  | 
 | |||
|  | 	* .gitlab-ci.yml: Fixed cmake build, using correct options. | |||
|  | 
 | |||
|  | 2021-07-24  AnuthaDev  <anuthadev@gmail.com> | |||
|  | 
 | |||
|  | 	* CMakeLists.txt: Make `cmake` handle disabled dependencies correctly. | |||
|  | 
 | |||
|  | 	Include 'CMakeDependentOption'. | |||
|  | 
 | |||
|  | 	Replace `FT_WITH_XXX` options with `FT_DISABLE_XXX` and `FT_REQUIRE_XXX` | |||
|  | 	pairs.  Update option logic accordingly. | |||
|  | 
 | |||
|  | 	Fixes #1066. | |||
|  | 
 | |||
|  | 2021-07-24  Ben Wagner  <bungeman@chromium.org> | |||
|  | 
 | |||
|  | 	[autofit] Split `afwrtsys.h`. | |||
|  | 
 | |||
|  | 	The header file `afwrtsys.h` has two distinct functions: to include the | |||
|  | 	required writing system headers and also to generate code for each writing | |||
|  | 	system.  At each current use site only one or the other is used, with | |||
|  | 	various macro trickery selecting one or the other.  Split this header into | |||
|  | 	`afws-decl.h` for the required writing system declarations and `afws-iter.h` | |||
|  | 	for iterating over the writing systems to generate code. | |||
|  | 
 | |||
|  | 	The motivation for this change is that the Visual C++ compiler treats the | |||
|  | 	standard include guard idiom like `#pragma once` 'if no non-comment code or | |||
|  | 	preprocessor directive comes before or after the standard form of the | |||
|  | 	idiom'.  It appears to check this after macro expansion, so if | |||
|  | 	`WRITING_SYSTEM` expands to empty the bottom of `afwrtsys.h` is empty and | |||
|  | 	looks like the standard include guard idiom which is treated like `#pragma | |||
|  | 	once`, so subsequent inclusion of `afwrtsys.h` is elided. | |||
|  | 
 | |||
|  | 	Fixes #1075. | |||
|  | 
 | |||
|  | 	* src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h | |||
|  | 	(AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated. | |||
|  | 
 | |||
|  | 	* src/autofit/afwrtsys.h: Split into... | |||
|  | 	* src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files. |