diff options
Diffstat (limited to 'Build/source/libs/freetype2/freetype-src/ChangeLog')
-rw-r--r-- | Build/source/libs/freetype2/freetype-src/ChangeLog | 8184 |
1 files changed, 1027 insertions, 7157 deletions
diff --git a/Build/source/libs/freetype2/freetype-src/ChangeLog b/Build/source/libs/freetype2/freetype-src/ChangeLog index e649d31e2a1..e419b471e0c 100644 --- a/Build/source/libs/freetype2/freetype-src/ChangeLog +++ b/Build/source/libs/freetype2/freetype-src/ChangeLog @@ -1,7815 +1,1685 @@ -2021-07-18 Werner Lemberg <wl@gnu.org> +2021-12-02 Werner Lemberg <wl@gnu.org> - * Version 2.11.0 released. + * Version 2.11.1 released. ========================== + Tag sources with `VER-2-11-1'. - Tag sources with `VER-2-11-0'. - - * docs/VERSION.TXT: Add entry for version 2.11.0. - * docs/CHANGES: Updated. + * 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.10.4/2.11.0/, s/2104/2110/. - - * include/freetype/freetype.h (FREETYPE_MINOR): Set to 11. - (FREETYPE_PATCH): Set to 0. - - * builds/unix/configure.raw (version_info): Set to 24:0:18. - * CMakeLists.txt (VERSION_MINOR): Set to 11. - (VERSION_PATCH): Set to 0. - - * builds/toplevel.mk (dist): Ignore more git-related files. - -2021-07-17 David Turner <david@freetype.org> - - * src/smooth/ftgrays.c: Fix compilation if `FT_LONG64` is undefined. - - The code assumed that if `__SSE2__` is defined, then 64-bit integer - types are available. This is not the case apparently for certain - multilib compiler targets like 'x86_32.x86' used by Gentoo. - - This patch fixes the issue by disabling the special code path when - 64-bit integer types are not available. - - Fixes #1071. - -2021-07-16 Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> - - [tests] Allow arbitrary build directories. - - * tests/issue-1063/main.c (main): I am building with a build - directory that is not directly inside the source tree, so the path - `../tests/data/As.I.Lay.Dying.ttf` does not resolve to the test - input file. This change passes the test data directory as an - environment variable to allow arbitrary build directories. - - * tests/meson.build: Updated. - -2021-07-16 Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> - - * tests/issue-1063/main.c (main): Fix uninitialized variable. - - I tried running `meson test` but the test just crashed and gdb - reported that the face argument to `FT_Get_Char_Index` was nonsense. - With this change the test prints 'Could not open file: ' as it - should. - -2021-07-16 Werner Lemberg <wl@gnu.org> - - [smooth] Minor fixes. - - * src/smooth/ftgrays.c (gray_render_conic): Move variable and - structure declarations to beginning of function. Inspite of C99 - compliance we still do this for the sake of backward compatibility. - This also avoids a shadowing declaration of `count`. - (gray_convert_glyph_inner): Fix typo. - -2021-07-15 Ben Wagner <bungeman@chromium.org> - - * src/smooth/ftgrays.c: Guard inclusion of `emmintrin.h`. - - Guard inclusion of `emmintrin.h` with `#ifdef __SSE2__`. The gcc - version of this header, `xmmintrin.h`, and `mmintrin.h` check that - the appropriate defines are set before defining anything (are - internally guarded). However, the clang versions of these includes - are not internally guarded. As a result of this, externally guard - the inclusion of these headers. - -2021-07-15 David Turner <david@freetype.org> - - [smooth] Implement Bézier quadratic arc flattening with DDA. - - Benchmarking shows that this provides a very slighty performance - boost when rendering fonts with lots of quadratic Bézier arcs, - compared to the recursive arc splitting, but only when SSE2 is - available, or on 64-bit CPUs. - - On a 2017 Core i5-7300U CPU on Linux/x86_64: - - ftbench -p -s10 -t5 -cb DroidSansFallbackFull.ttf - - Before: 4.033 us/op (best of 5 runs for all numbers) - After: 3.876 us/op - - ftbench -p -s60 -t5 -cb DroidSansFallbackFull.ttf - - Before: 13.467 us/op - After: 13.385 us/op - - * src/smooth/ftgrays.c (gray_render_conic): New implementation - based on DDA and optionally SSE2. - -2021-07-15 David Turner <david@freetype.org> - - [smooth] Minor speedup to smooth rasterizer. - - This speeds up the smooth rasterizer by avoiding conditional - branches in the hot path. - - - Define a fixed 'null cell', which will be pointed to whenever the - current cell is outside of the current target region. This avoids - a `ras.cell != NULL` check in the `FT_INTEGRATE` macro. - - - Also use the null cell as a sentinel at the end of all `ycells` - linked-lists, by setting its x coordinate to `INT_MAX`. This - avoids a `if (!cell)` check in `gray_set_cell` as well. - - - Slightly change the worker struct fields to perform a little less - operations during rendering. - - Example results (on a 2013 Corei5-3337U CPU) - - out/ftbench -p -s10 -t5 -bc DroidSansFallbackFull.ttf - - Before: 5.472 us/op - After: 5.275 us/op - - out/ftbench -p -s60 -t5 -bc DroidSansFallbackFull.ttf - - Before: 17.988 us/op - After: 17.389 us/op - - * src/smooth/ftgrays.c (grat_TWorker): Replace `num_cells` field with - `cell_free` and `cell_limit`. - (NULL_CELL_PTR, CELL_MAX_X_VALUE, CELL_IS_NULL): New macros. - (gray_dump_cells, gray_set_cell, gray_sweep, gray_sweep_direct, - gray_convert_glyph_inner, gray_convert_glyph): Updated. - -2021-07-15 David Turner <david@freetype.org> - - [tests] Rewrite download script in Python3. - - This commit replaces the bash script with a Python script that does - the same work, plus avoiding to download anything if the files are - already installed with the right content. - - We now use the first 8 bytes of each file's sha256 hash for the - digest. - - * tests/scripts/download-test-fonts.sh: Removed. - * tests/scripts/download-test-fonts.py: New script. - * tests/README.md: Updated. - -2021-07-15 Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> - - Support architectures where `long` is smaller than pointers. - - I am currently trying to compile FreeType for CHERI-extended ISAs - (CHERI-RISC-V and Arm's Morello), but I am getting compiler warnings - from the `FT_UINT_TO_POINTER` macro. When compiling with the CHERI - Clang compiler, not using `uinptr_t` for casts between integers an - pointers results in the following `-Werror` build failures: - - ``` - In file included from .../src/truetype/truetype.c:22: - .../src/truetype/ttgload.c:1925:22: error: - cast from provenance-free integer type to pointer type will - give pointer that can not be dereferenced - [-Werror,-Wcheri-capability-misuse] - node->data = FT_UINT_TO_POINTER( glyph_index ); - ^ - .../include/freetype/internal/compiler-macros.h:79:34: note: - expanded from macro 'FT_UINT_TO_POINTER' - ``` - - * include/freetype/internal/compiler-macros.h (FT_UINT_TO_POINTER): - The ISO C standard compliant fix for this would be to use - `uintptr_t` from `stdint.h`, but I am not sure if this is supported - by the minimum compiler version. Therefore, use the - compiler-defined `__UINTPTR_TYPE__` macro (supported in GCC 4.6+ and - Clang since about 3.0) before checking for `_WIN64` and falling back - to `unsigned long`. - -2021-07-13 Oleg Oshmyan <chortos@inbox.lv> - - [base] Fix `FT_Open_Face`'s handling of user-supplied streams. - - This was already true (though undocumented) most of the time, but - not if `FT_NEW` inside `FT_Stream_New` failed or if the - `FT_OPEN_XXX` flags were bad. - - Normally, `FT_Open_Face` calls `FT_Stream_New`, which returns the - user-supplied stream unchanged, and in case of any subsequent error - in `FT_Open_Face`, the stream is closed via `FT_Stream_Free`. - - Up to now, however, `FT_Stream_New` allocates a new stream even if - it is already given one by the user. If this allocation fails, the - user-supplied stream is not returned to `FT_Open_Face` and never - closed. Moreover, the user cannot detect this situation: all they - see is that `FT_Open_Face` returns `FT_Err_Out_Of_Memory`, but that - can also happen after a different allocation fails within the main - body of `FT_Open_Face`, when the user's stream has already been - closed by `FT_Open_Face`. It is plausible that the user stream's - `close` method frees memory allocated for the stream object itself, - so the user cannot defensively free it upon `FT_Open_Face` failure - lest it ends up doubly freed. All in all, this ends up leaking the - memory/resources used by user's stream. - - Furthermore, `FT_Stream_New` simply returns an error if the - `FT_OPEN_XXX` flags are unsupported, which can mean either an - invalid combination of flags or a perfectly innocent - `FT_OPEN_STREAM` on a FreeType build that lacks stream support. - With this patch, the user-supplied stream is closed even in these - cases, so the user can be sure that if `FT_Open_Face` failed, the - stream is definitely closed. - - * src/base/ftobjs.c (FT_Stream_New): Don't allocate a buffer - unnecessarily. - Move error-handling code to make the control flow more obvious. - Close user-supplied stream if the flags are unsupported. - `FT_Stream_Open` always sets `pathname.pointer`, so remove the - redundant (re)assignment. None of the `FT_Stream_Open...` functions - uses `stream->memory`, so keep just one assignment at the end, - shared among all possible control flow paths. - ('Unsupported flags' that may need a stream closure can be either an - invalid combination of multiple `FT_OPEN_XXX` mode flags or a clean - `FT_OPEN_STREAM` flag on a FreeType build that lacks stream - support.) - -2021-07-13 Oleg Oshmyan <chortos@inbox.lv> - - [base] Reject combinations of incompatible `FT_OPEN_XXX` flags. - - The three modes are mutually exclusive, and the documentation of the - `FT_OPEN_XXX` constants notes this. However, there was no check to - validate this in the code, and the documentation on `FT_Open_Args` - claimed that the corresponding bits were checked in a well-defined - order, implying it was valid (if useless) to specify more than one. - Ironically, this documented order did not agree with the actual - code, so it could not be relied upon; hopefully, nobody did this and - nobody will be hurt by the new validation. - - Even if multiple mode bits were allowed, they could cause memory - leaks: if both `FT_OPEN_STREAM` and `stream` are set along with - either `FT_OPEN_MEMORY` or `FT_OPEN_PATHNAME`, then `FT_Stream_New` - allocated a new stream but `FT_Open_Face` marked it as an 'external' - stream, so the stream object was never released. - - * src/base/ftobjs.c (FT_Stream_New): Reject incompatible - `FT_OPEN_XXX` flags. - -2021-07-12 Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> - - * meson.build: Fix build for other UNIX systems (e.g., FreeBSD). - - Without this change the build of `unix/ftsystem.c` fails because the - `ftconfig.h` header that defines macros such as `HAVE_UNISTD_H` and - `HAVE_FCNTL_H` is only being generated for Linux, macOS, and Cygwin - systems: - - ``` - .../builds/unix/ftsystem.c:258:32: error: - use of undeclared identifier 'O_RDONLY' - file = open( filepathname, O_RDONLY ); - ``` - - Instead of hardcoding a list of operating systems for this check, - update the logic that decides whether to build the file and set a - boolean flag that can be checked instead. - -2021-07-12 Werner Lemberg <wl@gnu.org> - - [autofit] More clean-ups. - - * src/autofit/afhints.h (AF_GlyphHintsRec): Remove the no longer - needed fields `xmin_delta` and `xmax_delta`. - - * src/autofit/afhints.c (af_glyph_hints_reload), - src/autofit/afloader.c (af_loader_load_glyph): Updated. - -2021-07-12 Werner Lemberg <wl@gnu.org> - - Small clean-ups for the last few commits. - - * include/freetype/fttrace.h (afwarp): Removed. - -2021-07-12 David Turner <david@freetype.org> - - Remove obsolete `AF_Angle` type and related sources. - - * src/autofit/afangles.c: File removed. Functions related to - sorting moved to... - * src/autofit/afhints.c (af_sort_pos, af_sort_and_quantize_widths): - This file. - * src/autofit/afangles.h: File removed. - * src/autofit/aftypes.h: Updated. - * src/autofit/autofit.c: Updated. - - * src/autofit/rules.mk (AUTOF_DRV_SRC): Updated. - -2021-07-12 David Turner <david@freetype.org> - - Remove experimental auto-hinting 'warp' mode. - - This feature was always experimental, and probably never worked - properly. This patch completely removes it from the source code, - except for a documentation block describing it for historical - purposes. - - * devel/ftoption.h, include/freetype/config/ftoption.h: Remove - `AF_CONFIG_OPTION_USE_WARPER`. - - * include/freetype/ftdriver.h: Document 'warping' property as - obsolete. - - * src/autofit/afwarp.c, src/autofit/afwarp.h: Files removed. - * src/autofit/*: Remove any code related to warp mode. - -2021-07-12 David Turner <david@freetype.org> - - Remove experimental 'Latin2' writing system (`FT_OPTION_AUTOFIT2`). - - This code has always been experimental and was never compiled anyway - (`FT_OPTION_AUTOFIT2` does not appear in `ftoption.h` or even any of - our build files). - - * include/freetype/internal/fttrace.h (aflatin2): Removed. - * src/autofit/aflatin2.h, src/autofit/aflatin2.c: Files removed. - * src/autofit/afloader.c: Remove undocumented hook to activate - Latin2 system. - * src/autofit/afstyles.h: Remove `ltn2_dflt` style definition. - * src/autofit/afwrtsys.h: Remove `LATIN2` writing system definition. - * src/autofit/autofit.c: Updated. - -2021-07-05 Werner Lemberg <wl@gnu.org> - - * src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): Fix argument. - - Reported by Hin-Tak. - -2021-07-03 Werner Lemberg <wl@gnu.org> - - * meson_options.txt: Sort alphabetically; no final full stops. - -2021-07-01 Ben Wagner <bungeman@chromium.org> - - * src/truetype/ttgxvar.c (tt_set_mm_blend): Test `coords`. - - It is undefined behavior to pass `NULL` to `memcpy`. `coords' is - passed to `memcpy` but `TT_Get_MM_Blend` and `TT_Get_Var_Design` - explictly call `tt_set_mm_blend` with `coords` as `NULL`. In - addition, `TT_Set_MM_Blend` has a similar possible issue. - -2021-06-30 Dominik Röttsches <drott@chromium.org> - - [sfnt] Support PaintScale in 'COLR' v1 parsing. - - * include/freetype/ftcolor.h (FT_PaintFormat): Renumber values, add - `FT_COLR_PAINTFORMAT_SCALE`. - (FT_PaintScale): New structure to represent 'PaintScale*' tables. - (FT_COLR_Paint): Updated. - - * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration. - (read_paint): Parse 'PaintScale' and friends. - -2021-06-30 Dominik Röttsches <drott@chromium.org> - - [sfnt] Handle fonts without layer list in 'COLR' v1. - - 'COLR' v1 fonts do not necessarily need to have a layer list; for - this reason, 'fontTools' recently started generating fonts in a way - that drops the layer list if there are no layers in it. This - results in the layer list offset becoming zero, which FreeType - treated as an invalid table. Fix that and handle the case for layer - list offset being 0. This slightly changes how we need to calculate - the starting offset for paints. - - * src/sfnt/ttcolr.c (tt_face_load_colr): Handle case of layer list - offset being zero without outright rejecting table. - -2021-06-30 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/raster/ftraster.c (Render_Single_Pass): Simplify `band_stack'. - -2021-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Do not skip the second pass without dropout control. - - The second pass also fixes horizontal lines through the pixel centers. - - * src/raster/ftraster.c (black_TWorker): Do not use `second_pass'. - (Render_Glyph): Skip the second pass only with the appropriate flag. - -2021-06-29 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Handle sub-band stack locally. - - * src/raster/ftraster.c (black_TWorker): Move `band_stack' from here.. - (Render_Single_Pass): ... to here and accept limit arguments. - (Render_Glyph): Updated. - -2021-06-25 Anurag Thakur <anuthadev@gmail.com> - - [CI] Introduce linux CI and refactor job names. - - * .gitlab-ci.yml: Added jobs for building freetype on linux. - -2021-06-28 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Handle Bézier stack locally. - - * src/raster/ftraster.c (black_TWorker): Move `arcs' from here... - (Conic_To, Cubic_To): ... to here to tighten their scope. - (Bezier_Up, Bezier_Down): ... Take the current `arc' argument. - -2021-06-28 Dominik Röttsches <drott@chromium.org> - - [sfnt] Improve paint limit checks - - Paint tables can appear before the `base_glyphs_v1` offset if the - font is produced with the layer list before the base glyph list. In - this case paint tables can occur after the layer list but before the - base glyph list. Checks in the 'COLR' v1 code were rejecting fonts - with this layout. Improve these checks by calculating a minimum - offset after which paint tables can occur and use that in safety - checks. - - * src/sfnt/ttcolr.c (Colr, tt_face_load_colr): Declare - `paint_start_v1` and calculate that as the minimum of the end of - layer list and base glyph list. - (get_child_table_pointer, read_paint, tt_face_get_paint_layers): - Use that in safety checks. - -2021-06-28 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Clean up vertical sweep. - - * src/raster/ftraster.c (black_TWorker): Replace the current line - offset with the pointer and drop the increment. - (Function_Sweep_Init): Take values as arguments instead of pointers. - (Vertical_Sweep_*, Horizontal_Sweep_Init, Draw_Sweep): Updated. - -2021-06-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Make `band_top' local variable. - - * src/raster/ftraster.c (black_TWorker): Move `band_top' from here... - (Render_Single_Pass): ... to here, and refactor. - (Render_Glyph): Updated. - -2021-06-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Adjust sub-band bisecting limits. - - We can bisect a band until it is just a single scan line. This might - be slow and cause time-outs but if we need to impose limits it should - be elsewhere. - - * src/raster/ftraster.c (Render_Single_Pass): Tweak sub-banding. - -2021-06-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/raster/ftraster.c (Render_Single_Pass): Remove dead code. - -2021-06-25 Werner Lemberg <wl@gnu.org> - - [base] Add trace level to logging output. - - Some practical debugging work has shown that displaying level X of - an `FT_TRACEX` macro in the output of `FT2_DEBUG="... -v"` would be - very helpful to find out which trace level should be selected. As - an example, we now get output like - - ``` - [ttobjs:2] TTF driver - [ttobjs:2] SFNT driver - [sfobjs:2] not a font using the SFNT container format - [t1objs:2] Type 1 driver - [stream:7] FT_Stream_EnterFrame: 14 bytes - ``` - - * include/freetype/internal/ftdebug.h (FT_LOGGING_TAGX): New macro. - (FT_LOG): Use it to add the trace level to the logging tag. - - * include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH): - Adjust. - - * docs/DEBUG: Updated. - -2021-06-24 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth, raster] Fix up and align error codes. - - FT_Render_Glyph picked up FAILURE or 1 returned from the raster - function, which became a confusing error code. Instead, return - Raster_Overflow in the unlikely event that banding does not help or - another meaningful error. - - * src/smooth/ftgrays.c (gray_convert_glyph_inner, gray_convert_glyph): - Use Raster_Overflow when the rendering pool is exhausted and return it - if banding does not help. - (gray_raster_render): Use Smooth_Err_Ok. - - * src/raster/ftraster.c (Render_Single_Pass): Return Raster_Overflow - if banding does not help or another error code. - -2021-06-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth, raster] Remove synonymous error macros. - - * src/smooth/ftgays.c [STANDALONE_]: s/ErrRaster_/Smooth_Err_/. - (gray_convert_glyph_inner): Updated accordingly. - - * src/raster/ftraster.c [STANDALONE_]: Do not abbreviate error macros. - (New_Profile, End_Profile, Insert_Y_Turn, Line_Up, Bezier_Up, - Decompose_Curve, Draw_Sweep, Render_Single_Pass, ft_black_render): - Updated accordingly. - -2021-06-22 Dominik Röttsches <drott@chromium.org> - - [sfnt] s/PaintTransformed/PaintTransform/, s/transformed/transform/. - - * include/freetype/ftcolor.h (FT_PaintTransformed, FT_PaintFormat, - FT_COLR_Paint): Do it to make it harmonize with other names such as - 'PaintTranslate'. - - * src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Ditto. - -2021-06-22 Dominik Röttsches <drott@chromium.org> - - Move 'COLR' API to `ftcolor.h`. - - * include/freetype/freetype.h: Cut section layer managament - containing 'COLR' v0 and v1 API and move it to `ftcolor.h` as - requested by Werner on freetype-devel. - * include/freetype/ftcolor.h: Paste that section. - -2021-06-19 Werner Lemberg <david@freetype.org> - - [truetype] Fix integer overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=35312 - - * src/truetype/ttinterp.c (Ins_JMPR): Use `ADD_LONG`. - -2021-06-19 Werner Lemberg <david@freetype.org> - - [autofit] Prevent hinting if there are too many segments. - - This speeds up handling of broken glyphs. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=35309 - - * src/autofit/aflatin.c (af_latin_hints_compute_segments): Implement - it. - -2021-06-18 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sdf/ftsdfrend.c (ft_(b)sdf_render): Do not FT_ERROR routinely. - -2021-06-16 David Turner <david@freetype.org> - - [autofit] Fix return value of `FT_Load_Glyph`. - - * src/autofit/afglobal.c (af_face_globals_get_metrics): The issue is - that `style_metrics_init` sometimes returns -1 without clearing - `error`. While looping to `Again`, the next operation is - successful, but -1 is still returned by the function. The fix is to - set `error` to 0 appropriately. - - Fixes #1063. - -2021-06-15 David Turner <david@freetype.org> - - [meson] Add first regression test to FreeType. - - * tests/README.md: New file that explains how to build and run the - tests with the Meson build. - - * tests/scripts/download-test-fonts.sh: New bash script to download - test font files to the `tests/data` folder. - - * meson.build, meson_options.txt: Add 'tests' option to enable - building and running the test programs (disabled by default). - - * tests/meson.build: New file. - - * tests/issue-1063/main.c: Simple regression test to exhibit issue - 1063. - - * .gitignore: Ignore the content of the `tests/data` folder for - now. - -2021-06-12 Alexei Podtelezhnikov <apodtele@gmail.com> - - [type42] Fix new memory leak. - - We need to inverse inheritance of FT_GlyphSlot_Internal so that we - have a chance to free the rendered bitmap from the parent slot. - - * src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts - of the child `ttslot' and replace it with the parent structure. - (T42_GlyphSlot_Done): Updated accordingly. - -2021-06-12 Werner Lemberg <wl@gnu.org> - - [psaux] Fix another assertion. - - * src/psaux/psintrp.c (cf2_interpT2CharString) - <cf2_escCALLOTHERSUBR>: Convert assertion into error, since the - problem can happen with invalid user input. - - Test case is file - - fuzzing/corpora/legacy/oss-fuzz/5754332360212480-unknown-read - - in the `freetype2-testing` repository. - -2021-06-12 Werner Lemberg <wl@gnu.org> - - [psaux] Fix assertions. - - * src/psaux/pshints.c (cf2_hintmap_adjustHints): Check for overflow - before emitting an assertion error. - - Test case is file - - fuzzing/corpora/legacy/oss-fuzz/4594115297673216-integer-overflow - - in the `freetype2-testing` repository. - -2021-06-09 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/truetype/ttinterp.c (TT_RunIns): Optimize tracing. - -2021-06-09 Alexei Podtelezhnikov <apodtele@gmail.com> - - [sdf] Fix SDF positioning. - - * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Add padding to - `bitmap_top' and `bitmap_left'. - - * sdf/sdf/ftsdf.c (sdf_generate_with_overlaps): Fix VC++ warning. - -2021-06-08 Werner Lemberg <wl@gnu.org> - - Fix 'devel' build for 'COLR' v1. - - * devel/ftoption.h: Synchronize with - `include/freetype/config/ftoption.h`. - -2021-06-08 Werner Lemberg <wl@gnu.org> - - [sfnt] Sanitize cmap4 table better. - - Fixes #1062. - - * src/sfnt/ttcmap.c (tt_cmap4_validate): Handle a too-small value of - `length` gracefully. - -2021-06-08 Dominik Röttsches <drott@chromium.org> - - [sfnt] Pointer validity check when reading 'COLR' v1 layers - - * src/sfnt/ttcolr.c (tt_face_get_paint_layers): In addition to the - existing sanity checks, ensure that the pointer to the layer to be - read is within the 'COLR' v1 table. - -2021-06-08 Werner Lemberg <wl@gnu.org> - - * src/sdf/ftsdfcommon.c: Fix inclusion of header files. - -2021-06-08 Werner Lemberg <wl@gnu.org> - - [sdf] Make `make multi` work. - - * src/sdf/ftsdf.c: Include `ftbitmap.h`. - - * src/sdf/ftsdfcommon.h: Move function bodies to `ftsdfcommon.c`. - Include `ftobjs.h` to get definitions of `FT_LOCAL` and friends. - - * src/sdf/ftsdfcommon.c: New file. - - * src/sdf/rules.mk, src/sdf/sdf.c: Updated. - -2021-06-08 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Use 8 bits for final SDF output instead of 16bits. - - Since 8-bits is enough to represent SDF data we no longer require - 16-bits for this purpose. Also, we now normalize the output data - to use the entire 8-bit range efficiently. For example: if we use - 3.5 format with a spread of 1 we basically only use the starting - 5-bits. By normalizing we can use the entire 8-bit range. - - * include/freetype/freetype.h (FT_Render_Mode): Updated description - for `FT_RENDER_MODE_SDF` regarding this change. - - * include/freetype/ftimage.h (FT_Pixel_Mode): Removed - `FT_PIXEL_MODE_GRAY16` since no longer required. - - * include/freetype/fttypes.h (FT_F6Dot10): Removed since no longer - required. - - * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Allocate 8-bit - bitmap instead of 16-bit buffer. - - * src/sdf/ftsdfcommon.h (map_fixed_to_sdf): Added function to convert - 16.16 distance value to our desired format. - - * src/sdf/ftsdf.c (sdf_generate_with_overlaps, - sdf_generate_bounding_box): Use the new `map_fixed_to_sdf` function - and also use 8-bit output buffer. - - * src/sdf/ftbsdf.c (finalize_sdf): Output to a 8-bit buffer instead - of 16-bit buffer. - -2021-06-02 Ben Wagner <bungeman@chromium.org> - Werner Lemberg <wl@gnu.org> - - [sfnt] Fix fallout from 2021-05-29 change. - - * src/sfnt/ttcolr.c (find_base_glyph_record, - find_base_glyph_v1_record): Adjust binary search. - - Needs to be updated with change to unsigned. - -2021-06-02 Werner Lemberg <wl@gnu.org> - - * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix tracing. - - Problem reported by Alexei. - -2021-06-02 Werner Lemberg <wl@gnu.org> - - [psaux] Fix MSVC compiler warnings. - - * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs): - Add cast. - -2021-05-29 Werner Lemberg <wl@gnu.org> - - Fix compilation errors and (some) warnings for clang++. - - * src/autofit/afmodule.c (AF_GlyphHintsRec): Make it static. - - * src/cache/ftcache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c - (ftc_snode_compare): Remove semicolon. - - * src/cff/cffparse.c (cff_parser_run): Add `break` statement. - - * src/cid/cidload.c (cid_hex_to_binary): Add cast. - - * src/sdf/ftbsdf.c (CHECK_NEIGHBOR): Use `do {} while(0)` loop. - (bsdf_init_distance_map, finalize_sdf, bsdf_raster_render): Add - casts. - * src/sdf/ftsdf.c (sdf_generate_bounding_box, - sdf_generate_with_overlaps): Ditto. - * src/sdf/ftsdfcommon.h (square_root): Ditto. - * src/sdf/ftsdfrend.c (sdf_property_get, ft_sdf_render, - ft_bsdf_render): Ditto. - - * src/sfnt/ttcolr.c (find_base_glyph_record, - find_base_glyph_v1_record): Fix variable signedness. - (read_color_line): Add cast. - (read_paint): Add casts. - Fix signedness issue. - (tt_face_get_colorline_stops) Fix signedness issues. - - * src/sfnt/ttpost.c (load_format_20): Add casts. - - * src/truetype/ttsubpix.c (TWEAK_RULES, TWEAK_RULES_EXCEPTIONS): - Remove final semicolons. - -2021-05-29 Werner Lemberg <wl@gnu.org> - - [build] Allow overriding of `ANSIFLAGS` for GNU make build. - - * builds/*: Implement it. - -2021-05-27 Alexei Podtelezhnikov <apodtele@gmail.com> - - [type42] Fix auto-hinting. - - The autohinter could not access the base (unscaled) outline in the - child TrueType glyph slot. We now share the internal parts between - the parent and child glyph slots. Fixes #1057. - - * src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts - of `T42_GlyphSlot' and replace it with the child TrueType structure. - (T42_GlyphSlot_Done): Updated accordingly. - -2021-05-25 Werner Lemberg <wl@gnu.org> - - [psaux] Guard and trace AFM kern data allocation. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31543 - - * include/freetype/internal/fttrace.h: Add 'afmparse' trace - component. - - * src/psaux/afmparse.c (FT_COMPONENT): Define. - (afm_parse_track_kern, afm_parse_kern_pairs): Protect against - allocations bombs. - Add tracing. - (afm_parse_kern_data): Don't allow multiple kern data sections. - -2021-05-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - * meson.build (ft2_public_headers): Add missing `ftcid.h'. - - Fixes #1058. - -2021-05-20 Alexei Podtelezhnikov <apodtele@gmail.com> - - [type42] Avoid some memory zeroing. - - * src/type42/t42objs.c (T42_Open_Face): Tweak allocation macro. - * src/type42/t42parse.c (t42_parse_sfnts): Ditto. - -2021-05-19 Nikolaus Waxweiler <madigens@gmail.com> - - [CMake] Update dependency finders. - - 1. Fixes CMake using any found HarfBuzz version lower than the minimum - required. This is based on HALX99's merge request at - https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/31 - 2. Update FindHarfBuzz.cmake from - https://github.com/WebKit/WebKit/blob/1ce32454/Source/cmake/FindHarfBuzz.cmake - and guard post-CMake-3.1 features to keep the minimum version unchanged - 3. Update FindBrotliDec.cmake to stop the warnings, based on what - https://github.com/google/woff2/blob/a0d0ed7d/cmake/FindBrotliDec.cmake - is doing - - * CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Implement 1 and 2. - * builds/cmake/FindBrotliDec.cmake: Implement 3. - -2021-05-19 Ben Wagner <bungeman@chromium.org> - - [gzip] Use exact type for `ft_gzip_alloc` and `ft_gzip_free`. - - While a function pointer may be cast to another function pointer - type, it is required to cast the function pointer back to the - original function pointer type before calling it. If a parameter is - a pointer the exact pointer type is required. Using a pointer to a - different underlying type is technically undefined behavior. The - wrapper functions `ft_gzip_alloc` and `ft_gzip_free` took - `FT_Memory` (a `FT_MemoryRec_*`) instead of `voidpf` (`void*`), so - when gzip calls these callbacks through `alloc_func` or `free_func` - it invokes undefined behavior. On most platforms this works out as - expected, but newer undefined behavior detectors and targets like - wasm can detect this and will produce an error. - - * src/gzip/ftgzip.c (ft_gzip_alloc, ft_gzip_free): Update signatures - to exactly match `alloc_func` and `free_func`, respectively. - Internally, cast the `void*` opaque pointer to `FT_Memory`. - -2021-05-18 Alexei Podtelezhnikov <apodtele@gmail.com> - - Prioritize the anti-aliasing renderer module. - - * modules.cfg: Reorder the renderers. - * include/freetype/config/ftmodule.h: Ditto. - -2021-05-16 Alexei Podtelezhnikov <apodtele@gmail.com> - - [sfnt] Additional guards on the POST table. - - Fixes timeout (#1055) analyzed by Ben Wagner, reported as - - https://crbug.com/1194092 - - * src/sfnt/ttload.c (tt_face_load_post): Check POST format. - * src/sfnt/sfobjs.c (sfnt_load_face): Synthesize the missing unicode - charmap only if the glyph names exist. - * src/psnames/psmodule.c (ps_unicode_value): Short cut ".notdef" and - ".null". - -2021-05-13 Daniel McArdle <dmcardle@chromium.org> - - [psaux] Use doubling allocation strategy for CF2_ArrStack. - - Fixes timeout reported as - - https://crbug.com/1206181 - - * src/psaux/psarrst.c (cf2_arrstack_{push,init}): Implement it. - * src/psaux/psarrst.h (CF2_ArrStackiRec): Drop `chunk'. - -2021-05-12 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/smooth/ftgrays.c (FT_MAX_GRAY_SPANS): Increase from 10 to 16. - - Ten was barely enough for two slanted stems. Sixteen can actually fit - a bit more complicated scanlines. - -2021-05-11 Alexei Podtelezhnikov <apodtele@gmail.com> + 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/. - * src/smooth/ftgrays.c (FT_GRAY_SET): Adjust for better code. - -2021-05-11 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Faster bitmap sweeping. - - Selecting the fill rule or checking the direct mode each time we call - `gray_hline' is sub-optimal. This effectively splits the direct mode - into a separate code path while inlining `gray_hline' and saving 5-7% - of rendering time. - - * src/smooth/ftgrays.c (gray_hline): Eliminated in favor of... - (FT_FILL_RULE, FT_GRAY_SET): ... these new macros... - (gray_sweep): ... inlined here. - (gray_sweep_direct): New function that handles the direct span buffer. - (gray_TWorker): Remove the span buffer. - (gray_raster_render, gray_convert_glyph): Updated. - -2021-05-10 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/smooth/ftgrays.c (gray_hline): Simplify even-odd computations. - - It is too bad the even-odd rule is not used much. - -2021-05-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - [type1] Avoid MM memory zeroing. - - * src/type1/t1load.c (t1_allocate_blend, parse_blend_design_map): - Tweak allocation macros. - * src/type1/t1objs.c (T1_Face_Done): Minor. - -2021-05-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/bdf/bdflib.c (_bdf_list_ensure): Tweak allocation macro. - -2021-05-06 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/psaux/psobjs.c (ps_parser_load_field): Tweak allocation macro. - -2021-05-06 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/sfobjs.c (sfnt_load_face): Tweak allocation macro. - -2021-05-06 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/cid/cidload.c (cid_read_subrs): Tweak allocation macro. - -2021-05-06 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Tweak allocation. - -2021-05-05 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cff,psaux] Avoid memory zeroing (contd.). - - * src/cff/cffload.c (cff_blend_doBlend, cff_blend_build_vector): Tweak - allocation macros. - * src/psaux/psarrst.c (cf2_arrstack_setNumElements): Ditto. - * src/psaux/psstack.c (cf2_stack_init): Ditto. - -2021-05-04 Ben Wagner <bungeman@chromium.org> - - * src/cid/cidload.c (cid_hex_to_binary): Improve return value. - - Add argument to return the actual number of bytes that were decoded. - The actual number of bytes decoded can be quite variable depending - on the number of ignored 'whitespace' bytes or early termination - with `>`. - (cid_face_open): Updated to use this calculated value. This avoids - trusting `parser->binary_length` is always be correct and reading - uninitialized bits if fewer are actually decoded. - - First reported as - - https://crbug.com/1203240 - -2021-05-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - [sfnt] Streamline POST format 2.0 handing. - - To reduce memory allocations, we read an entire Pascal-string buffer - and convert it to a C-string buffer. We also reject tables with - Postscript glyph names exceeding 63 bytes. - - * src/sfnt/ttpost.c (load_format20): Implement it. - (load_post_names): Check the minimal POST table size. - (load_format25, tt_face_free_ps_names): Updated accordingly. - -2021-05-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - [bdf,pcf] Avoid memory zeroing (contd.). - - * src/bdf/bdflib.c (bdf_create_property, _bdf_add_comment, - _bdf_add_property, bdf_load_font): Tweak allocation macros. - * src/pcf/pcfread.c (pcf_get_properties, pcf_get_metrics): Ditto. - -2021-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/cid/cidload.c (cid_read_subrs): Tweak allocaton macro. - -2021-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - [sfnt] Avoid some memory zeroing. - - * src/sfnt/sfobjs.c (sfnt_open_font, sfnt_init_face, - tt_name_ascii_from_{utf16,other}): Tweak allocaton macros. - * src/sfnt/ttload.c (tt_face_load_name): Ditto. - -2021-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/ttpost.c (load_format_{20,25}): Tweak allocaton macros. - -2021-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/pngshim.c (Load_SBit_Png): Tweak allocaton macro. - -2021-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - [truetype] Avoid some memory zeroing. - - * src/truetype/ttinterp.c (Init_Context): Tweak allocation macro. - * src/truetype/ttpload.c (tt_face_load_cvt): Ditto. - -2021-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - [woff2] Avoid some memory zeroing. - - * src/sfnt/sfwoff2.c (store_loca, woff2_open_font): Tweak macros. - -2021-04-30 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/gzip/ftgzip.c (ft_gzip_alloc): Zero out memory again. - -2021-04-27 Alexei Podtelezhnikov <apodtele@gmail.com> - - [lzw] Preserve decompression stack when relocating to heap. - - * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Copy stack when - relocating to heap. - -2021-04-27 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/cid/cidgload.c (cid_load_glyph): Restore the glyph_length check. - -2021-04-27 Werner Lemberg <wl@gnu.org> - - * src/psmodule.c (ps_unicodes_init): Ignore empty glyph names. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33637 - -2021-04-26 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/sfobjs.c (sfnt_init_face): Revert macro change. - -2021-04-26 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cff] Avoid some memory zeroing. - - * src/cff/cffparse.c (cff_parser_init): Tweak memory macro. - * src/cff/cffload.c (cff_index_load_offsets, cff_index_get_pointers, - cff_charset_load, cff_vstore_load): Ditto. - -2021-04-26 Alexei Podtelezhnikov <apodtele@gmail.com> - - [pfr] Avoid some memory zeroing. - - * src/pfr/pfrobjs.c (pfr_face_init) : Tweak memory macro. - * src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps, - pfr_phy_font_load): Ditto. - -2021-04-26 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/winfonts/winfnt.c (FNT_Face_Init): Tweak memory macro. - -2021-04-26 Alexei Podtelezhnikov <apodtele@gmail.com> - - [psaux,psnames] Avoid some memory zeroing. - - * src/psaux/psstack.c (cf2_stack_init): Tweak memory macro. - * src/psnames/psmodule.c (ps_unicodes_init): Ditto. - -2021-04-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - [base] Avoid some memory zeroing. - - * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Use FT_QNEW_ARRAY. - * src/base/ftsnames.c (FT_Get_Sfnt_{Name,LangTag}): Ditto. - -2021-04-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - [bdf,pcf] Avoid some memory zeroing. - - * src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, pcf_load_font): - Tweak memory macros. - * src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto. - * src/bdf/bdflib.c (_bdf_readstreami, bdf_create_property, - _bdf_parse_glyphs, _bdf_parse_start): Ditto. - (_bdf_add_property): Do not handle zero size. - -2021-04-25 Issam E. Maghni <issam.e.maghni@mailbox.org> - - * builds/meson/process_ftoption_h.py: Add LF at EOF. - - This fixes - - .../ftoption.h:1030:10: error: - no newline at end of file [-Werror,-Wnewline-eof] - - for the generated `ftoption.h` file. - -2021-04-24 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/cff/cffload.c (cff_index_get_pointers): s/FT_QALLOC/FT_ALLOC/. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/base/ftobjs.c (Mac_Read_POST_Resource): s/FT_ALLOC/FT_QALLOC/. - * builds/mac/ftmac.c (FT_New_Face_From_SFNT, read_lwfn): Ditto. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sdf/ftsdf.c (sdf_{edge,contour,shape}_new): Use FT_QALLOC. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - [sfnt] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/sfnt/sfdriver.c (get_win_string, get_apple_string, - sfnt_get_var_ps_name): Do not zero out the buffer. - * src/sfnt/sfobjs.c (sfnt_init_face): Ditto. - * src/sfnt/sfwoff.c (woff_open_font): Ditto. - * src/sfnt/sfwoff2.c (woff2_open_font): Ditto. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cff,type1,type42] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/cff/cffload.c (cff_index_get_pointers, cff_index_get_name): - Do not zero out the buffer. - * src/cff/cffdrivr.c (cff_ps_get_font_info): Ditto. - * src/type1/t1load.c (parse_subrs, parse_charstrings, - parse_blend_axis_types): Ditto. - * src/type1/t1parse.c (T1_New_Parser, T1_Get_Private_Dict): Ditto. - * src/type42/t42parse.c (t42_parser_init): Ditto. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cid] s/FT_ALLOC/FT_QALLOC/ and clean up. - - * src/cid/cidgload.c (cid_load_glyph): Do not zero out the buffer. - * src/cid/cidload.c (cid_face_open, cid_read_subrs): Ditto. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - [pfr] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/pfr/pfrload.c (pfr_extra_item_load_font_id, pfr_aux_name_load): - Do not zero out the buffer. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - [bzip2,gzip] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Do not zero out the buffer. - * src/gzip/ftgzip.c (ft_gzip_alloc, FT_Stream_OpenGzip): Ditto. - -2021-04-23 Alexei Podtelezhnikov <apodtele@gmail.com> - - [pcf,bdf,winfonts] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/pcf/pcfread.c (pcf_interpret_style): Do not zero out the buffer. - * src/bdf/bdfdrivr.c (bdf_interpret_style): Ditto. - * src/winfonts/winfnt.c (FNT_Face_Init, FNT_Load_Glyph): Ditto. - -2021-04-22 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cache] Optimize SBit copying. - - * src/cache/ftcsbits.c (ftc_snode_load): Do not initialize the buffer. - (ftc_sbit_copy_bitmap): Accept zero size, s/FT_ALLOC/FT_QALLOC/. - -2021-04-22 Alexei Podtelezhnikov <apodtele@gmail.com> - - [gxvalid,otvalid] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/gxvalid/gxvmod.c (gxv_load_table): Do not zero out the buffer. - * src/otvalid/otvmod.c (otv_load_table): Ditto. - -2021-04-22 Alexei Podtelezhnikov <apodtele@gmail.com> - - [psaux] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/psaux/psobjs.c (ps_table_done, ps_parser_load_field): Do not - zero out the buffer. - -2021-04-22 Alexei Podtelezhnikov <apodtele@gmail.com> - - [base] s/FT_ALLOC/FT_QALLOC/ for initialized buffers. - - * src/base/ftobjs.c (open_face_PS_from_sfnt_stream, - Mac_Read_sfnt_Resource): Do not zero out the buffer. - * src/base/ftmac.c (FT_New_Face_From_SFNT, read_lwfn): Ditto. - * src/base/ftrfork.c (raccess_make_file_name, - raccess_guess_darwin_hfsplus, raccess_guess_darwin_newvfs): Ditto. - -2021-04-20 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cache] Restore SBit copying for unowned (BDF) bitmaps. - - * src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Restore. - (ftc_snode_load): Check ownership and copy unowned bitmaps. - -2021-04-19 Dominik Röttsches <drott@chromium.org> - - [sfnt] Return in 'COLR' v1 when layer pointer outside table - - * src/sfnt/ttcolr.c (tt_face_get_paint_layers): Add missing return - when paint pointer outside table. - (read_paint): Add missing return when paint pointer outside table. - -2021-04-18 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cache] Switch to lazy SBit setting. - - * src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Removed. - (ftc_snode_load): Take the bitmap ownership instead of copying. - -2021-04-16 Daniel Welty <@danielwelty> - - * src/cache/ftcsbits.c (ftc_snode_load): Properly handle short pitch. - -2021-04-16 Werner Lemberg <wl@gnu.org> - - * builds/unix/freetype2.m4: Fix help string formatting. - - The indented `dnl` macros inserted unwanted horizontal space. - - Problem reported by Ozkan Sezer <sezeroz@gmail.com>. - -2021-04-16 Dominik Röttsches <drott@chromium.org> - - [sfnt] Safeguard 'COLR' v1 layer extraction - - * src/sfnt/ttcolr.c (tt_face_get_paint_layers): Do not output - layer pointer to iterator if it is outside the 'COLR' table. - (read_paint): Do not attempt to read layers that are outside the - table. - -2021-04-02 Ben Wagner <bungeman@chromium.org> - - [base] Complete `ft_glyphslot_clear`. - - * src/base/ftobjs.c (ft_glyphslot_clear): This function is intended - to reset all the values of a glyph slot. However, it was not - resetting the values of the advances and `glyph_index`. Reset the - advances and `glyph_index` to zero. - -2021-04-02 Ben Wagner <bungeman@chromium.org> - - [truetype] Prevent glyph program state from persisting. - - `FDEF` instructions are specified as allowed only in 'prep' or - 'fpgm'. FreeType has attempted to prevent their use in the glyph - program, but they were still allowed in glyph programs if defined in - a function defined in 'prep' or 'fpgm' and called from the glyph - program. - - Similarly, `IDEF` instructions are specified not to be able to - modify any existing instruction. FreeType has attempted to prevent - their use in the glyph program, but they can still be used like - `FDEF`. - - This change stores the initial bytecode range type and disallows the - use of `FDEF` and `IDEF` while running the glyph program. - - Most other state is copied from the `TT_Size` into the execution - context. However, it is possible for a glyph program to use `WS` to - write to the storage area or `WCVTP`, `WCVTF`, and `DELTAC[123]` to - write to the control value table. - - Allowing any change to the global state from the glyph program is - problematic as the outlines of any given glyph may change based on - the order the glyphs are loaded or even how many times they are - loaded. There exist fonts that write to the storage area or the - control value table in the glyph program, so their use should not be - an error. - - Possible solutions to using these in the glyph program are - - * ignore the writes; - * value-level copy on write, discard modified values when finished; - * array-level copy on write, discard the copy when finished; - * array-level copy up-front. - - Ignoring the writes may break otherwise good uses. A full copy - up-front was implemented, but was quite heavy as even well behaved - fonts required a full copy and the memory management that goes along - with it. Value-level copy on write could use less memory but - requires a great deal more record keeping and complexity. This - change implements array-level copy on write. If any attempt is made - to write to the control value table or the storage area when the - initial bytecode range was in a glyph program, the relevant array - will be copied to a designated storage area and the copy used for - the rest of the glyph program's execution. - - * src/truetype/ttinterp.h (TT_ExecContextRec): New fields - `iniRange`, `glyfCvtSize`, `glyfCvt`, `origCvt`, `glyfStoreSize`, - `glyfStorage`, and `origStorage`. - - * src/truetype/ttinterp.c (Modify_CVT_Check): New function to handle - `exc->glyfCvt`. - (Write_CVT, Write_CVT_Stretched, Move_CVT, Move_CVT_Stretched): Use - it. - (Ins_WS): Handle `exc->glyfStorage`. - (Ins_FDEF, Ins_IDEF): Updated. - (TT_RunIns): Updated. - (TT_Done_Context): Free 'glyf' CVT working and storage area. - (TT_Load_Context): Fix/add casts. - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Fix cast. - -2021-03-30 Dominik Röttsches <drott@chromium.org> - - [sfnt] Check validity of pointer location of `read_color_line`. - - * src/sfnt/ttcolr.c (get_child_table_pointer): New function to fetch - child table pointer early for all paint formats that compute a child - table pointer. - (read_color_line, read_paint): Updated. - (tt_face_get_colorline_stops): Check `colr->table`. - -2021-03-28 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [docs] Update docwriter stylesheet for 1.3.1. - - This change is required to support docwriter 1.3.1. - - See - - https://gitlab.freedesktop.org/freetype/docwriter/-/merge_requests/101 - - for more information. - - * docs/markdown/stylesheets/extra.css: - (.wy-nav-content, .md-sidebar--secondary): Remove. - -2021-03-16 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/pngshim.c (Load_SBit_Png): Free `rows` once later. - -2021-03-16 Ben Wagner <bungeman@google.com> - - [sfnt] Fix memory leak in png loading. - - Reported as - - https://bugs.chromium.org/p/chromium/issues/detail?id=1182552 - - Memory is allocated and the pointer assigned to `rows` inside a - 'setjmp' scope. This memory must be freed outside the 'setjmp' - scope after a 'longjmp'. Since `rows` is a local and modified - inside the 'setjmp' scope it must be marked volatile or it will have - an indeterminate value after the 'longjmp'. - - * src/sfnt/pngshim.c (Load_SBit_Png): Fix memory leak of `rows`. - -2021-03-16 Christopher Degawa <ccom@randomderp.com> - - * CMakeLists.txt: Don't limit generation of 'pkg-config' file to UNIX. - - mingw-w64 uses the 'pkg-config' files but does not set UNIX. - -2021-03-11 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/smooth/ftgrays.c (gray_set_cell): Refactor to fix VC++ warning. - -2021-03-13 Werner Lemberg <wl@gnu.org> + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. - Handle various VC++ compiler warnings. + * builds/unix/configure.raw (version_info): Set to 24:1:18. + * CMakeLists.txt (VERSION_PATCH): Set to 1. - Fixes #1039. + * builds/toplevel.mk (version_tag, CHANGELOG_SCRIPT): New variables. + (do-dist): Generate `ChangeLog` file with all commits since last release. - * src/base/ftstroke.c (ft_stroker_inside, ft_stroker_outside): - Initialize `sigma`. +2021-11-30 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/sdf/ftsdf.c (sdf_generate_with_overlaps): Exit immediately if - function arguments are invalid. - * src/sdf/ftsdfrend.c (sdf_property_set) <"overlaps">: Fix cast. + [builds/windows] Improve debugging. - * src/sfnt/sfwoff2.c (woff2_decompress) - [!FT_CONFIG_OPTION_USE_BROTLI]: Use `FT_UNUSED`. + * builds/windows/ftdebug.c (FT_Message, FT_Panic): Buffer output + and call `OutputDebugStringA` only if `IsDebuggerPresent`. + [_WIN32_WCE] (OutputDebugStringA): Implement the missing API. - * src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize `fvar_head`. +2021-11-29 Seigo Nonaka <nona@google.com> -2021-03-11 Alexei Podtelezhnikov <apodtele@gmail.com> + * src/base/ftobjs.c (FT_Request_Metrics): Fix build warning on Android. - [smooth] Reduce copying during integration phase. + Use casts since `FT_USHORT_MAX` is unsigned short in bionic (libc used in + Android). - We now record `cover' and `area' directly into the linked list. This - makes rendering faster by 10% or even more at larger sizes. +2021-11-28 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/smooth/ftgrays.c (FT_INTEGRATE): Write directly. - (gray_TWorker): Add direct cell reference and remove unused fields. - (gray_set_cell): Consolidate the linked list management and pointers. - (gray_convert_glyph, gray_convert_glyph_inner): Updated. + * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Minor tweak. -2021-03-10 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-11-26 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/smooth/ftgrays.c (FT_INTEGRATE): New convenience macro. - (gray_render_line, gray_render_scanline): Use it. + * src/truetype/ttpload.c (tt_face_load_hdmx): Added comments. -2021-03-09 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-11-26 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/smooth/ftgrays.c (gray_render_line): Rearrange conditionals. + [truetype] Quietly reject out-of-spec `hdmx` tables. - These produce faster or more optimizable code. + 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. -2021-03-08 Tim-Philipp Müller <tim@centricular.com> + * src/truetype/ttpload.c (tt_face_load_hdmx): Thoroughly check + the record size and improve tracing. - [meson] Fix 'mmap' handling on Windows. +2021-11-23 Alexei Podtelezhnikov <apodtele@gmail.com> - * meson.build (ft2_sources): Always use `windows/ftsystem.c` on - Windows unless mmap has been disabled. + [truetype] Partly revert 5b626281. - https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/5#note_829289 + Fixes #1118. -2021-03-07 Tim-Philipp Müller <tim@centricular.com> + * src/truetype/ttpload.c (tt_face_load_hdmx): Do not assume that + `record_size` is rounded even though the records are padded. - [ci] Add basic support for Meson builds with MSVC on Windows. +2021-11-23 Alexei Podtelezhnikov <apodtele@gmail.com> - This adds meson jobs for VS2017 (x86 and x86_64). + * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Use transforms. - * .gitlab-ci.yml: New file. +2021-11-22 Werner Lemberg <wl@gnu.org> -2021-03-07 Tim-Philipp Müller <tim@centricular.com> + Update `CHANGES` files, other minor whitespace and documentation issues. - [meson] Add subproject fallbacks for 'libpng' and 'zlib'. +2021-11-21 Werner Lemberg <wl@gnu.org> - * subprojects/libpng.wrap, subprojects/zlib.wrap: New files. + formats.txt: Add info about WOFF and WOFF2. - * meson.build: Updated. +2021-11-21 Werner Lemberg <wl@gnu.org> -2021-03-07 Xavier Claessens <xavier.claessens@collabora.com> + meson.build: Initialize `common_ldflags`. - [meson] Make it work with Windows. +2021-11-21 Lukas Oberhuber <@lukaso> - * meson.build: Do not process `ftconfig.h` when not using - `ftconfig.h.in`. + * meson.build: Fix compatibility version on MacOS. - Fixes #1029. + Fixes #1117. -2021-02-25 Werner Lemberg <wl@gnu.org> +2021-11-21 Werner Lemberg <wl@gnu.org> - [woff2] Fix memory leak. + * src/truetype/ttinterp.c (Ins_MD): Avoid `FT_ABS`. Reported as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28148 - - * src/sfnt/sfwoff2.c (woff2_open_font): Reject fonts that have - multiple tables with the same tag. While not explicitly forbidden - in the OpenType specification, it is implicitly forbidden by - describing a binary search algorithm for tables that only works - reliably if table tags are unique. - -2021-02-22 Werner Lemberg <wl@gnu.org> - - * CMakeLists.txt: Update location of `LICENSE.TXT`. - - Fixes #1035. - -2021-02-19 Werner Lemberg <wl@gnu.org> - - * builds/unix/ax_pthread.m4: Update from 'autoconf-archive'. - - A bunch of fixes were added recently to its git repository. - -2021-02-17 Werner Lemberg <wl@gnu.org> - - [unix] Updates for autoconf 2.71. - - This fixes warnings reported by autoupdate. - - * builds/unix/ax_pthread.m4: Replace `as_echo` with `AS_ECHO`. - - * builds/unix/configure.raw: Remove obsolete `AC_HEADER_STDC`. - Don't escape back quotes in messages for `AC_MSG_WARN`. - -2021-02-16 Werner Lemberg <wl@gnu.org> - - * builds/toplevel.mk: Fix previous commit. - - <top_level>: Use `TOP_DIR` in `wildcard` function. - (check_out_submodule, copy_submodule): Move down to come after - definition of `all` rule. - Call `mkdir` conditionally. - -2021-02-16 Werner Lemberg <wl@gnu.org> - - * builds/toplevel.mk: Use rules for handling 'dlg'. - - Suggested by Alexei. - - (check_out_submodule, copy_submodule): New targets. - <top-level>: Replace calls to `shell` with rules. - -2021-02-16 Werner Lemberg <wl@gnu.org> - - * builds/toplevel.mk: Avoid side effects of `shell`. - - We use a dummy variable to catch its output. Otherwise the `make` - program is going to interpret the return value of `shell`; this can - cause obscure warning or error messages or even be harmful. - -2021-02-16 Werner Lemberg <wl@gnu.org> - - Move 'dlg' submodule to `subprojects` directory. - - This is for future changes with Meson, which doesn't allow a - different name for its `subprojects` directory. Having both a - `submodules` and a `subprojects` directory is confusing. - - * .gitmodules, autogen.sh (copy_submodule_files, DLG_INC_DIR, - DLG_SRC_DIR): Updated. - - * builds/toplevel.mk (<top-level>, do-dist), - builds/windows/vc2010/script.bat: Updated. - - * src/tools/no-copyright: Updated. - -2021-02-16 Dominik Röttsches <drott@chromium.org> - - [sfnt] Update paint format values to support non-variable paints. - - * freetype.h (FT_PaintFormat): Update paint format identifiers after - a specification change. The specification was updated to have - sibling formats, variable and non-variable variants for each. - Reflect that here. - - * sfnt/ttcolr.c (read_paint): Remove parsing of variable indices as - the non-variable formats no longer have them. - -2021-02-15 Daniel E <daniel.engberg.lists@pyret.net> - - * CMakeLists.txt: Improve 'bz2' support. - - Not all distributions such as FreeBSD provide a `.pc` file for - '(lib)bz2' so follow autotools and add it to `Libs.private` instead. - -2021-02-13 Werner Lemberg <wl@gnu.org> + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38562 - * src/tools/update-copyright-year: Fix single-year entry handling. +2021-11-20 Alexei Podtelezhnikov <apodtele@gmail.com> - The fix from 2021-01-17 didn't cover the case where the year to be - updated is identical to the current year. + * include/freetype/fttypes.h (FT_MAKE_TAG): Remove the same casting. -2021-02-13 Werner Lemberg <wl@gnu.org> +2021-11-20 Werner Lemberg <wl@gnu.org> - Add new function `FT_Get_Transform`. + [gxvalid] Fix minor compilation warning. - See + * src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup): Declare + as static. - https://github.com/harfbuzz/harfbuzz/issues/2428 +2021-11-20 Werner Lemberg <wl@gnu.org> - for some reasons to introduce this function. + [smooth] Fix stand-alone compilation. - * include/freetype/freetype.h, src/base/ftobjs.c (FT_Get_Transform): - Implement it. + * src/smooth/ftgrays.c (FT_Trace_Enable, FT_Trace_Disable)[STANDALONE_]: + Define. -2021-02-12 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-11-20 Werner Lemberg <wl@gnu.org> - Decorate `qsort` callbacks with `cdecl`. + Avoid undefined left-shifts. - * include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF): - Add new macro. - - * src/base/ftrfork.c, src/bdf/bdflib.c, src/gxvalid/gxvcommn.c, - src/psaux/afmparse.c, src/psnames/psmodule.c, src/type1/t1afm.c, - src/sfnt/sfwoff.c, src/sfnt/sfwoff2.c: Update `qsort` callbacks. - - Fixes #1026 when compiling FreeType with an unusual calling - convention while the C library function `qsort` still expects - `cdecl`. - -2021-02-10 Dominik Röttsches <drott@chromium.org> - - [sfnt] Implement 'COLR' v1 sweep gradients. - - * freetype.h (FT_PaintSweepGradient): Add `FT_PaintSweepGradient` to - represent a 'COLR' v1 sweep gradient. - Update format. - (FT_PaintFormat): Update shifted paint formats. - Sync with spec. - * sfnt/ttcolr.c (read_paint): Logic to parse sweep gradients. - Fix struct access in radial gradient implementation. - -2021-02-09 Dominik Röttsches <drott@chromium.org> - - [sfnt] Provide optional root transform for 'COLR' v1 glyph graph. - - * include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): - Additional function argument `root_transform` to control whether - root transform should be returned. - (FT_OpaquePaint): Additional tracking field to denote whether - root transform is to be returned. - * include/freetype/internal/sfnt.h - (TT_Get_Color_Glyph_Paint_Func): Propagate additional argument. - * src/base/ftobjs.c (FT_Get_Color_Glyph_Paint): Ditto. - * src/sfnt/ttcolr.c (tt_face_get_colr_glyph_paint): Return root - transform reflecting the size and tranform configured on - `FT_Face`. - (read_paint): Initialize and track status of insert_root_transform - flag. - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - * meson.build: s/freetype2_dep/freetype_dep/. - - Many projects (e.g., fontconfig, cairo) hardcode the `freetype_dep` - variable name to use FreeType as subproject because that was the - variable name in Centricular's Meson port of FreeType. While they - should stop hardcoding that variable name, it does not cost us - anything to keep using that name to ease transition. - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - [meson] Fix handling of HarfBuzz library. - - * meson.build (harfbuzz_dep): Do not fall back to HarfBuzz by - default. - - Otherwise it causes a dependency cycle: - - cairo => fontconfig => freetype2 => harfbuzz => cairo - - Meson will still fall back to HarfBuzz subprojects if the `harfbuzz` - option is set to `enabled` instead of `auto` and a - `subprojects/harfbuzz.wrap` file is present. In that case it is the - responsibility of the main project to set the proper options on each - subproject to break the dependency cycle. - - Fixes: #1028. - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - [meson] Fix dependency lookup and generate `ftconfig.h`. - - - zlib: If not found on the system, meson can build it as a - subproject. We thus never use the (outdated) zlib support that - comes with FreeType. Doing so has the additional advantage that - the zlib code can be shared with other projects like GLib if both - are subprojects of an application. - - harfbuzz: Build as a subproject if not found on the system. - - 'QUESTION: What if the compiler doesn't support `-D` but uses `/D` - instead as on Windows?' Answer: Meson translate arguments for us. - - visibility: Replace self-made code with meson-specific solution. - - * meson.build (ft2_defines): Rewrite logic to set and handle it. - (process_header_command): New variable, previously called - `ftoption_command`. - (ftoption_command, ftconfig_command): New variables. - (zlib_option): Removed. - (zlib_dep): New variable. - (ft2_deps): Updated. - (harfbuzz_dep): Updated. - (ftconfig_h_in, ftconfig_h): New variables. - (ft2_sources): Updated. - (ft2_lib): Updated, handle visibility. - (summary): Updted. - - * meson_options.txt (zlib): Updated. - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - * meson.build: Fix resource compilation on Windows. - - This is copied from GStreamer's meson port of FreeType. - - (ft2_sources): Add both debug and resource file (the latter for - Windows only). - (ft2_debug_src): Removed. - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - * meson.build: s/ft2_libtool_version/ft2_pkgconfig_version/. - - (freetype2_dep): Use it. - - `ft2_libtool_version` would be the shared library version, not the - one we should use in file `freetype2.pc`. - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - * meson.build: Use `meson.override_dependency`. - - This is a new meson mechanism to avoid other projects to hard-code - the `freetype2_dep` variable name in their build definition. It - also ensures that meson does not mix system and subproject versions - of FreeType inside of the same project. - - Also remove outdated TODO because `declare_dependency` was already - there. - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - * meson.build (bzip2_dep): Simplify. - - We remove `static:false` from `find_library('bz2')`. - - I don't know whether the previous code was a workaround for an old - meson bug, but at least with version >=0.55.0 (which FreeType uses) - it picks the shared library when both are available. - - File `freetype2.pc` still contains the full path to file `libbz2.so` - instead of `-lbz2` – that we need to do this is a meson bug even - present in the current version (0.57.0). - -2021-02-09 Xavier Claessens <xavier.claessens@collabora.com> - - * meson.build: Set project version. - -2021-02-04 Werner Lemberg <wl@gnu.org> - - [base] Fix Netpbm tracing message. - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Don't emit Netpbm - warning if there is nothing to output. - -2021-02-04 Werner Lemberg <wl@gnu.org> - - * src/*: Don't use more than one '\n' in `FT_TRACE` and `FT_ERROR`. - - This ensures good logging output, with all lines having a proper - prefix (if requested). - - This is a continuation of a similar patch from 2020-12-02, which - missed some locations. - -2021-02-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - * builds/unix/configure.raw [mmap]: Restore default path. - - Fixes #1023. - -2021-02-03 Werner Lemberg <wl@gnu.org> - - [psaux] Fix integer overflow. + 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=30154 - - * src/psaux/psblues.c (cf2_blues_capture): Use `SUB_INT32`. - -2021-02-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - * builds/unix/configure.raw [mmap support]: Explicitly handle Windows. - - Fixes #1024. - -2021-01-31 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.raw [mmap support]: Correctly handle Windows. - - Fixes #1024. - -2021-01-31 Werner Lemberg <wl@gnu.org> - - * builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c`. - -2021-01-31 Werner Lemberg <wl@gnu.org> - - Always provide logging API. - - It's easier to have stubs if FT_DEBUG_LOGGING is undefined than to - modify `ftexport.sym` conditionally. - - Problem reported by Alexei. - - * src/base/ftdebug.c: Include `ftlogging.h`. - (FT_Trace_Set_Level, FT_Trace_Set_Default_Level, FT_Set_Log_Handler, - FT_Set_Default_Log_Handler) [!FT_DEBUG_LOGGING]: Provide stubs. - -2021-01-31 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.raw: Fix typo. - - Bug introduced in Vincent's last commit bb33f03. - - Fixes issue #1021. - -2021-01-27 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/base/ftstroke.c (FT_Stroker_EndSubPath): Ignore tiny gaps. - - Fixes bug #1020. + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41178 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41182 -2021-01-27 Alexei Podtelezhnikov <apodtele@gmail.com> + * 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. - [stroker] Minor clean-up. + * 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/base/ftstroke.c (FT_Stroker_{ConicTo,CubicTo}): Reset the last - line length. - (FT_Stroker_EndSubPath): Call `ft_stroker_process_corner'. + * src/ftraster/ftmisc.h (FT_MAKE_TAG): Removed, no longer needed. + (FT_STATIC_BYTE_CAST): New macro. -2021-01-27 Vincent Torri <vincent.torri@gmail.com> + * src/smooth/ftgrays.c (FT_STATIC_CAST): Replace with... + (FT_STATIC_BYTE_CAST): ... this. - * builds/windows/ftsystem.c: Add shared memory support on Windows. +2021-11-18 Werner Lemberg <wl@gnu.org> - * CMakeLists.txt (BASE_SRCS), builds/unix/configure.raw (FTSYS_SRC), - builds/windows/vc2010/freetype.vcxproj, - builds/windows/visualc/freetype.vcproj, meson.build (ft2_sources): - Add it (conditionally). + Provide C++ versions for public macros with casts. -2021-01-23 Werner Lemberg <wl@gnu.org> + 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++. - Require HarfBuzz 2.0.0. + * include/freetype/config/public-macros.h (FT_STATIC_CAST, + FT_REINTERPRET_CAST): New macros. - This is needed to make commit f1f9705f9 work. + * 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`. - * CMakeLists.txt (HARFBUZZ_MIN_VERSION), builds/unix/configure.raw - (harfbuzz_pkg), meson.build (harfbuzz_dep): Updated. + * src/smooth/ftgrays.c (FT_STATIC_CAST)[STANDALONE_]: New macro. + [!STANDALONE]: Include `FT_CONFIG_CONFIG_H`. -2021-01-22 Alexei Podtelezhnikov <apodtele@gmail.com> + Fixes #1116. - * autogen.sh: Absorb `version.sed'. - * version.sed: Removed. +2021-11-16 Werner Lemberg <wl@gnu.org> -2021-01-19 Alexei Podtelezhnikov <apodtele@gmail.com> + Fix clang++ warnings. - * srd/base/ftlcdfil.c (FT_Library_SetLcdGeometry): Fix return value. + * src/*: Initialize some variables to NULL. -2021-01-15 Nikolaus Waxweiler <madigens@gmail.com> +2021-11-16 Werner Lemberg <wl@gnu.org> - [afshaper] Fix hb_ot_tags_from_script deprecation warning. + [truetype] Updates for the forthcoming OpenType 1.9 standard (2/2). - * autofit/afshaper.c (af_shaper_get_coverage): Copy the source code - of the function as suggested in - https://github.com/harfbuzz/harfbuzz/issues/2737 and adjust to handle - at most three tags. + * 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-01-17 Werner Lemberg <wl@gnu.org> +2021-11-16 Werner Lemberg <wl@gnu.org> - * src/tools/update-copyright-year: Fix single-year entry handling. + [truetype] Updates for the forthcoming OpenType 1.9 standard (1/2). -2021-01-16 Alexei Podtelezhnikov <apodtele@gmail.com> + This is in preparation for implementing `DeltaSetIndexMap` format 1, which + is used by `COLR` v1 tables, and which allows 32bit indices. - * builds/unix/unixddef.mk: Remove the second DEVEL_DIR definition. + https://docs.microsoft.com/en-us/typography/opentype/otspec190/delta/otvarcommonformats_delta.html -2021-01-14 Dominik Röttsches <drott@chromium.org> + * src/truetype/ttgxvar.h (GX_DeltaSetIdxMapRec): Change type of `mapCount` + to `FT_ULong`. - [sfnt] Additional checks for 'colr' table presence. + * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add argument + for passing the table size; update caller. + Implement new format. - * sfnt/ttcolr.c (tt_face_get_colr_glyph_paint, - tt_face_get_colorline_stops, tt_face_get_paint): Additional checks - for whether colr table is present. Prevents crashes when these - methods are called on non-COLR fonts. - -2021-01-13 Dominik Röttsches <drott@chromium.org> - - Add config option to test for 'COLR' v1 support in headers. - - * include/freetype/config/ftoption.h (TT_SUPPORT_COLRV1): New macro - so that clients can test whether the FreeType checkout that they are - building against supports the 'COLR' v1 API. This is intended to be - a temporary solution until 'COLR' v1 support is released in a - FreeType version and such a check can be made by using the version - number instead. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - [base] Fill 'COLR' v1 API templates to make them work (#59703). - - * src/base/ftobjs.c (FT_Get_Color_Glyph_Paint, FT_Get_Paint_Layers, - FT_Get_Paint, FT_Get_Colorline_Stops): Add basic sanity checks, - check for existence of `FT_Face`, check arguments and delegate calls - for the respective 'COLR' v1 API to the SFNT driver. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - [sfnt] Register 'COLR' v1 API in driver (#59703). - - * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_Paint_Func, - TT_Get_Paint_Layers_Func, TT_Get_Colorline_Stops_Func, - TT_Get_Paint_Func): New function pointer types. - (SFNT_Interface): Add them. - (FT_DEFINE_SFNT_INTERFACE): Updated. - - * src/sfnt/sfdriver.c (PUT_COLOR_LAYERS_V1): New macro. - (sfnt_interface): Add new function pointers. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - [sfnt] Add 'COLR' v1 API to retrieve color layers (#59703). - - * src/sfnt/ttcolr.c (tt_face_get_paint_layers): New function to get - the layers of a `PaintColrLayers` table in the font, using an - `FT_LayerIterator` from an `FT_PaintColrLayers` object retrieved via - `tt_face_get_paint`. - - * src/sfnt/ttcolr.h: Updated. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - [sfnt] Add 'COLR' v1 API to iterate color stops (#59703). - - * src/sfnt/ttcolr.c (tt_face_get_colorline_stops): New function to - return the current `FT_ColorStop` object from `FT_ColorStopIterator`. - Also increment the iterator. - - * src/sfnt/ttcolr.h: Updated. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - [sfnt] Add API to get actual paint from `FT_OpaquePaint` (#59703). - - * src/sfnt/ttcolr.c (tt_face_get_paint): New function to resolve an - `FT_OpaquePaint` paint reference into an `FT_COLR_Paint` object of a - certain format, which contains the detailed information stored in a - paint of the respective format. - (read_paint): New function to provide the format specific parsing - and to populate the data members of each specific `FT_COLR_Paint` - subtype. - (read_color_line): New function to parse retrieved color line - information into an `FT_ColorLine` object, which has information - about the color line extend mode as well as an - `FT_ColorStopIterator` object. - - * src/sfnt/ttcolr.h: Updated. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - [sfnt] Add API to retrieve 'COLR' v1 root paint (#59703). - - * src/sfnt/ttcolr.c (BaseGlyphV1Record): New structure. - (tt_face_load_colr): Handle version 1 table header. - (find_base_glyph_v1_record): New auxiliary function. - (tt_face_get_colr_glyph_paint): New function to find the root - `FT_OpaquePaint` object for a given glyph ID. - - * src/sfnt/ttcolr.h: Updated. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - Add new methods required for 'COLR' v1 to public API (#59703). - - * include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): New method - for retrieving the root paint object for a color glyph by specifying - a glyph ID. - (FT_Get_Paint_Layers): New method for retrieving the layers of a - `PaintColorGlyph`. - (FT_Get_ColorLine_Stops): New method for retrieving the stops of a - color. - (FT_Get_Paint): New method for resolving an `FT_OpaquePaint` into an - `FT_COLR_Paint` object. - -2020-12-16 Dominik Röttsches <drott@chromium.org> - - Add types required for 'COLR' v1 to public API (#59703). - - * include/freetype/freetype.h (FT_PaintFormat, FT_ColorStopIterator, - FT_ColorIndex, FT_ColorStop, FT_PaintExtend, FT_ColorLine, - FT_Affine23, FT_CompositeMode, FT_OpaquePaint, FT_PaintColrLayers, - FT_PaintSolid, FT_PaintLinearGradient, FT_PaintRadialGradient, - FT_PaintGlyph, FT_PaintColrGlyph, FT_PaintTransformed, - FT_PaintTranslate, FT_PaintRotate, FT_PaintSkew, FT_PaintComposite, - FT_COLR_Paint): Adding structs and enum to represent paint format, - color stop information, gradient extend information, structs to - reference paint offsets, and to define transforms and compositions. - Adding a union type to represent the union of the structs, - distinguished by `FT_PaintFormat`. - -2021-01-10 Werner Lemberg <wl@gnu.org> - - * builds/*: s/BUILD_DIR/PLATFORM_DIR/. - - The old variable name caused confusion. - -2021-01-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [builds] Revert `FTMODULE_H' changes. - - * builds/toplevel.mk, builds/freetype.mk: Revert changes. - -2021-01-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - [builds/windows] Fix up DLG build with VC++. - - * builds/windows/vc2010/script.bat: Copy headers to include/. - * builds/windows/vc2010/freetype.vcxproj: Remove DLG paths. - -2021-01-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - [builds] Relocate `FTMODULE_H'. - - * builds/toplevel.mk: Place `FTMODULE_H' in include/. - * builds/freetype.mk: Simplify included path. - -2021-01-07 Werner Lemberg <wl@gnu.org> - - Fix ABI incompatibility. - - * include/freetype/ftimage.h (FT_Pixel_Mode): Don't insert - `FT_PIXEL_MODE_GRAY16' but append it. - - * src/base/ftobjs.c (pixel_modes): Updated. - -2021-01-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - [dlg] Move the headers to include/dlg to simplify their use. - - * autogen.sh, builds/toplevel.mk: Copy headers to include/dlg. - * builds/freetype.mk, builds/windows/vc2010/freetype.vcxproj: - Simplify included path. - * include/freetype/internal/ftdebug.h: Simplify #include. - * src/dlg/rules.mk, .gitignore: Updated. - -2021-01-06 Werner Lemberg <wl@gnu.org> - - * meson.build: Add summary. - - Based on a patch from Vincent Torri <vincent.torri@gmail.com>. - -2021-01-06 Torsten Hilbrich <emacs.nolkaf@hilbrich.tk> - - * meson.build: Fix 'png' build option (#59458). - - Without this patch, 'png' is always required. - -2021-01-04 Alexei Podtelezhnikov <apodtele@gmail.com> - - [builds/windows] Add SDF to VC2010 project. - - * builds/windows/vc2010/freetype.vcxproj: Updated; - AfterBuild conveniences. - -2020-12-26 Werner Lemberg <wl@gnu.org> - - [sdf] Use 'counter-clockwise', not 'anti-clockwise'. - - We prefer US nomenclature. - - * src/sdf/ftsdf.c (SDF_Contour_Orientation): - s/SDF_ORIENTATION-ACW/SDF_ORIENTATION_CCW/. - Update all users. - -2020-12-26 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (pixel_modes): Updated. - -2020-12-26 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Remove custom memory tracker. - - The internal FreeType memory tracker is sufficient. - - * src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER, SDF_MemoryUser, - sdf_alloc, sdf_free, SDF_ALLOC, SDF_FREE, - SDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP, - SDF_MEMORY_TRACKER_DONE): Removed. - - s/SDF_ALLOC/FT_ALLOC/. - s/SDF_FREE/FT_FREE/. - - Other updates. - -2020-12-24 Werner Lemberg <wl@gnu.org> - - [sdf] Fix `make multi`. - - * src/sdf/ftsdf.c: Include `ftoutln.h`. - -2020-12-24 Werner Lemberg <wl@gnu.org> - - [sdf] Fix tracing. - - * include/freetype/internal.fttrace.h: Add 'bsdf' component. - - * src/sdf/ftbsdf.c, src/sdf/ftsdf.c (FT_COMPONENT): Define. - -2020-08-21 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add debugging function. - - * src/sdf/ftsdf.c (sdf_shape_dump): New function. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add 'bsdf' renderer to 'sdf' module. - - * src/sdf/ftsdfrend.c (ft_bsdf_render): New function. - - (ft_bitmap_sdf_renderer_class): New structure. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add interface functions for the 'bsdf' rasterizer. - - * src/sdf/ftsdf.c (bsdf_raster_new, bsdf_raster_reset, - bsdf_raster_set_mode, bsdf_raster_render, bsdf_raster_done): New - functions. - - (ft_bitmap_sdf_raster): New variable. - - * src/sdf/ftsdf.h: Updated. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add function to copy SDF data into output bitmap. - - * src/sdf/ftbsdf.c (finalize_sdf): New function. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add '8-point sequential Euclidean distance mapping' algorithm. - - * src/sdf/ftbsdf.c (compare_neighbor, first_pass, second_pass, - edt8): New functions. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add function to copy source bitmap to distance map. - - * src/sdf/ftbsdf.c (bsdf_init_distance_map): New function. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add functions to compute pixel edge distances. - - * src/sdf/ftbsdf.c (compute_edge_distance, bsdf_approximate_edge): - New functions. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add function to find edge pixels in a grid of alpha values. - - * src/sdf/ftbsdf.c (bsdf_is_edge): New function. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add essential structures for the 'bsdf' rasterizer. - - * src/sdf/ftbsdf.c (ONE): New macro. - (BSDF_TRaster, ED, BSDF_Worker): New structures. - (zero_ed): New constant. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add 'sdf' module to non-gnumake build systems. - - * include/freetype/config/ftmodule.h: Add both the 'sdf' and 'bsdf' - renderers to the list of modules. - - * CMakeLists.txt (BASE_SRCS): Add 'sdf' single-object module. - -2020-08-20 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Added basic overlapping contour support. - - * src/sdf/ftsdf.c (sdf_generate_with_overlaps): New function. - (sdf_raster_render): Enable it. - -2020-08-19 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add build infrastructure. - - * src/sdf/module.mk, src/sdf/rules.mk: New files. - - * src/sdf/ftsdf.h (ft_sdf_raster): New forward declaration. - - * include/freetype/ftmoderr.h (FT_MODERRDEF): Add error definition - for the 'sdf' module. - - * include/freetype/internal/fttrace.h (FT_TRACE_DEF): Add trace - definition for the `sdf' module. - - * modules.cfg (RASTER_MODULES): Add the `sdf' module to the list of - rasterizers. - -2020-08-19 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add interface functions for the 'sdf' rasterizer. - - * src/sdf/ftsdf.c (sdf_raster_new, sdf_raster_reset, - sdf_raster_set_mode, sdf_raster_render, sdf_raster_done): New - functions. - (ft_sdf_raster): New structure. - -2020-08-19 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add subdivision and bounding box optimization. - - * src/sdf/ftsdf.c (sdf_generate_bounding_box): New function, which - is an optimized version of `sdf_generate`. - (sdf_generate_subdivision): New function. - -2020-08-19 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add function to generate SDF. - - * src/sdf/ftsdf.c (sdf_generate): New function, currently disabled. - This is a proof-of-concept implementation: It doesn't use any - optimization, it simply checks all grid points against all contours. - -2020-08-19 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add functions to get shortest distance from any edge/contour. - - * src/sdf/ftsdf.c (sdf_edge_get_min_distance): New function. - (sdf_contour_get_min_distance): New function, currently disabled. - -2020-08-18 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add shortest distance finding functions. - - * src/sdf/ftsdf.c (get_min_distance_line, get_min_distance_conic, - get_min_distance_cubic): New functions. Note that - `get_min_distance_conic` comes with two implementations (using an - analytical and an iterative method, to be controlled with the - `USE_NEWTON_FOR_CONIC` macro). - -2020-08-18 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add function to resolve corner distances. - - * src/sdf/ftsdf.c (resolve_corner): New function. - -2020-08-18 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add essential math functions. - - * src/sdf/ftsdf.c (cube_root, arc_cos) [!USE_NEWTON_FOR_CONIC]: New - auxiliary functions. - - * src/sdf/ftsdf.c (solve_quadratic_equation, solve_cubic_equation) - [!USE_NEWTON_FOR_CONIC]: New functions. - -2020-08-18 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add utility functions for contours. - - * src/sdf/ftsdf.c (get_control_box, get_contour_orientation): New - functions. - (split_conic, split_cubic, split_sdf_conic, split_sdf_cubic, - split_sdf_shape): New functions. - -2020-08-17 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add functions to decompose `FT_Outline`. - - * src/sdf/ftsdf.c (sdf_move_to, sdf_line_to, sdf_conic_to, - sdf_cubic_to): New auxiliary decomposition functions. - (sdf_compose_funcs): New structure. - (sdf_outline_decompose): New function. - -2020-08-17 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Structs, enums, macros, and functions for 'sdf' rasterizer. - - * src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER) - [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New macros. - (SDF_MemoryUser) [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New - struct for memory usage tracing. - (sdf_alloc, sdf_free) [FT_DEBUG_LEVEL_TRACE && FT_DEBUG_MEMORY]: New - functions for memory usage tracing. - - (SDF_ALLOC, SDF_FREE): New macros for memory management. - (SDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP, - SDF_MEMORY_TRACKER_DONE): New macros to set up memory usage tracing. - - (USE_NEWTON_FOR_CONIC, MAX_NEWTON_DIVISIONS, MAX_NEWTON_STEPS, - CORNER_CHECK_EPSILON, CG_DIMEN): New configuration macros for - controlling the process of finding the shortest distance. - - (MUL_26D6, VEC_26D6_DOT): New auxiliary macros. - - (SDF_TRaster, SDF_Edge, SDF_Contour, SDF_Shape, SDF_Signed_Distance, - SDF_Params): New structs for setting up SDF data. - (SDF_Edge_Type, SDF_Contour_Orientation): New enums for SDF data. - - (zero_vector, null_edge, null_contour, null_shape, max_sdf): Useful - constants. - - (sdf_edge_new, sdf_edge_done, sdf_contour_new, sdf_contour_done, - sdf_shape_new, sdf_shape_done): New constructors and destructors. - -2020-08-17 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add raster parameters structure. - - * src/sdf/ftsdf.h (SDF_Raster_Params): New structure. - - * src/sdf/sdf.c: Include source files in order to make a single - object of the module. - -2020-08-17 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add 'sdf' renderer. - - * src/sdf/ftsdf.c: Add 'sdf' renderer along with its interface - functions. - Also add functions to set and get properties. - -2020-08-17 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add common elements for 'sdf' and 'bsdf' renderers. - - * src/sdf/ftsdfrend.h (SDF_Rendere_Module, ft_sdf_renderer_class, - ft_bitmap_sdf_renderer_class): New structures. - - * src/sdf/ftsdfcommon.h (DEFAULT_SPREAD, MIN_SPREAD_MAX_SPREAD, - USE_SQUARED_DISTANCES): New macros. - (FT_INT_26D6, FT_INT_16D16, FT_26D6_16D16): New macros. - (FT_CALL, VECTOR_LENGTH_16D16): New macros. - (FT_26D6_Vec, FT_16D16_Vec, FT_16D16, FT_26D6, FT_6D10, FT_CBox): - New typedefs. - (square_root): New macro. - - * src/sdf/ftsdferrs.h: Add module error setup. - -2020-08-16 Anuj Verma <anujv@iitbhilai.ac.in> - - [sdf] Add files for new 'sdf' module. - - Here is a breakdown of what the files will contain. - - * src/sdf/ftsdfrend.c, src/sdf/ftsdfrend.h: The 'sdf' and 'bsdf' - renderers. - - * src/sdf/ftsdf.c, src/sdf/ftsdf.h: The rasterizer for the 'sdf' - renderer. - * src/sdf/ftbsdf.c, src/sdf/ftbsdf.h: The rasterizer for the 'bsdf' - renderer. - - * src/sdf/ftsdfcommon.h: Commmon properties and functions for both - rasterizers. - * src/sdf/ftsdferrs.h: Common error defines. - - * src/sdf/sdf.c: For building a single object of the entire module. - -2020-08-16 Anuj Verma <anujv@iitbhilai.ac.in> - - [base] Allow renderers of different formats. - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Do not return if the - glyph's slot format is `FT_GLYPH_FORMAT_BITMAP`. The forthcoming - 'bsdf' renderer will require bitmaps for processing. - - * src/base/ftobjs.c (ft_add_renderer, ft_remove_renderer): Remove - renderer's glyph format check before adding and removing them. The - 'bsdf' renderer will have a format `FT_GLYPH_FORMAT_BITMAP`. - -2020-08-16 Anuj Verma <anujv@iitbhilai.ac.in> - - Add data types required for the forthcoming 'sdf' module. - - * include/freetype/freetype.h (FT_Render_Mode): Add new render mode - `FT_RENDER_MODE_SDF`, which will be used to generate SDF. - - * include/freetype/ftimage.h (FT_Pixel_Mode): Add new pixel mode - `FT_PIXEL_MODE_GRAY16`, which will be the output of the 'sdf' - module. - (FT_RASTER_FLAG_SDF): New raster flag to be used internally by the - 'sdf' module. - - * include/freetype/fttypes.h (FT_F6Dot10): New data type. - -2020-08-16 Anuj Verma <anujv@iitbhilai.ac.in> - - [base] Allow renderers of different formats. - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Do not return if the - glyph's slot format is `FT_GLYPH_FORMAT_BITMAP`. The forthcoming - 'bsdf' renderer will require bitmaps for processing. - - * src/base/ftobjs.c (ft_add_renderer, ft_remove_renderer): Remove - renderer's glyph format check before adding and removing them. The - 'bsdf' renderer will have a format `FT_GLYPH_FORMAT_BITMAP`. - -2020-12-23 Werner Lemberg <wl@gnu.org> - - * builds/windows/detect.mk (COPY): Make it work with `shell`. - - Without this patch, we get the error - - builds/toplevel.mk:127: *** missing separator. Stop. - - Reported by Anuj, with a solution from Alexei. - -2020-12-23 Ignacio Casal Quinteiro <qignacio@amazon.com> - - * meson.build (ft2_defines): Fix builds on Windows. - -2020-12-18 Tatsuyuki Ishi <ishitatsuyuki@gmail.com> - - [autofit] Fix double division in stem darkening. - - The old code used to divide the darkening amount by em_ratio twice, - leading to unnecessarily bold stems on certain fonts with higher - units per em (e.g. Inter). This patch fixes it. - - The return value of af_loader_compute_darkening was also changed to - use 16.16 fixed point to get rid of a redundant truncation operation. - This should slightly improve the precision, although it's still - bottlenecked by the emboldening function, which uses 26.6 fixed point. - - * src/autofit/afloader.[ch] - (af_loader_compute_darkening): Return FT_Fixed. - (af_loader_embolden_glyph_in_slot): Revise calculations. - -2020-12-17 Alexei Podtelezhnikov <apodtele@gmail.com> - - * include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): New public macro. - - The driver name is needed for `FT_Property_Set' and `FT_Property_Get'. - -2020-12-16 Chris Liddell <chris.liddell@artifex.com> - - [truetype] Fix incremental metrics (#59503). - - * src/truetype/ttgload.c (tt_get_metrics, load_truetype_glyph): - Previously, the code would populate the phantom points before - calling the `get_glyph_metrics` callback. For formats like PCL XL - format 1, class 2 downloaded fonts (where metrics are removed from - the TTF header), this causes problems when the hinting program uses - the phantom points (misplaced and distorted glyphs) due to the - metrics being unset (all zeros). - (tt_get_metrics_incr_overrides): Renamed to... - (tt_get_metrics_incremental): ... this. Updated caller - - * include/freetype/ftincrem.h: Update the documentation to make it - clearer that `get_glyph_metrics` is to retrieve metrics from a - non-standard source, but *not* for the purpose of imposing custom - metrics. - -2020-12-14 Werner Lemberg <wl@gnu.org> - - [type42] Pacify static analysis tools (#59682). - - * src/type42/t42objs.c (T42_Size_Init, T42_GlyphSlot_Init): Avoid - warnings about uninitialized variables. - -2020-12-07 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.raw: Don't set `FT_DEBUG_LOGGING`. - - All debug options are handled exclusively in `ftoption.h`. - -2020-12-07 Werner Lemberg <wl@gnu.org> - - * src/*: More fixes for using a '\n' in `FT_TRACE` and `FT_ERROR`. - -2020-12-07 Werner Lemberg <wl@gnu.org> - - */*: s/FT_LOGGING/FT_DEBUG_LOGGING/. - -2020-12-05 Werner Lemberg <wl@gnu.org> - - * builds/toplevel.mk (do-dist): Remove `submodules` directory. - -2020-12-02 Werner Lemberg <wl@gnu.org> - - * src/*: Don't use more than one '\n' in `FT_TRACE` and `FT_ERROR`. - - This ensures good logging output, with all lines having a proper - prefix (if requested). - -2020-12-02 Werner Lemberg <wl@gnu.org> - - [base] Don't close 'stderr' after logging. - - * src/base/ftdebug.c, builds/windows/ftdebug.c (ft_logging_deinit): - Fix it. - -2020-12-02 Werner Lemberg <wl@gnu.org> - - * submodules/dlg: Updated to commit 9f0c8b22. - -2020-12-02 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdflib.c: Fix `-Wformat` warning. - -2020-12-02 Werner Lemberg <wl@gnu.org> - - Improve setup for 'dlg' library. - - * autogen.sh (copy_submodule_file), builds/toplevel.mk: Redirect - stderr to `/dev/null`. - - * builds/toplevel.mk: Move code block to handle 'dlg' stuff into - `check_platform` conditional. - Also fix wildcard expressions for guarding `git submodule` commands. - Also make file copying work with non-Unix platforms (untested). - -2020-12-01 Werner Lemberg <wl@gnu.org> - - [build] Use gcc (and clang) in C99 mode. - - Other compilers are unchanged. - - * builds/compiler/gcc-dev.mk, builds/compiler/gcc.mk (ANSIFLAGS): - s/-ansi/-std=c99/. - - * builds/freetype.mk (FT_CFLAGS): Remove `-std=c99`. - - * builds/unix/configure.raw: Handle C99. - Remove no longer needed test for gcc 4.6 and earlier. - -2020-12-01 Werner Lemberg <wl@gnu.org> - - [dlg] Fix compiler warnings. - - * src/dlg/dlgwrap.c: Duplicate some feature test macros from - `dlg.c`, which must come first before loading standard headers. For - example, `freetype.h` loads `stdio.h` if compiled in debug mode. - -2020-12-01 Werner Lemberg <wl@gnu.org> - - * src/type42/t42parse.c: Fix `-Wformat` warnings. - -2020-12-01 Priyesh Kumar <priyeshkkumar@gmail.com> - - [builds/unix] Check for 'pthread' library. - - * builds/unix/ax_pthread.m4: New file, taken from 'autoconf-archive' - git repository. - - * builds/unix/configure.raw: Check for 'pthread'; also check whether - it works. - -2020-12-01 Werner Lemberg <wl@gnu.org> - - [base] Implement vertical alignment of log printing. - - Based on a patch by Priyesh. - - * include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH): - New macro. - - * src/base/ftdebug.c, builds/windows/ftdebug.c (ft_log_handler): - Print logs after a fixed width to handle different lengths of - `FT_COMPONENT` entries. - Use `ft_strrchr` to check for final newline character. - -2020-11-30 Priyesh Kumar <priyeshkkumar@gmail.com> - - Update logging related documentation. - - * docs/DEBUG: Updates related to `FT_LOGGING`. - - * README.git: Updates related to logging. - -2020-11-30 Priyesh Kumar <priyeshkkumar@gmail.com> - - * src/*: Fix `-Wformat` warnings. - -2020-11-30 Priyesh Kumar <priyeshkkumar@gmail.com> - - [builds/windows] Changes to build 'dlg' with FreeType on Windows. - - We only support Visual C++ 2010 and newer. - - * builds/windows/vc2010/script.bat: New windows batch file to copy - necessary 'dlg' files from `submodules/dlg` to `src/dlg`. This file - is used as a pre-built event in Visual C++. - - * builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c`. - - * builds/windows/vc2010/freetype.vcxproj.filters: Add - `src/dlgwrap.c`. - - * builds/windows/vc2010/freetype.vcxproj - (AdditionalIncludeDirectories): Add include files of dlg for 'Debug' - and 'Debug Static' configurations on both 'x64' and 'win32' - platforms. - (PreprocessorDefinitions): Add `FT_LOGGING` for 'Debug' and 'Debug - Static' configurations on both 'x64' and 'win32' platforms. - Add `DLG_STATIC' for 'Debug' configuration on 'x64' and 'win32' - platforms. - (DisableLanguageExtensions): We need to disable the `/Za` option - when building 'dlg' with FreeType as 'dlg' strictly follows the C99 - standard. Visual C++ produces behaves unexpectedly when - compiling a C99 file with `/Za` option enabled. - -2020-11-30 Priyesh Kumar <priyeshkkumar@gmail.com> - - [base] Add public API to change log handling function. - - * include/freetype/ftlogging.h (FT_Custom_Log_Handler): New function - typedef to store the custom callback logging function. - (FT_Set_Log_Handler, FT_Set_Default_Log_Handler): New functions to - set and reset custom log handler. - - * include/freetype/internal/ftdebug.h (custom_output_handler): New - variable to support a custom callback logging function. - (FT_Logging_Callback): A new function typedef to print log using - custom callback logging function, which is set using - `FT_Set_Log_Handler`. - (FT_Log): Use it. - - * src/base/ftdebug.c (FT_Set_Log_Handler, - FT_Set_Default_Log_Handler, FT_Logging_Callback): Add function - definitions. - -2020-11-28 Priyesh Kumar <priyeshkkumar@gmail.com> - - [base] Add public API to change the levels of tracing components. - - * include/freetype/ftlogging.h: New header file. - - * include/freetype/internal/ftdebug.h [FT_LOGGING]: Include - `ftlogging.h`. - - * src/base/ftdebug.c (ft_custom_trace_level): New variable. - (ft_debug_init): Update to support change of levels of tracing - components of FreeType at run-time. - (FT_Trace_Set_Level): New function to change the levels of tracing - components at run-time. - (FT_Trace_Set_Default_Level): New function to reset the levels of - tracing components back to default. - -2020-11-28 Priyesh Kumar <priyeshkkumar@gmail.com> - - [base] Updates to print timestamp and name of `FT_COMPONENT` in logs. - - * include/freetype/internal/ftdebug.h (FT_LOGGING_TAG, - FT_LOGGING_TAG_): New macros to resolve the value of `FT_COMPONENT' - into a string. - (ft_add_tag, ft_remove_tag): New functions to add and remove dlg tags. - - * src/base/ftdebug.c: Add new variables to control the logging of - timestamp and name of `FT_COMPONENT` along with actual logs. - (ft_add_tag, ft_remove_tag): Add function definitions. - (ft_log_handler): Updates to print timestamp and name of - `FT_COMPONENT`. - (ft_debug_init) [FT_LOGGING]: Users can now control the logging of - timestamp and name of `FT_COMPONENT` by adding tags in the - `FT2_DEBUG` environment variable. - -2020-11-27 Priyesh Kumar <priyeshkkumar@gmail.com> - - [base] Add functions and variables to print logs to a file. - - * include/freetype/internal/ftdebug.h: Added dlg's header files. - (FT_LOG): New macro to redirect trace logs to dlg's API's whenever - `FT_LOGGING' is defined. - (ft_logging_init, ft_logging_deinit): New functions to handle - initialization and uninitialization of logging related variables. - (ft_log_handler): New function to handle logs of FreeType. - - * src/base/ftdebug.c: Add necessary logging related variables. - (ft_logging_init, ft_logging_deinit, ft_log_handler): Add function - definitions. - - * src/base/ftinit.c (FT_Init_FreeType) [FT_LOGGING]: Call - `ft_logging_init`. - (FT_Done_FreeType) [FT_LOGGING]: Call `ft_logging_deinit`. - - * src/base/ftobjs.c (FT_New_Library): Call `ft_debug_init` only if - `FT_LOGGING` is not defined. - -2020-11-27 Priyesh Kumar <priyeshkkumar@gmail.com> - - [builds] Necessary changes to make 'dlg' compile. - - * autogen.sh (copy_submodule_files): New script to copy all the - necessary source and include files from `submodules/dlg` to - `src/dlg`. - - * src/dlg/dlgwrap.c: New wrapper file for `src/dlg.c`. It enables - the build of 'dlg' if the `FT_LOGGING` macro is defined. - - * src/dlg/rules.mk: New sub-Makefile. - - * builds/freetype.mk (DLG_DIR): New variable to include the - header files of the 'dlg' library. - (INCLUDES): Add `DLG_DIR`. - (FT_CFLAGS): Add `-std=c99' flag. - Include `src/dlg/rules.mk` file to build 'dlg' library. - (OBJ_S, OBJ_M): Add `DLG_OBJS_M` and `DLG_OBJS_S`. - - * builds/toplevel.mk: For builds directly from the git repository - we need to copy files from `submodule/dlg` to `src/dlg`. - - * include/freetype/config/ftoption.h, devel/ftoption.h (FT_LOGGING): - New macro to enable or disable the logging facility in FreeType. - -2020-11-27 Priyesh Kumar <priyeshkkumar@gmail.com> - - * .gitmodules: Add 'dlg' library's git repository as submodule. - -2020-12-01 Werner Lemberg <wl@gnu.org> - - * src/tools/chktrcmp.py (trace_use_pat): Update to current use. - -2020-11-20 Alexei Podtelezhnikov <apodtele@gmail.com> - - [cff,cid,type1] Demote old engine for lack of CFF2. - - * src/cff/cffobjs.c (cff_driver_init): Always default to Adobe engine. - * src/cid/cidobjs.c (cid_driver_init): Ditto. - * src/type1/t1objs.c (T1_Driver_Init): Ditto. - -2020-11-09 Werner Lemberg <wl@gnu.org> - - * src/type42/t42parse.c (t42_parse_sfnts): More tracing messages. - -2020-11-04 Werner Lemberg <wl@gnu.org> - - * meson.build: Fix .pc file generation. - - For backwards compatibility we need the libtool version, not the .so - number. - - Reported by Nikolaus. - -2020-10-28 Werner Lemberg <wl@gnu.org> - - [truetype] Minor update to forthcoming OpenType 1.8.4 standard. - - * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Limit - size of `regionCount`. - -2020-10-26 Werner Lemberg <wl@gnu.org> - - * meson.build: Fix 'harfbuzz' and 'brotli' build options (#59347). - - Without this patch, 'harfbuzz' and 'brotli' are always required. - - Patch submitted anonymously in Savannah bug report. - -2020-10-23 Ben Wagner <bungeman@google.com> - - * src/sfnt/pngshim.c (Load_SBit_Png): Fix memory leak (#59322). - - The issue is that `rows` is allocated but will not be freed in the - event that the call to `png_read_image` fails and calls `longjmp`. - -2020-10-20 Werner Lemberg <wl@gnu.org> - - * Version 2.10.4 released. - ========================== - - - Tag sources with `VER-2-10-4'. - - * docs/VERSION.TXT: Add entry for version 2.10.4. - * docs/CHANGES: Updated. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/index.html, docs/freetype-config.1: - s/2.10.3/2.10.4/, s/2103/2104/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. - - * builds/unix/configure.raw (version_info): Set to 23:4:17. - * CMakeLists.txt (VERSION_PATCH): Set to 4. - -2020-10-19 Werner Lemberg <wl@gnu.org> - - [sfnt] Fix heap buffer overflow (#59308). - - This is CVE-2020-15999. - - * src/sfnt/pngshim.c (Load_SBit_Png): Test bitmap size earlier. - -2020-10-17 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/tt{colr,cpal}.c: Fix signedness warnings from VC++. - -2020-10-17 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/sfwoff2.c (Read255UShort): Tweak types to please VC++. - -2020-10-10 Werner Lemberg <wl@gnu.org> - - * Version 2.10.3 released. - ========================== - - - Tag sources with `VER-2-10-3'. - - * docs/VERSION.TXT: Add entry for version 2.10.3. - - * README, src/base/ftver.rc, builds/windows/vc2010/index.html, - builds/windows/visualc/index.html, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/index.html, docs/freetype-config.1: - s/2.10.2/2.10.3/, s/2102/2103/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. - - * builds/unix/configure.raw (version_info): Set to 23:3:17. - * CMakeLists.txt (VERSION_PATCH): Set to 3. - -2020-09-25 Werner Lemberg <wl@gnu.org> - - [autofit] Synchronize with ttfautohint. - - This corresponds to the following commits in the ttfautohint git - repository: - - bb6842bd3bd437b7b4a7921b0376c860f5e73d18 Typo, formatting. - d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa Add Medefaidrin script. - - * src/autofit/afblue.dat: Add blue zone data for Medefaidrin. - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - - * src/autofit/afscript.h: Add Medefaidrin standard characters. - - * src/autofit/afranges.c, src/autofit/afstyles.h: Add Medefaidrin - data. - -2020-09-25 Werner Lemberg <wl@gnu.org> - - Move `scripts/make_distribution_archives.py` to `src/tools`. - - * scr/tools/scripts/make_distribution_archives.py: (_TOP_DIR, - _SCRIPT_DIR): Updated to new location. - (main): s/shutils.copyfile/shutils.copy/ to preserve file - permissions. - (main): Prefix source file paths with `git_dir` while copying files - to allow calls of the script from other places than the top-level - directory. - -2020-09-24 Werner Lemberg <wl@gnu.org> - - * src/cff/cffgload.c (cff_slot_load): Scale `vertBearingY`. - - Towards the end of the the function there is a call to - `FT_Outline_Get_CBox` that retrieves the glyph bbox in scaled units. - That sets `horiBearing{X,Y}` and `vertBearingX` but `vertBearingY` - is left alone, and is not scaled. - - Patch from Eric Muller <emuller@amazon.com>. - -2020-09-24 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Load_Glyph): Trace glyph metrics. - -2020-09-22 Werner Lemberg <wl@gnu.org> - - [meson] Move auxiliary scripts to `builds/meson`. - - Suggested by Alexei. - - * scripts/*.py: Move meson scripts to... - * builds/meson/*.py: ... this new location. - - * meson.build: Updated. - -2020-09-21 David Turner <david@freetype.org> - - Add python script for building tarballs. - - * scripts/make_distribution_archives.py: New file. - - This standalone Python script should be equivalent to running `make - dist` with the Make-based build system, with the following minor - differences: - - - Since `make distclean` doesn't always clean up `objs/` properly, - `make dist` archives may contain some stale binaries like - `objs/.libs/libfreetype.so.6` or others. - - - `config.guess` and `config.sub` are not updated unless option - `--gnu-config-dir=DIR` is used to specify the location of these - files. - - - Some bits of the auto-generated reference documentation may - appear in slightly different order, probably due to issues related - to mkdocs and docwriter. - - As an example, the call - - scripts/make_distribution_archives.py /tmp/freetype2-dist - - creates the following files under `/tmp/freetype2-dist`: - - freetype-<version>.tar.gz - freetype-<version>.tar.xz - ft<winversion>.zip - -2020-09-21 Werner Lemberg <wl@gnu.org> - - * scripts/extract_freetype_version.py: Fix regex typos. - -2020-09-21 David Turner <david@freetype.org> - - Add Meson build project file. - - Example usage: - - # Configure Meson build in directory `build-meson` to generate - # release binaries comparable to to the ones from the - # autotools/make build system. - meson setup build-meson \ - --prefix=/usr/local \ - --buildtype=debugoptimized \ - --strip \ - -Db_ndebug=true - - # After configuring the Meson build with the above command, - # compile and install to `/usr/local/`; this includes a pkg-config - # file. - ninja -C build-meson install - - # Alternatively, compile and install to `/tmp/aa/usr/local/...` - # for packaging. - DESTDIR=/tmp/aa ninja -C build-meson install - - # Generate documentation under `build-meson/docs`. - ninja -C build-meson docs - - Library size comparison for stripped `libfreetype.so` generated by - all three build systems: - - - Default build (autotools + libtool): 712 KiB - - CMake build (RelWithDebInfo): 712 KiB - - Meson build: 712 KiB - - - * meson.build: New top-level Meson build file for the library. - - * meson_options.txt: New file. It holds user-selectable options for - the build, which can be printed with `meson configure`, and selected - at `meson setup` or `meson --reconfigure` time with - `-D<option>=<value>`. - - * scripts/parse_modules_cfg.py: A script invoked by `meson.build` to - parse `modules.cfg` and extract important information out of it - (i.e., the list of modules). - - * scripts/process_ftoption_h.py: New script invoked by `meson.build` - to process the original `ftoption.h` file. It enables or disables - configuration macro variables based on the available dependencies. - This is similar to what other build systems are using (i.e., Meson's - `configure_file()` command is not used here). - - * scripts/extract_freetype_version.py: New script invoked by - `meson.build` to extract the FreeType version number from - `<freetype/freetype.h>`. - - * scripts/extract_libtool_version.py: New script invoked by - `meson.build` to extract the libtool `revision_info` data from - `builds/unix/configure.raw`, and to generate the corresponding - shared library suffix. - - * scripts/generate_reference_docs.py: New script invoked by - `meson.build` to generate the FreeType 2 reference documentation - (using the `docwriter` and `mkdocs` packages, which must be already - installed). - -2020-09-11 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Improve the second pass (#58373). - - Besides dropout control the second horizontal sweep is supposed to - clean up straight horizontal edges that are mishandled by the first - vertical sweep when a line passes through pixel centers. This line - would present as perfectly aligned span edges in the second sweep. - - * src/raster/ftraster.c (Horizontal_Sweep_Span): Replace the old - implementation with a better one focusing on aligned span edges only. - -2020-09-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Tune SMART macro (#58352). - - Windows seems to perform smart dropout control at 26.6 precision. - To mimick Windows independent of increased precision, we need to tweak - the macro so that some close calls break down rather than up. - - * src/raster/ftraster.c (SMART): Tweak the macro. - -2020-09-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Introduce SMART macro. - - * src/raster/ftraster.c (SMART): New macro for smart dropout rounding. - (Verstical_Sweep_Drop, Horizontal_Sweep_Drop): Use it. - -2020-09-03 Boris Dalstein <dalboris@gmail.com> - - [build] Make CMake install basic version information. - - * CMakeLists.txt: Do it. - -2020-09-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - [truetype] Reduce Infinality footprint (cont'd). - - * src/truetype/ttinterp.c (Ins_DELTAP): Shrink variable scope. - (Ins_SHPIX, Ins_MIRP): Revise if-logic. - -2020-09-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - [truetype] Reduce Infinality footprint. - - * src/truetype/ttinterp.c (Ins_SHPIX, Ins_MSIRP, Ins_MIAP, Ins_MDRP, - Ins_MIRP): Shrink variable scopes and consolidate ifdefs. - -2020-09-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - [truetype] Refactor compensation color. - - * src/truetype/ttinterp.h (TT_Round_Func): Change the last argument. - * src/truetype/ttinterp.c (Ins_ROUND, Ins_NROUND, Ins_MDAP, Ins_MIAP, - Ins_MDRP, Ins_MIRP): Move compensation retrieval from here... - (Round_*): ... to here. - * src/truetype/ttobjs.c (tt_size_init_bytecode): Reserve zero - compensation at color index 3. - -2020-08-28 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Don't set target in direct mode. - - * src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Remove assignment. - (ft_smooth_raster_lcd) [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Ditto. - -2020-08-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Limit width. - - Segmentation fault reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24729 - -2020-08-22 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (TT_Get_VMetrics): Add tracing message. - -2020-08-05 Alexei Podtelezhnikov <apodtele@gmail.com> - - [truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND. - - For glyphs with OVERLAP_SIMPLE or OVERLAP_COMPOUND, set - FT_OUTLINE_OVERLAP to render them with direct oversampling, which - mitigates artifacts (see 3bb512bc9f62). - - * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Redefine to rhyme - with OVERLAP_SIMPLE. - * src/base/ftgloadr.c (FT_GlyphLoader_Rewind): Reset outline flags. - * src/truetype/ttgload.c - (TT_Load_Simple_Glyph): Retain OVERLAP_SIMPLE. - (load_truetype_glyph): Retain OVERLAP_COMPOUND. - -2020-08-04 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/truetype/ttgload.c (TT_Load_Glyph): More tracing. - -2020-07-28 Alexei Podtelezhnikov <apodtele@gmail.com> - - Hide internal functions with SunPro. - - * include/freetype/internal/compiler-macros.h - (FT_INTERNAL_FUNCTION_ATTRIBUTE) <__SUNPRO_C>: Define as __hidden. - -2020-07-28 Anuj Verma <anujv@iitbhilai.ac.in> - - Fix static compilation with Visual C. - - * include/freetype/internal/compiler-macros.h - (FT_INTERNAL_FUNCTION_ATTRIBUTE) <_WIN32>: Define as empty. - -2020-07-28 Priyesh Kumar <priyeshkkumar@gmail.com> - - Fix `-Wformat' compiler warnings. - - * src/*: Fix format specifiers. - - * builds/unix/ftsystem.c (FT_Stream_Open): Ditto. - -2020-07-25 Werner Lemberg <wl@gnu.org> - - Fix `-Wformat' compiler warnings. - - Problem reported by Priyesh kumar <priyeshkkumar@gmail.com> - - * src/base/ftoutln.c (FT_Outline_Decompose): Fix number of arguments - to tracing macro. - - * src/bdf/bdfdrivr.c (bdf_cmap_char_next, bdf_get_bdf_property): - Ditto. - - * src/cache/ftcbasic.c (ftc_basic_family_get_count): Ditto. - Reformulate message. - - * src/pcf/pcfdrivr.c (pcf_get_bdf_property): Ditto. - - * src/sfnt/sfwoff2.c (woff2_open_font): Ditto. - Trace table offset, too. - - * src/truetype/ttgxvar.c (ft_var_apply_tuple): Ditto. - -2020-07-23 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (woff2_decompress): Fix compiler warning. - - Reported by Hin-Tak. - -2020-07-12 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.raw: Fix inclusion of `ftoption.h'. - -2020-07-07 Werner Lemberg <wl@gnu.org> +2021-11-14 Werner Lemberg <wl@gnu.org> Fix clang warnings. - * include/freetype/internal/autohint.h - (FT_DECLARE_AUTOHINTER_INTERFACE): New macro. - * src/autofit/afmodule.h: Use it to declare - `af_autofitter_interface'. - - * include/freetype/internal/ftobjs.h (FT_DECLARE_GLYPH): New macro. - * src/base/ftbase.h: Use it to declare `ft_bitmap_glyph_class' and - `ft_outline_glyph_class'. - - * src/base/ftglyph.c: Include `ftbase.h'. - - * src/cff/cffparse.c (cff_parser_run): Fix type of `t2_size'. - - * src/pcf/pcfdrivr.c (pcf_cmap_char_next): Fix type of `result'. - - * src/psaux/psauxmod.c (psaux_module_class): Use `FT_DEFINE_MODULE'. - * src/psaux/psauxmod.h: Declare `afm_parser_funcs', - `t1_cmap_classes', `cff_decoder_funcs', and `psaux_module_class'. - - * src/pshinter/pshmod.c: Include `pshmod.h'. - - * src/sfnt/sfwoff2.c (ROUND4, WRITE_SHORT): Fix implicit sign - conversion. - (compute_ULong_sum): Fix return type. - Fix implicit sign conversion. - (store_points): Fix type of `last_flag', `repeat_count', and `flag'. - Use casts to avoid warnings. - (reconstruct_glyf): Fix implicit sign conversion. - Use cast to avoid warning. - (get_x_mins): Fix implicit sign conversion. - * src/sfnt/ttcmap.c: Undef `TTCMAPCITEM'. - * src/sfnt/ttcmap.h: Define `TTCMAPCITEM' and include `ttcmapc.h' to - declare cmap classes. - - * src/smooth/ftsmooth.c (ft_smooth_overlap_spans): Use cast. - - * src/truetype/ttinterp.c (Ins_MIAP): Fix typo. - -2020-07-07 David Turner <david@freetype.org> - - [build] Really fix multi and C++ builds. - - The following builds were still failing due to previous changes: - - make multi - make multi CC="c++" - make CC="c++" - - This patch fixes the issues, which were missing includes to get the - right macro definitions in multi-build mode. - - Also, `FT_UNUSED' is actually used by third-party code, so move it - back to `public-macros.h' to avoid breaking it. - - * include/freetype/config/public-macros.h (FT_EXPORT): Remove - special definition for C++. - (FT_UNUSED): Define here instead of... - * include/freetype/config/compiler-macros.h: ... here. - (FT_FUNCTION_DECLARATION): Remove special definition for C++. - (FT_LOCAL_ARRAY_DEF): Fix definition. - - * src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h, - src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER' and `FT_END_HEADER'. - -2020-07-06 David Turner <david@freetype.org> - - [build] Fix multi and C++ builds. - - The following builds were failing due to previous changes: - - make multi - make multi CC="c++" - - * include/freetype/config/ftconfig.h: Remove `FT_END_HEADER'. - - * include/freetype/config/ftheader.h (FT_BEGIN_HEADER, - FT_END_HEADER): Protect against redefinition. - - * src/cache/ftccache.h, src/cache/ftcmru.h, src/pcf/pcfutil.h, - src/psaux/pserror.h, src/psaux/psft.h, src/psaux/psstack.h, - src/sfnt/woff2tags.h: Include `compiler-macros.h'. - - * src/sfnt/woff2tags.c: Include `woff2tags.h'. - -2020-07-06 Werner Lemberg <wl@gnu.org> - - [psaux] Improve `t1_decoder_parse_metrics' (#58646). - - * src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy - corresponding code from old engine's `t1_decoder_parse_charstrings' - function to handle `op_callsubr' and `op_return'. - -2020-07-05 David Turner <david@freetype.org> - - [build] Improve visibility support of library function names. - - * include/freetype/config/public-macros.h - (FT_PUBLIC_FUNCTION_ATTRIBUTE): New macro to tag functions as - public (and thus exportable). - (FT_EXPORT): Use it. - - * include/freetype/config/compiler-macros.h - (FT_INTERNAL_FUNCTION_ATTRIBUTE): New macro to tag functions as - internal to the library (and thus hidden). Note that on ELF - systems, all internal functions have hidden visibility, which avoids - the need to enforce this when invoking the compiler (e.g., with an - option like `-fvisibility=hidden'). - - (FT_FUNCTION_DECLARATION, FT_FUNCTION_DEFINITION): New base macros - to deal with C and C++ linkage issues at the same time. - - (FT_LOCAL, FT_LOCAL_DEF, FT_LOCAL_ARRAY, FT_LOCAL_ARRAY_DEF, - FT_BASE, FT_BASE_DEF, FT_EXPORT_VAR, FT_BASE_CALLBACK, - FT_BASE_CALLBACK_DEF): Redefined using new macros. - -2020-07-05 David Turner <david@freetype.org> - - [build] Split off more stuff from `ftconfig.h'. - - * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, - include/freetype/config/ftconfig.h: Split off macro definitions - required by the FreeType API headers to... - * include/freetype/config/public-macros.h: ...this new file. - - * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, - include/freetype/config/ftconfig.h: Split off macro definitions used - by the library but not to be exposed to clients to... - * include/freetype/config/compiler-macros.h: ...this new file. - - * include/freetype/internal/*.h, src/raster/ftraster.h: Include - `compiler-macros.h' where needed. - -2020-07-05 David Turner <david@freetype.org> - - [build] Move mac support code to `mac-support.h'. - - * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, - include/freetype/config/ftconfig.h: Split off mac-specific stuff - to... - * include/freetype/config/mac-support.h: ...this new file. - - * CMakeLists.txt, builds/unix/configure.raw: Remove `/undef -> - #undef' string replacement; the affected code is no longer part of - the `ftconfig.h' template. - -2020-07-05 David Turner <david@freetype.org> - - [build] Put integer type definitions into `integer-types.h'. - - Refactor some of the `ftconfig.h' headers and template to move the - definition of the FreeType integer types (e.g., `FT_Int16') to a - common header file `freetype/config/integer-types.h'. - - * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h, - include/freetype/config/ftconfig.h: Split off integer type - definition stuff to... - * include/freetype/config/integer-types.h: ...this new file. - - * builds/unix/ftconfig.h.in: Control the definition of - `FT_SIZEOF_INT' and `FT_SIZEOF_LONG' with macro - `FT_USE_AUTOCONF_SIZEOF_TYPES'. If these are not defined, auto - detection happens in `integer-types.h' as usual based on `INTXX_MAX' - values. Otherwise the autoconf-detected values are used. - - * builds/unix/configure.raw (CPPFLAGS): Don't include path to - `config' directory. Instead, ... - (FT_CONFIG_STANDARD_LIBRARY_H): Use complete path. - -2020-07-05 David Turner <david@freetype.org> - - [build] Rename `build/unix/ftconfig.in' to `ftconfig.h.in'. - - Since we are no longer limited to 8.3 file names, it is simpler to - follow the usual conventions for template files. - - * builds/unix/ftconfig.in: Renamed to... - * builds/unix/ftconfig.h.in: ...this. - - * CMakeLists.txt, builds/unix/configure.raw: Updated. - -2020-07-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Introduce direct oversampling for overlaps. - - This implements oversampling to mitigate artifacts in pixels partially - covered by overlapping contours. It turns out that the 4x4 - oversampling is sufficient but, at least, quadruples the rendering - time. The outline has to set FT_OUTLINE_OVERLAP to use this method. - - * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): New flag. - * src/smooth/ftsmooth.c (ft_smooth_render): Check it to... - (ft_smooth_raster_overlap): ... inflate outline and set up direct - rendering for oversampling with... - (ft_smooth_overlap_spans): ... new span function that integrates them. - -2020-07-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Use direct rendering mode in Harmony. - - Instead of rendering 3 bitmaps side by side and reshuffling, we use - direct rendering to deliver the bitmaps on each third byte. - - * src/smooth/ftsmooth.c (ft_smooth_raster_lcd) - [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Set up direct mode with... - (ft_smooth_lcd_spans): ... new span function. - -2020-07-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Separate LCD paths from gray rendering. - - This makes `ft_smooth_render' a lot smaller and easier to follow. It - also cleanly separates Harmony and ClearType-style LCD rendering - algorithms. Now I only wish to move LCD filtering and geometry from - FT_Library to FT_Renderer. - - * src/smooth/ftsmooth.c (ft_smooth_render): Move LCD code from here... - (ft_smooth_raster_lcd, ft_smooth_raster_lcdv): ... to here. - [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Reorganize #ifdef's. - -2020-06-20 Sebastian Rasmussen <sebras@gmail.com> - - [cff] Fix handling of `style_name == NULL' (#58630). - - * src/cff/cffobjs.c (cff_face_init): If a call to `cff_strcpy' fails - by returning NULL in `cff_face_init', `remove_style' is still - called. This means that the NULL pointer is dereferenced, causing a - crash. - -2020-06-19 Sebastian Rasmussen <sebras@gmail.com> - - [cff] Fix another two memory leaks (#58629). - - * src/cff/cffobjs.c (cff_size_init): If a call to `funcs->create' - fails to allocate one of the `internal->subfont' variables, make - sure to free `internal->topfont' and any successfully allocated - subfonts. - -2020-06-19 Sebastian Rasmussen <sebras@gmail.com> - - [psaux] Fix memory leak (#58626). - - * src/psaux/psstack.c (cf2_stack_init): If `cf2_stack_init' fails to - allocate the stack, return error early. - -2020-06-19 Sebastian Rasmussen <sebras@gmail.com> - - [base] Fix memory leak (#58624). - - * src/base/ftobjs.c (FT_New_Size): Avoid trying to free - `size->internal' unless `size' has been allocated. This mistake - appeared in the fix for issue #58611. - -2020-06-19 Alexei Podtelezhnikov <apodtele@gmail.com> - - [base] Rework d1180b5f9598 until further notice. - - * src/base/ftoutln.c (FT_Outline_Get_Orientation): Reject large - outlines. - -2020-06-19 Sebastian Rasmussen <sebras@gmail.com> - - [cff, cid] Fix segfaults in case of error (#58621). - - * src/cff/cffobjs.c (cff_slot_done), src/cid/cidobjs.c - (cid_slot_done): If `ft_glyphslot_init' fails to allocate - `internal', then the class' `done_slot' callback (called by - `ft_glyphslot_done') must not dereference the pointer to `internal'. - -2020-06-19 Werner Lemberg <wl@gnu.org> - - [base] Fix UBSAN error. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23166 - - * src/base/ftoutln.c (FT_Outline_Get_Orientation): Avoid values - larger than 32 bits. - -2020-06-19 Werner Lemberg <wl@gnu.org> - - [woff2] Fix segfault. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23402 - - * src/sfnt/sfwoff2.c (get_x_mins): Check whether `loca' table - exists. - -2020-06-19 Stephen McDowell <svenevs.dev@gmail.com> - - [sfnt] Support Intel compilers. - - * src/sfnt/pngshim.c (premultiply_data): Intel compilers do not - currently support `__builtin_shuffle'. - -2020-06-19 Sebastian Rasmussen <sebras@gmail.com> - - [base] Fix memory leak (#58611). - - * src/base/ftobjs.c (FT_New_Size): When the call to `clazz->init_size' - fails, make sure to free `size->internal'. - -2020-06-19 Sebastian Rasmussen <sebras@gmail.com> - - [cff] Fix memory leak (#58610). - - * src/cff/cffobjs.c (cff_size_init): When the call to - `funcs->create' fails, make sure to free `internal'. - -2020-06-19 Werner Lemberg <wl@gnu.org> - - * src/cff/cffload.c (cff_index_get_pointers): Rename `t' to `tbl'. - -2020-06-19 Sebastian Rasmussen <sebras@gmail.com> - - [cff] Free table upon error allocating other data (#58609). - - * src/cff/cffload.c (cff_index_get_pointers): When new_bytes fails - to allocate, make sure to free the table. Do the same for both - allocations if there is a later error. - -2020-06-13 Werner Lemberg <wl@gnu.org> - - Remove redundant inclusion of `ft2build.h'. - - * */*: Remove `#include <ft2build.h>' where possible. - - * include/freetype/freetype.h: Remove cpp error about missing - inclusion of `ft2build.h'. - -2020-06-08 David Turner <david@freetype.org> - - Make macros for header file names optional. - - We no longer have to take care of the 8.3 file name limit; this - allows us (a) to introduce longer, meaningful file names, and (b) to - avoid macro names in `#include' lines altogether since some - compilers (most notably Visual C++) doesn't support this properly. - - */*: Replace - - #include FOO_H - - with - - #include <freetype/foo.h> - - or something similar. Also update the documentation. - -2020-06-02 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttcmap.c (tt_face_build_cmaps): Trace number of cmaps. - -2020-05-18 David Turner <david@freetype.org> - - Remove obsolete HAVE_STDINT_H probing macro. - - This macro was updated by the unix configure script and the - `CMakeLists.txt' one, but is never used in the source tree (nor is - <stdint.h> included anywhere). - - * CMakeLists.txt, builds/unix/ftconfig.in: Don't handle - `HAVE_STDINT_H'. - -2020-05-18 David Turner <david@freetype.org> - - Remove Jamfile files from the tree. - - These have not been used in a very, very long time, so better remove - them. A corresponding patch will be submitted to the - `freetype2-demos' repository. - - * src/Jamfile, src/*/Jamfile, Jamrules: Delete. - -2020-05-12 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Turn on LCD filtering during FreeType initialization. + * src/gxvalid/gxvcmmn.h (GXV_SET_ERR_IF_PARANOID): Use 'do' block. + * src/gxvalid/gxvmod.c (GXV_TABLE_LOAD, GXV_TABLE_VALIDATE): Ditto. - * src/smooth/ftsmooth.c (ft_smooth_init): Enable LCD filtering. + * src/smooth/ftgrays.c (gray_convert_glyph): Add cast. - * include/freetype/ftlcdfil.h: Document it, remove patent warnings. - * include/freetype/freetype.h (FT_Render_Mode): Updated. - * include/freetype/config/ftoption.h, devel/ftoption.h - [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Do not mention patents. + * 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. -2020-05-11 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-11-13 Dominik Röttsches <drott@chromium.org> - [smooth] Stop using dedicated LCD modules and classes. + [sfnt] Avoid undefined shifts in `COLR` v1 paint parsing - The LCD modules were never truly independent. They mostly served as - a way to disable patented LCD rendering, which is no longer necessary. - The `smooth' module now handles LCD modes as well. + * src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Tighten shift + behavior by using multiplication, mostly using macros from ftcalc.h. - * src/smooth/ftsmooth.c (ft_smooth_lcd_renderer_class. - ft_smooth_lcdv_renderer_class): Deleted. - (ft_render_smooth): Reworked from `ft_render_smooth_generic'. - * src/smooth/ftsmooth.h: Remove dedicated LCD classes. - * src/smooth/module.mk: Remove dedicated LCD modules. - * include/freetype/config/ftmodule.h: Ditto. - * builds/amiga/include/config/ftmodule.h: Ditto. - * include/freetype/ftmodapi.h: Do not mention LCD modules. + Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1269168 -2020-05-09 Werner Lemberg <wl@gnu.org> +2021-11-13 Alexei Podtelezhnikov <apodtele@gmail.com> - * Version 2.10.2 released. - ========================== - - - Tag sources with `VER-2-10-2'. - - * docs/VERSION.TXT: Add entry for version 2.10.2. - - * README, Jamfile (RefDoc), src/base/ftver.rc, - builds/windows/vc2010/index.html, builds/windows/visualc/index.html, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/index.html, docs/freetype-config.1: - s/2.10.1/2.10.2/, s/2101/2102/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. - - * builds/unix/configure.raw (version_info): Set to 23:2:17. - * CMakeLists.txt (VERSION_PATCH): Set to 2. - - * docs/CHANGES: Updated. - -2020-05-08 Jakub Alba <jalba@vewd.com> - - * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#58319). - - The font that exceeds the old limit is Icono Regular, version - 1.00000. - -2020-05-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - * builds/freetype.mk: Refactor for readability. - -2020-05-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - [builds] Clean up Windows CE project files. - - Remove version from filenames that caused a lot of polution in the - release process. Use VERSIONINFO resource instead. - - * builds/wince/vc2005-ce/freetype.vcproj, - builds/wince/vc2008-ce/freetype.vcproj, - builds/windows/visualce/freetype.vcproj, - builds/windows/visualce/freetype.dsp: s/2101//g, but add `ftver.rc'. - * builds/wince/vc2008-ce/index.html, - builds/wince/vc2005-ce/index.html, - builds/windows/visualce/index.html: s/2101//g. - -2020-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - * devel/ft2build.h: Override FT_CONFIG_MODULES_H here as well. - -2020-05-01 Alexei Podtelezhnikov <apodtele@gmail.com> - - [builds/unix] Consolidate marco overrides (for the demos to see them). - - * builds/unix/unix-cc.in (FT_CONFIG_MODULES_H, FT_CONFIG_OPTIONS_H): - Override them here... - * builds/freetype.mk: ... instead of here. - -2020-04-08 Werner Lemberg <wl@gnu.org> - - Allow setting `CC' in Unix build (#58051). - - * builds/unix/unix-cc.in (CC): Use `override'. The command line - value of `CC' (if any) is stored already in `CCraw'. - -2020-04-04 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Return if single stream operation fails. - - * src/sfnt/sfwoff2.c (get_x_mins): Do it. - - * src/sfnt/woff2tags.c: Remove unused include. - -2020-03-22 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [docs] Fix building docs if `srcdir' != `builddir'. - - `docs/reference/*' was moved one directory up in commit 237fed6. - - * builds/unix/unix-def.in (PIP): Remove variable. - - * configure: Create `docs' directory and copy assets from - `docs/markdown'. - - * docs/README: Output directory is `reference'. - -2020-03-21 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [docwriter] Drop support for Python < 3.5. - - Python versions < 3.5 have reached end-of-life and as such, no - security or bug fixes will be provided for those versions. See + [builds/windows] Improve `DlgCopy` target. - https://devguide.python.org/#status-of-python-branches + Fixes #1113. - for more information. + * builds/windows/vc2010/freetype.vcxproj: Run `DlgCopy` conditionally + and decouple it from `Build`. - * Jamfile (RefDoc): Add `site' parameter. +2021-11-12 Alexei Podtelezhnikov <apodtele@gmail.com> - * builds/detect.mk (std_setup): Update Python version requirement. + Explicitly define `FT_MSB` for Clang. - * builds/freetype.mk (refdoc-venv): Use pip as `python -m pip'. + * include/freetype/internal/ftcalc.h [__clang__] (FT_MSB): Updated. - * builds/unix/ax_compare_version.m4, - builds/unix/ax_prog_python_version.m4: Macros to detect Python - version. New files. +2021-11-10 Alexei Podtelezhnikov <apodtele@gmail.com> - * builds/unix/configure.raw: Check for Python >= 3.5 and remove - check for `pip'. + * src/truetype/ttgxvar.c (ft_var_to_normalized): Edge optimization. - * docs/CHANGES, docs/INSTALL.GNU, docs/README: Updated. +2021-11-10 Alexei Podtelezhnikov <apodtele@gmail.com> -2020-03-02 Moazin Khatti <moazinkhatri@gmail.com> + Additional `FT_MSB` macro definitions. - [gzip] Support `gzip' encoded header conditionally. + Better macros for Windoes CE and ARM in general, based on !109 + from metarutaiga. - In order to support `gzip' encoded header the call to - `inflateInit2' was modified in commit 6a92b1fadde26477a9179. - However, this code breaks with the outdated internal version - of zlib. This is a temporary fix to conditionally support - `gzip' encoded header whenever a system installation of zlib - is being used. + * include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated. - Problem report in +2021-11-09 Alexei Podtelezhnikov <apodtele@gmail.com> - https://lists.nongnu.org/archive/html/freetype-devel/2020-02/msg00023.html + [build/windows] Remove logging from default debug configurations. - * src/gzip/ftgzip.c (FT_Gzip_Uncompress): Change the the call to - `inflateInit2' depending on whether the system installation is - being used or the internal copy. + 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. -2020-02-29 Ben Wagner <bungeman@google.com> + * builds/windows/vc2010/freetype.vcxproj: Hide FT_DEBUG_LOGGING. - [truetype] Fix state of `FT_Face' for buggy `gvar' tables (#57923). +2021-11-08 Werner Lemberg <wl@gnu.org> - By resetting the blend as implemented with this commit fonts with - invalid `gvar' tables may keep calling into `ft_var_load_gvar' from - `tt_set_mm_blend' and failing, but the font was invalid anyway and - we want to keep seeing the failure in `tt_set_mm_blend'. + * src/sfnt/sfobjs.c (sfnt_open_font): Fix typo. - * src/truetype/ttgxvar.c (ft_var_load_gvar): Calculate length of - offset array once. - Allocate arrays after `FT_FRAME_ENTER' (extra check before - allocating and avoid needing to free array later if error entering - frame). - Always call `FT_FRAME_EXIT'. - Consistently set counts immediately after array initialized. - Reset the blend (particularly `blend->glyphoffsets') on failure. +2021-11-08 Werner Lemberg <wl@gnu.org> -2020-03-01 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> + * src/gxvalid.*, src/otvalid.*: Fix `-Wformat` warnings. - [docs] Update docwriter stylesheet. +2021-11-08 Werner Lemberg <wl@gnu.org> - This change is required to support docwriter 1.2.1. + [pshinter] Fix C++ compilation. - See + * src/pshinter/pshalgo.c (psh_compute_dir): Fix type of `result`. + (psh_hint_table_find_strong_points): Add cast. - https://github.com/freetype/docwriter/issues/36 +2021-11-08 Werner Lemberg <wl@gnu.org> - for more information. + [sfnt] Reduce footprint if WOFF and WOFF2 support is not needed. - * docs/markdown/stylesheets/extra.css: - (.md-typeset code) -> (.md-typeset pre>code) - (pre) -> (pre>code) - (p, .md-typeset p, h4): Remove commented styles. - (table.index): Remove unused styles. + 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). -2020-02-28 Ben Wagner <bungeman@google.com> + * 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. - [truetype] Add better checks for loading `gvar' table (#57905). + * src/sfnt/sfwoff.c, src/sfnt/sfwoff.h: Guard files with + `FT_CONFIG_OPTION_USE_ZLIB` blocks, not parts of the code. - * src/truetype/ttgxvar.c (ft_var_load_gvar): Delay settings of any - `blend->xxxcount' values until the corresponding data has been - checked. - Also do some sanitizing to avoid a too early exit. + * 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. - (TT_Vary_Apply_Glyph_Deltas): Improve tracing message. + Fixes #1111. -2020-02-27 Werner Lemberg <wl@gnu.org> +2021-11-08 Werner Lemberg <wl@gnu.org> - Make `FT_HAS_*' and `FT_IS_*' really return true (#57906). + [truetype] Make trickyness checks depend on TT_USE_BYTECODE_INTERPRETER. - * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Implement it. + Based on a patch from metarutaiga (MR !106). -2020-02-25 Dominik Röttsches <drott@chromium.org> + * 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. - Fix for CFF space glyph regression (#57541). + Fixes #1111. - * src/psaux/psft.c (cf2_decoder_parse_substrings): Replace early-out - with FT_OFFSET. +2021-11-08 Alexei Podtelezhnikov <apodtele@gmail.com> -2020-02-22 Werner Lemberg <wl@gnu.org> + * src/sfnt/ttload.c (tt_face_load_gasp): Fix a type mismatch warning. - [woff2] Fix font table access. +2021-11-07 Alexei Podtelezhnikov <apodtele@gmail.com> - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=20778 - - * src/sfnt/sfwoff2.c (get_x_mins): Explicitly check for presence of - `head' table, which might not have been processed yet. - -2020-02-21 Werner Lemberg <wl@gnu.org> - - [psaux] Make `t1_decoder_parse_metrics' handle `op_div' (#57519). - - * src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy - corresponding code from old engine's `t1_decoder_parse_charstrings' - function. - -2020-02-19 Nikolaus Waxweiler <nikolaus.waxweiler@daltonmaag.com> - - [autofit] Add support for Hanifi Rohingya script. - - * src/autofit/afblue.dat: Add blue zone data for Hanifi Rohingya. - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - - * src/autofit/afscript.h: Add Hanifi Rohingya standard character. - - * src/autofit/afranges.c, src/autofit/afstyles.h: Add Hanifi - Rohingya data. - -2020-02-19 Werner Lemberg <wl@gnu.org> - - Require HarfBuzz 1.8. - - * builds/unix/configure.raw, CMakeLists.txt: Request HarfBuzz 1.8.0 - or newer. - - We are going to add auto-hinter support for Hanifi Rohingya, which - was introduced in Unicode 11.0. - -2020-02-12 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttcmap.c (tt_face_build_cmaps): Ignore version (#57708). - -2020-02-04 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#57732). + [dlg] Define DLG_STATIC explicitly. - The font that exceeds the old limit is Constantine, version 1.001. + 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. -2020-01-04 Werner Lemberg <wl@gnu.org> + * 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. - [base] Fix `FREETYPE_PROPERTIES=type1:hinting-engine=adobe`. +2021-11-07 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/base/ftpsprop.c (ps_property_set) [hinting-engine]: Avoid an - incorrect return value that caused a warning. The function did the - right thing, though. + [dlg] Lighten up the inclusions. -2020-01-03 Werner Lemberg <wl@gnu.org> + The DLG wrapper needs to know if FT_DEBUG_LOGGING is defined in + `ftoption.h`. It does not need entire FreeType. - [woff2] Fix memory leaks and a runtime warning. + * src/dlg/dlgwrap.c: Include FT_CONFIG_OPTIONS_H directly. - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19773 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18101 - - * src/sfnt/sfwoff2.c (compute_ULong_sum): Add missing cast. - (reconstruct_hmtx): Add missing deallocation calls. - -2020-01-02 Dominik Röttsches <drott@chromium.org> - - [truetype] Fix UBSan warning on offset to nullptr (#57501). +2021-11-07 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/truetype/ttinterp.c (Ins_CALL): Fail if `exc->FDefs' is null. + [truetype] Avoid some memory zeroing in variations. -2019-12-31 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> + * 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. - [woff2] Allow bitmap-only fonts (#57394). +2021-11-05 Jany Belluz <jany.belluz@daltonmaag.com> - * src/sfnt/sfwoff2.c (reconstruct_font): Fix test for `glyf' and - `loca' tables. + [truetype] Fix handling of packed deltas in Variation Fonts. -2019-12-21 Hugh McMaster <hugh.mcmaster@outlook.com> + * 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. - [docs] (2/2) Fix generation of API documentation (#56745). + We now count the consumed bytes to make sure to not read more than expected. - Creating the API Reference in the (new) `reference' sub-directory is - consistent with other documentation sub-topics, such as `design', - `glyphs' and `tutorial'. +2021-11-04 Jany Belluz <jany.belluz@daltonmaag.com> - This patch fixes broken hyperlinks in the documentation pointing to - and from the API Reference. It also allows web assets to load from - their relative paths. + [truetype] Fix CVAR handling of tuples for all points. - * builds/freetype.mk (DOC_DIR): Adjust. - (refdoc, refdoc-venv): Add `--site' argument. + * 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. - * builds/toplevel.mk (do-dist): Updated. +2021-11-04 Jany Belluz <jany.belluz@daltonmaag.com> -2019-12-21 Hugh McMaster <hugh.mcmaster@outlook.com> + * src/truetype/ttgxvar.c: Fix typos in macros that guard CVAR code. - [docs] (1/2) Move static web assets (#56745). +2021-11-04 Alexei Podtelezhnikov <apodtele@gmail.com> - * docs/reference/*: Move ... - * docs: ... one directory up. + * docs/INSTALL: Mention Meson and MSBuild more prominently. -2019-12-21 Dominik Röttsches <drott@chromium.org> +2021-11-03 Gabor Kertesz <gabor.kertesz@linaro.org> - Fix more UBSan warnings on adding offset to nullptr (#57432). - - * src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c - (cf2_initLocalRegionBuffer): Use `FT_OFFSET'. - -2019-12-16 Werner Lemberg <wl@gnu.org> - - [truetype] Fix UBSan warnings on adding offsets to nullptr. - - Reported as + [libpng] Update Meson wrap for win-arm64 - https://bugs.chromium.org/p/chromium/issues/detail?id=1032152 + 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 - * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET'. + Updated by the following command: + meson wrap update libpng -2019-12-14 Werner Lemberg <wl@gnu.org> - - [truetype] Fix integer overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19305 - - * src/truetype/ttinterp.c (Ins_MIRP): Use `ADD_LONG'. - -2019-12-13 Werner Lemberg <wl@gnu.org> - - Another bunch of UBSan warnings on adding offsets to nullptr. - - Reported as + Tested on win-arm64 and x64. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19427 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19433 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19441 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19451 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19452 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19457 - - * src/autofit/aflatin.c (af_latin_hints_compute_segments, - af_latin_hints_compute_edges): Use `FT_OFFSET'. - - * src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET'. - - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early - if there is no charstring. - - * src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET'. - - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for - zero bitmap dimensions. - -2019-12-09 Dominik Röttsches <drott@chromium.org> - - Fix more UBSan warnings on adding offset to nullptr (#57384). - - * src/smooth/ftsmooth.c (ft_smooth_render_generic), - src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET'. - -2019-12-05 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET'. - - Reported as - - https://bugs.chromium.org/p/chromium/issues/detail?id=1030614 - -2019-12-03 Werner Lemberg <wl@gnu.org> - - More nullptr offset UBSan warnings (#57331, #57347). - - * src/autofit/afcjk.c (af_cjk_hints_compute_segments), - src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c - (Ins_UNKNOWN): Use `FT_OFFSET'. - -2019-11-29 Dominik Röttsches <drott@chromium.org> - - Avoid more nullptr offset UBSan warnings (#57316). - - * src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points. - * src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET'. - * src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if - `charstring_base' or `charstring_len' are null. - * src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET'. - -2019-11-23 John Stracke <jstracke@Google.com> - - [base] Really fix #57194. - - Apply accidentally missed second part of patch. - - * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call - `FT_GlyphLoader_CreateExtra'. - -2019-11-23 Werner Lemberg <wl@gnu.org> - - [truetype] Avoid sanitizer warning (#57289). - - * src/truetype/ttpload.c (tt_face_get_device_metrics): Use - `FT_OFFSET'. - -2019-11-23 Armin Hasitzka <prince.cherusker@gmail.com> - - [truetype] Fix integer overflow (#57287). - - * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'. - -2019-11-23 Ben Wagner <bungeman@google.com> - - [sfnt] Avoid sanitizer warning (#57286). - - * src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL + - offset' computation. - Tag `table' as `const'. - -2019-11-23 John Stracke <jstracke@Google.com> - Werner Lemberg <wl@gnu.org> - - [base] Fix `NULL + offset' sanitizer warnings (#57194). - - * src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points, - FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET'. - (FT_GlyphLoader_CreateExtra): Add short cut if some values are zero. - -2019-11-23 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro. - - Use this for `base + offset' pointer calculations where `base' can - be NULL (triggering a sanitizer warning even if the resulting - pointer gets never dereferenced since it is undefined behaviour - in C). - - Suggested by Ben Wagner. - -2019-11-23 Ben Wagner <bungeman@google.com> - - [sfnt] Ensure OTTO fonts have tables (#57285). - - * src/sfnt/ttload.c (tt_face_load_font_dir): Add test. - -2019-11-23 Behdad Esfahbod <behdad@behdad.org> - - Minor fixes for recent compilers. - - * src/gzip/infutil.h (inflate_mask): Add `const'. - - * src/autofit/aflatin2.c: Include `ft2build.h'. - -2019-11-07 Nikolaus Waxweiler <madigens@gmail.com> - - * CMakeLists.txt: Minor additions to the notes, compile - builds/unix/ftsystem.c instead of src/base/ftsystem.c on UNIX. - - The latter change is based on the code proposed by rim in #55235. - -2019-10-25 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts' for TTCs. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18494 - -2019-10-22 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift. - - Also improve tracing. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18390 - -2019-10-10 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only. - -2019-10-10 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size'. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18108 - -2019-10-09 John Tytgat <John.Tytgat@esko.com> - - [cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023). - - * src/cff/cffobjs.c (cff_face_init): Don't set - FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts. - -2019-10-08 Werner Lemberg <wl@gnu.org> - - [woff2] Fix SFNT table checks. - - Also reduce number of SFNT table lookups. - - Reported as +2021-11-03 Dominik Röttsches <drott@chromium.org> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18065 + [sfnt] Clarify `COLR` v1 FT_Paint* format representations - * include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields - `glyf_table', `loca_table', and `head_table'. - - * src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature. - Use table pointers in `info' parameter. - (get_x_mins): Check `maxp_table' - Use table pointers in `info' parameter. - (reconstruct_font): Use and set table pointers in `info' parameter. - Fix check for `glyf' and `loca' tables. - Update call to `reconstruct_glyf'. - (woff2_open_font): Updated. - -2019-10-06 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (reconstruct_glyf): Fix reallocation. - - Reported as + * 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. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18046 + Fixes: https://gitlab.freedesktop.org/freetype/freetype/-/issues/1110 -2019-10-06 Werner Lemberg <wl@gnu.org> +2021-11-03 Alexei Podtelezhnikov <apodtele@gmail.com> - Improve memory debugging. + [builds/windows] Let MSBuild handle DLG copy. - * include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use - `FT_DEBUG_INNER' to set source code file name and line. + * builds/windows/vc2010/freetype.vcxproj: Specify DlgCopy target. + * builds/windows/vc2010/script.bat: Deleted. - * src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of - tracing message. +2021-10-29 Alexei Podtelezhnikov <apodtele@gmail.com> -2019-10-03 Werner Lemberg <wl@gnu.org> + * src/truetype/ttgload.c (load_truetype_glyph): Fix MSVC warning C4312. - * src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation. +2021-10-29 Alexei Podtelezhnikov <apodtele@gmail.com> - Reported as + [builds/windows] Separate MSVC linker and librarian. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17966 + MSVC uses LIB for static and LINK for dynamic libraries. They are + related but the former has much smaller set of options. -2019-10-01 Alexei Podtelezhnikov <apodtele@gmail.com> + * builds/windows/vc2010/freetype.vcxproj: Updated. - * src/base/ftstroke.c (ft_stroker_inside): Speed up. +2021-10-29 Alexei Podtelezhnikov <apodtele@gmail.com> -2019-10-01 Werner Lemberg <wl@gnu.org> + [builds/windows] Revise MSVC linking optimizations. - * src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts'. + * builds/windows/vc2010/freetype.vcxproj: Optimize DLL linking only. + * builds/windows/visualc/freetype.dsp: Ditto. + * builds/windows/visualc/freetype.vcproj: Ditto. - Reported as +2021-10-28 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17804 + [woff] Optimize table tagging. -2019-09-30 Werner Lemberg <wl@gnu.org> + * include/freetype/internal/wofftypes.h (WOFF_TableRec): Use + 32-bit tag. + * src/sfnt/sfwoff.c (woff_open_font): Use 32-bit tag. - * src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak. - - Reported as +2021-10-28 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17812 + [woff2] Optimize table tagging. -2019-09-30 Werner Lemberg <wl@gnu.org> + Fixes #1107. - [woff2] Reject fonts without `head' table. + * 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. - Also fix memory deallocation in case of error. +2021-10-26 Werner Lemberg <wl@gnu.org> - `head' problem reported as + Formatting. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17820 +2021-10-26 Ben Wagner <bungeman@chromium.org> - * src/sfnt/sfwoff2.c (reconstruct_glyf): Don't use `stream_close'. - Abort if `head_table' is NULL. - Don't free `transformed_buf' in case of error. - (woff2_open_font): Don't set `uncompressed_buf' to NULL. + [mm] Tolerate missing Blend dictionary entries -2019-09-29 Werner Lemberg <wl@gnu.org> + 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. - [woff2] Fix compiler warnings. + In the future it may be best to keep track of when these are actually + initialized and error if they are not. - Problem reported by Alexei. + * src/type1/t1load.c (t1_allocate_blend): Zero initiailize. - * src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min'. - (reconstruct_font): Initialize `num_hmetrics'. - (woff2_open_font): Initialize `info'. +2021-10-26 Alexei Podtelezhnikov <apodtele@gmail.com> -2019-09-28 Werner Lemberg <wl@gnu.org> + [builds/windows] Add MSVC linker optimazations. - * src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check. + We continue to build static libraries with statically linked C run- + time and add options to optimize references. - Correct thinkos in patch from 2019-09-01. + * builds/windows/vc2010/freetype.vcxproj: Sort entries, add options. -2019-09-28 Werner Lemberg <wl@gnu.org> +2021-10-23 Alexei Podtelezhnikov <apodtele@gmail.com> - [woff2] Fix memory leaks. + * builds/windows/vc2010/freetype.vcxproj: Use MachineARM64. - One of them reported as +2021-10-22 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17766 + [builds/windows] Prioritize x64. - * src/sfnt/sfwoff2.c (woff2_open_font): Free `info->x_mins' and - `woff2->ttc_fonts'. + * builds/windows/vc2010/freetype.sln: Sort entries. - (reconstruct_glyf): Initialize `info->x_mins'. +2021-10-22 Gabor Kertesz <gabor.kertesz@linaro.org> -2019-09-27 Alexei Podtelezhnikov <apodtele@gmail.com> + [builds/windows] Add ARM64 platform. - * src/base/ftstroke.c (ft_stroker_cap): Speed up caps. + * builds/windows/vc2010/freetype.sln: Updated + * builds/windows/vc2010/freetype.vcxproj: Updated. + * builds/windows/vc2010/freetype.vcxproj.filters: Minor fix. -2019-09-25 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-10-21 Ben Wagner <bungeman@chromium.org> - * src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter. - * include/freetype/ftstroke.h: Wordsmith miter docs. + [mm] Delay setting blend weight and design position. -2019-09-25 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes. + 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 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17684 - -2019-09-23 Alexei Podtelezhnikov <apodtele@gmail.com> + * 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. - * src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations. +2021-10-21 Ben Wagner <bungeman@chromium.org> -2019-09-20 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> + [cff] Commit vstore data and regions on allocation. - [woff2] Fix memory leaks. - - Reported as + 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. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16896 + Reportd as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40104 - * src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling. - Free `uncompressed_buf'. - (reconstruct_font): Free `transformed_buf'. + * 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. -2019-09-17 Werner Lemberg <wl@gnu.org> +2021-10-20 Ben Wagner <bungeman@chromium.org> - * src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count'. + [sfnt] Delay setting gasp ranges and count until computed. - Problem reported by Marc Schönefeld <marc.schoenefeld@gmx.org>. - -2019-09-17 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (woff2_open_font): Check table index. + 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 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17100 - -2019-09-15 Avi Halachmi (:avih) <avihpit@yahoo.com> - - [cmake] Don't fail if brotli is missing (#56894). - - The libs which cmake controls are commented out at - - include/freetype/config/ftoption.h - - and cmake un-comment each enabled library, but the brotli option was - not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained - defined even if brotli was missing/disabled/etc. - - Comment it such that cmake can control it, which means leaving it - undefined if brotli is missing. - - * include/freetype/config/ftoption.h: Fix typo. - -2019-09-05 Werner Lemberg <wl@gnu.org> - - [cmake] Add brotli support. - - * CMakeLists.txt (FT_WITH_BROTLI): New option. - - * builds/cmake/FindBrotliDec.cmake: New file. - -2019-09-05 Werner Lemberg <wl@gnu.org> - - Fix handling of `AF_CONFIG_OPTION_INDIC'. - - * devel/ftoption.h, include/freetype/config/ftoption.h: - `AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'. - -2019-09-05 Werner Lemberg <wl@gnu.org> - - CMakeLists.txt: Fix generation of DLL related stuff (#56852). - - Extract `version_info' variable from `builds/unix/configure.raw' and - use the data to correctly set `LIBRARY_VERSION' and - `LIBRARY_SOVERSION'. - - Also use the data to set `ft_version' field in `freetype2.pc'. - Also fix the needed minimum version of HarfBuzz in `freetype2.pc'. - -2019-09-03 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (compute_ULong_sum): Fix undefined shift. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16933 - -2019-09-01 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfwoff2.c (woff2_open_font): Add sanity check. - - Don't trust `totalSfntSize' unconditionally. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16893 - -2019-08-27 Dominik Röttsches <drott@chromium.org> - - [woff2] Don't use `FT_UInt64' (#56815). - - * src/sfnt/sfwoff2.c (woff2_open_font): Use `FT_UInt32' for - `file_offset'. This fixes builds on platforms where `FT_LONG64' is - not defined while still being sufficient to store a file offset. - -2019-08-27 Werner Lemberg <wl@gnu.org> - - [truetype] Prevent crash in `TT_Set_Named_Instance' (#56813). - - * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Fix error - handling. - -2019-08-27 Werner Lemberg <wl@gnu.org> - - [woff2] Fix compiler warnings. - - * src/sfnt/sfwoff2.c (read_num_hmetrics): Remove unused argument - `table_len'. - Update caller. - (triplet_decode, compute_bbox, store_loca, reconstruct_glyf): Make - `i' variable unsigned. - (reconstruct_glyph): Remove condition which is always false. - (reconstruct_html): Removed unused argument `transformed_size'. - Update caller. - - * src/sfnt/woff2tags.c (woff2_known_tags): Remove condition which is - always false. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Check whether known tag is in array bounds. - - If table tag is not 0x3f, we expect a value between 0 and 62. If - this is not the case, exit with errors. - - * src/sfnt/sfwoff2/c: Check whether table tag makes sense. - - * src/sfnt/woff2tags.c: Return 0 if tag is out of bounds. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - * src/sfnt/sfwoff2.c: Improve trace comments. - - Adjust tracing levels for comments, and more formatting. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Support `hmtx' reconstruction when `glyf' is untransformed. - - `reconstruct_hmtx' requires `info->x_mins' and `info->num_glyphs' to - reconstruct the hmtx table. In case glyf is not transformed, we - call `get_x_mins' which does the necessary work. - - * src/sfnt/sfwoff2.c (get_x_mins): New function. - (reconstruct_font): Call get_x_mins. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [sfnt] Support `face->num_faces' for WOFF2 fonts. - - Set correct value of `face->num_faces' for WOFF2 fonts. This is - being handled separately because we only load the tables for the - requested font face in `woff2_open_font' and create a single-face - sfnt stream. - - The full discussion is at: - - https://lists.gnu.org/archive/html/freetype-devel/2019-08/msg00000.html - - * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter - `woff2_num_faces'. - (sfnt_init_face): Introduce variable `woff2_num_faces', and change - `face->root.num_faces' if `woff2_num_faces' is set. - - * src/sfnt/sfwoff2.c (woff2_open_font): Validate requested face - index and handle negative face indices. - - * src/sfnt/sfwoff2.h (woff2_open_font): Add parameter `num_faces' to - declaration. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Improve memory and error handling. - - Free up memory after use, and improve error handling. - - * src/sfnt/sfwoff2.c (reconstruct_font, woff2_open_font): Implement - changes. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Avoid too many calls to `FT_REALLOC'. - - We do this by using `totalSfntSize' as an initial reference, and - extending the buffer when required. This reduces rendering time - considerably. - - * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add - `totalSfntSize', rename `total_sfnt_size' to `actual_sfnt_size'. - - * src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size' to keep - track of and update total size of stream. - - (WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly. - - (pad4, store_loca, reconstruct_glyf, reconstruct_hmtx, - reconstruct_font): Update parameters to accept `sfnt_size'. - - (woff2_open_font): Add variable `sfnt_size'. Use WOFF2 header field - `totalSfntSize' as initial reference (if value makes sense) and - allocate `totalSfntSize' bytes for the sfnt stream. `write_buf' - handles reallocation if and when required. Also resize the stream - to `actual_sfnt_size' after reconstruction. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Reconstruct `loca', `hmtx', and swap out stream. - - Add necessary functions to reconstruct loca and hmtx tables (the two - remaining tables that can have a transform). `woff2_open_font' is - now capable of loading a woff2 font face. This code may still need - more refining and better memory management. - - * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total - (final) size of sfnt stream. - - (WOFF2_InfoRec): Add header checksum value. - - * src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index' - parameter to its pointer so its value can be modified by - `woff2_open_font'. - - * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into - sfnt buffer at given position. - - (write_buf): Add parameter `extend_buf' which allows caller to - specify whether buffer should be reallocated before copying data. - - (WRITE_SFNT_BUF): Updated. - - (pad4, store_loca, reconstruct_htmx): New functions. - - (reconstruct_glyf): Calculate loca values and store them. - - (reconstruct_font): Call `reconstruct_hmtx', write table record - entries, and calculate table checksums. Also calculate font - checksum and update `checksumAdjustment' entry in head table. - - (woff2_open_font): Open stream for sfnt buffer, swap out input - stream and return. - - * src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept - pointer to `face_index'. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Reconstruct transformed `glyf' table. - - Reconstruct `glyf' table if it is transformed in the uncompressed - table stream. Also add necessary structures, macros and functions. - - * include/freetype/internal/wofftypes.h (WOFF2_InfoRec, - WOFF2_SubstreamRec, WOFF2_PointRec): New structures. - (WOFF2_TableRec): s/OrigLength/dst_length/. - - * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use - `FT_SET_ERROR' to set implicit `error' variable. - - (WRITE_SHORT): New macro. - - (N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM, - COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to - refer to substreams of the transformed `glyf' tables. - - (Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX' - macros. - - (with_sign, safe_int_addition): New functions to add sign to values - based on a flag and perform safe addition respectively. - - (triplet_decode): Decode variable-length (flag, xCoordinate, - yCoordinate) triplet for a simple glyph. See - - https://www.w3.org/TR/WOFF2/#triplet_decoding - - (store_points, compute_bbox, composteGlyph_size, reconstruct_glyf): - New functions. - - (reconstruct_font): Call `reconstruct_glyf'. - - * src/sfnt/sfwoff2.h: Add required constants. - - * src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h'. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Copy un-transformed tables to sfnt stream. - - Copy un-transformed tables to the sfnt stream. - - * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF): New macro. - (write_buf): New function. Extend memory of `dst' buffer and copy - bytes from `src'. - (compute_ULong_sum): New function. Calculate checksum of table. - (reconstruct_font): Change `FT_Byte* sfnt' to `FT_Byte** - sfnt_bytes'. This has been done because we reallocate memory to - `sfnt' multiple times, which may change the pointer value of `sfnt'. - This new pointer must be propogated back to the caller. Same reason - for using a double pointer in `write_buf'. - - * src/sfnt/woff2tags.h (WOFF2_DEFAULT_MAX_SIZE): New macro used for - overflow checking. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Create stream for uncompressed buffer. - - Uncompressed buffer is now an `FT_Stream'. - - Perform basic checks and start iterating over tables. - - * src/sfnt/sfwoff2.c (stream_close, find_table, read_num_hmetrics): - New functions. - (reconstruct_font): Modify parameters and iterate over tables. - (woff2_open_font): Updated. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Handle TTCs and start reconstructing font. - - We `handle' TTCs by modifying the `indices' array to point to only - those tables that are part of the requested `face_index'. - - Set and use `num_tables' in `WOFF2_TtcFont'. - - * src/sfnt/sfwoff2.c (reconstruct_font): New function. - (woff2_open_font): Start reconstruction of font. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Get known tags from function. - - Change `KnownTags' to a function (`woff2_known_tags'). This avoids - introducing a global constant array. This function returns the - specified index without *any* checks. The caller must ensure that - `index' is within array limits. - - * src/sfnt/sfwoff2.c (woff2_open_font): Change `KnownTags[...]' - notation to `woff2_known_tags( ... )'. - - * src/sfnt/woff2tags.c: Perform changes. - - * src/sfnt/woff2tags.h: Update definitions. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Minor. - - * src/sfnt/sfwoff2.c (woff2_uncompress): Add error message - (woff2_open_font): Free `uncompressed_buf'. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Uncompress Brotli streams and `face_index' support. - - WOFF2 compressed stream is now uncompressed if Brotli is available. - This data is stored in a separate buffer (uncompressed_buf) because - it does not contain direct table data. Certain tables have - transformations applied to them, and they must be reconstructed - before we can write those tables to the SFNT stream. - - `face_index' is now being passed as a parameter to - `woff2_open_font'. - - * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter - `face_instance_index'. - - * src/sfnt/sfwoff2.c (woff2_uncompress): New function. - (woff2_open_font): Call `woff2_uncompress'. - (compute_first_table_offset): Fix return type. - - * src/sfnt/sfwoff2.h (woff2_open_font): Modify declaration. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - * builds/unix/configure.raw: Change argument name to `brotli'. + * src/sfnt/ttload.c (tt_face_load_gasp): Delay setting gasp.numRanges + and gasp.gaspRanges until after the ranges are initialized. -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> +2021-10-20 Ben Wagner <bungeman@chromium.org> - Add Brotli dependency and required checks. + [sfnt] Delay setting names and langTags until computed. - Brotli is required for decompressing WOFF2 font directory streams. - The library is thus being added as an optional dependency for - FreeType. - - * builds/unix/configure.raw: Add checks for `libbrotlidec'. - (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated. - - * devel/ftoption.h, include/freetype/config/ftoption.h - (FT_CONFIG_OPTION_USE_BROTLI): New macro. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Write SFNT Offset table. - - * src/sfnt/sfwoff2.c (WRITE_USHORT, WRITE_ULONG): New macros. - (compare_tags): New function. - (woff2_open_font): Implement it. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - * src/sfnt/sfwoff2.c: #undef macros. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [woff2] Read table and collection directory. - - * include/freetype/internal/wofftypes.h (WOFF2_TtcFontRec): New - structure. - (WOFF2_HeaderRec): Add more fields. - - * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128, ROUND4): New - macros. - (Read255UShort, CollectionHeaderSize, compute_first_table_offset): - New functions. - (ReadBase128): Use `FT_READ_BYTE'. - (woff2_open_font): Add functionality to read table directory and - collection directory (if present). - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [sfnt] Include `woff2tags.c' for building. - - * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `woff2tags.c'. - - * src/sfnt/sfnt.c: Include `woff2tags.c'. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [sfnt] Add WOFF2 constants. - - Add constants required for WOFF2, and known table tags as defined in - the specification. See - - https://www.w3.org/TR/WOFF2/#table_dir_format - - for details. - - * src/sfnt/woff2tags.c, src/sfnt/woff2tags.h: New files. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [sfnt] Read WOFF 2 header. - - Check for WOFF2 tag, call `woff2_open_font', and implement it to read - header according to specification. - - * include/freetype/internal/fttrace.h: Add `sfwoff2.c'. - - * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `sfwoff2.c'. - - * src/sfnt/sfnt.c: Include `sfwoff2.c'. - - * src/sfnt/sfobjs.c (sfnt_open_font): Check for `wOF2' tag and call - `woff2_open_font'. - - * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h: New files. - -2019-08-27 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - Add structures for WOFF2. - - Add structures and macro for WOFF 2 header and table directory. - - * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec, - WOFF2_TableRec_): New structures. - - * include/freetype/tttags.h (TTAG_wOF2): New macro. - -2019-08-26 Werner Lemberg <wl@gnu.org> - - * src/psaux/cffdecode.c (cff_operator_seac): Fix numeric overflow. + 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 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=16470 - -2019-08-26 Werner Lemberg <wl@gnu.org> - - [type1] Fix `FT_Get_Var_Axis_Flags' (#56804). - - * src/type1/t1load.c (T1_Get_MM_Var): Allocate space for axis flags. - Also remove redundant assignment. - -2019-07-24 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/base/ftbbox.c (cubic_peak): Sanitize left shift (#56586). - -2019-07-22 Weiyi Wu <w1w2y3@gmail.com> - - * src/cid/cidload.c (cid_hex_to_binary): Fix typo (#56653). - -2019-07-12 Werner Lemberg <wl@gnu.org> - - [sfnt, winfonts] Avoid memory leaks in case of error (#56587). - - * src/sfnt/sfwoff.c (woff_open_font): Call `FT_FRAME_EXIT' in case - of error. - - * src/winfonts/winfnt.c (fnt_face_get_dll_font): Ditto. - -2019-07-12 Ben Wagner <bungeman@google.com> - - Properly handle phantom points for variation fonts (#56601). - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Scale phantom - points if HVAR and/or VVAR is present. - -2019-07-04 Werner Lemberg <wl@gnu.org> - - [psaux] (2/2) Handle fonts that use SEAC for ligatures (#56580). - - The same as previous commit but for the old engine. - - * src/psaux/t1decode.c (t1operator_seac): Implement it. - -2019-07-04 Chris Liddell <chris.liddell@artifex.com> - - [psaux] (1/2) Handle fonts that use SEAC for ligatures (#56580). - - As originally intended, a Type 1 SEAC charstring would be used for - an accented glyph (like `acaron' or `uumlaut'), where the advance - width of the SEAC glyph is the same as that of the `base' glyph - (like `a' or `u'). In this case it is not uncommon for the SEAC - glyph to not use an (H)SBW opcode of its own but to rely on the - value from the base glyph. - - However, out-of-spec fonts also use SEAC glyphs for ligatures (like - `oe' or `fi'), and in those cases the overall advance width is - greater than that of the `base' glyph. For this reason we have to - allow that the SEAC glyph can have an (H)SBW value of its own, and - if it has, retain this value, rather than the one from the base - glyph. - - * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escSEAC>: - Implement it. - -2019-07-01 Werner Lemberg <wl@gnu.org> - - * Version 2.10.1 released. - ========================== - - - Tag sources with `VER-2-10-1'. - - * docs/VERSION.TXT: Add entry for version 2.10.1. - - * README, Jamfile (RefDoc), src/base/ftver.rc, - builds/windows/vc2010/freetype.vcxproj, - builds/windows/vc2010/index.html, - builds/windows/visualc/freetype.dsp, - builds/windows/visualc/freetype.vcproj, - builds/windows/visualc/index.html, - builds/windows/visualce/freetype.dsp, - builds/windows/visualce/freetype.vcproj, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/freetype.vcproj, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/freetype.vcproj, - builds/wince/vc2008-ce/index.html: s/2.10.0/2.10.1/, s/2100/2101/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. - - * builds/unix/configure.raw (version_info): Set to 23:1:17. - * CMakeLists.txt (VERSION_PATCH): Set to 1. - - * include/freetype/fterrors.h (FT_Error_String): Fix C++ compilation. - -2019-06-26 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Fix inequality. - - Reported by Armin Hasitzka. - -2019-06-16 Werner Lemberg <wl@gnu.org> - - * src/tools/apinames.c: Formatting, minor edits. + * 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. -2019-06-16 Werner Lemberg <wl@gnu.org> +2021-10-20 Alexei Podtelezhnikov <apodtele@gmail.com> - [autofit] Disable hinting if no blue zones are available (#56450). + * tests/issue-1063/main.c: s/PATH_MAX/FILENAME_MAX/. - * src/autofit/afglobal.c (af_face_global_get_metrics): Start again - (with dummy hinter module) if no blue zones are present. + Closes !97 for Windows by using a standard macro. - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Change - signature to return error code. - If no blue zones are found, update `glyph_styles' array to hold - AF_STYLE_NONE_DFLT instead of the current style. - (af_latin_metrics_init): Return internal error code if no blue zones - are found. +2021-10-19 Werner Lemberg <wl@gnu.org> -2019-06-16 Werner Lemberg <wl@gnu.org> + [bdf, cid, pfr, winfonts] Improve rejection of other font formats. - Towards better VMS support. + This is mainly for better diagnostics of malformed fonts. - More to come. + * 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`. - * builds/vms/LIBS.OPT_IA64, builds/vms/_LINK.OPT_IA64, - builds/vms/vmslib.dat: New files provided by Jouk Jansen - <joukj@hrem.nano.tudelft.nl>. + * src/cid/cidparse.c (cid_parser_new): Don't handle too short input as an + error but as an unknown format. - * builds/vms/ftconfig.h: Update, also from Jouk. + * src/pfr/pfrobjs.c (pfr_face_init): Ditto. -2019-06-13 Werner Lemberg <wl@gnu.org> + * src/winfonts/winfnt.c (fnt_font_load, fnt_face_get_dll_font): Ditto. - * src/autofit/aflatin.c (af_latin_metrics_init_widths): Minor. +2021-10-19 Alexei Podtelezhnikov <apodtele@gmail.com> -2019-06-13 Alexei Podtelezhnikov <apodtele@gmail.com> + [pcf] Zero out the allocated properties. - [smooth] Restore the span buffering for direct mode only. + Fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40033 - The buffer size FT_MAX_GRAY_SPANS is set to 10 spans, which should be - enough to cover the entire scanline for simple glyphs in most cases: - each slightly slanted edge needs up to two spans, plus a filling span - in-between. This is not new, we used to do it before cb4388783cecc. + * src/pcf/pcfread.c (pcf_get_properties): Use FT_NEW_ARRAY and zero + out `properties` in case of failure. - * src/smooth/ftgrays.c (gray_TWorker): Add `spans' and `num_spans'. - (gray_hline, gray_sweep): Implement the span buffering. - (gray_raster_render): Use negative `num_spans' to avoid the direct - mode. +2021-10-18 Werner Lemberg <wl@gnu.org> -2019-06-12 Alexei Podtelezhnikov <apodtele@gmail.com> + configure: Use string comparison for directory inodes. - * include/freetype/ftmodapi.h (FT_DebugHook_Func): Return error. + Inode values might be larger than integers supported by the shell. - Fix a warning by adding a return value as in `TT_RunIns', - which should not be a compatibility issue. + Fixes #1105. -2019-06-11 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-10-17 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/truetype/ttobjs.c (tt_check_trickyness_family): Add `const'. + * src/sfnt/ttload.c (tt_face_load_name): NULL-initialize langTag. -2019-06-11 Moazin Khatti <moazinkhatri@gmail.com> + Another attempt to fix fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40024 - [gzip] Add support for `gzip' encoded header. +2021-10-17 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/gzip/ftgzip.c (FT_Gzip_Uncompress): Modify the the call to - `inflateInit2' to enable support for `gzip' encoded headers. + [bdf] Fix up user properties. -2019-06-10 Alexei Podtelezhnikov <apodtele@gmail.com> + Fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40027 - [type1,type42] Use `const' for string literals. + * 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. - * include/freetype/internal/psaux.h (PS_Table_FuncsRec): Updated. - * include/freetype/internal/t1types.h (T1_EncodingRec): Updated. - * src/psaux/psobjs.[ch] (ps_table_add): Updated. - * src/type1/t1load.c (T1_Open_Face, parse_encoding): Updated. - * src/type42/t42objs.c (T42_Open_Face): Updated. - * src/type42/t42parse.c (t42_parse_encoding): Updated. +2021-10-17 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/cff/cffobjs.c (cff_face_init): Minor. + * src/sfnt/ttload.c (tt_face_load_name): Accounting fix. -2019-06-10 Alexei Podtelezhnikov <apodtele@gmail.com> + Fallout reported as + https://crbug.com/40024 - [bdf,pcf] Use `const' for string literals. +2021-10-16 Ben Wagner <bungeman@chromium.org> - * src/bdf/bdf.h (bdf_property_t): Updated `name'. - * src/bdf/bdflib.c (_bdf_list_split,bdf_create_property, - _bdf_add_property,_bdf_ato*): Updated. - * src/bdf/bdfdrivr.c (bdf_interpret_style): Updated. - * src/pcf/pcfread.c (pcf_intrpret_style): Ditto. + Fix typos in memory macros. -2019-06-07 Philip Race <philip.race@oracle.com> + 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. - * src/base/ftinit.c (FT_Set_Default_Properties): Fix crash. + * include/freetype/internal/ftmemory.h (FT_Q(RE)NEW_ARRAY): + Use FT_MEM_Q(RE)NEW_ARRAY as needed. - Terminate loop at end of environment. + * src/sfnt/ttload.c (tt_face_load_name): Initialize `entry->string`. -2019-05-31 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-10-15 Ben Wagner <bungeman@chromium.org> - Solidify VC2005 builds. + [truetype] Reload context after re-executing `prep`. - * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly - declare `_BitScanReverse' intrinsic. - * builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics. + 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. -2019-05-30 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> + Fixes #1104. - [sfnt] Separate WOFF sources and headers. + * truetype/ttgload.c (tt_loader_init): Add call to `TT_Load_Context`. - Move WOFF sources and headers to separate files. +2021-10-15 Werner Lemberg <wl@gnu.org> - * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff.c, - src/sfnt/sfwoff.h: New files. + [truetype] Minor documentation improvements. - * include/freetype/internal/fttrace.h: Register `sfwoff.c'. +2021-10-14 Anurag Thakur <anuthadev@gmail.com> - * include/freetype/internal/internal.h: Define - FT_INTERNAL_WOFF_TYPES_H. + Add clang build to linux CI - * include/freetype/internal/sfnt.h: Include FT_INTERNAL_WOFF_TYPES_H. +2021-10-12 Anurag Thakur <anuthadev@gmail.com> - * include/freetype/internal/tttypes.h: Move out WOFF structures. + CI: Add macOS CI, including a clang build - * src/sfnt/rules.mk: Add `sfwoff.c'. +2021-10-12 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/sfnt/sfnt.c: Include `sfwoff.c'. + * src/cid/cidload.c (parse_fd_array): Protect against trancation. - * src/sfnt/sfobjs.c: Include `sfwoff.h', move out WOFF sources. +2021-10-12 Alexei Podtelezhnikov <apodtele@gmail.com> -2019-05-30 Werner Lemberg <wl@gnu.org> + [type1] Revert to signed size for binary data. - [base] Fix `make multi'. + Recently introduced and reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39838 - Reported by Nikhil. + * src/type1/t1load.c (read_binary_data): Reject negative size. + (parse_subrs, parse_charstrings): Use customary signed size. - * src/base/fterrors.c: Include FT_INTERNAL_DEBUG_H. +2021-10-11 Alexei Podtelezhnikov <apodtele@gmail.com> -2019-05-29 Ben Wagner <bungeman@google.com> + [psaux] Signedness revisions. - [truetype] Fix copy-and-paste error (#56409). + Unsigned indexes are easier to check. - * src/truetype/ttgload.c (load_truetype_glyph): Use correct indices - into `unrounded' array for phantom points. + * 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. -2019-05-29 Werner Lemberg <wl@gnu.org> +2021-10-11 Alexei Podtelezhnikov <apodtele@gmail.com> - [truetype] Fix 32bit builds (#56404). + [cid] Signedness revisions. - Patch suggested by Ben Wagner <bungeman@google.com>. + Unsigned checks are simpler. - * src/truetype/ttgxvar.c (FT_fixedToInt, FT_fixedToFdot6): Remove - harmful cast to unsigned type. + * include/freetype/t1tables.h (CID_FaceInfoRec): Change to unsignd + `num_dicts`. + * src/cid/cidparse.h (CID_Parser): Change to unsigned `num_dict`. -2019-05-26 Ben Wagner <bungeman@google.com> + * 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. - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Improve accuracy. +2021-10-09 Alexei Podtelezhnikov <apodtele@gmail.com> -2019-05-23 Werner Lemberg <wl@gnu.org> + * src/cid/cidload.c (cid_face_open): Streamline CIDCount check. - [truetype] Draw glyphs without deltas in variation font (#56374). +2021-10-08 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Always fill - `unrounded' array. + * src/cid/cidload.c (cid_face_open): Streamline SubrCount check. -2019-05-21 Werner Lemberg <wl@gnu.org> +2021-10-08 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/truetype/ttinterp.c (opcode_name): Improve mnemonics. + * src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading. -2019-05-16 Werner Lemberg <wl@gnu.org> +2021-10-08 Alexei Podtelezhnikov <apodtele@gmail.com> - [truetype] Actually scale varied CVT values. + Signedness revisions. - Up to now, only the unscaled CVT values were varied; in other words, - the `CVAR' data was never used for bytecode hinting. + This eliminates explicit casting by switching to unsigned fields. + The revisions mostly impact the handling of CID fonts. - * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary - function. - (tt_face_vary_cvt): Use it to trigger rescaling of CVT values. + * 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`. -2019-05-16 Werner Lemberg <wl@gnu.org> - - [truetype] Use 26.6 format for storing unscaled CVT values. - - If `CVAR' data is applied to variation fonts, fractional values are - possible. - - * include/freetype/internal/tttypes.h (TT_FaceRec): Change type of - `cvt' from `FT_Short' to `FT_Int32'. - - * src/truetype/ttgxvar.c (FT_fdot6ToFixed): New macro. - (tt_face_vary_cvt): Use it to update code to 26.6 format. - - * src/truetype/ttobjs.c (tt_size_run_prep): Update code to 26.6 - format. - - * src/truetype/ttpload.c (tt_face_load_cvt): Stora data in 26.6 - format. - -2019-05-16 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (load_truetype_glyph): Init `unrounded'. - - This fixes linear advance width values for spacing glyphs. Bug - introduced 2019-05-09. - -2019-05-16 Werner Lemberg <wl@gnu.org> - - [truetype] Avoid code duplication. - - * src/truetype/ttobjs.c (tt_size_run_prep): Scale CVT values in this - function. - (tt_size_ready_bytecode): Updated. - * src/truetype/ttgload.c (tt_loader_init): Updated. - -2019-05-13 Jouk Jansen <joukj@hrem.nano.tudelft.nl> - - * vms_make.com: Updated. Handle `bzip2' directory, too. - -2019-05-13 Werner Lemberg <wl@gnu.org> - - * src/psaux/psfont.c (cf2_font_setup): Fix compiler warning. - -2019-05-12 Werner Lemberg <wl@gnu.org> - - [truetype] Doh. Fix last commit to make it work. - - Very embarassing :-) - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14701 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14705 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14710 - - * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): Move up and add - argument; update all callers. - (TT_Process_Simple_Glyph): Use it. The `unrounded' array is active - for variation fonts only, thus also enclose related code with - `#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT ... #endif' where - necessary. - Revert commit a113e5d from 2019-05-09, and don't use `extra_points2' - but allocate a temporary array. - Speed up the scaling of the `unrounded' array. - - * src/truetype/ttgxvar.c (FT_fixedToInt, FT_FixedToFdot6): Fix type - conversions and rounding. The unsigned type must have more or equal - bits to the signed type. - -2019-05-09 Werner Lemberg <wl@gnu.org> - - [truetype] Increase precision of font variation (#54371). - - This patch makes FreeType use font units in 26.6 format internally - instead of integers. - - * src/truetype/ttgxvar.c (FT_fixedToFdot6): New macro. - (TT_Vary_Apply_Glyph_Deltas): Add argument to output unrounded font - coordinates. - * src/truetype/ttgxvar.h: Updated. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Use - `extra_points2' array to temporarily hold unrounded point - coordinates; use them to compute scaled coordinates and linear - advance width and height. - (load_truetype_code): Adjust similarly. - -2019-05-09 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Minor. - -2019-05-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Faster fractions. - - * src/smooth/ftgrays.c (SUBPIXELS): Replace with... - (FRACT): A fractional coordinate macro to use in... - (gray_render_line, gray_render_scanline): ... here. - -2019-05-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/raster/ftraster.c (Draw_Sweep): Unbreak. - -2019-05-05 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/raster/ftraster.c: Clean-ups. - -2019-05-05 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgxvar.c: More use of `FT_fdot14ToFixed'. - -2019-05-04 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/smooth/ftgrays.c (gray_render_line): Small shortcut. - -2019-05-04 Werner Lemberg <wl@gnu.org> - - Various clang 8.0 static analyzer fixes. - - Reported by Sender Ghost <lightside@gmx.com>. - - * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Catch a corner - case where `edge->first' could be NULL. - - * src/pfr/pfrobjs.c (pfr_slot_load): Remove unnecessary test of - `size'. - - * src/raster/ftraster.c (Draw_Sweep): Catch a corner case where - `draw_right' might be NULL. - - * src/sfnt/ttmtx.c (tt_face_get_metrics): Fix limit test for - `aadvance'. - Ensure `abearing' always hold a meaningful result. - - * src/truetype/ttgload.c (load_truetype_glyph): Ensure `subglyph' is - not NULL before accessing it. - * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Remove unnecessary - test of `namedstyle'. - - * src/type42/t42parse.c (t42_parser_done): Ensure - `parser->root.funcs.done' is not NULL before accessing it. - -2019-05-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - Miscellaneous macro updates. - - * src/base/ftoutln.c (SCALED): Updated. - * src/smooth/ftgrays.c (SCALED): Ditto. - (FLOOR, ROUND, CEILING): Removed. - * src/psaux/psfixed.h (cf2_fracToFixed): Updated. - -2019-05-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - Tweak LCD filtering. - - * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy): - Choose direction from bitmap's pixel_mode. - * include/freetype/internal/ftobjs.c (FT_Bitmap_LcdFilterFunc): + * 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/smooth/ftsmooth.c (ft_smooth_render_generic): Updated. - -2019-05-02 Werner Lemberg <wl@gnu.org> - - * vms_make.com: Updated (#56253). - - Remove no longer existing directories (`autohint', `otlayout'). - Update used base extensions. - Activate `autofit' module. - Add `gxvalid' module. - Update copyright notices. - -2019-04-29 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Simplify cubic Bézier flattening. - - The previous implementation is correct but it is too complex. - The revised algorithm is based on the fact that each split moves - the control points closer to the trisection points on the chord. - The corresponding distances are good surrogates for the curve - deviation from the straight line. - - This cubic flattening algorithm is somewhat similar to the conic - algorithm based the distance from the control point to the middle of - the chord. The cubic distances, however, decrease less predictably - but are easy enough to calculate on each step. - - The new algorithm produces slightly larger number of splits, which is - compensated by its simplicity. The overall rendering performance is - improved by 1-2%. The larger number of splits does not necessarily - result in higher quality, which stays comparable. - - * src/smooth/ftgrays.c (gray_render_cubic): Replace the split - condition. - -2019-04-26 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Bithacks and cosmetics. - - * src/smooth/ftgrays.c (gray_record_cell, gray_set_cell, gray_hline, - gray_render_conic, gray_convert_glyph_inner): Updated. - -2019-04-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - Optimize Bézier bisections. - - This change makes bisections faster by 20-30%. When inlined into - `gray_render_cubic', this makes the function faster by 10% and is - noticeable in the overall rendering performance. - - * src/raster/ftraster.c (Split_Conic, Split_Cubic): Use shifts and - refactor. - * src/smooth/ftgrays.c (gray_split_conic, gray_split_cubic): Ditto. - * src/base/ftstroke.c (ft_conic_split, ft_cubic_split): Ditto. - * src/base/ftbbox.c (cubic_peak): Use shifts. - -2019-04-23 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttcmap.c (tt_cmap12_next): Remove dead code. - - Found by clang 8.0's static analyzer and reported by Sender Ghost - <lightside@gmx.com>. - -2019-04-23 Werner Lemberg <wl@gnu.org> - - [base] Fix thinko in previous commit. - - * src/base/ftbitmap.c (FT_Bitmap_Blend): Check final width, not - target pitch. - - Problem reported by Sender Ghost <lightside@gmx.com>. - -2019-04-22 Werner Lemberg <wl@gnu.org> - - * src/base/ftbitmap.c (FT_Bitmap_Blend): Check target pitch. - - Problem reported by Sender Ghost <lightside@gmx.com>. - -2019-04-22 Werner Lemberg <wl@gnu.org> - - Fix return value of `FT_Set_Named_Instance' (#56186). - - * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Correctly handle - internal return value -1 of `TT_Set_Var_Design'. - -2019-04-18 Werner Lemberg <wl@gnu.org> - - [pcf] Fix handling of undefined glyph (#56067). - - This commit fixes the changes from 2018-07-21, which broke charmap - iteration. We now add the default character as a new glyph with - index 0, thus increasing the number of glyphs by one (as before). - - * src/pcf/pcfread.c (pcf_get_metrics): Adjust to new artificial - glyph with index 0. - Limit number of elements to 65534. - (pcf_get_bitmaps): Ditto. - Unify two loops into one; this avoids allocation of an intermediate - array. - (pcf_get_encodings): Don't flip indices but copy glyph metrics of - default character to index 0. - Also handle invalid default character. - - * docs/CHANGES: Updated. - -2019-04-15 Minmin Gong <gongminmin@msn.com> - - * CMakeLists.txt: Avoid rewriting of unchanged configuration files. - - Reported as - - https://savannah.nongnu.org/patch/index.php?9755 - -2019-04-15 JDG <JonathanG@iQmetrix.com> - - * src/tools/apinames.c (main): Fix error message. - - Reported as - - https://savannah.nongnu.org/patch/?9796 - -2019-04-11 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Fix segfault in direct mode (#56092). - - * src/base/ftoutln.c (FT_Outline_Render): Set missing clip_box for - direct mode. - * src/smooth/ftgrays.c (gray_raster_render): Use it. - -2019-04-06 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttcmap.c (tt_get_glyph_name): Pacify compiler (#56061). - - This is for Visual Studio 2019 on ARM. - -2019-04-06 Werner Lemberg <wl@gnu.org> - - For distribution, replace `.tar.bz2' with `.tar.xz' bundles. - - * builds/toplevel.mk (build): Do it. - - * README, docs/CHANGES, docs/release: Updated. - -2019-04-06 Antony Lee <anntzer.lee@gmail.com> - - Make `glyph_name' parameter to `FT_Get_Name_Index' a `const'. - - * include/freetype/freetype.h (FT_Get_Name_Index), - include/freetype/internal/ftobjs.h (FT_Face_GetGlyphNameIndexFunc), - include/freetype/internal/services/svgldict.h - (FT_GlyphDict_NameIndexFunc), src/base/ftobjs.c (FT_Get_Name_Index), - src/cff/cffdrivr.c (cff_get_name_index), src/sfnt/sfdriver.c - (sfnt_get_name_index), src/type1/t1driver.c (t1_get_name_index), - src/type42/t42drivr.c (t42_get_name_index): Add `const' to second - argument. - -2019-03-31 Armin Hasitzka <prince.cherusker@gmail.com> - - [cff] Fix boundary checks. - - 642bc7590c701c8cd35a9f60fa899cfa518b17ff introduced dynamically - allocated memory when parsing CFF files with the "old" engine. Bounds - checks have never been updated, however, leading to pointless - comparisons of pointers in some cases. This commit presents a - solution for bounds checks in the CFF module with an extended logic - for the "old" engine while staying as concise as possible for the - "new" one. - - * src/cff/cffparse.h: Introduce the struct `CFF_T2_StringRec' and - the additional field `t2_strings' within `CFF_ParserRec'. - - * src/cff/cffparse.c (cff_parser_within_limits): Move all boundary - checks into this new function and update the rest of `cffparse.c' to - use it. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=12137 - -2019-03-20 Werner Lemberg <wl@gnu.org> - - [autofit] Fix Mongolian blue zone characters. - - * src/autofit/afblue.dat: Use U+200D (ZERO-WIDTH JOINER) characters - to get medial forms for some Mongolian characters. - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - -2019-03-19 Werner Lemberg <wl@gnu.org> - - [autofit] Add support for Mongolian script. - - As a de-facto standard, layouts using this script are constructed - horizontally line by line, then the lines are rotated clockwise for - vertical display. - - * src/autofit/afblue.dat: Add blue zone data for Mongolian. - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - - * src/autofit/afscript.h: Add Mongolian standard characters. - - * src/autofit/afranges.c, src/autofit/afstyles.h: Add Mongolian - data. - -2019-03-15 Werner Lemberg <wl@gnu.org> - - * Version 2.10.0 released. - ========================== - - - Tag sources with `VER-2-10-0'. - - * docs/VERSION.TXT: Add entry for version 2.10.0. - * docs/CHANGES: Updated. - - * README, Jamfile (RefDoc), src/base/ftver.rc, - builds/windows/vc2010/freetype.vcxproj, - builds/windows/vc2010/index.html, - builds/windows/visualc/freetype.dsp, - builds/windows/visualc/freetype.vcproj, - builds/windows/visualc/index.html, - builds/windows/visualce/freetype.dsp, - builds/windows/visualce/freetype.vcproj, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/freetype.vcproj, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/freetype.vcproj, - builds/wince/vc2008-ce/index.html: s/2.9.1/2.10.0/, s/291/2100/. - - * include/freetype/freetype.h (FREETYPE_MINOR): Set to 10. - (FREETYPE_PATCH): Set to 0. - - * builds/unix/configure.raw (version_info): Set to 23:0:17. - * CMakeLists.txt (VERSION_MINOR): Set to 10. - (VERSION_PATCH): Set to 0. - - * builds/toplevel.mk (version, winversion): Since the minor version - number has two digits now, never omit the patch number. We would - get ambiguous zip file names otherwise. - (dist): Remove remnants of `docmaker' tool. - (do-dist): Remove unused intermediate files. - - * src/cff/cffparse.c (destrict_c2s_item): Guard function with - CFF_CONFIG_OPTION_OLD_ENGINE macro. - -2019-03-07 Andrei Alexeyev <0x416b617269@gmail.com> - Werner Lemberg <wl@gnu.org> - - Fix invalid function pointer casts. - - This change should allow Freetype to work on WASM/Emscripten without - needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'. - - * src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature. - - * src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array, - parse_expansion_factor, parse_font_name): Return `void', not - `FT_Error'. - - * include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc): - Fix signature. - -2019-03-05 Werner Lemberg <wl@gnu.org> - - [base] Handle numeric overflow (#55827). - - * src/base/ftglyph.c (FT_Glyph_Get_CBox): Use `FT_PIX_CEIL_LONG'. - -2019-03-05 Sebastian Rasmussen <sebras@gmail.com> - - [psaux] Fix use of uninitialized memory (#55832). - - * src/psaux/psintrp.c (cf2_interpT2CharString): The call to - `cf2_arrstack_setCount' may fail because the allocator ran out of - memory. When this happens the stack is still written to before the - error condition is checked. This means that FreeType writes outside - of allocated memory. This commit moves the error check prior to the - stack assignment, hence the function now properly returns with an - error condition. - -2019-02-23 Werner Lemberg <wl@gnu.org> - - * src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets. - - The function only provided a framework without an actual - implementation, which this commit removes. - -2019-02-23 Werner Lemberg <wl@gnu.org> - - * src/tools/update-copyright-year: Insert `(C)'. - -2019-02-21 Armin Hasitzka <prince.cherusker@gmail.com> - - [truetype] Mask numeric overflows. - - * src/truetype/ttinterp.c (Move_CVT, Move_CVT_Stretched, Ins_MIRP): - Mask numeric overflows. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11681 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11734 - -2019-02-21 Armin Hasitzka <prince.cherusker@gmail.com> - - [psaux] Mask numeric overflow. - - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Mask numeric - overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13041 - -2019-02-16 Wink Saville <wink@saville.com> - - * src/autofit/afwarp.h (af_warper_compute): Fix declaration. - -2019-02-02 Nikolaus Waxweiler <madigens@gmail.com> - - [truetype] Apply MVAR hasc, hdsc and hlgp metrics to current FT_Face metrics. - - Instead of setting typo or win metrics as the new `FT_Face' metrics - indiscriminately, apply only typo deltas to the currently active - `FT_Face' metrics. This prevents line height differences when the - default outlines were used as the regular face and instances for - everything else, for example. - - * src/truetype/ttgxvar.c (tt_apply_mvar): Implement. - -2019-02-02 Nikolaus Waxweiler <madigens@gmail.com> - - [sfnt] Use typo metrics if OS/2 fsSelection USE_TYPO_METRICS bit is set. - - If the `OS/2' table exists and `fsSelection' bit 7 - (USE_TYPO_METRICS) is set, use the `sTypo*' set of values to compute - the `FT_Face's ascender, descender, and height. Otherwise, fall - back to old behavior. - - * src/sfnt/sfobjs.c (sfnt_load_face): Implement. - -2019-01-18 John Tytgat <John.Tytgat@esko.com> - - [sfnt] Handle TT fonts having two PostScript font names (#55471). - - * src/sfnt/sfdriver.c (sfnt_get_name_id): Prefer English over any - other language found for PostScript font names. - -2019-01-08 Chris Liddell <chris.liddell@artifex.com> - - [psaux] Fix closepath (#55414). - - All of the Type 1 path building is done with code common to the - revised CFF engine, with the exception of closepath, which was still - calling ps_builder_close_contour(), thus previously cached segments - were not always written to the path, and glyph corruption, or even - invalid outlines were possible. - - * src/psauc/psinterp.c (cf2_interpT2CharString) <cf2_cmdCLOSEPATH>: - Switch to calling `cf2_glyphpath_closeOpenPath'. - -2018-12-29 Werner Lemberg <wl@gnu.org> - - * src/autofit/aflatin2.c: Some fixes from `aflatin.c' (#55310). - -2018-12-25 Werner Lemberg <wl@gnu.org> - - * src/psaux/cffdecode.c (cff_operaor_seac): Fix numeric overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11915 - -2018-12-12 Werner Lemberg <wl@gnu.org> - - [gxvalid] Fix compiler warnings. - - * src/gxvalid/gxvjust.c (gxv_just_check_max_gid), - src/gxvalid/gxvmort.c (gxv_mort_coverage_validate): Use `FT_UNUSED'. - -2018-12-11 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (TT_Hint_Glyph): Remove useless test. - - `control_len' only gets its value from `n_ins' (and vice versa), - which is always read as `unsigned short' and thus can't be larger - than 0xFFFF. - -2018-12-04 Werner Lemberg <wl@gnu.org> - - [bdf] Ignore data after `ENDFONT'. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10798 - - * src/bdf/bdflib.c (_bdf_parse_end): New function. - (_bdf_parse_glyphs): Switch to `_bdf_parse_end' after `ENDFONT' has - been encountered. - -2018-12-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - * builds/windows/visualc/freetype.dsp: Dust off. - -2018-11-27 Alexei Podtelezhnikov <apodtele@gmail.com> - - * builds/windows/vc2010/freetype.vcxproj: Simplify. - -2018-11-27 Chris Liddell <chris.liddell@artifex.com> - - [type1,cff] Add FT_{Set,Get}_MM_WeightVector API calls. - - For multiple master fonts, common usage (in Postscript) is to modify - the WeightVector of an existing font instance, this addition - supports that use. - - * include/freetype/ftmm.h, src/base/ftmm.c (FT_Set_MM_WeightVector, - FT_Get_MM_WeightVector): New API functions. - - * include/freetype/internalservices/svmm.h - (FT_Set_MM_WeightVector_Func, FT_Get_MM_WeightVector_Func): New - function types. - (MultiMasters): Add `set_mm_weightvector' and `get_mm_weightvector' - members. - (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. - - * src/cffcffdrivr.c (cff_set_mm_weightvector, - cff_get_mm_weightvector): New functions. - (cff_service_multi_masters): Register them. - - * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. - This driver doesn't use the new interface. - - * src/type1/t1load.c (T1_Set_MM_WeightVector, - T1_Get_MM_WeightVector): New functions. - * src/type1/t1driver.c (t1_service_multi_masters): Register them. - * src/type1/t1load.h: Updated. - -2018-11-27 Ben Wagner <bungeman@google.com> - - [cff] Fix compiler warning (#55105). - - * src/cff/cffparse.c (cff_parser_run): Guard label only used if - CFF_CONFIG_OPTION_OLD_ENGINE is active. - -2018-11-27 Ben Wagner <bungeman@google.com> - - [truetype] Fix numeric overflow (#55103). - - * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'. - -2018-11-25 Alexei Podtelezhnikov <apodtele@gmail.com> - - [builds] Belated DLL support with vc2002-vc2008. - - The solution and project files should be automatically upgraded for - the approriate Visual C++ version. - - * builds/windows/visualc/freetype.{sln,vcproj}: Major upgrades. - * builds/windows/visualc/index.html: Document the change. - * builds/windows/vc2005, builds/windows/vc2008: Removed as redundant. - -2018-11-22 Armin Hasitzka <prince.cherusker@gmail.com> - - * src/cff/cffparse.c: Please the compiler. - -2018-11-22 Armin Hasitzka <prince.cherusker@gmail.com> - - [cff] Fix memory overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9869 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10869 - - * src/cff/cffparse.c (destruct_t2s_item, cff_parser_run): Store - evaluated T2 charstrings in separately allocated memory. - -2018-11-18 Alexei Podtelezhnikov <apodtele@gmail.com> - - * builds/windows/{visualc,vc2005,vc2008}/freetype.vcproj: Fix it. - -2018-11-10 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Placeholder only for library-enabled LCD filtering. - - * src/smooth/ftsmooth.c (ft_smooth_init): Add disabled - `FT_Library_SetLcdFilter' call. - -2018-11-09 Young Xiao <yangx92@hotmail.com> - - [psaux] Add safety guard (#54985). - - * src/psaux/psobjs.c (cff_builder_close_contour): Do it. - -2018-11-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - * builds/unix/configure.raw: Require `windows.h' for windres. - -2018-11-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [ftstroke] Fix unpredictable failures (#54986). - - * src/base/ftstroke.c (ft_sroke_border_lineto): Fix lineto check. - -2018-11-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [ftstroke] Fix unpredictable failures (#54976). - - * src/base/ftstroke.c (ft_sroke_border_close): Set the start tags. - -2018-11-07 Ben Wagner <bungeman@google.com> - - [truetype] Fix VF check from 2018-09-12 (#54973). - - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use correct - offsets for estimates. - -2018-11-06 Werner Lemberg <wl@gnu.org> - - [pshinter] Fix numeric overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11242 - - * src/pshinter/pshrec.c (ps_dimension_add_t1stem): Implement it. - -2018-11-06 Werner Lemberg <wl@gnu.org> - - [psaux] Fix timeout in old CFF engine. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11260 - - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) - <cff_op_sqrt> [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix potential endless - loop. - -2018-11-04 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/truetype/ttgxvar.c: Use enum definitions. - -2018-11-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/truetype/ttgxvar.c (ft_var_apply_tuple): Adjust condition. - -2018-11-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/truetype/ttgxvar.c (ft_var_apply_tuple): Tracing tweaks. - -2018-11-03 Alexei Podtelezhnikov <apodtele@gmail.com> - - Revert due to specs: [truetype] Speed up variation IUP. - -2018-11-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic. - - Reported and tested by Behdad. - -2018-11-02 Shailesh Mistry <shailesh.mistry@hotmail.co.uk> - - [autofit] Prevent SEGV. - - See - - https://bugs.ghostscript.com/show_bug.cgi?id=697545 - - for more details on how the bug was found. - - * src/autofit/afloader.c (af_loader_load_glyph): Propagate error - code. - -2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com> - - [truetype] Speed up variation IUP. - - * src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial - snapping to the same position from true interpolation. - -2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/type1/t1load.c (t1_set_mm_blend): Optimized. - -2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized. - -2018-10-29 Werner Lemberg <wl@gnu.org> - - [base] Fix numeric overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11080 - - * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use `MUL_LONG'. - -2018-10-29 Werner Lemberg <wl@gnu.org> - - [cff] Fix numeric overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10988 - - * src/cff/cffparse.c (cff_parser_run) - [CFF_CONFIG_OPTION_OLD_ENGINE]: Use `NEG_LONG'. - -2018-10-27 Alexei Podtelezhnikov <apodtele@gmail.com> - - [sfnt] Make `head' timestamps unsigned. - - It's been more than 2^31 seconds since 1904. - - * include/freetype/tttables.h (TT_Header): Change field types. - * src/sfnt/ttload.c (tt_face_load_generic_header): Updated. - -2018-10-27 Alexei Podtelezhnikov <apodtele@gmail.com> - - Revert: Align FreeType with standard C memory management. - -2018-10-27 Werner Lemberg <wl@gnu.org> - - [psaux] Fix numeric overflow. - - Triggered by - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11157 - - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_blend> - [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix integer overflow. - -2018-10-20 Werner Lemberg <wl@gnu.org> - - Avoid endless loop while tracing (#54858). - - * src/type1/t1load.c (parse_buildchar): Guard tracing stuff with - FT_DEBUG_LEVEL_TRACE. - -2018-10-17 David Demelier <markand@malikania.fr> - - * CMakeLists.txt: Specify `RUNTIME DESTINATION'. - - This is needed for DLL builds. - -2018-10-07 Werner Lemberg <wl@gnu.org> - - A missing Unicode cmap is not a fatal error. - - This is a follow-up to the previous commit. - - * src/cff/cffobjs.c (cff_face_init), src/sfnt/sfobjs.c - (sfnt_load_face), src/type1/t1objs.c (T1_Face_Init), - src/type42/t42objs.c (T42_Face_Init): Implement it. - -2018-10-07 Werner Lemberg <wl@gnu.org> - - Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794). - - * src/cff/cffcmap.c (cff_cmap_unicode_init), src/psaux/t1cmap.c - (t1_cmap_unicode_init), src/sfnt/ttcmap.c (tt_cmap_unicode_init): - Check `unicodes_init' field. - -2018-10-03 Werner Lemberg <wl@gnu.org> - - [ftgrays] Fix typo in stand-alone mode (#54771). - - * src/smooth/ftgrays.c (FT_THROW) [STANDALONE_ && - FT_DEBUG_LEVEL_TRACE]: Fix call to `FT_ERR_CAT'. - -2018-10-02 Werner Lemberg <wl@gnu.org> - - [psaux] Fix segfault. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10768 - - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) - <cff_op_callothersubr> [CFF_CONFIG_OPTION_OLD_ENGINE]: Check - argument. - -2018-10-02 Werner Lemberg <wl@gnu.org> - - [psaux] Fix numeric overflow. + * 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. - Reported as +2021-10-07 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10740 + meson.build (gen_docs): Use `current_source_dir` instead of `source_root`. - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll> - [CFF_CONFIG_OPTION_OLD_ENGINE]: Use NEG_INT. + 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. -2018-10-02 Werner Lemberg <wl@gnu.org> +2021-10-05 Alexei Podtelezhnikov <apodtele@gmail.com> - [pshinter] Handle numeric overflow. + * src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround. - Reported as +2021-10-05 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10550 + [builds/unix, builds/vms] Standardize `mmap` failure. - * src/pshinter/pshglob.c (psh_blues_snap_stem): Mask numeric - overflow. + * builds/unix/ftsystem.c (FT_Stream_Open): Check for MAP_FAILED. + * builds/vms/ftsystem.c (FT_Stream_Open): Ditto. -2018-09-27 Alexei Podtelezhnikov <apodtele@gmail.com> + This should cover https://savannah.nongnu.org/patch/?5909 as well. - Align FreeType with standard C memory management. +2021-10-05 Hugh McMaster <hugh.mcmaster@outlook.com> - * include/freetype/ftsystem.h: Include FT_TYPES_H. - (*FT_Alloc_Func, *FT_Realloc_Func): Use size_t for the size arguments. - * src/raster/ftmisc.h: Ditto. + autogen.sh: Only copy submodules if building from a git branch. - * builds/amiga/src/base/ftsystem.c, builds/unix/ftsystem.c, - * builds/vms/ftsystem.c, src/base/ftsystem.c (ft_alloc, ft_realloc): - Use size_t for the size arguments. + `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. - * src/base/ftdbgmem.c (ft_mem_debug_alloc, ft_mem_debug_realloc): Use - FT_Offset, aka size_t, for the size arguments. + Debian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh` + before compiling to regenerate build files. -2018-09-25 Werner Lemberg <wl@gnu.org> + 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. - Fix handling of `FT_Bool'. +2021-10-05 Alexei Podtelezhnikov <apodtele@gmail.com> - Before this commit we had code like + * include/freetype/internal/ftgloadr.h: Add missing header. - (FT_Bool)( globals->glyph_styles[gindex] & 0x8000) + Noticed by Jouk Jansen. - Since `FT_Bool' is defined to be an `unsigned char', the code - evaluated to something like +2021-10-05 Alexei Podtelezhnikov <apodtele@gmail.com> - (unsigned char)( 0x8532 & 0x8000) + [pshinter] Additional clean-ups. - which in turn expanded to + * src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code. + * src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields. - (unsigned char)( 0x8000) +2021-10-04 Alexei Podtelezhnikov <apodtele@gmail.com> - and finally yielded 0x00 – i.e., false – not as expected. + [pshinter] More convenient direction definition. - Problem reported and analyzed by Tony Smith <tony.smith@macro4.com>. + It is easier to check directions using flags than integer values. - * include/freetype/fttypes.h (FT_BOOL): Add a comparison against - zero so that we always have a Boolean expression. + * src/pshinter/pshalgo.h (PSH_Dir): Redefine directions. + (PSH_PointRec): Use them as an enum type. - */*: Replace castings to `FT_Bool' with calls to `FT_BOOL' where - possible. + * 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. -2018-09-23 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-10-04 Alexei Podtelezhnikov <apodtele@gmail.com> - [bdf] Speed up charmap access. + [pshinter] Remove unnecessary check. - This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster. + * src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not + check if direction is defined before checking how. - * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search - with continuous prediction. +2021-10-02 AnuthaDev <anuthadev@gmail.com> -2018-09-22 Alexei Podtelezhnikov <apodtele@gmail.com> + CI: Hardcode meson version to fix build failure on windows - * src/base/ftobjs.c (ft_glyphslot_preset_bimap): Another tweak. +2021-10-01 Alexei Podtelezhnikov <apodtele@gmail.com> - This one should be clearer. When the rounded monochrome bbox collapses - we add a pixel that covers most if not all original cbox. + Additional `FT_MSB` macro definitions. -2018-09-21 Alexei Podtelezhnikov <apodtele@gmail.com> + * include/freetype/internal/ftcalc.h [__DECC,_CRAYC]: Use builtins + and intrinsics. - * src/base/ftobjs.c (ft_glyphslot_preset_bimap): Further tweak. +2021-10-01 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-09-21 Ben Wagner <bungeman@google.com> + * src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting. - Improve auto-hinter handling of bitmap fonts (#54681). +2021-09-30 Alexei Podtelezhnikov <apodtele@gmail.com> - For bitmap fonts, `FT_Load_Glyph' should either return an error or - not set the format to `FT_GLYPH_FORMAT_OUTLINE'. However, in this - case `FT_Load_Glyph' calls into the auto-hinter which calls back - into `FT_Load_Glyph' with `FT_LOAD_NO_SCALE' in the flags, which - marks the glyph as `FT_GLYPH_FORMAT_OUTLINE' with an empty path - (even though it doesn't have any path). It appears that the - auto-hinter should not be called when the face doesn't have - outlines. The current test for using the auto-hinter in - `FT_Load_Glyph' checks whether the driver supports scalable - outlines, but not if the face supports scalable outlines. + * src/tools/apinames.c: Facilitate OpenVMS linker options. - * src/base/ftobjs.c (FT_Load_Glyph): Directly check whether we have - scalable outlines. +2021-09-29 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-09-21 Werner Lemberg <wl@gnu.org> + * src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation. - [raster] Fix disappearing vertical lines (#54589). +2021-09-25 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/raster/ftraster.c (Vertical_Sweep_Span): Handle special case - where both left and right outline exactly pass pixel centers. + [builds/unix] Do not use autoconf SIZEOF. -2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com> + * builds/unix/ftconfig.h.in [FT_USE_AUTOCONF_SIZEOF_TYPES]: Removed. + * builds/unix/configure.raw: Remove AC_CHECK_SIZEOF and update. - * src/base/ftobjs.c (ft_glyphslot_preset_bimap): Tiny rounding tweak. + 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. - This adds pixels in case a contour goes through the center - and they need to be turned on in the b/w rasterizer. +2021-09-25 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com> + Propagate sign when reading OFF3. - [pcf] Replace charmap implementation. + 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. - PCF comes with charmap lookup table, aka PCF encodings. Using it - directly makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times - faster than the original BDF-like binary searches. + * 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. - * src/pcf/pcf.h (PCF_EncodingRec): Removed. - (PCF_FaceRec): Remove `nencodings' and `encodings'. - * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Replaced. - * src/pcf/pcfread.c (pcf_get_encodings): Store data differently. +2021-09-25 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-09-20 Werner Lemberg <wl@gnu.org> + [bdf] Simplify comment collection or lack thereof. - [base] Remove unused function `FT_GlyphLoader_CopyPoints'. + BDF comments are neither actually collected nor retrieved. There is + no need to be fancy with delimiters. - * include/freetype/internal/ftgloadr.h, src/base/ftgloadr.c - (FT_GlyphLoader_CopyPoints): Do it. + * 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. -2018-09-19 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-09-24 Alexei Podtelezhnikov <apodtele@gmail.com> - [pcf] Prepare to replace charmap implementation. + Use NULL for pointers only. - * src/pcf/pcf.h (PCF_FaceRec): Updated to include... - (PCF_EncRec): ... this new structure to store charmap geometry. + * 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. - * src/pcf/pcfread.c (pcf_get_encodings): Store charmap geometry. +2021-09-23 Werner Lemberg <wl@gnu.org> -2018-09-18 Alexei Podtelezhnikov <apodtele@gmail.com> + Minor documentation fixes and improvements. - Remove unused fields. +2021-09-23 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/pcf.h (PCF_FaceRec): Remove `charmap' and `charmap_handle'. - * src/bdfdrvr.h (BDF_FaceRec): Ditto. - * src/winfonts/winfnt.h (FNT_FaceRec): Ditto. + Reference `fopen` in the docs. -2018-09-17 Werner Lemberg <wl@gnu.org> +2021-09-23 Alexei Podtelezhnikov <apodtele@gmail.com> - [pshinter] Handle numeric overflow. + [bdf, pcf] Minor optimization. - Reported as + * 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. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10396 +2021-09-22 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/pshinter/pshglob.c: Include FT_INTERNAL_CALC_H. - (psh_blues_snap_stem): Mask numeric overflow. + [base] Initialize stream memory earlier. -2018-09-13 Werner Lemberg <wl@gnu.org> + 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. - [truetype] Some fixes for VF checks. + * 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. - Reported as +2021-09-22 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10317 + [builds/windows] Revert back to `CreateFileA` only. - * src/truetype/ttgxvar.c (ft_var_load_gvar): Properly exit memory - frame if we have invalid glyph variation data offsets. - (tt_face_vary_cvt): Protect against missing `tuplecoords' array. - Fix typo. + 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. -2018-09-13 Werner Lemberg <wl@gnu.org> + Fixes #1098 and !76 again. - * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Fix last commit. + * builds/windows/ftsystem.c (FT_Stream_Open): Call `CreateFileA`. + [_WIN32_WCE] (CreateFileA, FileSizeEx): Implement missing interfaces. -2018-09-13 Werner Lemberg <wl@gnu.org> +2021-09-21 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Check `result'. + * src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner. - Reported as +2021-09-21 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10316 + Minor. -2018-09-12 John Tytgat <John.Tytgat@esko.com> +2021-09-20 Alexei Podtelezhnikov <apodtele@gmail.com> - [sfnt] Better PS name handling (#54629). + * src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW. - * src/sfnt/sfdriver (IS_WIN, IS_APPLE): Omit language ID checks. - (get_win_string, get_apple_string): Return NULL when the PostScript - font name characters is not according to specification. - (get_win_string): Make trace output work if the high byte if - non-zero. - (sfnt_get_var_ps_name, sfnt_get_ps_name): Previously we preferred - Win PS name (when there is also an Apple PS name); change this into - a fallback to Apple PS name in case the Win PS name is invalid. +2021-09-18 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-09-12 Werner Lemberg <wl@gnu.org> + [cache] Minor clean-ups. - [truetype] Improve VF check. + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses. + * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto. + (FTC_Cache_RemoveFaceID): Remove unnecessary variable. - Triggered by +2021-09-17 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10255 + [builds/windows] Try both wide and narrow `CreateFile` - * src/truetype/ttgxvar.c (ft_var_load_gvar): Use better limit check - for `tupleCount'. + 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. -2018-09-12 Werner Lemberg <wl@gnu.org> + Fixes #1098 and !76. - * src/truetype/ttgxvar.c (ft_var_load_gvar): Check `glyphoffsets'. + * builds/windows/ftsystem.c (FT_Stream_Open): Call alternative + `CreateFile` in the case of failure. -2018-09-10 Armin Hasitzka <prince.cherusker@gmail.com> +2021-09-17 Edwin Steiner <edwin.steiner@gmail.com> - * src/pshinter/pshrec.c (t2_hints_stems): Mask numeric overflow. + [cff] Explicitly set StandardEncoding or ExpertEncoding offsets. - Reported as + Fixes #1097. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10215 + * src/cff/cffload.c (cff_encoding_load): Set special offset values. -2018-09-09 Ben Wagner <bungeman@google.com> +2021-09-16 Alexei Podtelezhnikov <apodtele@gmail.com> - * builds/freetype.mk (refdoc-venv): Ensure python version (#54631). + [cache] Miscellaneous clean-ups. -2018-09-07 Werner Lemberg <wl@gnu.org> + * 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. - [truetype] Fix assertion failure. +2021-09-16 Alexei Podtelezhnikov <apodtele@gmail.com> - Triggered by + * src/cff/cffload.c (cff_fd_select_get): Remove casting. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10212 +2021-09-16 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/truetype/ttgload.c (load_truetype_glyph): Reintroduce - `opened_frame' (removed in a change from 2018-08-26) to handle - deallocation of the second frame. + * src/pcf/pcfread.c (pcf_read_TOC): Remove casting. -2018-09-05 Werner Lemberg <wl@gnu.org> +2021-09-15 Alexei Podtelezhnikov <apodtele@gmail.com> - Synchronize `ftdebug.c' files. + Minor type adjustments. - * builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c, - builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c'. + * 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. -2018-09-05 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> +2021-09-15 Alexei Podtelezhnikov <apodtele@gmail.com> - Add documentation guidelines file. + Replace boolean allocation macros with MEM ones. - * docs/DOCGUIDE: New file. + * 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. -2018-09-04 Werner Lemberg <wl@gnu.org> +2021-09-15 Alexei Podtelezhnikov <apodtele@gmail.com> - * devel/ftoption.h: Synchronize with master `ftoption.h'. + [cache] Revert to some zeroing. -2018-09-03 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> + * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero + `buckets` again to fix some crashes. - [docwriter] Don't break code snippets accross lines. +2021-09-14 Alexei Podtelezhnikov <apodtele@gmail.com> - Reported as + * src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops. - https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html + Fixes fallout from 731d0b685685 reported as - * docs/reference/markdown/stylesheets/extra.css (.md-typeset code): - Add rule `white-space'. + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38685 -2018-09-03 Werner Lemberg <wl@gnu.org> +2021-09-13 Alexei Podtelezhnikov <apodtele@gmail.com> - */*: s/PSNames/psnames/. + [cff, pshinter] Clean up unsigned counters. - Only tracing messages are affected. + Loops with unsigned decrement can be reliably stopped when the counter + wraps around after reaching zero. -2018-09-03 Werner Lemberg <wl@gnu.org> + * 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. - [sfnt] Fix heap buffer overflow in CPAL handling. +2021-09-13 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test. - (tt_face_load_cpal): Updated. + [bdf, psnames, sfnt] Avoid some memory zeroing. -2018-09-01 Werner Lemberg <wl@gnu.org> + * 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. - Remove `FT_Outline_{New,Done}_Internal'. +2021-09-13 Alexei Podtelezhnikov <apodtele@gmail.com> - These public API functions(!) were always undocumented and have - escaped all clean-up efforts until now. + * src/base/ftobjs.c (FT_CMap_New): Revert to zeroing. - * include/freetype/ftoutln.h (FT_Outline_New_Internal, - FT_Outline_Done_Internal): Removed. + Fixes fallout from c1fa7aa2bc96, reported as - * src/base/ftoutln.h (FT_Outline_New_Internal, - FT_Outline_Done_Internal): Merge into... - (FT_Outline_New, FT_Outline_Done): ... these functions. + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38641 - * docs/README: Updated. +2021-09-13 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com> + [truetype] Clean up `exec` initialization. - * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format. + * src/truetype/ttinterp.c (Init_Context): Absorbed into... + (TT_New_Context): ... this function. -2018-08-31 Armin Hasitzka <prince.cherusker@gmail.com> +2021-09-13 Alexei Podtelezhnikov <apodtele@gmail.com> - [errors] Refine the macro logic surrounding `FT_Error_String'. + [truetype] Avoid some memory zeroing. - * include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS, - FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS' after - checking it and introduce a new macro that takes proper care of - multiple-inclusion protection. + * 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. -2018-08-31 Werner Lemberg <wl@gnu.org> +2021-09-13 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED' calls. + [base] Avoid some memory zeroing. -2018-08-31 Werner Lemberg <wl@gnu.org> + * src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done, + ft_open_face_internal, ft_open_face_internal): Use Q-macros. - * src/base/ftdebug.c (FT_Throw): Reduce chattiness. +2021-09-13 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-31 Werner Lemberg <wl@gnu.org> + [cache, psaux] Remove zeros. - * src/autofit/afhints.c (af_glyph_hints_reload): Add initialization. + * src/cache/ftcmru.c (FTC_MruList_New): Remove initialization. + * src/psaux/psstack.c (cf2_stack_init): Ditto. -2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-09-12 Alexei Podtelezhnikov <apodtele@gmail.com> - Consolidate bitmap presetting and size assessment. + [cache] Avoid some memory zeroing. - * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap): - Change return type. - * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap - size assessment. + * src/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. - * src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the - rendering of enourmous or far-fetched outlines. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto. +2021-09-11 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com> + * src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero. - * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono. + Fixes fall out from a7b199d081e7. -2018-08-30 Armin Hasitzka <prince.cherusker@gmail.com> +2021-09-10 Alexei Podtelezhnikov <apodtele@gmail.com> - [errors] Introduce a macro to control `FT_Error_String'. + [truetype] Tweak `hdmx` checking. - * devel/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS), - include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS): - New macro. + Fixes #1096. -2018-08-30 Armin Hasitzka <prince.cherusker@gmail.com> + * src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding. - [errors] Introduce `FT_Error_String'. +2021-09-10 Alexei Podtelezhnikov <apodtele@gmail.com> - * include/freetype/fterrors.h (FT_Error_String), - src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String'. + [truetype] Tweak `loca` clamping. - * src/base/ftbase.c, src/base/Jamfile (_source), - src/base/rules.mk (BASE_SRC): Add `fterrors.c' to the build logic. + Fixes #1095. - * src/base/ftdebug.c (FT_Throw): Use `FT_Error_String'. + * src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping. + * include/freetype/internal/tttypes.h (TT_Face): Correct docs. -2018-08-30 Werner Lemberg <wl@gnu.org> +2021-09-08 Alexei Podtelezhnikov <apodtele@gmail.com> - [autofit] Trace `before' and `after' edges of strong points. + Fortify memory debugging (cont'd). - * src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays - `before' and `after'. + * 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. - * src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary - function. - (af_glyph_hints_dump_points): Trace `before' and `after' edges. - (af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set - `before' and `after' information. +2021-09-08 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-30 Alexei Podtelezhnikov <apodtele@gmail.com> + Fortify memory debugging. - [base] Overflow-resistant bitmap presetting. + These changes are neccessary to properly recover `memory->user` that + holds the Windows heap handle now. - * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Implement it. + * 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. -2018-08-29 Armin Hasitzka <prince.cherusker@gmail.com> +2021-09-08 Werner Lemberg <wl@gnu.org> - Fix numeric overflows. + src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600. - * src/pshint/pshalgo.c (psh_hint_align, psh_hint_align_light, - psh_hint_table_find_strong_points): Fix numeric overflows. + This allows C99 compilation on Solaris. - Reported as + Problem reported by Mojca Miklavec. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10083 +2021-09-07 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-29 Werner Lemberg <wl@gnu.org> + [builds/windows] Use native memory allocation API. - [cff] Fix handling of `roll' op in old engine. + * builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free): + Wrap HeapAlloc, HeapReAlloc, and HeapFree. + (FT_New_Memory): Set the heap handle. - Reported as +2021-09-07 Werner Lemberg <wl@gnu.org> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10080 + [dlg] Synchronize with upstream. - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll> - [CFF_CONFIG_OPTION_OLD_ENGINE]: Use modulo for loop count, as - documented in the specification. + * src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600. -2018-08-26 Werner Lemberg <wl@gnu.org> + Fixes #1093. - * src/truetype/ttobjs.c (tt_size_read_bytecode): Trace CVT values. +2021-09-04 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-26 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> + Cosmetic zeros. - * configure: Copy assets required by docwriter. +2021-09-03 Alexei Podtelezhnikov <apodtele@gmail.com> - Copy directory `docs/reference/markdown' when FreeType is compiled in a - different directory. + * src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory. - Fixes `make refdoc' if builddir != srcdir. +2021-09-03 Werner Lemberg <wl@gnu.org> - Reported as + autogen.sh: Make it work with old Solaris 10 shell. - https://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00083.html +2021-09-03 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-26 Werner Lemberg <wl@gnu.org> + [smooth, raster, sdf] Clean up initialization calls. - * src/pshint/pshalgo.c (psh_hint_overlap): Fix numeric overflow. + * 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. - Reported as +2021-09-03 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10057 + * src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing. -2018-08-26 Werner Lemberg <wl@gnu.org> +2021-09-03 Alexei Podtelezhnikov <apodtele@gmail.com> - Minor tracing adjustments. + * src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling. - * src/base/ftstream.c (FT_Stream_EnterFrame, FT_Stream_ExitFrame): - Trace. +2021-09-03 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Remove tracing. + Cosmetic zeros. -2018-08-26 Werner Lemberg <wl@gnu.org> +2021-09-02 Alexei Podtelezhnikov <apodtele@gmail.com> - [truetype] Avoid nested frames. + [base] Clean up stream reading. - Triggered by + * 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. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10054 + * include/freetype/internal/ftstream.h (FT_Stream_GetByte, + FT_Stream_ReadByte): Update prototypes and caller macros. - * src/truetype/ttgload.c (load_truetype_glyph): Don't use variable - `opened_frame' to trace whether a frame must be closed at the end of - function: This fails because `TT_Vary_Apply_Glyph_Deltas' (which - gets called for space glyphs) uses a frame by itself. Instead, - close the frame after loading the header, then use another frame for - the remaining part of the glyph later on. +2021-09-02 Alexei Podtelezhnikov <apodtele@gmail.com> - Also avoid calling `tt_get_metrics' twice under some circumstances. + s/0/NULL/ where appropriate. -2018-08-26 Werner Lemberg <wl@gnu.org> +2021-08-30 Alexei Podtelezhnikov <apodtele@gmail.com> - Various minor clean-ups. + * builds/windows/ftsystem.c (FT_Stream_Open): Fix double-close. - * src/base/ftapi.c: Remove. Unused. - * src/base/Jamfile (_sources): Updated. +2021-08-30 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/base/ftstream.c (FT_Stream_ReleaseFrame): Remove redundant - code. + [smooth] Reduce shift in multiply-shift optimization. -2018-08-25 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> + * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): Reduce shift. - Convert documentation markup to Markdown. + 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. - It is the result of a GSoC 2018 project; this separate ChangeLog - commit covers the last four commits + Using `ftbench -p -s60 -t5 -bc timesi.ttf`, - ae5d1a4cec37557f31aec270332cfe886a62f9a0 - 53c69ce04faed3dcc68ca0f54cb8d703d8babf69 - 195728d5ba38f34fb2c2c20807c01656f2f59b66 - c962db28ea59225f0105c03d907d4a9b71765687 + Before: 8.52 us/op + After: 8.32 us/op - * docs/reference/markdown/images/favico.ico, - docs/reference/markdown/javascripts/extra.js, - docs/reference/markdown/stylesheets/extra.css: New files. +2021-08-28 Werner Lemberg <wl@gnu.org> - * docs/reference/.gitignore, docs/reference/README: Updated. + [truetype] Fix compilation if !TT_CONFIG_OPTION_BYTECODE_INTERPRETER. - * src/tools/docmaker/*: Removed. It has been replaced with - `docwriter', a python package available at + * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): Compile function + conditionally. + (tt_face_vary_cvt) [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Add code. - https://pypi.org/project/docwriter/ + Fixes #1091. - * Jamfile: Updated. - * builds/ansi/ansi-def.mk, builds/beos/beos-def.mk, - builds/dos/dos-def.mk, builds/os2/os2-def.mk (BIN), - builds/unix/unixddef.mk, builds/windows/win32-def.mk: New variable. +2021-08-27 Alexei Podtelezhnikov <apodtele@gmail.com> - * builds/unix/configure.raw: Check for `python' and `pip'. - If not present, warn that `make refdoc' will fail. - * builds/unix/unix-def.in (PYTHON, PIP, BIN): New variables. + [builds/windows] Revise SSE2 settings. - * builds/freetype.mk (PYTHON, PIP, VENV_NAME, VENV_DIR, ENV_PYTHON, - ENV_PIP): New variables. - (refdoc): Updated. - (refdoc-venv): New target. - (.PHONY): Updated. + * builds/windows/vc2010/freetype.vcxproj [x64]: Remove explicit SSE2. + * builds/windows/visualc/freetype.vcproj [Win32]: Add explicit SSE2. -2018-08-23 Werner Lemberg <wl@gnu.org> +2021-08-27 Ben Wagner <bungeman@chromium.org> - Add macros for handling over-/underflowing `FT_Int64' values. + [smooth] Detect SSE2 with MSVC for x86 - * include/freetype/internal/ftcalc.h (ADD_INT64, SUB_INT64, - MUL_INT64, DIV_INT64) [FT_LONG64]: New macros. + MSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is + defined and greater than or equal to 2. - * src/base/ftcalc.c (ft_corner_orientation) [FT_LONG64]: Use - `SUB_INT64' and `MUL_INT64'. + * src/smooth/ftgrays.c (FT_SSE2): New macro. + Use it where appropriate. - Reported as +2021-08-26 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10028 + Expand comment (cont'd). -2018-08-22 Werner Lemberg <wl@gnu.org> +2021-08-26 Alexei Podtelezhnikov <apodtele@gmail.com> - [truetype] Improve legibility of `glyf' parsing. + Expand comment. - * src/truetype/ttgload.c (ON_CURVE_POINT, X_SHORT_VECTOR, - Y_SHORT_VECTOR, REPEAT_FLAG, X_POSITIVE, SAME_X, Y_POSITIVE, SAME_Y, - OVERLAP_SIMPLE): New macros. - (TT_Load_Simple_Glyph): Use new macros to make code more readable. - Remove useless adjustment of `outline->tags' elements. +2021-08-24 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-21 Werner Lemberg <wl@gnu.org> + * src/smooth/ftgrays.c (gray_render_conic): Refactor redundancy. - * src/sfnt/ttcpal.c (tt_face_load_cpal): Add missing safety check. +2021-08-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9981 + [truetype] Fix for the family name shorter than 8 characters. -2018-08-18 Werner Lemberg <wl@gnu.org> + * 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. - [psaux] Avoid slow PS font parsing in case of error. +2021-08-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> - Reported as + [truetype] Simplify `trick_names'. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9955 + * 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'. - * src/psaux/psobjs.c (ps_parser_to_bytes): Set `parser->cursor' even - in case of error to avoid potential re-scanning. +2021-08-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> -2018-08-18 Werner Lemberg <wl@gnu.org> + [truetype] Add 2 tricky font names. - [cff] Fix heap buffer overflow in old engine. - - Reported as + Additional fix for the issue #1087. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9967 + * src/truetype/ttobjs.c (tt_check_trickyness_family): Add 2 tricky + font names reported in #1087. - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) - <cff_op_blend> [CFF_CONFIG_OPTION_OLD_ENGINE]: `num_designs' must be - non-zero. +2021-08-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> -2018-08-16 Young Xiao <yangx92@hotmail.com> + [truetype] New function to skip the randomization tag. - * builds/mac/ftmac.c (parse_fond): Fix buffer overrun. + * 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: - Reported as bug #54515, duplicate of #43540. + https://lists.nongnu.org/archive/html/freetype-devel/2021-02/msg00002.html -2018-08-16 Werner Lemberg <wl@gnu.org> + 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. - * builds/*/ftsystem.c (FT_COMPONENT): Updated also. +2021-08-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> -2018-08-15 Alexei Podtelezhnikov <apodtele@gmail.com> + [truetype] Add checksums for 2 tricky fonts. - [bdf] Don't track duplicate encodings. + Thanks to Ting717 for providing sample PDF. Fixes #1087. - There is no harm except some umbiguity in broken fonts with duplicate - encodings. + * 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'. - * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove duplicate tracking. - (_bdf_parse_t): Remove large `have' bitfield. +2021-08-23 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-15 Werner Lemberg <wl@gnu.org> + Whitespace formatting. - Don't use `trace_' prefix for FT_COMPONENT arguments. +2021-08-22 Alexei Podtelezhnikov <apodtele@gmail.com> - * include/freetype/internal/ftdebug.h (FT_TRACE_COMP, - FT_TRACE_COMP_): New auxiliary macros to add `trace_' prefix. - (FT_TRACE): Use `FT_TRACE_COMP'. + Decorate const arguments. - */* (FT_COMPONENT): Updated. - -2018-08-14 Werner Lemberg <wl@gnu.org> - - Use formatting string in FT_TRACEX calls for non-simple arguments. - - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) - <cff_op_hstem, cff_op_hintmask, cff_op_hlineto, cff_op_vhcurveto>: + * 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. - * src/psaux/pshints.c (cf2_hintmap_build): Ditto. - - * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM, - cf2_cmdVSTEM, cf2_cmdHLINETO, cf2_cmdRRCURVETO, cf2_cmdCALLSUBR, - cf2_escHSTEM3, cf2_cmdHINTMASK, cf2_cmdHVCURVETO>: Ditto. +2021-08-21 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/truetype/ttinterp.c (TT_RunIns): Ditto. + [smooth] Clean up the null cell usage. -2018-08-14 Alexei Podtelezhnikov <apodtele@gmail.com> + 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. - [bdf] Remove unused fields. + * 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. - * src/bdf/bdf.h (bdf_font_t): Remove `nmod', `umod', and `modified', - which were set but never used. - * src/bdf/bdflib.c (_bdf_parse_{glyphs,properties}, bdf_load_font): - Updated accordingly. +2021-08-20 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-14 Werner Lemberg <wl@gnu.org> + [base] Restore quiet no-op rendering of bitmap glyphs. - [cff] Fix another segv in old engine. + Fixes #1076. - Reported as + * src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when + rendering a bitmap glyph. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9872 +2021-08-20 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) - [CFF_CONFIG_OPTION_OLD_ENGINE]: Disallow invalid T1 opcodes in - dictionaries. + [smooth] Fortify 64-bit algorithm. -2018-08-14 Werner Lemberg <wl@gnu.org> + * 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. - [cff] Fix missing error handling. +2021-08-20 Carlo Bramini <carlo.bramix@libero.it> - Reported as + * builds/windows/ftsystem.c (FT_Stream_Open): Support legacy Windows. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9865 +2021-08-20 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/psaux/cffparse.c (cff_parser_run) - [CFF_CONFIG_OPTION_OLD_ENGINE]: Don't ignore return value of - `parse_charstrings_old'. + Determine `long long` availability based on its size. -2018-08-14 Alexei Podtelezhnikov <apodtele@gmail.com> + MSVC, for example, used `long long` even without full C99 support. - [bdf] Remove unused overflow storage. + * 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. - * src/bdf/bdf.h (bdf_glyphlist_t): Remove this type. - (bdf_font_t): Remove `overflow' field. - * src/bdf/bdflib.c (bdf_free_font): Remove `overflow' freeing. +2021-08-19 Dominik Röttsches <drott@chromium.org> -2018-08-14 Werner Lemberg <wl@gnu.org> + [sfnt] Fix format expectation for `COLR` v1 ClipList - [cff] Fix segv in old engine. + * 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. - Reported as +2021-08-19 Alexei Podtelezhnikov <apodtele@gmail.com> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9864 + Readily use `long long` as a 64-bit type in C99 mode. - * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) - <cff_op_random> [CFF_CONFIG_OPTION_OLD_ENGINE]: Use top dict's - `random' field directly if parsing dictionaries. + * include/freetype/config/integer-types.h (FT_INT64): + FT_CONFIG_OPTION_FORCE_INT64 is no longer required to use `long long`. -2018-08-13 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-08-19 Alexei Podtelezhnikov <apodtele@gmail.com> - [bdf] Use unsigned types. + Use FT_INT64 instead of FT_LONG64. - * src/bdf/bdf.h (bdf_glyph_t): Unsign `encoding'. - (bdf_font_t): Unsign `default_char'. - * src/bdf/bdfdrivr.h (BDF_encoding_el): Unsign `enc'. + * 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. - * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_glyphs, - _bdf_parse_start): Updated accordingly. - * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Ditto. +2021-08-18 Alexei Podtelezhnikov <apodtele@gmail.com> -2018-08-13 Werner Lemberg <wl@gnu.org> + [builds/windows] Do not set CharacterSet for VC++. - * src/type42/t42parse.c (t42_parse_sfnts): One more format check. + * builds/windows/vc2010/freetype.vcxproj: s/Unicode/NotSet/. + * builds/windows/visualc/freetype.vcproj: s/"1"/"0"/. - Reported as +2021-08-18 Werner Lemberg <wl@gnu.org> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9832 + * src/sdf/ftsdf.c (get_control_box): Fix compiler warning. -2018-08-11 Werner Lemberg <wl@gnu.org> +2021-08-18 Werner Lemberg <wl@gnu.org> - * src/base/ftcalc.c (FT_Matrix_Check): Fix integer overflow. + [base] Fix ppem size overflow. - Reported as + Fixes #1086. - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9811 + * src/base/ftobjs.c (FT_Request_Metrics): Add return value. + Check whether ppem values fit into unsigned short values. + (FT_Request_Size): Updated. -2018-08-10 Alexei Podtelezhnikov <apodtele@gmail.com> + * include/freetype/internal/ftobjs.h: Updated. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Follow specs. + * 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. -2018-08-10 Ben Wagner <bungeman@google.com> +2021-08-18 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435). + * builds/windows/ftsystem.c (FT_Stream_Open): Cast to remove warning. -2018-08-10 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Improve tracing. - -2018-08-10 Werner Lemberg <wl@gnu.org> - - Fix clang warnings. +2021-08-18 Alexei Podtelezhnikov <apodtele@gmail.com> - * src/base/ftdebug.c (ft_trace_level_enabled, - ft_trace_level_disabled): Add `static' keyword. + * builds/windows/ftsystem.c (FT_Stream_Open): Support UNICODE compilation. -2018-08-09 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-08-09 Werner Lemberg <wl@gnu.org> - [raster, smooth] Reinstate bitmap size limits. + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor fix. - This again moves outline and bitmap size checks one level up. +2021-08-09 Dominik Röttsches <drott@chromium.org> - * src/base/ftoutln.c (FT_Outline_Render): Explicitly reject enormous - outlines. - * src/raster/ftrend1.c (ft_raster1_render): Reject enormous bitmaps - and, therefore, outlines that require them. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto. + [sfnt] Add missing blend mode 'plus' to 'COLR' v1. - * src/raster/ftraster.c (ft_black_render): Remove outline size checks. - * src/smooth/ftgrays.c (gray_raster_render): Ditto. - [STANDALONE]: Remove `FT_Outline_Get_CBox' copy. + * include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode + 'plus' after it was added to the spec. -2018-08-08 Alexei Podtelezhnikov <apodtele@gmail.com> +2021-08-08 Werner Lemberg <wl@gnu.org> - [pcf] Revert massive unsigning. + include/freetype/freetype.h (FT_Encoding): Improve documentation. -2018-08-08 Werner Lemberg <wl@gnu.org> + Based on a suggestion by Antony Lee <anntzer.lee@gmail.com>. - [smooth] Improve tracing. +2021-08-07 Werner Lemberg <wl@gnu.org> - * src/smooth/ftgrays.c (gray_convert_glyph_inner): Only use tracing - if called the first time. - (gray_convert_glyph): Updated. - -2018-08-08 Werner Lemberg <wl@gnu.org> - - Add internal functions `FT_Trace_Disable' and `FT_Trace_Enable'. - - It sometimes makes sense to suppress tracing informations, for - example, if it outputs identical messages again and again. - - * include/freetype/internal/ftdebug.h: Make `ft_trace_levels' a - pointer. - (FT_Trace_Disable, FT_Trace_Enable): New declarations. - - * src/base/ftdebug.c (ft_trace_levels): Rename to... - (ft_trace_levels_enabled): ... this. - (ft_trace_levels_disabled): New array. - (ft_trace_levels): New pointer. - (FT_Trace_Disable, FT_Trace_Enable): Implement. - (ft_debug_init): Updated. - -2018-08-08 Werner Lemberg <wl@gnu.org> - - Debugging improvements. - - * src/base/ftobjs.c (pixel_modes): Move this array to top level - from ... - (FT_Load_Glyph): ... here. - (FT_Render_Glyph_Internal): Use `width' x `height' in trace message. - Use `pixel_modes'. - -2018-08-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [pcf] Massive unsigning (part 2). - - Treat all size related properties as unsigned values. - - * src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name' and - `value'. - * src/pcf/pcfread.c (pcf_get_properties, pcf_load_font): Updated - parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, - RESOLUTION_X and RESOLUTION_Y. - -2018-08-08 Alexei Podtelezhnikov <apodtele@gmail.com> - - [pcf] Massive unsigning (part 1). - - Unofficial specifications hesitate to use unsigned 32-bit integers. - Negative values caused a lot of trouble in the past and it is safer - and easier to treat some properties as unsigned. - - * src/pcf/pcf.h (PCF_AccelRec): Use unsigned values for `fontAscent', - `fontDescent', and `maxOverlap'. - * src/pcf/pcfread.c (pcf_load_font, pcf_get_accel): Updated. - * src/pcf/pcfdrivr.c (PCF_Glyph_Load, PCF_Size_Select, - PCF_Size_Request): Updated. - -2018-08-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/pcf/pcfread.c (pcf_get_bitmaps): Unsign `offsets' and - `bitmapSizes'. - -2018-08-06 Werner Lemberg <wl@gnu.org> - - * devel/ftoption.h: Synchronize with main `ftoption.h'. - -2018-08-06 Alexei Podtelezhnikov <apodtele@gmail.com> - - [pcf] Use unsigned types. - - * src/pcf/pcf.h (PCF_Encoding): Use unsigned `enc'. - * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Ditto. - * src/pcf/pcfread.c (pcf_get_encodings): Use unsigned types. - -2018-08-05 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (compute_glyph_metrics): Fix overflow. - - Reported as - - https://bugs.chromium.org/p/chromium/issues/detail?id=777151 - -2018-08-04 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttinterp.c (opcode_name): Fix typos. - -2018-08-04 Werner Lemberg <wl@gnu.org> - - Fix clang warnings. - - * src/base/ftoutln.c (FT_Outline_EmboldenXY): Fix type of - `orientation'. - - * src/gxvalid/gxvcommn.c (gx_lookup_value_read): Fix signature. - - * src/pcf/pcfread.c (pcf_get_encodings): Fix type of some variables. - Add cast. - - * src/type1/t1load.c (parse_weight_vector): Fix cast. - -2018-07-31 Werner Lemberg <wl@gnu.org> - - * src/cid/cidtoken.h: Handle `XUID' keyword. - -2018-07-31 Werner Lemberg <wl@gnu.org> - - [cid] Trace PostScript dictionaries. - - * src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H. - (cid_load_keyword, cid_parse_font_matrix, parse_fd_array, - parse_expansion_factor, cid_parse_dict): Add tracing calls. - (parse_font_name): New function to trace `/FontName' keywords in - /FDArray dict. - (cid_field_records): Register `parse_font_name'. - -2018-07-30 Werner Lemberg <wl@gnu.org> - - [cff] Fix typo. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9409 - - * src/cff/cffdrivr.c (cff_get_cid_from_glyph_index): Fix boundary - check. - -2018-07-29 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfread.c (pcf_get_encodings): Another thinko. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9608 - -2018-07-28 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Fix Harmony memory management. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9501 - - * src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer - after each rendering in case of failure. - -2018-07-28 Werner Lemberg <wl@gnu.org> - - [type1] Avoid segfaults with `FT_Get_PS_Font_Value'. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9610 - - * src/type1/t1driver.c (t1_ps_get_font_value): Protect against NULL. - -2018-07-27 Werner Lemberg <wl@gnu.org> - - [truetype] Make `TT_Set_MM_Blend' idempotent (#54388). - - * src/truetype/ttgxvar.c (tt_set_mm_blend): Correctly set - `face->doblend' if the current call to the function yields the same - blend coordinates as the previous call. - -2018-07-27 Werner Lemberg <wl@gnu.org> - - [psaux, type1]: More tracing improvements. - - * src/psaux/psintrp.c (cf2_interpT2CharString): Trace skipped - outline commands. - - * src/psaux/t1decode.c (t1_decoder_parse_charstring): Fix - missing case. - (t1_decoder_parse_metrics): Make tracing output more compact. - - * src/type1/t1gload.c (T1_Compute_Max_Advance): Be less verbose. - (T1_Get_Advances): Add tracing. - -2018-07-25 Werner Lemberg <wl@gnu.org> - - [psaux, type1] Trace PostScript dictionaries and other things. - - The tracing of /Encoding, /Subrs, and /Charstrings is rudimentary - right now. - - * src/psaux/psobjs.c (ps_parser_load_field, - ps_parser_load_field_table): Add tracing calls. - - * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make tracing - output more compact. - - * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances): Add - tracing messages. - - * src/type1/t1load.c (parse_blend_axis_types, - parse_blend_design_positions, parse_blend_design_map, - parse_weight_vector, t1_load_keyword, t1_parse_font_matrix, - parse_encoding, parse_subrs, parse_charstrings, T1_Open_Face): Add - tracing calls. - - * src/type1/t1objs.c (T1_Face_Init): Add tracing call. - - * src/sfnt/sfobjs.c (sfnt_init_face): Make tracing message more - verbose. - -2018-07-25 Werner Lemberg <wl@gnu.org> - - Fix minor ASAN run-time warnings. - - * src/base/ftutil.c (ft_mem_alloc, ft_mem_realloc): Only call - `FT_MEM_ZERO' if we actually have a buffer. - (ft_mem_dup): Only call `ft_memcpy' if we actually have a buffer. - -2018-07-24 Alexei Podtelezhnikov <apodtele@gmail.com> - - [build] Fortify dllexport/dllimport attributes (#53969,#54330). - - We no longer use predefined _DLL, which can be defined for static - builds too with /MD. We use DLL_EXPORT and DLL_IMPORT instead, - following libtool convention. - - * CMakeLists.txt [WIN32], builds/windows/vc2010/freetype.vcxproj: - Define DLL_EXPORT manually. - - * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in, - builds/vms/ftconfig.h, builds/windows/vc2010/index.html, - src/base/ftver.rc: /_DLL/d, s/FT2_DLLIMPORT/DLL_IMPORT/. - -2018-07-24 Werner Lemberg <wl@gnu.org> - - [type1] Check relationship between number of axes and designs. - - For Multiple Masters fonts we don't support intermediate designs; - this implies that - - number_of_designs == 2 ^^ number_of_axes + [smooth] Avoid integer overflow. Reported as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9557 - - * src/type1/t1load.c (T1_Open_Face): Ensure above constraint. - (T1_Get_MM_Var): Remove now redundant test. - -2018-07-24 Hin-Tak Leung <htl10@users.sourceforge.net> - - [truetype] Match ttdebug's naming of instruction mnemonics. - - * src/truetype/ttinterp.c: The form used in ttdebug, - "MDRP[G,B,W,?]", etc., is slightly more readable than - "MDRP[00,01,02,03]". - -2018-07-24 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfread.c (pcf_get_encodings): Thinko. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9561 - -2018-07-22 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9527 - -2018-07-22 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs. - - This is an oversight of the module change 2018-07-21. - - Reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36243 - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9524 + * 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. -2018-07-22 Werner Lemberg <wl@gnu.org> - - [cid] Sanitize `BlueShift' and `BlueFuzz'. - - This code is taken from the type1 module. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9510 - - * src/cid/cidload.c (parse_fd_array): Set some private dict default - values. - (cid_face_open): Do the sanitizing. - Fix some tracing messages. - -2018-07-21 Werner Lemberg <wl@gnu.org> - - [pcf] Fix handling of the undefined glyph. - - This change makes the driver use the `defaultChar' property of PCF - files. - - * src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar' to - unsigned. - - * src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar' as - unsigned. - Validate `defaultChar'. - If `defaultChar' doesn't point to glyph index zero, swap glyphs with - index zero and index `defaultChar' and adjust the encodings - accordingly. - - * src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next, - PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced - the first character in the font to be the default character. - -2018-07-20 Armin Hasitzka <prince.cherusker@gmail.com> - - Move the legacy fuzz target to the `freetype-testing' repository. - - It can now be found at - - https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy - - * src/tools/ftfuzzer: Remove this folder and its contents from the - repository. - -2018-07-20 Werner Lemberg <wl@gnu.org> - - [cff] Avoid left-shift of negative numbers (#54322). - - * src/cff/cffgload.c (cff_slot_load): Use multiplication. - -2018-07-17 Werner Lemberg <wl@gnu.org> - - Allow FT_ENCODING_NONE for `FT_Select_Charmap'. - - This is a valid encoding tag for BDF, PCF, and Windows FNT, and - there is no reason to disallow it for these formats. - - * src/base/ftobjs.c (FT_Select_Charmap): Implement it. - -2018-07-17 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'. - -2018-07-16 Armin Hasitzka <prince.cherusker@gmail.com> - - * include/freetype/internal/ftcalc.h: Add macros for handling - harmless over-/underflowing `FT_Int' values. - - * src/sfnt/sfdriver.c (fixed2float): Fix negation of - `(int)(-2147483648)'. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423 - -2018-07-16 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error. - - Reported as +2021-08-07 Dominik Röttsches <drott@chromium.org> - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9412 + [sfnt] Add API for retrieving a 'COLR' v1 'ClipBox' table. -2018-07-12 Werner Lemberg <wl@gnu.org> + 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 - * src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox'. + https://github.com/googlefonts/colr-gradients-spec/issues/251 - Taken from patch #9667, written by Steve Langasek - <vorlon@debian.org>. + for background on the introduction of this specification change. - This fixes a build failure (most probably a bug in gcc) on ppc64el - when building with -O3. + * include/freetype/ftcolor.h (FT_ClipBox): New structure. + (FT_Get_Color_Glyph_ClipBox): New function declaration. -2018-07-05 Werner Lemberg <wl@gnu.org> + * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func): + New function type. + (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it. - Fix typo (#54238). - - * src/base/ftcolor.c (FT_Palette_Set_Foreground_Color) - [!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value. - -2018-07-05 Werner Lemberg <wl@gnu.org> - - Adjust table size comparisons (#54242). - - * src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it. - -2018-07-05 Werner Lemberg <wl@gnu.org> - - Fix more 32bit issues (#54208). - - * src/cff/cffload.c (cff_blend_build_vector): Convert assertion into - run-time error. - - * src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against - numeric overflow. - -2018-07-04 Werner Lemberg <wl@gnu.org> - - Fix 32bit build warnings (#54239). - - * src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed - vs. unsigned comparisons. - - * srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto. - -2018-07-02 Jeff Carey <Jeff.Carey@monotype.com> - - * src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging. - -2018-07-02 Werner Lemberg <wl@gnu.org> - - s/palette_types/palette_flags/. - - Suggested by Behdad. - -2018-07-02 Werner Lemberg <wl@gnu.org> - - Make `FT_Get_Color_Glyph_Layer' return FT_Bool. - - * include/freetype/freetype.h, src/base/ftobjs.c - (FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated. - - * include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func), - src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer): - Updated. - -2018-07-01 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function. - - Reported by Behdad. - -2018-06-28 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/base/fttrigon.c (FT_Tan): Improve accuracy. - (FT_Vector_Rotate): Simplify. - -2018-06-28 Alexei Podtelezhnikov <apodtele@gmail.com> - - * src/base/ftobjs.c (FT_Set_Charmap): Robustify. - -2018-06-25 Werner Lemberg <wl@gnu.org> - - [truetype] Fix memory leak. - - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers. - Fix typo in `goto' destination. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9071 - -2018-06-25 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9070 - -2018-06-24 Werner Lemberg <wl@gnu.org> - - [truetype] Increase precision while applying VF deltas. - - It turned out that we incorrectly round CVT and glyph point deltas - before accumulation, leading to severe positioning errors if there - are many delta values to sum up. - - Problem reported by Akiem Helmling <akiem@underware.nl> and analyzed - by Behdad. - - * src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in - 16.16 format. - (tt_face_var_cvt): Collect deltas in `cvt_deltas', which is a 16.16 - format array, and add the accumulated values to the CVT at the end - of the function. - (TT_Vary_Apply_Glyph_Deltas): Store data in `points_org' and - `points_out' in 16.16 format. - Collect deltas in `point_deltas_x' and `point_deltas_y', which are - 16.16 format arrays, and add the accumulated values to the glyph - coordinates at the end of the function. - -2018-06-24 Werner Lemberg <wl@gnu.org> - - New base function `FT_Matrix_Check' (#54019). - - * src/base/ftcalc.c (FT_Matrix_Check): New base function to properly - reject degenerate font matrices. - - * include/freetype/internal/ftcalc.h: Updated. - - * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c - (cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix), - src/type42/t42parse.c (t42_parse_font_matrix): Use - `FT_Matrix_Check'. - -2018-06-23 Werner Lemberg <wl@gnu.org> - - Fix typo. - - Reported by Behdad. - - * src/base/ftcolor.c (FT_Palette_Data_Get) - [!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/. - -2018-06-21 Werner Lemberg <wl@gnu.org> - - s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/. - - * include/freetype/ftcolor.h, include/freetype/internal/sfnt.h, - src/sfnt/ttcolr.c: Do it. - -2018-06-19 Werner Lemberg <wl@gnu.org> - - [sfnt] Fix CPAL heap buffer overflow. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8968 - - * src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1 - offsets. - -2018-06-19 Werner Lemberg <wl@gnu.org> - - Doh. Don't use CPAL or COLR data if tables are missing. - - Reported by Alexei. - - * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if - `colr' is NULL. - - * src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if - `cpal' is NULL. - -2018-06-17 Alexei Podtelezhnikov <apodtele@gmail.com> - - [base] Introduce `FT_New_Glyph'. - - This function facilitates access to full capabilities of FreeType - rendering engine for custom glyphs. This can be quite useful for - consistent rendering of mathematical and chemical formulas, e.g. - - https://bugs.chromium.org/p/chromium/issues/detail?id=757078 - - * include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New - function. - -2018-06-17 Armin Hasitzka <prince.cherusker@gmail.com> - - [bdf] Fix underflow of an unsigned value. - - bdflib.c:1562 could be reached with `font->glyphs_used == 0'. That - caused an underflow of the unsigned value which results in undefined - behaviour. - - * src/bdf/bdflib.c (_bdf_parse_glyphs): Bail out earlier than before - if the `ENCODING' keyword cannot be found. - -2018-06-17 Werner Lemberg <wl@gnu.org> - - [base] Add tracing for `FT_Bitmap_Blend'. - - * include/freetype/internal/fttrace.h (trace_bitmap): New - enumeration. - - * src/base/ftbitmap.c (FT_COMPONENT): Define. - (FT_Bitmap_Blend): Add `FT_TRACE5' calls. - -2018-06-17 Werner Lemberg <wl@gnu.org> - - s/trace_bitmap/trace_checksum/. - - * include/freetype/internal/fttrace.h: s/bitmap/checksum/. - - * src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/. - Adjust code. - -2018-06-16 Werner Lemberg <wl@gnu.org> - - [sfnt] Fix color glyph layer loading. - - * src/sfnt/ttcolr.c (Colr): Add `table_size' field. - (tt_face_load_colr): Set it. - (tt_face_get_colr_layer): Check pointer limit for layer entries. - -2018-06-16 Werner Lemberg <wl@gnu.org> - - [sfnt] Fix color palette loading. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8933 - - * src/sfnt/ttcpal.c (Cpal): Add `table_size' field. - (tt_face_load_cpal): Set it. - (tt_face_palette_set): Check pointer limit for color entries. - -2018-06-16 Werner Lemberg <wl@gnu.org> - - * src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow. - -2018-06-16 Werner Lemberg <wl@gnu.org> - - Add `FT_Bitmap_Blend' API. - - Still missing: Support for negative bitmap pitch and subpixel offset - of source bitmap. - - * include/freetype/ftbitmap.h, src/base/ftbitmap.c - (FT_Bitmap_Blend): New function. - -2018-06-14 Werner Lemberg <wl@gnu.org> - - Replace `FT_Get_GlyphLayers' with `FT_Get_Color_Glyph_Layer'. - - This avoids any additional allocation of COLR related structures in - a glyph slot. - - * include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec, - FT_Get_GlyphLayers): Removed. - - * include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed. - (FT_Slot_InternalRec): Remove `color_layers'. - - * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): - Removed. - (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove - `load_colr_layer'. - - * src/base/ftobjs.c (ft_glyph_slot_done): Updated. - (FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer'. - (FT_Get_GlyphLayers): Removed. + * src/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 (tt_face_load_colr_layers): Removed. - * src/sfnt/ttcolr.h: Updated. - - * src/truetype/ttgload.c (TT_Load_Glyph): Updated. - -2018-06-14 Werner Lemberg <wl@gnu.org> - - Provide iterative API to access `COLR' data. - - This solution doesn't store any data in an `FT_GlyphSlot' object. - - * include/freetype/freetype.h (FT_LayerIterator): New structure. - (FT_Get_Color_Glyph_Layer): New function. - - * include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New - function type. - (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it. - - * src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it. - - * src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function. - * src/sfnt/ttcolr.h: Updated. - - * src/sfnt/sfdriver.c (sfnt_interface): Updated. - -2018-06-14 Werner Lemberg <wl@gnu.org> - - Add glyph index and glyph load flags to glyph slot. - - * include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused - `reserved' field to `glyph_index'. - - * include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add - `load_flags' field. - - * src/base/ftobjs.c (FT_Load_Glyph): Set new fields. - -2018-06-14 Werner Lemberg <wl@gnu.org> - - [sfnt] Move `CPAL' stuff into separate files. - - * src/sfnt/sfdriver.c: Include `ttcpal.h'. - * src/sfnt/sfnt.c: Include `ttcpal.c'. - - * src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ... - * src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files. - - * src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): - Updated. - - * include/freetype/internal/fttrace.h: Add support for `colr' and - `cpal'. - Sort entries. - -2018-06-13 Werner Lemberg <wl@gnu.org> - - [sfnt] Separate `CPAL' and `COLR' table handling. - - Later on we want to support the `SVG' table also, which needs `CPAL' - (but not `COLR'). - - * include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal' - and `free_cpal' fields. - (FT_DEFINE_SFNT_INTERFACE): Updated. - - * include/freetype/internal/tttypes.h (TT_FaceRec): Replace - `colr_and_cpal' fields with `cpal' and `colr'. - - * src/sfnt/sfdriver.c (sfnt_interface): Updated. - - * src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated. - - * src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field. - (ColrCpal): Removed. - (tt_face_load_colr): Split off CPAL handling into... - (tt_face_load_cpal): ... this new function. - (tt_face_free_colr): Split off CPAL handling into... - (tt_face_free_cpal): ... this new function. - (tt_face_load_colr_layers, tt_face_palette_set): Updated. - - * src/sfnt/ttcolr.h: Updated. - - * src/truetype/ttgload.c (TT_Load_Glyph): Updated. - -2018-06-12 Werner Lemberg <wl@gnu.org> - - [sfnt] Fix `sizeof' thinko. - - * src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't - use `sizeof' for computing array limit. - -2018-06-12 Werner Lemberg <wl@gnu.org> - - Finish CPAL/COLR support (4/4). - - * src/sfnt/ttcolr.c (tt_face_find_color): Removed. - (tt_face_colr_blend_layer): Use `face->palette' instead of calling - `tt_face_find_color'. - Use and set text foreground color. - -2018-06-12 Werner Lemberg <wl@gnu.org> - - Finish CPAL/COLR support (3/4). - - * src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H. - (FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement - functions. - -2018-06-12 Werner Lemberg <wl@gnu.org> - - Finish CPAL/COLR support (2/4). - - * src/sfnt/ttcolr.c (tt_face_palette_set): New function. - (tt_face_load_colr): Allocate `face->palette' and call - `tt_face_palette_set'. - Adjust return error code in case of error. - - * src/sfnt/ttcolr.h: Updated. - - * include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New - function type. - (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it. - - * src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c - (sfnt_done_face): Updated. - -2018-06-12 Werner Lemberg <wl@gnu.org> - - Finish CPAL/COLR support (1/4). - - * include/freetype/internal/tttypes.h (TT_FaceRec): New fields - `palette_index', `palette', `have_foreground_color' and - `foreground_color'. - -2018-06-12 Werner Lemberg <wl@gnu.org> - - [sfnt] Minor. - - * src/sfnt/ttcolr.c (tt_face_load_colr_layers): - s/palette_index/palette_entry_index/ for consistency. - Adjust return error code in case of error. - -2018-06-11 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Clean up. - - * src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision): - Clean up after 5-level gray removal (8dc8635874). - (Vertical_Sweep_Span): Be brief. - -2018-06-10 Werner Lemberg <wl@gnu.org> - - [sfnt] Fix compiler warnings. - - * src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers, - tt_face_colr_blend_layer): Add `NULL' initializers. - -2018-06-10 Werner Lemberg <wl@gnu.org> - - s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/. - - * include/freetype/ftcolor.h, include/freetype/internal/tttypes.h, - src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated. - -2018-06-10 Nikolaus Waxweiler <madigens@gmail.com> - - CMakeLists: also accept IOS_PLATFORM=SIMULATOR64 - - This might be needed to build FreeType for the iOS simulator. See - https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed - by Steve Robinson. - - * CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64 - -2018-06-10 Werner Lemberg <wl@gnu.org> - - Implement `FT_Palette_Get'. - - * src/base/ftcolor.c: New file. - - * src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC), - src/base/ftbase.c: Add `ftcolor.c'. - -2018-06-10 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks. - -2018-06-09 Alexei Podtelezhnikov <apodtele@gmail.com> - - [raster] Deal with pitch sign earlier. - - * src/raster/ftraster.c (black_TWorker): Remove unused `traceG', - s/bTarget/bOrigin/. - (Render_Glyph): Set `ras.bOrigin' at the bottom-left corner. - (Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}): - Updated accordingly. - -2018-06-09 Werner Lemberg <wl@gnu.org> - - [sfnt] Read `CPAL' version 1 tables. - - * include/freetype/internal.tttypes.h: Include FT_COLOR_H. - (TT_FaceRec): Add `palette' field. - - * src/sfnt/ttcolr.c: Include FT_COLOR_H. - (Cpal): Remove all data covered by the new `palette' field in - `TT_FaceRec'. - (tt_face_load_colr): Updated. - Read `CPAL' version 1 data. - (tt_face_load_colr_layers, tt_face_find_color): Updated. - - * src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data. - -2018-06-07 Alexei Podtelezhnikov <apodtele@gmail.com> - - [base] API for Harmony LCD rendering. - - This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary - LCD subpixel geometry including non-striped patterns. - - * src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function. - * include/freetype/ftlcdfil.h: Document it. - * include/freetype/freetype.h: Minor. - * include/freetype/ftchapters.h: Minor. - -2018-06-06 Werner Lemberg <wl@gnu.org> - - ftcolor.h: Redesign API. - - While going to implement it I noticed that I need access to most of - the `CPAL' elements; I thus plan to add a `cpal' field to - `TT_FaceRec', which makes most of the previously suggested API - functions obsolete because the fields will be directly accessible. - -2018-06-06 Parth Wazurkar <parthwazurkar@gmail.com> - - [bdf, pcf] Remove deprecated FT_FACE_FLAG_FAST_GLYPHS flag. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Remove deprecated - FT_FACE_FLAG_FAST_GLYPHS flag. - - * src/pcf/pcfread.c (pcf_load_font): Remove deprecated - FT_FACE_FLAG_FAST_GLYPHS flag. - -2018-06-06 Werner Lemberg <wl@gnu.org> - - [smooth, raster] Limit bitmap size (#54019). - - * src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add - function. - [!STANDALONE]: Include FT_OUTLINE_H. - (ft_black_render): Compute CBox and reject glyphs larger than - 0xFFFF x 0xFFFF. - - * src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger - than 0xFFFF x 0xFFFF. - -2018-06-03 Armin Hasitzka <prince.cherusker@gmail.com> - - * src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables. - -2018-06-03 Werner Lemberg <wl@gnu.org> - - * src/tools/glnames.py (main): Emit header in `light' comment style. - -2018-06-02 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Attempt to mitigate bug #54019. - - The robust rendering of estra large glyphs came with unbearable cost. - The old way of bisecting should fail but fail faster. - - * src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting - in y-direction. - -2018-06-02 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS. - - Reported as - - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8706 - -2018-06-02 Werner Lemberg <wl@gnu.org> - - * src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033). - -2018-05-31 Werner Lemberg <wl@gnu.org> - - * src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field. - - This is no longer used. - -2018-05-31 Werner Lemberg <wl@gnu.org> - - [sfnt] Get colors from `CPAL' table in right order (#54015). - - * src/sfnt/ttcolr.c (tt_face_find_color): Fix it. - -2018-05-30 Werner Lemberg <wl@gnu.org> - - ftcolor.h: Improve API design, fix typos (#54011, #54014). - - * include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with... - (FT_Palette_Get_Name_IDs): ... this function. - (FT_Palette_Get_Entry_Names): Replace with... - (FT_Palette_Get_Entry_Name_IDs): ... this function - s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/. - -2018-05-30 Armin Hasitzka <prince.cherusker@gmail.com> - - Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b. - - * src/autofit/afloader.c (af_loader_load_glyph): Move the - initialisationand declaration of variables into the if-block. - -2018-05-30 Armin Hasitzka <prince.cherusker@gmail.com> - - Fix pointer underflow. - - The declaration of `edge2' can be reached with `edge1 == NULL' and - `axis->edges == 0' which results in undefined behaviour. - - * src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2' - after checking `axis->num_edges > 1'. `edge1 != NULL' can be assumed. - -2018-05-30 Werner Lemberg <wl@gnu.org> - - Various minor color fixes. - - * include/freetype/config/ftheader.h (FT_COLOR_H): New macro. - - * include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change - type of `load_flags' to `FT_Int32'. - - * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change - type of `idx' to `FT_UInt'. - (TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'. - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of - `load_flags' to `FT_Int32'. - - * src/sfnt/ttcolr.c (find_base_glyph_record, - tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'. - (tt_face_find_color, tt_face_colr_blend_layer): Change type of - `color_index' to `FT_UInt'. - Fix signedness and type issues. - + * src/sfnt/ttcolr.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. -2018-05-25 Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com> - - [docmaker] Fix missing `Defined in (...)' under Windows/Cygwin. - - This platform uses backslashes for paths, which docmaker didn't - understand correctly. - - * src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use - `os.path.normpath' to normalize the path for the platform being - used. - -2018-05-24 Alexei Podtelezhnikov <apodtele@gmail.com> - - [smooth] Formalize Harmony LCD rendering. - - This generalizes magic outline shifts that make Harmony LCD - rendering work in terms of precise two-dimensional RGB subpixel - positions. These coordinates are now set in time of the `smooth' - module initialization and later used to shift a glyph outline for - rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same - coordinates. The letter, however, rotates them before using. - The LCD bitmap padding is also calculated using these coordinates. - - * include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field - `lcd_geometry'. - * src/base/ftlcdfil.c (ft_lcd_padding): Reworked. - * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly. +2021-08-06 Werner Lemberg <wl@gnu.org> - * src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING] - (ft_smooth_init): Initialize `lcd_geometry'. - (ft_smooth_render_generic): Formalize outline shifts. - -2018-05-22 Werner Lemberg <wl@gnu.org> - - [truetype] Reject elements of composites with invalid glyph indices. + [smooth] Fix left shifts of negative numbers. Reported as - https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8413 - - * src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it. - -2018-05-22 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points. - -2018-05-20 Werner Lemberg <wl@gnu.org> - - * include/freetype/ftcolor.h: New file. - - This is an interface to the `CPAL' OpenType table. No - implementation yet. - -2018-05-18 Alexei Podtelezhnikov <apodtele@gmail.com> - - * include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'. - - Actually `_BitScanReverse' is available since VS2005. - -2018-05-18 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value. - - Older VC versions don't provide `_BitScanReverse'. We test for VC - 2013. - - Reported by John Emmas <john@creativepost.co.uk>. - -2018-05-17 Werner Lemberg <wl@gnu.org> - - s/inline/__inline/ for MSVC. - - Reported by John Emmas <john@creativepost.co.uk>. - - * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it. - -2018-05-16 Werner Lemberg <wl@gnu.org> - - Add function `FT_Get_GlyphLayers' to access `COLR' table data. - - * include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this - structure to... - * include/freetype/freetype.h (FT_Glyph_LayerRec): ... this - header file. - (FT_Glyph_Layer): New typedef. - Update code to use it where appropriate. - - * src/base/ftobjs.c (FT_Get_GlyphLayers): New function. - -2018-05-15 Alexei Podtelezhnikov <apodtele@gmail.com> - - [base] Fix mono bitmap presetting (#53896). - - It is rather fundamental to set monochrome bitmap based on rounded - CBox because the b/w rasterizer turns on pixels when their centers are - inside the glyph outline. The dropout control is unpredictable and can - distort narrow glyphs if the bitmap is too wide. - - Reported by Chris Liddell. - - * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries - are too close, adjust them before rounding. - -2018-05-15 Werner Lemberg <wl@gnu.org> - - [psaux] Fix compiler warning (#53915). - - * src/psaux/psft.c (cf2_freeT1SeacComponent): Do it. - -2018-05-15 Werner Lemberg <wl@gnu.org> - - [sfnt] Fix memory leak in handling `COLR' data. - - * src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array - before reassigning allocated memory. - Only allocate `color_layers' if we don't have one already. - -2018-05-15 Werner Lemberg <wl@gnu.org> - - [sfnt] If `COLR' is present, don't assume that all glyphs use it. - - * src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if - current glyph is not a `COLR' base glyph. - - * src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate - `color_layers' if there are no color layers. - -2018-05-14 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'. - -2018-05-14 Werner Lemberg <wl@gnu.org> - - Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set. - - * src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it. - -2018-05-13 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Load_Glyph): Improve tracing. - -2018-05-13 Shao Yu Zhang <shaozhang@fb.com> - Werner Lemberg <wl@gnu.org> + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36241 - [sfnt] Preliminary support of colored layer outlines (#44689). + * src/smooth/ftgrays.c (LEFT_SHIFT): New macro. + (gray_render_conic) [BEZIER_USE_DDA]: Use it. - This commit enables OpenType's COLR/CPAL table handling; a typical - application are color emojis that can be scaled to any size. +2021-08-02 Werner Lemberg <wl@gnu.org> - If the color palette does not exist or is invalid, the rendering - step rasterizes the outline instead. The current implementation - assumes that the foreground is black. + * meson.build: Fix zlib support. - Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS. + 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`. - There are still some issues with metrics; additionally, an API to - fetch color layers is missing. + Also improve summary output. - * devel/ftoption.h, include/freetype/config/ftoption.h - (TT_CONFIG_OPTION_COLOR_LAYERS): New macro. + Problem reported by Moazin. - * include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec, - FT_Colr_InternalRec): New structures. - (FT_Slot_InternalRec): Add `color_layers' field. +2021-08-02 Anuj Verma <anujv@iitbhilai.ac.in> - * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func, - TT_Blend_Colr_Func): New function types. - (SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer', - and `colr_blend' fields. + [sdf] Fix out-of-range-access. - * include/freetype/internal/tttypes.h (TT_FaceRec): Add - `colr_and_cpal' field. + * src/sdf/ftbsdf.c (first_pass, second_pass): Fix range during forward pass. + Otherwise the index goes out of range for the last column. - * include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New - macros. + Fixes issue #1077. - * src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files. +2021-08-02 Anuj Verma <anujv@iitbhilai.ac.in> - * src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal): - Handle glyph color layers. + Fix invalid memory access in `bsdf` rasterizer. - * src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add - `ttcolr.c'. + 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/sfnt/sfdriver.c: Include `ttcolr.h'. - (PUT_COLOR_LAYERS): New macro. - Update call to `FT_DEFINE_SFNT_INTERFACE'. + * 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. - * src/sfnt/sfnt.c: Include `ttcolr.c'. +2021-07-29 Heiko Becker <heirecka@exherbo.org> - * src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables. - (sfnt_done_face): Updated. + * meson.build: Honor `--includedir` instead of hard-coding 'include'. - * src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers. +2021-07-29 Werner Lemberg <wl@gnu.org> -2018-05-12 Arkady Shapkin <arkady.shapkin@gmail.com> + src/sfnt/ttcolr.c: Minor formatting. - Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636). +2021-07-29 Dominik Röttsches <drott@chromium.org> - * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement - it. + [sfnt] 'COLR' v1 PaintSweepGradient spec update -2018-05-10 Alan Coopersmith <alan.coopersmith@oracle.com> + * 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. - Fix DLL compilation on Solaris. +2021-07-29 Dominik Röttsches <drott@chromium.org> - AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'. The - Solaris Studio 12.1 through 12.5 compilers see the - `-fvisibility=hidden' flag, but ignore it with a warning of: + [sfnt] Retrieve affine matrix from offset in 'COLR' v1 parsing. - cc: Warning: Option -fvisibility=hidden passed to ld, - if ld is invoked, ignored otherwise + * 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. - AC_LINK_IFELSE does the compile and then tries to link the result, - at which point the Solaris linker will issue an error: +2021-07-29 Dominik Röttsches <drott@chromium.org> - ld: fatal: option '-fvisibility=hidden' is incompatible with - building a dynamic executable + [sfnt] 'COLR' v1 PaintSkew related spec updates - If we don't use AC_LINK_IFELSE to catch the error, then configure - will fail further tests which attempt to link, such as those testing - dependencies like `libbz2'. + * 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. - Also, don't try adding `-fvisibility' if we have already added - `-xldscope', just use one of them, since Sun Studio 12 and earlier - compilers only issue a warning, and don't try passing through to the - linker to generate an error, so AC_LINK_IFELSE doesn't catch them. +2021-07-29 Dominik Röttsches <drott@chromium.org> - Tested on Solaris 11.4 beta with compiler versions: + [sfnt] PaintRotate/PaintRotateAroundCenter spec updates - Sun Studio 8 (Sun C 5.5) - Sun Studio 10 (Sun C 5.7) - Sun Studio 11 (Sun C 5.8) - Sun Studio 12 (Sun C 5.9) - Sun Studio 12.1 (Sun C 5.10) - Oracle Solaris Studio 12.2 (Sun C 5.11) - Oracle Solaris Studio 12.3 (Sun C 5.12) - Oracle Solaris Studio 12.4 (Sun C 5.13) - Oracle Developer Studio 12.5 (Sun C 5.14) - Oracle Developer Studio 12.6 (Sun C 5.15) - gcc 5.5.0 - gcc 7.3.0 + * 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. - and verified the libfreetype.so.6 generated by each of those - compilers exported the same set of symbols. +2021-07-29 Dominik Röttsches <drott@chromium.org> - * builds/unix/configure.raw: Implement it. + [sfnt] 'COLR' v1 PaintTranslate and PaintScale precision -2018-05-08 Werner Lemberg <wl@gnu.org> + * src/sfnt/ttcolr.c (read_paint): Implement spec changes in + PaintTranslate and PaintScale and friends. Update parsing to read + new shorter values. - [autofit] Avoid potential SEGV if running out of memory. +2021-07-29 AnuthaDev <anuthadev@gmail.com> - Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>. + README.git: Add Code of Conduct. - * src/autofit/afshaper.c (af_shaper_buf_create, - af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't - allocate and free a four-byte buffer. Instead, make those functions - no-ops; the calling functions will provide a pointer to a buffer - instead. +2021-07-25 Werner Lemberg <wl@gnu.org> - * src/autofit/afcjk.c (af_cjk_metrics_init_widths, - af_cjk_metrics_init_blues, af_cjk_metrics_check_digits), - src/autofit/aflatin.c (af_latin_metrics_init_widths, - af_latin_metrics_init_blues, af_latin_metrics_check_digits) - [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for - `shaper_buf'. + ChangeLog housekeeping. -2018-05-07 Nikolaus Waxweiler <madigens@gmail.com> + Archive old `ChangeLog` file. - [cmake] Allow using project as subfolder in other project. + 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 - * CMakeLists.txt: Test for CMake build directory being different - from source directory. Provide other parts of the build system - access the full include directory. + gitlog-to-changelog --format='%B%n' -2018-05-07 Werner Lemberg <wl@gnu.org> + or something similar (this script is part of the 'gnulib' repository). - [build] Suppress configure's `nothing to be done' message. +2021-07-24 Werner Lemberg <wl@gnu.org> - This is due to calling the configure script via `make' (within the - top-level `configure' wrapper script). The same can happen for all - other secondary make targets that are used to only modify the - primary one, e.g., `make setup devel'. + Fix some `cppcheck` warnings. - * builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16), - builds/os2/detect (visualage, watcom, borlandc, devel), - builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk - (visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc, - devel-gcc): Use no-op recipe. + * src/bzip2/ftbzip2.c (ft_bzip2_file_skip_output), src/gzip/ftgzip.c + (ft_gzip_file_skip_output): Reduce scope of `delta`. -2018-05-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + * src/psaux/psintrp.c, src/psaux/psintrp.h (cf2_interpT2CharString): Add + `const` to `buf` parameter. - Support symbol visibility features of Sun / Oracle C compilers. + * 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`. - Reported by Kiyoshi Kanazawa: - https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html - Thanks to the suggestions by Alexei and Alan Coopersmith. + * src/smooth/ftgrays.c (gray_render_conic): Reduce scope of `split`. + (gray_sweep, gray_sweep_direct): Reduce scope of `area`. - * builds/unix/configure.raw: Check if "-xldscope=hidden" is - accepted, and if so, it is added to CFLAGS. This is the option - making Sun / Oracle C compilers hide the symbols from global - scope. - * include/freetype/config/ftconfig.h: Use "__global" prefix - for FT_EXPORT() macro, if SunPro C is newer than Sun ONE - Studio 8 (2003). - * builds/unix/ftconfig.in: Ditto. - * builds/vms/ftconfig.h: Ditto. + * src/tools/apinames.c (names_dump) <OUTPUT_WATCOM_LBC>: Reduce scope of + `temp`. -2018-05-02 Nikolaus Waxweiler <madigens@gmail.com> +2021-07-24 AnuthaDev <anuthadev@gmail.com> - Unbreak CMake Windows installation + * .gitlab-ci.yml: Fixed cmake build, using correct options. - * CMakeLists.txt: Generate ftconfig.h on non-UNIX. +2021-07-24 AnuthaDev <anuthadev@gmail.com> -2018-05-02 Werner Lemberg <wl@gnu.org> + * CMakeLists.txt: Make `cmake` handle disabled dependencies correctly. - Remove FT_CONFIG_OPTION_PIC and related code. + Include 'CMakeDependentOption'. - */* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this - preprocessor symbol. + Replace `FT_WITH_XXX` options with `FT_DISABLE_XXX` and `FT_REQUIRE_XXX` + pairs. Update option logic accordingly. - */*: Replace `XXX_GET' macros (which could be either a function in - PIC mode or an array in non-PIC mode) with `xxx' arrays. + Fixes #1066. - * include/freetype/internal/ftpic.h, src/autofit/afpic.c, - src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h, - src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h, - src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c, - src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h, - src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c, - src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h: - Removed. +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. -Copyright (C) 2018-2021 by -David Turner, Robert Wilhelm, and Werner Lemberg. + 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. -This file is part of the FreeType project, and may only be used, modified, -and distributed under the terms of the FreeType project license, -LICENSE.TXT. By continuing to use, modify, or distribute this file you -indicate that you have read the license and understand and accept it -fully. + Fixes #1075. + * src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h + (AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated. -Local Variables: -version-control: never -coding: utf-8 -End: + * src/autofit/afwrtsys.h: Split into... + * src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files. |