)]}'
{
  "log": [
    {
      "commit": "fa1ee00d232591d7d9363fd4877aca8bb6ee7434",
      "tree": "0a8d91ecf23232c91e0961203202ae4fe38a168d",
      "parents": [
        "0724bb77e55c0d86e0771a1d0a1f33fb2d6798aa"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@gmail.com",
        "time": "Thu Jan 16 15:01:44 2025 -0500"
      },
      "committer": {
        "name": "Filip Filmar",
        "email": "fmil@google.com",
        "time": "Wed Feb 12 17:01:01 2025 -0800"
      },
      "message": "[freetype2] enable fsanitize\u003dfunction\n\nBug: https://fxbug.dev/42078767\nChange-Id: Idc962668685b060a4b5e8dce74f4b7be0e57c105\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/1189312\nReviewed-by: Gulfem Savrun Yeniceri \u003cgulfem@google.com\u003e\nReviewed-by: Daniel Thornburgh \u003cdthorn@google.com\u003e\n"
    },
    {
      "commit": "0724bb77e55c0d86e0771a1d0a1f33fb2d6798aa",
      "tree": "2115dfb777978db6e16e3ea64ae4f43b56b2e3c9",
      "parents": [
        "65c8fbe4867b77451e2e326eeee798bbd692c500"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@gmail.com",
        "time": "Thu Jan 16 14:50:59 2025 -0500"
      },
      "committer": {
        "name": "Filip Filmar",
        "email": "fmil@google.com",
        "time": "Wed Feb 12 17:01:01 2025 -0800"
      },
      "message": "[freetype2] Remove 9 year old forwarding target\n\nChange-Id: Ic272a879fcebcc7044d1840c82cffa6a0043f70b\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/1189235\nReviewed-by: Gulfem Savrun Yeniceri \u003cgulfem@google.com\u003e\nReviewed-by: Daniel Thornburgh \u003cdthorn@google.com\u003e\n"
    },
    {
      "commit": "65c8fbe4867b77451e2e326eeee798bbd692c500",
      "tree": "25ccfddf625a638ad8568f91b6e72da68561add7",
      "parents": [
        "7029a11c485f8ea3bd01a833bd0562082165015f"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@gmail.com",
        "time": "Thu Jan 16 14:47:14 2025 -0500"
      },
      "committer": {
        "name": "Filip Filmar",
        "email": "fmil@google.com",
        "time": "Wed Feb 12 17:01:01 2025 -0800"
      },
      "message": "[freetype2] Remove build workaround\n\nUpstream fixed this.\n\nFixed: https://fxbug.dev/321109569\nChange-Id: Ife85280f7164a9631bc9d8697db3ef9d78f75db6\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/1189234\nReviewed-by: Gulfem Savrun Yeniceri \u003cgulfem@google.com\u003e\nReviewed-by: Daniel Thornburgh \u003cdthorn@google.com\u003e\n"
    },
    {
      "commit": "7029a11c485f8ea3bd01a833bd0562082165015f",
      "tree": "6daecade21ba585f72c24d867ad2bffb8c9515f3",
      "parents": [
        "311feb7c562dbc7e7fbbfef3d87c02df7e3337e0"
      ],
      "author": {
        "name": "Ben Wagner",
        "email": "bungeman@google.com",
        "time": "Fri Oct 23 08:29:14 2020 +0200"
      },
      "committer": {
        "name": "Filip Filmar",
        "email": "fmil@google.com",
        "time": "Tue Feb 11 16:33:23 2025 -0800"
      },
      "message": "[freetype2][fuchsia] Update freetype2 to Chromium freetype2 ToT b1f47850878d232eea372ab167e760ccac4c4e32\n\nbased on the repos at:\n\n- source: https://chromium.googlesource.com/chromium/src/third_party/freetype2/\n- destination: https://fuchsia.googlesource.com/third_party/freetype2/\n\nWith the intention to continue updating with an automated roller going\nforward. This commit was made from applying the patches generated as follows:\n\n```\nmkdir -p $HOME/tmp/freetype2\ncd $HOME/tmp/freetype2\ngit clone https://fuchsia.googlesource.com/third_party/freetype2 fuchsia\ngit clone https://chromium.googlesource.com/chromium/src/third_party/freetype2 chromium\ncd fuchsia\ngit remote add chromium ../chromium\ngit fetch chromium master\ngit format-patch 6a2b3e4007e794bfc6c91030d0ed987f925164a8..b1f47850878d232eea372ab167e760ccac4c4e32\n```\n\nThis creates 1307 patches in the current directory.\n\n```\nmkdir -p $HOME/tmp/freetype2/patchlog\nmv *.patch ../patchlog\ngit am --3way ../patchlog/*.patch\n\n\\# This will stop about two dozen times with hard to justify merge\n\\# conflicts. Suppose the patch to fail is ``../patchlog/0000-xxxx.patch`\n\\# Repeat the following procedure until success:\n\n\\# The option --theirs does not exist for `git am`.\ngit apply --3way --theirs ../patchlog/0000-xxxx.patch\n\n\\# manually verify the resulting `git diff`\ngit am --continue\n\n\\# End procedure.\n\n\\# Once done, you can create a squash commit using the following.\ngit rebase chromium/master..HEAD --interactive\n\\# Mark the first commit as `pick`, rest as `squash`.\n```\n\nIncluded commit text:\n\n* src/sfnt/pngshim.c (Load_SBit_Png): Fix memory leak (#59322).\n\nThe issue is that `rows` is allocated but will not be freed in the\nevent that the call to `png_read_image` fails and calls `longjmp`.\n\n* meson.build: Fix \u0027harfbuzz\u0027 and \u0027brotli\u0027 build options (#59347).\n\nWithout this patch, \u0027harfbuzz\u0027 and \u0027brotli\u0027 are always required.\n\nPatch submitted anonymously in Savannah bug report.\n\nMinor update to forthcoming OpenType 1.8.4 standard.\n\n* src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Limit\nsize of `regionCount`.\n\nftimage.h: Improve description of `FT_Span`.\n\nFrom Piotr Grochowski \u003cpiotrunio-2004@wp.pl\u003e.\n\nAvoid non-ASCII character in public header file.\n\nAdd preamble.\n\nBetter scan converter documentation.\n\nMinor clean-ups of last commit.\n\nMention external modules.\n\nFix documentation build.\n\nThe empty line after `* @description:` caused the refdoc build to fail,\nsee\n\n  https://github.com/freetype/docwriter/issues/77\n\ndocs/CHANGES: Updated.\n\nTypo.\n\n* meson.build: Fix .pc file generation.\n\nFor backwards compatibility we need the libtool version, not the .so\nnumber.\n\nReported by Nikolaus.\n\n* src/type42/t42parse.c (t42_parse_sfnts): More tracing messages.\n\nDowngrade property tracing.\n\nDemote old engine for lack of CFF2.\n\n* src/cff/cffobjs.c (cff_iriver_init): Always default to Adobe engine.\n* src/cid/cidobjs.c (cid_driver_init): Ditto.\n* src/type1/t1objs.c (T1_Driver_Init): Ditto.\n\n.mailmap: Updated and sorted.\n\nbuilds/meson/*: Add copyright boilerplate.\n\n* src/tools/chktrcmp.py (trace_use_pat): Update to current use.\n\n* .gitmodules: Add \u0027dlg\u0027 library\u0027s git repository as submodule.\n\nNecessary changes to make \u0027dlg\u0027 compile.\n\n* autogen.sh (copy_submodule_files): New script to copy all the\nnecessary source and include files from `submodules/dlg` to\n`src/dlg`.\n\n* src/dlg/dlgwrap.c: New wrapper file for `src/dlg.c`.  It enables\nthe build of \u0027dlg\u0027 if the `FT_LOGGING` macro is defined.\n\n* src/dlg/rules.mk: New sub-Makefile.\n\n* builds/freetype.mk (DLG_DIR): New variable to include the\nheader files of the \u0027dlg\u0027 library.\n(INCLUDES): Add `DLG_DIR`.\n(FT_CFLAGS): Add `-std\u003dc99\u0027 flag.\nInclude `src/dlg/rules.mk` file to build \u0027dlg\u0027 library.\n(OBJ_S, OBJ_M): Add `DLG_OBJS_M` and `DLG_OBJS_S`.\n\n* builds/toplevel.mk: For builds directly from the git repository\nwe need to copy files from `submodule/dlg` to `src/dlg`.\n\n* include/freetype/config/ftoption.h, devel/ftoption.h (FT_LOGGING):\nNew macro to enable or disable the logging facility in FreeType.\n\nAdd functions and variables to print logs to a file.\n\n* include/freetype/internal/ftdebug.h: Added dlg\u0027s header files.\n(FT_LOG): New macro to redirect trace logs to dlg\u0027s API\u0027s whenever\n`FT_LOGGING\u0027 is defined.\n(ft_logging_init, ft_logging_deinit): New functions to handle\ninitialization and uninitialization of logging related variables.\n(ft_log_handler): New function to handle logs of FreeType.\n\n* src/base/ftdebug.c: Add necessary logging related variables.\n(ft_logging_init, ft_logging_deinit, ft_log_handler): Add function\ndefinitions.\n\n* src/base/ftinit.c (FT_Init_FreeType) [FT_LOGGING]: Call\n`ft_logging_init`.\n(FT_Done_FreeType) [FT_LOGGING]: Call `ft_logging_deinit`.\n\n* src/base/ftobjs.c (FT_New_Library): Call `ft_debug_init` only if\n`FT_LOGGING` is not defined.\n\nUpdates to print timestamp and name of `FT_COMPONENT` in logs.\n\n* include/freetype/internal/ftdebug.h (FT_LOGGING_TAG,\nFT_LOGGING_TAG_): New macros to resolve the value of `FT_COMPONENT\u0027\ninto a string.\n(ft_add_tag, ft_remove_tag): New functions to add and remove dlg tags.\n\n* src/base/ftdebug.c: Add new variables to control the logging of\ntimestamp and name of `FT_COMPONENT` along with actual logs.\n(ft_add_tag, ft_remove_tag): Add function definitions.\n(ft_log_handler): Updates to print timestamp and name of\n`FT_COMPONENT`.\n(ft_debug_init) [FT_LOGGING]: Users can now control the logging of\ntimestamp and name of `FT_COMPONENT` by adding tags in the\n`FT2_DEBUG` environment variable.\n\nAdd public API to change the levels of tracing components.\n\n* include/freetype/ftlogging.h: New header file.\n\n* include/freetype/internal/ftdebug.h [FT_LOGGING]: Include\n`ftlogging.h`.\n\n* src/base/ftdebug.c (ft_custom_trace_level): New variable.\n(ft_debug_init): Update to support change of levels of tracing\ncomponents of FreeType at run-time.\n(FT_Trace_Set_Level): New function to change the levels of tracing\ncomponents at run-time.\n(FT_Trace_Set_Default_Level): New function to reset the levels of\ntracing components back to default.\n\nAdd public API to change log handling function.\n\n* include/freetype/ftlogging.h (FT_Custom_Log_Handler): New function\ntypedef to store the custom callback logging function.\n(FT_Set_Log_Handler, FT_Set_Default_Log_Handler): New functions to\nset and reset custom log handler.\n\n* include/freetype/internal/ftdebug.h (custom_output_handler): New\nvariable to support a custom callback logging function.\n(FT_Logging_Callback): A new function typedef to print log using\ncustom callback logging function, which is set using\n`FT_Set_Log_Handler`.\n(FT_Log): Use it.\n\n* src/base/ftdebug.c (FT_Set_Log_Handler,\nFT_Set_Default_Log_Handler, FT_Logging_Callback): Add function\ndefinitions.\n\nChanges to build \u0027dlg\u0027 with FreeType on Windows.\n\nWe only support Visual C++ 2010 and newer.\n\n* builds/windows/vc2010/script.bat: New windows batch file to copy\nnecessary \u0027dlg\u0027 files from `submodules/dlg` to `src/dlg`.  This file\nis used as a pre-built event in Visual C++.\n\n* builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c`.\n\n* builds/windows/vc2010/freetype.vcxproj.filters: Add\n`src/dlgwrap.c`.\n\n* builds/windows/vc2010/freetype.vcxproj\n(AdditionalIncludeDirectories): Add include files of dlg for \u0027Debug\u0027\nand \u0027Debug Static\u0027 configurations on both \u0027x64\u0027 and \u0027win32\u0027\nplatforms.\n(PreprocessorDefinitions): Add `FT_LOGGING` for \u0027Debug\u0027 and \u0027Debug\nStatic\u0027 configurations on both \u0027x64\u0027 and \u0027win32\u0027 platforms.\nAdd `DLG_STATIC\u0027 for \u0027Debug\u0027 configuration on \u0027x64\u0027 and \u0027win32\u0027\nplatforms.\n(DisableLanguageExtensions): We need to disable the `/Za` option\nwhen building \u0027dlg\u0027 with FreeType as \u0027dlg\u0027 strictly follows the C99\nstandard.  Visual C++ produces behaves unexpectedly when\ncompiling a C99 file with `/Za` option enabled.\n\n* src/*: Fix `-Wformat` warnings.\n\nUpdate logging related documentation.\n\n* docs/DEBUG: Updates related to `FT_LOGGING`.\n\n* README.git: Updates related to logging.\n\nImplement vertical alignment of log printing.\n\nBased on a patch by Priyesh.\n\n* include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH):\nNew macro.\n\n* src/base/ftdebug.c, builds/windows/ftdebug.c (ft_log_handler):\nPrint logs after a fixed width to handle different lengths of\n`FT_COMPONENT` entries.\nUse `ft_strrchr` to check for final newline character.\n\nCheck for \u0027pthread\u0027 library.\n\n* builds/unix/ax_pthread.m4: New file, taken from \u0027autoconf-archive\u0027\ngit repository.\n\n* builds/unix/configure.raw: Check for \u0027pthread\u0027; also check whether\nit works.\n\n* src/type42/t42parse.c: Fix `-Wformat` warnings.\n\nTypos.\n\nFix compiler warnings.\n\n* src/dlg/dlgwrap.c: Duplicate some feature test macros from\n`dlg.c`, which must come first before loading standard headers.  For\nexample, `freetype.h` loads `stdio.h` if compiled in debug mode.\n\nUpdate `.gitignore`.\n\nUse gcc (and clang) in C99 mode.\n\nOther compilers are unchanged.\n\n* builds/compiler/gcc-dev.mk, builds/compiler/gcc.mk (ANSIFLAGS):\ns/-ansi/-std\u003dc99/.\n\n* builds/freetype.mk (FT_CFLAGS): Remove `-std\u003dc99`.\n\n* builds/unix/configure.raw: Handle C99.\nRemove no longer needed test for gcc 4.6 and earlier.\n\nImprove setup for \u0027dlg\u0027 library.\n\n* autogen.sh (copy_submodule_file), builds/toplevel.mk: Redirect\nstderr to `/dev/null`.\n\n* builds/toplevel.mk: Move code block to handle \u0027dlg\u0027 stuff into\n`check_platform` conditional.\nAlso fix wildcard expressions for guarding `git submodule` commands.\nAlso make file copying work with non-Unix platforms (untested).\n\n* src/bdf/bdflib.c: Fix `-Wformat` warning.\n\n* submodules/dlg: Updated to commit 9f0c8b22.\n\nDon\u0027t close \u0027stderr\u0027 after logging.\n\n* src/base/ftdebug.c, builds/windows/ftdebug.c (ft_logging_deinit):\nFix it.\n\n* src/*: Don\u0027t use more than one \u0027\\n\u0027 in `FT_TRACE` and `FT_ERROR`.\n\nThis ensures good logging output, with all lines having a proper\nprefix (if requested).\n\n* builds/toplevel.mk (do-dist): Remove `submodules` directory.\n\ndocs/CHANGES: Mention `FT_LOGGING`.\n\n*/*: s/FT_LOGGING/FT_DEBUG_LOGGING/.\n\n* src/*: More fixes for using a \u0027\\n\u0027 in `FT_TRACE` and `FT_ERROR`.\n\n* builds/unix/configure.raw: Don\u0027t set `FT_DEBUG_LOGGING`.\n\nAll debug options are handled exclusively in `ftoption.h`.\n\n.mailmap: Add Priyesh.\n\nPacify static analysis tools (#59682).\n\n* src/type42/t42objs.c (T42_Size_Init, T42_GlyphSlot_Init): Avoid\nwarnings about uninitialized variables.\n\nDocumentation edits.\n\nFix incremental metrics (#59503).\n\n* src/truetype/ttgload.c (tt_get_metrics, load_truetype_glyph):\nPreviously, the code would populate the phantom points before\ncalling the `get_glyph_metrics` callback.  For formats like PCL XL\nformat 1, class 2 downloaded fonts (where metrics are removed from\nthe TTF header), this causes problems when the hinting program uses\nthe phantom points (misplaced and distorted glyphs) due to the\nmetrics being unset (all zeros).\n(tt_get_metrics_incr_overrides): Renamed to...\n(tt_get_metrics_incremental): ... this.  Updated caller\n\n* include/freetype/ftincrem.h: Update the documentation to make it\nclearer that `get_glyph_metrics` is to retrieve metrics from a\nnon-standard source, but *not* for the purpose of imposing custom\nmetrics.\n\nDocumentation edits.\n\n* include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): New public macro.\n\nThe driver name is needed for `FT_Property_Set\u0027 and `FT_Property_Get\u0027.\n\nftmodapi.h: Replace 0xA0 characters with spaces.\n\nFix double division in stem darkening.\n\nThe old code used to divide the darkening amount by em_ratio twice,\nleading to unnecessarily bold stems on certain fonts with higher\nunits per em (e.g. Inter). This patch fixes it.\n\nThe return value of af_loader_compute_darkening was also changed to\nuse 16.16 fixed point to get rid of a redundant truncation operation.\nThis should slightly improve the precision, although it\u0027s still\nbottlenecked by the emboldening function, which uses 26.6 fixed point.\n\n* src/autofit/afloader.[ch]\n(af_loader_compute_darkening): Return FT_Fixed.\n(af_loader_embolden_glyph_in_slot): Revise calculations.\n\nmeson.build (ft2_defines): Fix builds on Windows.\n\n* builds/windows/detect.mk (COPY): Make it work with `shell`.\n\nWithout this patch, we get the error\n\n  builds/toplevel.mk:127: *** missing separator.  Stop.\n\nReported by Anuj, with a solution from Alexei.\n\nAllow renderers of different formats.\n\n* src/base/ftobjs.c (FT_Render_Glyph_Internal): Do not return if the\nglyph\u0027s slot format is `FT_GLYPH_FORMAT_BITMAP`.  The forthcoming\n\u0027bsdf\u0027 renderer will require bitmaps for processing.\n\n* src/base/ftobjs.c (ft_add_renderer, ft_remove_renderer): Remove\nrenderer\u0027s glyph format check before adding and removing them.  The\n\u0027bsdf\u0027 renderer will have a format `FT_GLYPH_FORMAT_BITMAP`.\n\nAdd data types required for the forthcoming \u0027sdf\u0027 module.\n\n* include/freetype/freetype.h (FT_Render_Mode): Add new render mode\n`FT_RENDER_MODE_SDF`, which will be used to generate SDF.\n\n* include/freetype/ftimage.h (FT_Pixel_Mode): Add new pixel mode\n`FT_PIXEL_MODE_GRAY16`, which will be the output of the \u0027sdf\u0027\nmodule.\n(FT_RASTER_FLAG_SDF): New raster flag to be used internally by the\n\u0027sdf\u0027 module.\n\n* include/freetype/fttypes.h (FT_F6Dot10): New data type.\n\nAllow renderers of different formats.\n\n* src/base/ftobjs.c (FT_Render_Glyph_Internal): Do not return if the\nglyph\u0027s slot format is `FT_GLYPH_FORMAT_BITMAP`.  The forthcoming\n\u0027bsdf\u0027 renderer will require bitmaps for processing.\n\n* src/base/ftobjs.c (ft_add_renderer, ft_remove_renderer): Remove\nrenderer\u0027s glyph format check before adding and removing them.  The\n\u0027bsdf\u0027 renderer will have a format `FT_GLYPH_FORMAT_BITMAP`.\n\nAdd files for new \u0027sdf\u0027 module.\n\nHere is a breakdown of what the files will contain.\n\n* src/sdf/ftsdfrend.c, src/sdf/ftsdfrend.h: The \u0027sdf\u0027 and \u0027bsdf\u0027\nrenderers.\n\n* src/sdf/ftsdf.c, src/sdf/ftsdf.h: The rasterizer for the \u0027sdf\u0027\nrenderer.\n* src/sdf/ftbsdf.c, src/sdf/ftbsdf.h: The rasterizer for the \u0027bsdf\u0027\nrenderer.\n\n* src/sdf/ftsdfcommon.h: Commmon properties and functions for both\nrasterizers.\n* src/sdf/ftsdferrs.h: Common error defines.\n\n* src/sdf/sdf.c: For building a single object of the entire module.\n\nAdd common elements for \u0027sdf\u0027 and \u0027bsdf\u0027 renderers.\n\n* src/sdf/ftsdfrend.h (SDF_Rendere_Module, ft_sdf_renderer_class,\nft_bitmap_sdf_renderer_class): New structures.\n\n* src/sdf/ftsdfcommon.h (DEFAULT_SPREAD, MIN_SPREAD_MAX_SPREAD,\nUSE_SQUARED_DISTANCES): New macros.\n(FT_INT_26D6, FT_INT_16D16, FT_26D6_16D16): New macros.\n(FT_CALL, VECTOR_LENGTH_16D16): New macros.\n(FT_26D6_Vec, FT_16D16_Vec, FT_16D16, FT_26D6, FT_6D10, FT_CBox):\nNew typedefs.\n(square_root): New macro.\n\n* src/sdf/ftsdferrs.h: Add module error setup.\n\nAdd \u0027sdf\u0027 renderer.\n\n* src/sdf/ftsdf.c: Add \u0027sdf\u0027 renderer along with its interface\nfunctions.\nAlso add functions to set and get properties.\n\nAdd raster parameters structure.\n\n* src/sdf/ftsdf.h (SDF_Raster_Params): New structure.\n\n* src/sdf/sdf.c: Include source files in order to make a single\nobject of the module.\n\nStructs, enums, macros, and functions for \u0027sdf\u0027 rasterizer.\n\n* src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER)\n[FT_DEBUG_LEVEL_TRACE \u0026\u0026 FT_DEBUG_MEMORY]: New macros.\n(SDF_MemoryUser) [FT_DEBUG_LEVEL_TRACE \u0026\u0026 FT_DEBUG_MEMORY]: New\nstruct for memory usage tracing.\n(sdf_alloc, sdf_free) [FT_DEBUG_LEVEL_TRACE \u0026\u0026 FT_DEBUG_MEMORY]: New\nfunctions for memory usage tracing.\n\n(SDF_ALLOC, SDF_FREE): New macros for memory management.\n(SDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP,\nSDF_MEMORY_TRACKER_DONE): New macros to set up memory usage tracing.\n\n(USE_NEWTON_FOR_CONIC, MAX_NEWTON_DIVISIONS, MAX_NEWTON_STEPS,\nCORNER_CHECK_EPSILON, CG_DIMEN): New configuration macros for\ncontrolling the process of finding the shortest distance.\n\n(MUL_26D6, VEC_26D6_DOT): New auxiliary macros.\n\n(SDF_TRaster, SDF_Edge, SDF_Contour, SDF_Shape, SDF_Signed_Distance,\nSDF_Params): New structs for setting up SDF data.\n(SDF_Edge_Type, SDF_Contour_Orientation): New enums for SDF data.\n\n(zero_vector, null_edge, null_contour, null_shape, max_sdf): Useful\nconstants.\n\n(sdf_edge_new, sdf_edge_done, sdf_contour_new, sdf_contour_done,\nsdf_shape_new, sdf_shape_done): New constructors and destructors.\n\nAdd functions to decompose `FT_Outline`.\n\n* src/sdf/ftsdf.c (sdf_move_to, sdf_line_to, sdf_conic_to,\nsdf_cubic_to): New auxiliary decomposition functions.\n(sdf_compose_funcs): New structure.\n(sdf_outline_decompose): New function.\n\nAdd utility functions for contours.\n\n* src/sdf/ftsdf.c (get_control_box, get_contour_orientation): New\nfunctions.\n(split_conic, split_cubic, split_sdf_conic, split_sdf_cubic,\nsplit_sdf_shape): New functions.\n\nAdd essential math functions.\n\n* src/sdf/ftsdf.c (cube_root, arc_cos) [!USE_NEWTON_FOR_CONIC]: New\nauxiliary functions.\n\n* src/sdf/ftsdf.c (solve_quadratic_equation, solve_cubic_equation)\n[!USE_NEWTON_FOR_CONIC]: New functions.\n\nAdd function to resolve corner distances.\n\n* src/sdf/ftsdf.c (resolve_corner): New function.\n\nAdd shortest distance finding functions.\n\n* src/sdf/ftsdf.c (get_min_distance_line, get_min_distance_conic,\nget_min_distance_cubic): New functions.  Note that\n`get_min_distance_conic` comes with two implementations (using an\nanalytical and an iterative method, to be controlled with the\n`USE_NEWTON_FOR_CONIC` macro).\n\nAdd functions to get shortest distance from any edge/contour.\n\n* src/sdf/ftsdf.c (sdf_edge_get_min_distance): New function.\n(sdf_contour_get_min_distance): New function, currently disabled.\n\nAdd function to generate SDF.\n\n* src/sdf/ftsdf.c (sdf_generate): New function, currently disabled.\nThis is a proof-of-concept implementation: It doesn\u0027t use any\noptimization, it simply checks all grid points against all contours.\n\nAdd subdivision and bounding box optimization.\n\n* src/sdf/ftsdf.c (sdf_generate_bounding_box): New function, which\nis an optimized version of `sdf_generate`.\n(sdf_generate_subdivision): New function.\n\nAdd interface functions for the \u0027sdf\u0027 rasterizer.\n\n* src/sdf/ftsdf.c (sdf_raster_new, sdf_raster_reset,\nsdf_raster_set_mode, sdf_raster_render, sdf_raster_done): New\nfunctions.\n(ft_sdf_raster): New structure.\n\nAdd build infrastructure.\n\n* src/sdf/module.mk, src/sfd/rules.mk: New files.\n\n* src/sdf/ftsdf.h (ft_sdf_raster): New forward declaration.\n\n* include/freetype/ftmoderr.h (FT_MODERRDEF): Add error definition\nfor the \u0027sdf\u0027 module.\n\n* include/freetype/internal/fttrace.h (FT_TRACE_DEF): Add trace\ndefinition for the `sdf\u0027 module.\n\n* modules.cfg (RASTER_MODULES): Add the `sdf\u0027 module to the list of\nrasterizers.\n\nAdded basic overlapping contour support.\n\n* src/sdf/ftsdf.c (sdf_generate_with_overlaps): New function.\n(sdf_raster_render): Enable it.\n\nAdd \u0027sdf\u0027 module to non-gnumake build systems.\n\n* include/freetype/config/ftmodule.h: Add both the \u0027sfd\u0027 and \u0027bsfd\u0027\nrenderers to the list of modules.\n\n* CMakeLists.txt (BASE_SRCS): Add \u0027sdf\u0027 single-object module.\n\nAdd essential structures for the \u0027bsdf\u0027 rasterizer.\n\n* src/sdf/ftbsdf.c (ONE): New macro.\n(BSDF_TRaster, ED, BSDF_Worker): New structures.\n(zero_ed): New constant.\n\nAdd function to find edge pixels in a grid of alpha values.\n\n* src/sdf/ftbsdf.c (bsdf_is_edge): New function.\n\nAdd functions to compute pixel edge distances.\n\n* src/sdf/ftbsdf.c (compute_edge_distance, bsdf_approximate_edge):\nNew functions.\n\nAdd function to copy source bitmap to distance map.\n\n* src/sdf/ftbsdf.c (bsdf_init_distance_map): New function.\n\nAdd \u00278-point sequential Euclidean distance mapping\u0027 algorithm.\n\n* src/sdf/ftbsdf.c (compare_neighbor, first_pass, second_pass,\nedt8): New functions.\n\nAdd function to copy SDF data into output bitmap.\n\n* src/sdf/ftbsdf.c (finalize_sdf): New function.\n\nAdd interface functions for the \u0027bsdf\u0027 rasterizer.\n\n* src/sdf/ftsdf.c (bsdf_raster_new, bsdf_raster_reset,\nbsdf_raster_set_mode, bsdf_raster_render, bsdf_raster_done): New\nfunctions.\n\n(ft_bitmap_sdf_raster): New variable.\n\n* src/sdf/ftsdf.h: Updated.\n\nAdd \u0027bsdf\u0027 renderer to \u0027sdf\u0027 module.\n\n* src/sdf/ftsdfrend.c (ft_bsdf_render): New function.\n\n(ft_bitmap_sdf_renderer_class): New structure.\n\nAdd brief technical overview of both rasterizers.\n\nAdd debugging function.\n\n* src/sdf/ftsdf.c (sdf_shape_dump): New function.\n\ndocs/CHANGES: Mention new SDF module.\n\nAdd copyright notices.\n\nFix tracing.\n\n* include/freetype/internal.fttrace.h: Add \u0027bsdf\u0027 component.\n\n* src/sdf/ftbsdf.c, src/sdf/ftsdf.c (FT_COMPONENT): Define.\n\nFix `make multi`.\n\n* src/sdf/ftsdf.c: Include `ftoutln.h`.\n\nTwo more copyright notices.\n\n.mailmap: Updated and synchronized with \u0027freetype2-demos\u0027 repository.\n\nRemove custom memory tracker.\n\nThe internal FreeType memory tracker is sufficient.\n\n* src/sdf/ftsdf.c (FT_DEBUG_INNER, FT_ASSIGNP_INNER, SDF_MemoryUser,\nsdf_alloc, sdf_free, SDF_ALLOC, SDF_FREE,\nSDF_MEMORY_TRACKER_DECLARE, SDF_MEMORY_TRACKER_SETUP,\nSDF_MEMORY_TRACKER_DONE): Removed.\n\ns/SDF_ALLOC/FT_ALLOC/.\ns/SDF_FREE/FT_FREE/.\n\nOther updates.\n\n* src/base/ftobjs.c (pixel_modes): Updated.\n\nTypo.\n\nUse \u0027counter-clockwise\u0027, not \u0027anti-clockwise\u0027.\n\nWe prefer US nomenclature.\n\n* src/sdf/ftsdf.c (SDF_Contour_Orientation):\ns/SDF_ORIENTATION-ACW/SDF_ORIENTATION_CCW/.\nUpdate all users.\n\nAdd SDF to VC2010 project.\n\n* builds/windows/vc2010/freetype.vcxproj: Updated;\nAfterBuild conveniences.\n\n* meson.build: Fix \u0027png\u0027 build option (#59458).\n\nWithout this patch, \u0027png\u0027 is always required.\n\n* meson.build: Add summary.\n\nBased on a patch from Vincent Torri \u003cvincent.torri@gmail.com\u003e.\n\nMove the headers to include/dlg to simplify their use.\n\n* autogen.sh, builds/toplevel.mk: Copy headers to incluide/dlg.\n* builds/freetype.mk, builds/windows/vc2010/freetype.vcxproj:\nSimplify included path.\n* include/freetype/internal/ftdebug.h: Simplify #include.\n* src/dlg/rules.mk, .gitignore: Updated.\n\nFix typos from last commit.\n\nFix ABI incompatibility.\n\n* include/freetype/ftimage.h (FT_Pixel_Mode): Don\u0027t insert\n`FT_PIXEL_MODE_GRAY16\u0027 but append it.\n\n* src/base/ftobjs.c (pixel_modes): Updated.\n\nRelocate `FTMODULE_H\u0027.\n\n* builds/toplevel.mk: Place `FTMODULE_H\u0027 in include/.\n* builds/freetype.mk: Simplify included path.\n\nFix up DLG build with VC++.\n\n* builds/windows/vc2010/script.bat: Copy headers to include/.\n* builds/windows/vc2010/freetype.vcxproj: Remove DLG paths.\n\nTweak .gitignore.\n\nRevert `FTMODULE_H\u0027 changes.\n\n* builds/toplevel.mk, builds/freetype.mk: Revert changes.\n\n* builds/*: s/BUILD_DIR/PLATFORM_DIR/.\n\nThe old variable name caused confusion.\n\nAdd types required for \u0027COLR\u0027 v1 to public API (#59703).\n\n* include/freetype/freetype.h (FT_PaintFormat, FT_ColorStopIterator,\nFT_ColorIndex, FT_ColorStop, FT_PaintExtend, FT_ColorLine,\nFT_Affine23, FT_CompositeMode, FT_OpaquePaint, FT_PaintColrLayers,\nFT_PaintSolid, FT_PaintLinearGradient, FT_PaintRadialGradient,\nFT_PaintGlyph, FT_PaintColrGlyph, FT_PaintTransformed,\nFT_PaintTranslate, FT_PaintRotate, FT_PaintSkew, FT_PaintComposite,\nFT_COLR_Paint): Adding structs and enum to represent paint format,\ncolor stop information, gradient extend information, structs to\nreference paint offsets, and to define transforms and compositions.\nAdding a union type to represent the union of the structs,\ndistinguished by `FT_PaintFormat`.\n\nAdd new methods required for \u0027COLR\u0027 v1 to public API (#59703).\n\n* include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): New method\nfor retrieving the root paint object for a color glyph by specifying\na glyph ID.\n(FT_Get_Paint_Layers): New method for retrieving the layers of a\n`PaintColorGlyph`.\n(FT_Get_ColorLine_Stops): New method for retrieving the stops of a\ncolor.\n(FT_Get_Paint): New method for resolving an `FT_OpaquePaint` into an\n`FT_COLR_Paint` object.\n\nAdd API to retrieve \u0027COLR\u0027 v1 root paint (#59703).\n\n* src/sfnt/ttcolr.c (BaseGlyphV1Record): New structure.\n(tt_face_load_colr): Handle version 1 table header.\n(find_base_glyph_v1_record): New auxiliary function.\n(tt_face_get_colr_glyph_paint): New function to find the root\n`FT_OpaquePaint` object for a given glyph ID.\n\n* src/sfnt/ttcolr.h: Updated.\n\nAdd API to get actual paint from `FT_OpaquePaint` (#59703).\n\n* src/sfnt/ttcolr.c (tt_face_get_paint): New function to resolve an\n`FT_OpaquePaint` paint reference into an `FT_COLR_Paint` object of a\ncertain format, which contains the detailed information stored in a\npaint of the respective format.\n(read_paint): New function to provide the format specific parsing\nand to populate the data members of each specific `FT_COLR_Paint`\nsubtype.\n(read_color_line): New function to parse retrieved color line\ninformation into an `FT_ColorLine` object, which has information\nabout the color line extend mode as well as an\n`FT_ColorStopIterator` object.\n\n* src/sfnt/ttcolr.h: Updated.\n\nAdd \u0027COLR\u0027 v1 API to iterate color stops (#59703).\n\n* src/sfnt/ttcolr.c (tt_face_get_colorline_stops): New function to\nreturn the current `FT_ColorStop` object from `FT_ColorStopIterator`.\nAlso increment the iterator.\n\n* src/sfnt/ttcolr.h: Updated.\n\nAdd \u0027COLR\u0027 v1 API to retrieve color layers (#59703).\n\n* src/sfnt/ttcolr.c (tt_face_get_paint_layers): New function to get\nthe layers of a `PaintColrLayers` table in the font, using an\n`FT_LayerIterator` from an `FT_PaintColrLayers` object retrieved via\n`tt_face_get_paint`.\n\n* src/sfnt/ttcolr.h: Updated.\n\nRegister \u0027COLR\u0027 v1 API in driver (#59703).\n\n* include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_Paint_Func,\nTT_Get_Paint_Layers_Func, TT_Get_Colorline_Stops_Func,\nTT_Get_Paint_Func): New function pointer types.\n(SFNT_Interface): Add them.\n(FT_DEFINE_SFNT_INTERFACE): Updated.\n\n* src/sfnt/sfdriver.c (PUT_COLOR_LAYERS_V1): New macro.\n(sfnt_interface): Add new function pointers.\n\nFill \u0027COLR\u0027 v1 API templates to make them work (#59703).\n\n* src/base/ftobjs.c (FT_Get_Color_Glyph_Paint, FT_Get_Paint_Layers,\nFT_Get_Paint, FT_Get_Colorline_Stops): Add basic sanity checks,\ncheck for existence of `FT_Face`, check arguments and delegate calls\nfor the respective \u0027COLR\u0027 v1 API to the SFNT driver.\n\nAdd config option to test for \u0027COLR\u0027 v1 support in headers.\n\n* include/freetype/config/ftoption.h (TT_SUPPORT_COLRV1): New macro\nso that clients can test whether the FreeType checkout that they are\nbuilding against supports the \u0027COLR\u0027 v1 API.  This is intended to be\na temporary solution until \u0027COLR\u0027 v1 support is released in a\nFreeType version and such a check can be made by using the version\nnumber instead.\n\nAdditional checks for \u0027colr\u0027 table presence.\n\n* sfnt/ttcolr.c (tt_face_get_colr_glyph_paint,\ntt_face_get_colorline_stops, tt_face_get_paint): Additional checks\nfor whether colr table is present.  Prevents crashes when these\nmethods are called on non-COLR fonts.\n\nCHANGES: Mention \u0027COLR\u0027 v1 support.\n\nREADME, README.git: First updates due to freedesktop.org migration.\n\n.gitattributes: New file.\n\nWe use this to handle ChangeLog files with the `git-merge-changelog`\nprogram.\n\nDocumentation update for repository move to \u0027freedesktop.org\u0027.\n\n* builds/unix/unixddef.mk: Remove the second DEVEL_DIR definition.\n\nno-copyright: Updated.\n\nUpdate all copyright notices.\n\n* src/tools/update-copyright-year: Fix single-year entry handling.\n\nFix hb_ot_tags_from_script deprecation warning.\n\n* autofit/afshaper.c (af_shaper_get_coverage): Copy the source code\nof the function as suggested in\nhttps://github.com/harfbuzz/harfbuzz/issues/2737 and adjust to handle\nat most three tags.\n\n* srd/base/ftlcdfil.c (FT_Library_SetLcdGeometry): Fix return value.\n\nLICENSE.TXT: Moved to root directory; minor edits.\n\nFixes issue #1015.\n\nMove old ChangeLog files to new `docs/oldlogs` directory.\n\n* autogen.sh: Absorb `version.sed\u0027. * version.sed: Removed.\n\nRequire HarfBuzz 2.0.0.\n\nThis is needed to make commit f1f9705f9 work.\n\n* CMakeLists.txt (HARFBUZZ_MIN_VERSION), builds/unix/configure.raw\n(harfbuzz_pkg), meson.build (harfbuzz_dep): Updated.\n\nMinor documentation fixes.\n\n* builds/windows/ftsystem.c: Add shared memory support on Windows.\n\nImprove ChangeLog entry for last commit.\n\nMinor clean-up.\n\n* src/base/ftstroke.c (FT_Stroker_{ConicTo,CubicTo}): Reset the last\nline length.\n(FT_Stroker_EndSubPath): Call `ft_stroker_process_corner\u0027.\n\n* src/base/ftstroke.c (FT_Stroker_EndSubPath): Ignore tiny gaps.\n\nFixes bug #1020.\n\n* builds/unix/configure.raw: Fix typo.\n\nBug introduced in Vincent\u0027s last commit bb33f03.\n\nFixes issue #1021.\n\nAlways provide logging API.\n\nIt\u0027s easier to have stubs if FT_DEBUG_LOGGING is undefined than to\nmodify `ftexport.sym` conditionally.\n\nProblem reported by Alexei.\n\n* src/base/ftdebug.c: Include `ftlogging.h`.\n\n(FT_Trace_Set_Level, FT_Trace_Set_Default_Level, FT_Set_Log_Handler,\nFT_Set_Default_Log_Handler) [!FT_DEBUG_LOGGING]: Provide stubs.\n\n* builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c`.\n\nbuilds/{unix,windows}/ftsystem.c: Sync comments with `src/base/ftsystem.c`.\n\nAlso some minor code formatting.\n\n* builds/unix/configure.raw [mmap support]: Correctly handle Windows.\n\nFixes #1024.\n\n* builds/unix/configure.raw [mmap support]: Explicitly handle Windows.\n\nFixes #1024.\n\nFix integer overflow.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d30154\n\n* src/psaux/psblues.c (cf2_blues_capture): Use `SUB_INT32`.\n\n* builds/unix/configure.raw [mmap]: Restore default path.\n\nFixes #1023.\n\n* src/*: Don\u0027t use more than one \u0027\\n\u0027 in `FT_TRACE` and `FT_ERROR`.\n\nThis ensures good logging output, with all lines having a proper\nprefix (if requested).\n\nThis is a continuation of a similar patch from 2020-12-02, which\nmissed some locations.\n\nFix Netpbm tracing message.\n\n* src/base/ftobjs.c (FT_Render_Glyph_Internal): Don\u0027t emit Netpbm\nwarning if there is nothing to output.\n\n* meson.build: Set project version.\n\n* meson.build (bzip2_dep): Simplify.\n\nWe remove `static:false` from `find_library(\u0027bz2\u0027)`.\n\nI don\u0027t know whether the previous code was a workaround for an old\nmeson bug, but at least with version \u003e\u003d0.55.0 (which FreeType uses)\nit picks the shared library when both are available.\n\nWith this commit, file `freetype2.pc` no longer contains the full path to\nfile `libbz2.so`; instead, it correctly uses `-lbz2`.  Note that this is a\nmeson bug is still present in the current version (0.57.0).\n\n* meson.build: Use `meson.override_dependency`.\n\nThis is a new meson mechanism to avoid other projects to hard-code\nthe `freetype2_dep` variable name in their build definition.  It\nalso ensures that meson does not mix system and subproject versions\nof FreeType inside of the same project.\n\nAlso remove outdated TODO because `declare_dependency` was already\nthere.\n\n* meson.build: s/ft2_libtool_version/ft2_pkgconfig_version/.\n\n(freetype2_dep): Use it.\n\n`ft2_libtool_version` would be the shared library version, not the\none we should use in file `freetype2.pc`.\n\n* meson.build: Fix resource compilation on Windows.\n\nThis is copied from GStreamer\u0027s meson port of FreeType.\n\n(ft2_sources): Add both debug and resource file (the latter for\nWindows only).\n(ft2_debug_src): Removed.\n\nMeson: Fix dependency lookup and generate ftconfig.h\n\n[meson] Fix dependency lookup and generate `ftconfig.h`.\n\n- zlib: If not found on the system, meson can build it as a\n  subproject.  We thus never use the (outdated) zlib support that\n  comes with FreeType.  Doing so has the additional advantage that\n  the zlib code can be shared with other projects like GLib if both\n  are subprojects of an application.\n- harfbuzz: Build as a subproject if not found on the system.\n- \u0027QUESTION: What if the compiler doesn\u0027t support `-D` but uses `/D`\n  instead as on Windows?\u0027  Answer: Meson translate arguments for us.\n- visibility: Replace self-made code with meson-specific solution.\n\n* meson.build (ft2_defines): Rewrite logic to set and handle it.\n(process_header_command): New variable, previously called\n`ftoption_command`.\n(ftoption_command, ftconfig_command): New variables.\n(zlib_option): Removed.\n(zlib_dep): New variable.\n(ft2_deps): Updated.\n(harfbuzz_dep): Updated.\n(ftconfig_h_in, ftconfig_h): New variables.\n(ft2_sources): Updated.\n(ft2_lib): Updated, handle visibility.\n(summary): Updted.\n\n* meson_options.txt (zlib): Updated.\n\nFix handling of HarfBuzz library.\n\n* meson.build (harfbuzz_dep): Do not fall back to HarfBuzz by\ndefault.\n\nOtherwise it causes a dependency cycle:\n\n  cairo \u003d\u003e fontconfig \u003d\u003e freetype2 \u003d\u003e harfbuzz \u003d\u003e cairo\n\nMeson will still fall back to HarfBuzz subprojects if the `harfbuzz`\noption is set to `enabled` instead of `auto` and a\n`subprojects/harfbuzz.wrap` file is present.  In that case it is the\nresponsibility of the main project to set the proper options on each\nsubproject to break the dependency cycle.\n\nFixes: #1028.\n\n* meson.build: s/freetype2_dep/freetype_dep/.\n\nMany projects (e.g., fontconfig, cairo) hardcode the `freetype_dep`\nvariable name to use FreeType as subproject because that was the\nvariable name in Centricular\u0027s Meson port of FreeType.  While they\nshould stop hardcoding that variable name, it does not cost us\nanything to keep using that name to ease transition.\n\nProvide optional root transform for \u0027COLR\u0027 v1 glyph graph.\n\n* include/freetype/freetype.h (FT_Get_Color_Glyph_Paint):\nAdditional function argument root_transform to control whether\nroot transform should be returned.\n(FT_OpaquePaint): Additional tracking field to denote whether\nroot transform is to be returned.\n* include/freetype/internal/sfnt.h\n(TT_Get_Color_Glyph_Paint_Func): Propagate additional argument.\n* src/base/ftobjs.c (FT_Get_Color_Glyph_Paint): Ditto.\n* src/sfnt/ttcolr.c (tt_face_get_colr_glyph_paint): Return root\ntransform reflecting the size and tranform configured on\nFT_Face.\n(read_paint): Initialize and track status of insert_root_transform\nflag.\n\nUpdate submodule to upstream\u0027s current master.\n\nImplement \u0027COLR\u0027 v1 sweep gradients.\n\n* freetype.h (FT_PaintSweepGradient): Add `FT_PaintSweepGradient` to\nrepresent a \u0027COLR\u0027 v1 sweep gradient.\nUpdate format.\n(FT_PaintFormat): Update shifted paint formats.\nSync with spec.\n* sfnt/ttcolr.c (read_paint): Logic to parse sweep gradients.\nFix struct access in radial gradient implementation.\n\nDecorate qsort callbacks with cdecl.\n\n* include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF):\nAdd new macro.\n* src/base/ftrfork.c, src/bdf/bdflib.c, src/gxvalid/gxvcommn.c,\nsrc/psaux/afmparse.c, src/psnames/psmodule.c, src/type1/t1afm.c,\nsrc/sfnt/sfwoff.c, src/sfnt/sfwoff2.c: Update qsort callbacks.\n\nFixes #1026 when compiling FreeType with an unusual calling convention\nwhile the C library qsort still expects cdecl.\n\nMinor editing of last commit; formatting.\n\nAdd new function `FT_Get_Transform`.\n\nSee\n\n  https://github.com/harfbuzz/harfbuzz/issues/2428\n\nfor some reasons to introduce this function.\n\n* include/freetype/freetype.h, src/base/ftobjs.c (FT_Get_Transform):\nImplement it.\n\n* src/tools/update-copyright-year: Fix single-year entry handling.\n\nThe fix from 2021-01-17 didn\u0027t cover the case where the year to be\nupdated is identical to the current year.\n\n* CMakeLists.txt: Improve \u0027bz2\u0027 support.\n\nNot all distributions such as FreeBSD provide a `.pc` file for\n\u0027(lib)bz2\u0027 so follow autotools and add it to `Libs.private` instead.\n\nUpdate paint format values to support non-variable paints.\n\n* freetype.h (FT_PaintFormat): Update paint format identifiers after\na specification change.  The specification was updated to have\nsibling formats, variable and non-variable variants for each.\nReflect that here.\n\n* sfnt/ttcolr.c (read_paint): Remove parsing of variable indices as\nthe non-variable formats no longer have them.\n\nMove \u0027dlg\u0027 submodule to `subprojects` directory.\n\nThis is for future changes with Meson, which doesn\u0027t allow a\ndifferent name for its `subprojects` directory.  Having both a\n`submodules` and a `subprojects` directory is confusing.\n\n* .gitmodules, autogen.sh (copy_submodule_files, DLG_INC_DIR,\nDLG_SRC_DIR): Updated.\n\n* builds/toplevel.mk (\u003ctop-level\u003e, do-dist),\nbuilds/windows/vc2010/script.bat: Updated.\n\n* src/tools/no-copyright: Updated.\n\n* builds/toplevel.mk: Avoid side effects of `shell`.\n\nWe use a dummy variable to catch its output.  Otherwise the `make`\nprogram is going to interpret the return value of `shell`; this can\ncause obscure warning or error messages or even be harmful.\n\n* builds/toplevel.mk: Use rules for handling \u0027dlg\u0027.\n\nSuggested by Alexei.\n\n(check_out_submodule, copy_submodule): New targets.\n\u003ctop-level\u003e: Replace calls to `shell` with rules.\n\n* builds/toplevel.mk: Fix previous commit.\n\n\u003ctop_level\u003e: Use `TOP_DIR` in `wildcard` function.\n(check_out_submodule, copy_submodule): Move down to come after\ndefinition of `all` rule.\nCall `mkdir` conditionally.\n\nUpdates for autoconf 2.71.\n\nThis fixes warnings reported by autoupdate.\n\n* builds/unix/ax_pthread.m4: Replace `as_echo` with `AS_ECHO`.\n\n* builds/unix/configure.raw: Remove obsolete `AC_HEADER_STDC`.\nDon\u0027t escape back quotes in messages for `AC_MSG_WARN`.\n\n* builds/unix/ax_pthread.m4: Update from \u0027autoconf-archive\u0027.\n\nA bunch of fixes were added recently to its git repository.\n\n* CMakeLists.txt: Update location of `LICENSE.TXT`.\n\nFixes #1035.\n\nFix memory leak.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d28148\n\n* src/sfnt/sfwoff2.c (woff2_open_font): Reject fonts that have\nmultiple tables with the same tag.  While not explicitly forbidden\nin the OpenType specification, it is implicitly forbidden by\ndescribing a binary search algorithm for tables that only works\nreliably if table tags are unique.\n\nImprove build documentation.\n\nFixes #1012.\n\nfreetype.h: Documentation typos.\n\nFix crash in `Load_SBit_Png` on Windows x64.\n\nThis change fixes a crash that occurs in `Load_SBit_Png` when\nrunning on a 64-bit Windows OS.  A memory access violation exception\nwould be raised by `setjmp` if the `jmp_buf` is not aligned to a\n16-byte memory boundary.  This is due to setjmp executing `movdqa`\ninstructions to store 128-bit XMM registers to memory, which require\ncorrect memory alignment.  This problem occurs because\n`png_create_read_struct` uses `malloc` and `free` for memory\nmanagement, which only guarantees 8-byte alignment on Windows.\n\nInstead, to fix the problem, `png_create_read_struct_2` is used on\n64-bit Windows, which allows for user-defined memory allocation and\ndeallocation callbacks to be specified.  These callbacks forward the\nallocation and deallocation requests to `_aligned_alloc` and\n`_aligned_free`, ensuring that the allocated `png_struct` and\ninternal `jmp_buf` have the requisite 16-byte alignment.\n\n* src/sfnt/pngshim.c \u003c_WIN64\u003e: Include `malloc.h`.\n(malloc_callback, free_callback) \u003c_WIN64\u003e: New functions.\n(Load_SBit_Png) \u003c_WIN64\u003e: Use `png_create_read_struct_2` instead of\n`png_create_read_struct`\n\nRevert \"[sfnt] Fix crash in `Load_SBit_Png` on Windows x64.\"\n\nThis reverts commit dbf9142f7e0432c9ed618b3276e2b61fa39e7262, as discussed\nin #1037.\n\nMake it work with Windows.\n\n* meson.build: Do not process `ftconfig.h` when not using\n`ftconfig.h.in`.\n\nFixes #1029.\n\nAdd subproject fallbacks for \u0027libpng\u0027 and \u0027zlib\u0027.\n\n* subprojects/libpng.wrap, subprojects/zlib.wrap: New files.\n\n* meson.build: Updated.\n\nAdd basic support for Meson builds with MSVC on Windows.\n\nThis adds meson jobs for VS2017 (x86 and x86_64).\n\n* .gitlab-ci.yml: New file.\n\nFix \u0027mmap\u0027 handling on Windows.\n\n* meson.build (ft2_sources): Always use `windows/ftsystem.c` on\nWindows unless mmap has been disabled.\n\n  https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/5#note_829289\n\nmeson.build: Minor formatting.\n\n* src/smooth/ftgrays.c (gray_render_line): Rearrange conditionals.\n\nThese produce faster or more optimizable code.\n\n* src/smooth/ftgrays.c (FT_INTEGRATE): New convenience macro. (gray_render_line, gray_render_scanline): Use it.\n\nReduce copying during integration phase.\n\nWe now record `cover\u0027 and `area\u0027 directly into the linked list. This\nmakes rendering faster by 10% or even more at larger sizes.\n\n* src/smooth/ftgrays.c (FT_INTEGRATE): Write directly.\n(gray_TWorker): Add direct cell reference and remove unused fields.\n(gray_set_cell): Consolidate the linked list management and pointers.\n(gray_convert_glyph, gray_convert_glyph_inner): Updated.\n\nHandle various VC++ compiler warnings.\n\nFixes #1039.\n\n* src/base/ftstroke.c (ft_stroker_inside, ft_stroker_outside):\nInitialize `sigma`.\n\n* src/sdf/ftsdf.c (sdf_generate_with_overlaps): Exit immediately if\nfunction arguments are invalid.\n* src/sdf/ftsdfrend.c (sdf_property_set) \u003c\"overlaps\"\u003e: Fix cast.\n\n* src/sfnt/sfwoff2.c (woff2_decompress)\n[!FT_CONFIG_OPTION_USE_BROTLI]: Use `FT_UNUSED`.\n\n* src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize `fvar_head`.\n\n* src/smooth/ftgrays.c (gray_set_cell): Refactor to fix VC++ warning.\n\nREADME.git: Document cloning of official site and Savannah mirror.\n\n* CMakeLists.txt: Don\u0027t limit generation of \u0027pkg-config\u0027 file to UNIX.\n\nmingw-w64 uses the \u0027pkg-config\u0027 files but does not set UNIX.\n\nFix memory leak in png loading.\n\nReported as\n\n  https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1182552\n\nMemory is allocated and the pointer assigned to `rows` inside a\n\u0027setjmp\u0027 scope.  This memory must be freed outside the \u0027setjmp\u0027\nscope after a \u0027longjmp\u0027.  Since `rows` is a local and modified\ninside the \u0027setjmp\u0027 scope it must be marked volatile or it will have\nan indeterminate value after the \u0027longjmp\u0027.\n\n* src/sfnt/pngshim.c (Load_SBit_Png): Fix memory leak of `rows`.\n\n* src/sfnt/pngshim.c (Load_SBit_Png): Free `rows` once later.\n\nUpdate docwriter stylesheet for 1.3.1.\n\nThis change is required to support docwriter 1.3.1.\n\nSee\n\n  https://gitlab.freedesktop.org/freetype/docwriter/-/merge_requests/101\n\nfor more information.\n\n* docs/markdown/stylesheets/extra.css:\n(.wy-nav-content, .md-sidebar--secondary): Remove.\n\nCheck validity of pointer location of `read_color_line`.\n\n* src/sfnt/ttcolr.c (get_child_table_pointer): New function to fetch\nchild table pointer early for all paint formats that compute a child\ntable pointer.\n(read_color_line, read_paint): Updated.\n(tt_face_get_colorline_stops): Check `colr-\u003etable`.\n\nPrevent glyph program state from persisting.\n\n`FDEF` instructions are specified as allowed only in \u0027prep\u0027 or\n\u0027fpgm\u0027.  FreeType has attempted to prevent their use in the glyph\nprogram, but they were still allowed in glyph programs if defined in\na function defined in \u0027prep\u0027 or \u0027fpgm\u0027 and called from the glyph\nprogram.\n\nSimilarly, `IDEF` instructions are specified not to be able to\nmodify any existing instruction.  FreeType has attempted to prevent\ntheir use in the glyph program, but they can still be used like\n`FDEF`.\n\nThis change stores the initial bytecode range type and disallows the\nuse of `FDEF` and `IDEF` while running the glyph program.\n\nMost other state is copied from the `TT_Size` into the execution\ncontext.  However, it is possible for a glyph program to use `WS` to\nwrite to the storage area or `WCVTP`, `WCVTF`, and `DELTAC[123]` to\nwrite to the control value table.\n\nAllowing any change to the global state from the glyph program is\nproblematic as the outlines of any given glyph may change based on\nthe order the glyphs are loaded or even how many times they are\nloaded.  There exist fonts that write to the storage area or the\ncontrol value table in the glyph program, so their use should not be\nan error.\n\nPossible solutions to using these in the glyph program are\n\n  * ignore the writes;\n  * value-level copy on write, discard modified values when finished;\n  * array-level copy on write, discard the copy when finished;\n  * array-level copy up-front.\n\nIgnoring the writes may break otherwise good uses.  A full copy\nup-front was implemented, but was quite heavy as even well behaved\nfonts required a full copy and the memory management that goes along\nwith it.  Value-level copy on write could use less memory but\nrequires a great deal more record keeping and complexity.  This\nchange implements array-level copy on write.  If any attempt is made\nto write to the control value table or the storage area when the\ninitial bytecode range was in a glyph program, the relevant array\nwill be copied to a designated storage area and the copy used for\nthe rest of the glyph program\u0027s execution.\n\n* src/truetype/ttinterp.h (TT_ExecContextRec): New fields\n`iniRange`, `glyfCvtSize`, `glyfCvt`, `origCvt`, `glyfStoreSize`,\n`glyfStorage`, and `origStorage`.\n\n* src/truetype/ttinterp.c (Modify_CVT_Check): New function to handle\n`exc-\u003eglyfCvt`.\n(Write_CVT, Write_CVT_Stretched, Move_CVT, Move_CVT_Stretched): Use\nit.\n(Ins_WS): Handle `exc-\u003eglyfStorage`.\n(Ins_FDEF, Ins_IDEF): Updated.\n(TT_RunIns): Updated.\n(TT_Done_Context): Free \u0027glyf\u0027 CVT working and storage area.\n(TT_Load_Context): Fix/add casts.\n\n* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Fix cast.\n\nUpdate TT_New_Context documentation\n\nIn commit 531d463aed365b\n\n  [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.\n\nthe `TT_ExecContext` was moved from being on the driver to being on the size\nto make it easier to use FreeType in a multi-threaded environment.  However,\nthe documentation for `TT_New_Context` was not updated and still reflects\nthe old behavior and parameter list.\n\nThis change updates `TT_New_Context` documentation to reflect the current\nparameters and usage.\n\nComplete `ft_glyphslot_clear`.\n\n* src/base/ftobjs.c (ft_glyphslot_clear): This function is intended\nto reset all the values of a glyph slot.  However, it was not\nresetting the values of the advances and `glyph_index`.  Reset the\nadvances and `glyph_index` to zero.\n\nA few words on prerequisites.\n\nSafeguard \u0027COLR\u0027 v1 layer extraction\n\n* src/sfnt/ttcolr.c (tt_face_get_paint_layers): Do not output\nlayer pointer to iterator if it is outside the \u0027COLR\u0027 table.\n(read_paint): Do not attempt to read layers that are outside the\ntable.\n\n* builds/unix/freetype2.m4: Fix help string formatting.\n\nThe indented `dnl` macros inserted unwanted horizontal space.\n\nProblem reported by Ozkan Sezer \u003csezeroz@gmail.com\u003e.\n\n* src/cache/ftcsbits.c (ftc_snode_load): Properly handle short pitch.\n\nTypo.\n\nSwitch to lazy SBit setting.\n\n* src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Removed.\n(ftc_snode_load): Take the bitmap ownership instead of copying.\n\nReturn in \u0027COLR\u0027 v1 when layer pointer outside table\n\n* src/sfnt/ttcolr.c (tt_face_get_paint_layers): Add missing return\nwhen paint pointer outside table.\n(read_paint): Add missing return when paint pointer outside table.\n\nBitmap tracing.\n\nRestore SBit copying for unowned (BDF) bitmaps.\n\n* src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Restore.\n(ftc_snode_load): Check ownership and copy unowned bitmaps.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/base/ftobjs.c (open_face_PS_from_sfnt_stream,\nMac_Read_sfnt_Resource): Do not zero out the buffer.\n* src/base/ftmac.c (FT_New_Face_From_SFNT, read_lwfn): Ditto.\n* src/base/ftrfork.c (raccess_make_file_name,\nraccess_guess_darwin_hfsplus, raccess_guess_darwin_newvfs): Ditto.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/psaux/psobjs.c (ps_table_done, ps_parser_load_field): Do not\nzero out the buffer.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/gxvalid/gxvmod.c (gxv_load_table): Do not zero out the buffer.\n* src/otvalid/otvmod.c (otv_load_table): Ditto.\n\nOptimize SBit copying.\n\n* src/cache/ftcsbits.c (ftc_snode_load): Do not initialize the buffer.\n(ftc_sbit_copy_bitmap): Accept zero size, s/FT_ALLOC/FT_QALLOC/.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/pcf/pcfread.c (pcf_interpret_style): Do not zero out the buffer.\n* src/bdf/bdfdrivr.c (bdf_interpret_style): Ditto.\n* src/winfonts/winfnt.c (FNT_Face_Init, FNT_Load_Glyph): Ditto.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/bzip2/ftbzip2.c (ft_bzip2_alloc): Do not zero out the buffer.\n* src/gzip/ftgzip.c (ft_gzip_alloc, FT_Stream_OpenGzip): Ditto.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/pfr/pfrload.c (pfr_extra_item_load_font_id, pfr_aux_name_load):\nDo not zero out the buffer.\n\ns/FT_ALLOC/FT_QALLOC/ and clean up.\n\n* src/cid/cidgload.c (cid_load_glyph): Do not zero out the buffer.\n* src/cid/cidload.c (cid_face_open, cid_read_subrs): Ditto.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/cff/cffload.c (cff_index_get_pointers, cff_index_get_name):\nDo not zero out the buffer.\n* src/cff/cffdrivr.c (cff_ps_get_font_info): Ditto.\n* src/type1/t1load.c (parse_subrs, parse_charstrings,\nparse_blend_axis_types): Ditto.\n* src/type1/t1parse.c (T1_New_Parser, T1_Get_Private_Dict): Ditto.\n* src/type42/t42parse.c (t42_parser_init): Ditto.\n\ns/FT_ALLOC/FT_QALLOC/ for initialized buffers.\n\n* src/sfnt/sfdriver.c (get_win_string, get_apple_string,\nsfnt_get_var_ps_name): Do not zero out the buffer.\n* src/sfnt/sfobjs.c (sfnt_init_face): Ditto.\n* src/sfnt/sfwoff.c (woff_open_font): Ditto.\n* src/sfnt/sfwoff2.c (woff2_open_font): Ditto.\n\n* src/sdf/ftsdf.c (sdf_{edge,contour,shape}_new): Use FT_QALLOC.\n\n* 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.\n\n* src/cff/cffload.c (cff_index_get_pointers): s/FT_QALLOC/FT_ALLOC/.\n\n* builds/meson/process_ftoption_h.py: Add LF at EOF.\n\nThis fixes\n\n  .../ftoption.h:1030:10: error:\n    no newline at end of file [-Werror,-Wnewline-eof]\n\nfor the generated `ftoption.h` file.\n\nAvoid some memory zeroing.\n\n* src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, pcf_load_font):\nTweak memory macros.\n* src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto.\n* src/bdf/bdflib.c (_bdf_readstreami, bdf_create_property,\n_bdf_parse_glyphs, _bdf_parse_start): Ditto.\n(_bdf_add_property): Do not handle zero size.\n\nAvoid some memory zeroing.\n\n* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Use FT_QNEW_ARRAY.\n* src/base/ftsnames.c (FT_Get_Sfnt_{Name,LangTag}): Ditto.\n\nAvoid some memory zeroing.\n\n* src/psaux/psstack.c (cf2_stack_init): Tweak memory macro.\n* src/psnames/psmodule.c (ps_unicodes_init): Ditto.\n\n* src/winfonts/winfnt.c (FNT_Face_Init): Tweak memory macro.\n\nAvoid some memory zeroing.\n\n* src/pfr/pfrobjs.c (pfr_face_init) : Tweak memory macro.\n* src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps,\npfr_phy_font_load): Ditto.\n\nAvoid some memory zeroing.\n\n* src/cff/cffparse.c (cff_parser_init): Tweak memory macro.\n* src/cff/cffload.c (cff_index_load_offsets, cff_index_get_pointers,\ncff_charset_load, cff_vstore_load): Ditto.\n\n* src/sfnt/sfobjs.c (sfnt_init_face): Revert macro change.\n\n* src/psmodule.c (ps_unicodes_init): Ignore empty glyph names.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d33637\n\n* src/cid/cidgload.c (cid_load_glyph): Restore the glyph_length check.\n\nPreserve decompression stack when relocating to heap.\n\n* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Copy stack when\nrelocating to heap.\n\n* src/gzip/ftgzip.c (ft_gzip_alloc): Zero out memory again.\n\nAvoid some memory zeroing.\n\n* src/sfnt/sfwoff2.c (store_loca, woff2_open_font): Tweak macros.\n\nAvoid some memory zeroing.\n\n* src/truetype/ttinterp.c (Init_Context): Tweak allocation macro.\n* src/truetype/ttpload.c (tt_face_load_cvt): Ditto.\n\n* src/sfnt/pngshim.c (Load_SBit_Png): Tweak allocaton macro.\n\n* src/sfnt/ttpost.c (load_format_{20,25}): Tweak allocaton macros.\n\nAvoid some memory zeroing.\n\n* src/sfnt/sfobjs.c (sfnt_open_font, sfnt_init_face,\ntt_name_ascii_from_{utf16,other}): Tweak allocaton macros.\n* src/sfnt/ttload.c (tt_face_load_name): Ditto.\n\n* src/cid/cidload.c (cid_read_subrs): Tweak allocaton macro.\n\nAvoid memory zeroing (contd.).\n\n* src/bdf/bdflib.c (bdf_create_property, _bdf_add_comment,\n_bdf_add_property, bdf_load_font): Tweak allocation macros.\n* src/pcf/pcfread.c (pcf_get_properties, pcf_get_metrics): Ditto.\n\nStreamline POST format 2.0 handing.\n\nTo reduce memory allocations, we read an entire Pascal-string buffer\nand convert it to a C-string buffer.  We also reject tables with\nPostscript glyph names exceeding 63 bytes.\n\n* src/sfnt/ttpost.c (load_format20): Implement it.\n(load_post_names): Check the minimal POST table size.\n(load_format25, tt_face_free_ps_names): Updated accordingly.\n\n* src/cid/cidload.c (cid_hex_to_binary): Improve return value.\n\nAdd argument to return the actual number of bytes that were decoded.\nThe actual number of bytes decoded can be quite variable depending\non the number of ignored \u0027whitespace\u0027 bytes or early termination\nwith `\u003e`.\n(cid_face_open): Updated to use this calculated value.  This avoids\ntrusting `parser-\u003ebinary_length` is always be correct and reading\nuninitialized bits if fewer are actually decoded.\n\nFirst reported as\n\n  https://crbug.com/1203240\n\nAvoid memory zeroing (contd.).\n\n* src/cff/cffload.c (cff_blend_doBlend, cff_blend_build_vector): Tweak\nallocation macros.\n* src/psaux/psarrst.c (cf2_arrstack_setNumElements): Ditto.\n* src/psaux/psstack.c (cf2_stack_init): Ditto.\n\n* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Tweak allocation.\n\n* src/cid/cidload.c (cid_read_subrs): Tweak allocation macro.\n\n* src/sfnt/sfobjs.c (sfnt_load_face): Tweak allocation macro.\n\n* src/psaux/psobjs.c (ps_parser_load_field): Tweak allocation macro.\n\n* src/bdf/bdflib.c (_bdf_list_ensure): Tweak allocation macro.\n\nAvoid MM memory zeroing.\n\n* src/type1/t1load.c (t1_allocate_blend, parse_blend_design_map):\nTweak allocation macros.\n* src/type1/t1objs.c (T1_Face_Done): Minor.\n\n* src/smooth/ftgrays.c (gray_hline): Simplify even-odd computations.\n\nIt is too bad the even-odd rule is not used much.\n\nFaster bitmap sweeping.\n\nSelecting the fill rule or checking the direct mode each time we call\n`gray_hline\u0027 is sub-optimal.  This effectively splits the direct mode\ninto a separate code path while inlining `gray_hline\u0027 and saving 5-7%\nof rendering time.\n\n* src/smooth/ftgrays.c (gray_hline): Eliminated in favor of...\n(FT_FILL_RULE, FT_GRAY_SET): ... these new macros...\n(gray_sweep): ... inlined here.\n(gray_sweep_direct): New function that handles the direct span buffer.\n(gray_TWorker): Remove the span buffer.\n(gray_raster_render, gray_convert_glyph): Updated.\n\n* src/smooth/ftgrays.c (FT_GRAY_SET): Adjust for better code.\n\n* src/smooth/ftgrays.c (FT_MAX_GRAY_SPANS): Increase from 10 to 16.\n\nTen was barely enough for two slanted stems. Sixteen can actually fit\na bit more complicated scanlines.\n\nUse doubling allocation strategy for CF2_ArrStack.\n\nFixes timeout reported as\n\n  https://crbug.com/1206181\n\n* src/psaux/psarrst.c (cf2_arrstack_{push,init}): Implement it.\n* src/psaux/psarrst.h (CF2_ArrStackiRec): Drop `chunk\u0027.\n\nAdditional guards on the POST table.\n\nFixes timeout (#1055) analyzed by Ben Wagner, reported as\n\n  https://crbug.com/1194092\n\n* src/sfnt/ttload.c (tt_face_load_post): Check POST format.\n* src/sfnt/sfobjs.c (sfnt_load_face): Synthesize the missing unicode\ncharmap only if the glyph names exist.\n* src/psnames/psmodule.c (ps_unicode_value): Short cut \".notdef\" and\n\".null\".\n\nPrioritize the anti-aliasing renderer module.\n\n* modules.cfg: Reorder the renderers.\n* include/freetype/config/ftmodule.h: Ditto.\n\nUse exact type for `ft_gzip_alloc` and `ft_gzip_free`.\n\nWhile a function pointer may be cast to another function pointer\ntype, it is required to cast the function pointer back to the\noriginal function pointer type before calling it.  If a parameter is\na pointer the exact pointer type is required.  Using a pointer to a\ndifferent underlying type is technically undefined behavior.  The\nwrapper functions `ft_gzip_alloc` and `ft_gzip_free` took\n`FT_Memory` (a `FT_MemoryRec_*`) instead of `voidpf` (`void*`), so\nwhen gzip calls these callbacks through `alloc_func` or `free_func`\nit invokes undefined behavior.  On most platforms this works out as\nexpected, but newer undefined behavior detectors and targets like\nwasm can detect this and will produce an error.\n\n* src/gzip/ftgzip.c (ft_gzip_alloc, ft_gzip_free): Update signatures\nto exactly match `alloc_func` and `free_func`, respectively.\nInternally, cast the `void*` opaque pointer to `FT_Memory`.\n\nUpdate dependency finders.\n\n1. Fixes CMake using any found HarfBuzz version lower than the minimum\nrequired. This is based on HALX99\u0027s merge request at\nhttps://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/31\n2. Update FindHarfBuzz.cmake from\nhttps://github.com/WebKit/WebKit/blob/1ce32454/Source/cmake/FindHarfBuzz.cmake\nand guard post-CMake-3.1 features to keep the minimum version unchanged\n3. Update FindBrotliDec.cmake to stop the warnings, based on what\nhttps://github.com/google/woff2/blob/a0d0ed7d/cmake/FindBrotliDec.cmake\nis doing\n\n* CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Implement 1 and 2.\n* builds/cmake/FindBrotliDec.cmake: Implement 3.\n\nAvoid some memory zeroing.\n\n* src/type42/t42objs.c (T42_Open_Face): Tweak allocation macro.\n* src/type42/t42parse.c (t42_parse_sfnts): Ditto.\n\n* meson.build (ft2_public_headers): Add missing `ftcid.h\u0027.\n\nFixes #1058.\n\n.gitignore: Add `subprojects` directory, fix some patterns.\n\nGuard and trace AFM kern data allocation.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d31543\n\n* include/freetype/internal/fttrace.h: Add \u0027afmparse\u0027 trace\ncomponent.\n\n* src/psaux/afmparse.c (FT_COMPONENT): Define.\n(afm_parse_track_kern, afm_parse_kern_pairs): Protect against\nallocations bombs.\nAdd tracing.\n(afm_parse_kern_data): Don\u0027t allow multiple kern data sections.\n\nFix auto-hinting.\n\nThe autohinter could not access the base (unscaled) outline in the\nchild TrueType glyph slot. We now share the internal parts between\nthe parent and child glyph slots. Fixes #1057.\n\n* src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts\nof `T42_GlyphSlot\u0027 and replace it with the child TrueType structure.\n(T42_GlyphSlot_Done): Updated accordingly.\n\nAllow overriding of `ANSIFLAGS` for GNU make build.\n\n* builds/*: Implement it.\n\nFix compilation errors and (some) warnings for clang++.\n\n* src/autofit/afmodule.c (AF_GlyphHintsRec): Make it static.\n\n* src/cache/ftcache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c\n(ftc_snode_compare): Remove semicolon.\n\n* src/cff/cffparse.c (cff_parser_run): Add `break` statement.\n\n* src/cid/cidload.c (cid_hex_to_binary): Add cast.\n\n* src/sdf/ftbsdf.c (CHECK_NEIGHBOR): Use `do {} while(0)` loop.\n(bsdf_init_distance_map, finalize_sdf, bsdf_raster_render): Add\ncasts.\n* src/sdf/ftsdf.c (sdf_generate_bounding_box,\nsdf_generate_with_overlaps): Ditto.\n* src/sdf/ftsdfcommon.h (square_root): Ditto.\n* src/sdf/ftsdfrend.c (sdf_property_get, ft_sdf_render,\nft_bsdf_render): Ditto.\n\n* src/sfnt/ttcolr.c (find_base_glyph_record,\nfind_base_glyph_v1_record): Fix variable signedness.\n(read_color_line): Add cast.\n(read_paint): Add casts.\nFix signedness issue.\n(tt_face_get_colorline_stops) Fix signedness issues.\n\n* src/sfnt/ttpost.c (load_format_20): Add casts.\n\n* src/truetype/ttsubpix.c (TWEAK_RULES, TWEAK_RULES_EXCEPTIONS):\nRemove final semicolons.\n\nTypos in previous commit.\n\nFix MSVC compiler warnings.\n\n* src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):\nAdd cast.\n\n* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix tracing.\n\nProblem reported by Alexei.\n\nFix fallout from 2021-05-29 change.\n\n* src/sfnt/ttcolr.c (find_base_glyph_record,\nfind_base_glyph_v1_record): Adjust binary search.\n\nNeeds to be updated with change to unsigned.\n\nUse 8 bits for final SDF output instead of 16bits.\n\nSince 8-bits is enough to represent SDF data we no longer require\n16-bits for  this purpose. Also, we now normalize the output data\nto use the entire 8-bit range efficiently. For example: if we use\n3.5 format with a spread of 1 we basically only use the starting\n5-bits. By normalizing we can use the entire 8-bit range.\n\n* include/freetype/freetype.h (FT_Render_Mode): Updated description\nfor `FT_RENDER_MODE_SDF` regarding this change.\n\n* include/freetype/ftimage.h (FT_Pixel_Mode): Removed\n`FT_PIXEL_MODE_GRAY16` since no longer required.\n\n* include/freetype/fttypes.h (FT_F6Dot10): Removed since no longer\nrequired.\n\n* src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Allocate 8-bit\nbitmap instead of 16-bit buffer.\n\n* src/sdf/ftsdfcommon.h (map_fixed_to_sdf): Added function to convert\n16.16 distance value to our desired format.\n\n* src/sdf/ftsdf.c (sdf_generate_with_overlaps,\nsdf_generate_bounding_box): Use the new `map_fixed_to_sdf` function\nand also use 8-bit output buffer.\n\n* src/sdf/ftbsdf.c (finalize_sdf): Output to a 8-bit buffer instead\nof 16-bit buffer.\n\nFormatting and improved comments.\n\nMake `make multi` work.\n\n* src/sdf/ftsdf.c: Include `ftbitmap.h`.\n\n* src/sdf/ftsdfcommon.h: Move function bodies to `ftsdfcommon.c`.\nInclude `ftobjs.h` to get definitions of `FT_LOCAL` and friends.\n\n* src/sdf/ftsdfcommon.c: New file.\n\n* src/sdf/rules.mk, src/sdf/sdf.c: Updated.\n\n* src/sdf/ftsdfcommon.c: Fix inclusion of header files.\n\nPointer validity check when reading COLR \u0027v1\u0027 layers\n\n* src/sfnt/ttcolr.c (tt_face_get_paint_layers): In addition to the\nexisting sanity checks, ensure that the pointer to the layer to be\nread is within the \u0027COLR\u0027 v1 table.\n\nSanitize cmap4 table better.\n\nFixes #1062.\n\n* src/sfnt/ttcmap.c (tt_cmap4_validate): Handle a too-small value of\n`length` gracefully.\n\nFix \u0027devel\u0027 build for COLR \u0027v1\u0027.\n\n* devel/ftoption.h: Synchronize with\n  `include/freetype/config/ftoption.h`.\n\nVarious documentation improvements and fixes.\n\nMore various documentation improvements and fixes.\n\nMore CHANGES.\n\nFix SDF positioning.\n\n* src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Add padding to\n`bitmap_top\u0027 and `bitmap_left\u0027.\n\n* sdf/sdf/ftsdf.c (sdf_generate_with_overlaps): Fix VC++ warning.\n\n* src/truetype/ttinterp.c (TT_RunIns): Optimize tracing.\n\nFix assertions.\n\n* src/psaux/pshints.c (cf2_hintmap_adjustHints): Check for overflow\nbefore emitting an assertion error.\n\nFix another assertion.\n\n* src/psaux/psintrp.c (cf2_interpT2CharString)\n\u003ccf2_escCALLOTHERSUBR\u003e: Convert assertion into error, since the\nproblem can happen with invalid user input.\n\nTest case is file\n\n  fuzzing/corpora/legacy/oss-fuzz/5754332360212480-unknown-read\n\nin the `freetype2-testing` repository.\n\nFix new memory leak.\n\nWe need to inverse inheritance of FT_GlyphSlot_Internal so that we\nhave a chance to free the rendered bitmap from the parent slot.\n\n* src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts\nof the child `ttslot\u0027 and replace it with the parent structure.\n(T42_GlyphSlot_Done): Updated accordingly.\n\nAdd a comment.\n\nAdd first regression test to FreeType\n\n* tests/README.md: documentation explaining how to\n  build and run the tests with the Meson build.\n\n* tests/scripts/download-test-fonts.sh: Simple script\n  to download test font files to the \u0027tests/data/\u0027\n  folder.\n\n* meson.build, meson_options.txt, tests/meson.build:\n  Add \u0027tests\u0027 option to enable building and running the\n  test programs, disabled by default.\n\n* tests/issue-1063/main.c: Simple regression test to\n  exhibit issue 1063.\n\n* .gitignore: Ignore the content of the tests/data/\n  folder for now.\n\nFix for issue 1063\n\nSee https://gitlab.freedesktop.org/freetype/freetype/-/issues/1063\nfor more details on the bug.\n\nAdd `ChangeLog` entries for last two commits.\n\n* src/sdf/ftsdfrend.c (ft_(b)sdf_render): Do not FT_ERROR routinely.\n\nPrevent hinting if there are too many segments.\n\nThis speeds up handling of broken glyphs.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d35309\n\n* src/autofit/aflatin.c (af_latin_hints_compute_segments): Implement\nit.\n\nFix integer overflow.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d35312\n\n* src/truetype/ttinterp.c (Ins_JMPR): Use `ADD_LONG`.\n\nftver.rc: Update copyright year.\n\nfreetype.h: Mark \u0027COLR\u0027 v1 API as experimental.\n\nMove \u0027COLR\u0027 API to `ftcolor.h`.\n\n* include/freetype/freetype.h: Cut section layer managament\ncontaining \u0027COLR\u0027 v0 and v1 API and move it to `ftcolor.h` as\nrequested by Werner on freetype-devel.\n* include/freetype/ftcolor.h: Paste that section.\n\ns/PaintTransformed/PaintTransform/, s/transformed/transform/.\n\n* include/freetype/ftcolor.h (FT_PaintTransformed, FT_PaintFormat,\nFT_COLR_Paint): Do it to make it harmonize with other names such as\n\u0027PaintTranslate\u0027.\n\n* src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Ditto.\n\nfterrors.h: Fix documentation extraction of `FT_Error_String`.\n\nRemove synonymous error macros.\n\n* src/smooth/ftgays.c [STANDALONE_]: s/ErrRaster_/Smooth_Err_/.\n(gray_convert_glyph_inner): Updated accordingly.\n\n* src/raster/ftraster.c [STANDALONE_]: Do not abbreviate error macros.\n(New_Profile, End_Profile, Insert_Y_Turn, Line_Up, Bezier_Up,\nDecompose_Curve, Draw_Sweep, Render_Single_Pass, ft_black_render):\nUpdated accordingly.\n\nFix up and align error codes.\n\nFT_Render_Glyph picked up FAILURE or 1 returned from the raster\nfunction, which became a confusing error code. Instead, return\nRaster_Overflow in the unlikely event that banding does not help or\nanother meaningful error.\n\n* src/smooth/ftgrays.c (gray_convert_glyph_inner, gray_convert_glyph):\nUse Raster_Overflow when the rendering pool is exhausted and return it\nif banding does not help.\n(gray_raster_render): Use Smooth_Err_Ok.\n\n* src/raster/ftraster.c (Render_Single_Pass): Return Raster_Overflow\nif banding does not help or another error code.\n\nAdd trace level to logging output.\n\nSome practical debugging work has shown that displaying level X of\nan `FT_TRACEX` macro in the output of `FT2_DEBUG\u003d\"...  -v\"` would be\nvery helpful to find out which trace level should be selected.  As\nan example, we now get output like\n\n```\n[ttobjs:2]    TTF driver\n[ttobjs:2]      SFNT driver\n[sfobjs:2]      not a font using the SFNT container format\n[t1objs:2]    Type 1 driver\n[stream:7]    FT_Stream_EnterFrame: 14 bytes\n```\n\n* include/freetype/internal/ftdebug.h (FT_LOGGING_TAGX): New macro.\n(FT_LOG): Use it to add the trace level to the logging tag.\n\n* include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH):\nAdjust.\n\n* docs/DEBUG: Updated.\n\n* src/raster/ftraster.c (Render_Single_Pass): Remove dead code.\n\nAdjust sub-band bisecting limits.\n\nWe can bisect a band until it is just a single scan line.  This might\nbe slow and cause time-outs but if we need to impose limits it should\nbe elsewhere.\n\n* src/raster/ftraster.c (Render_Single_Pass): Tweak sub-banding.\n\nMake `band_top\u0027 local variable.\n\n* src/raster/ftraster.c (black_TWorker): Move `band_top\u0027 from here...\n(Render_Single_Pass): ... to here, and refactor.\n(Render_Glyph): Updated.\n\nClean up vertical sweep.\n\n* src/raster/ftraster.c (black_TWorker): Replace the current line\noffset with the pointer and drop the increment.\n(Function_Sweep_Init): Take values as arguments instead of pointers.\n(Vertical_Sweep_*, Horizontal_Sweep_Init, Draw_Sweep): Updated.\n\nImprove paint limit checks\n\nPaint tables can appear before the `base_glyphs_v1` offset if the\nfont is produced with the layer list before the base glyph list.  In\nthis case paint tables can occur after the layer list but before the\nbase glyph list.  Checks in the \u0027COLR\u0027 v1 code were rejecting fonts\nwith this layout.  Improve these checks by calculating a minimum\noffset after which paint tables can occur and use that in safety\nchecks.\n\n* src/sfnt/ttcolr.c (Colr, tt_face_load_colr): Declare\n`paint_start_v1` and calculate that as the minimum of the end of\nlayer list and base glyph list.\n(get_child_table_pointer, read_paint, tt_face_get_paint_layers):\nUse that in safety checks.\n\nHandle Bézier stack locally.\n\n* src/raster/ftraster.c (black_TWorker): Move `arcs\u0027 from here...\n(Conic_To, Cubic_To): ... to here to tighten their scope.\n(Bezier_Up, Bezier_Down): ... Take the current `arc\u0027 argument.\n\nftcolor.h: Minor grammar fix.\n\nIntroduce linux CI and refactor job names\n\n* .gitlab-ci.yml: Added jobs for building freetype on linux.\n\nHandle sub-band stack locally.\n\n* src/raster/ftraster.c (black_TWorker): Move `band_stack\u0027 from here..\n(Render_Single_Pass): ... to here and accept limit arguments.\n(Render_Glyph): Updated.\n\nDo not skip the second pass without dropout control.\n\nThe second pass also fixes horizontal lines through the pixel centers.\n\n* src/raster/ftraster.c (black_TWorker): Do not use `second_pass\u0027.\n(Render_Glyph): Skip the second pass only with the appropriate flag.\n\nUpdate `CHANGES` file; other minor doc fixes.\n\n* src/raster/ftraster.c (Render_Single_Pass): Simplify `band_stack\u0027.\n\nHandle fonts without layer list in \u0027COLR\u0027 v1.\n\n\u0027COLR\u0027 v1 fonts do not necessarily need to have a layer list; for\nthis reason, \u0027fontTools\u0027 recently started generating fonts in a way\nthat drops the layer list if there are no layers in it.  This\nresults in the layer list offset becoming zero, which FreeType\ntreated as an invalid table.  Fix that and handle the case for layer\nlist offset being 0.  This slightly changes how we need to calculate\nthe starting offset for paints.\n\n* src/sfnt/ttcolr.c (tt_face_load_colr): Handle case of layer list\noffset being zero without outright rejecting table.\n\nSupport PaintScale in \u0027COLR\u0027 v1 parsing.\n\n* include/freetype/ftcolor.h (FT_PaintFormat): Renumber values, add\n`FT_COLR_PAINTFORMAT_SCALE`.\n(FT_PaintScale): New structure to represent \u0027PaintScale*\u0027 tables.\n(FT_COLR_Paint): Updated.\n\n* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration.\n(read_paint): Parse \u0027PaintScale\u0027 and friends.\n\n* src/truetype/ttgxvar.c (tt_set_mm_blend): Test `coords`.\n\nIt is undefined behavior to pass `NULL` to `memcpy`.  `coords\u0027 is\npassed to `memcpy` but `TT_Get_MM_Blend` and `TT_Get_Var_Design`\nexplictly call `tt_set_mm_blend` with `coords` as `NULL`.  In\naddition, `TT_Set_MM_Blend` has a similar possible issue.\n\n* meson_options.txt: Sort alphabetically; no final full stops.\n\nmeson.build: Minor doc improvements.\n\nREADME.git: Revised.\n\n* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): Fix argument.\n\nReported by Hin-Tak.\n\nmeson.build: Minor doc fix.\n\nUpdate \u0027dlg\u0027 subproject.\n\nRemove experimental \"Latin2\" writing system (FT_OPTION_AUTOFIT2)\n\nThis code has always been experimental and was never compiled\nanyway (FT_OPTION_AUTOFIT2 does not appear in ftoption.h or even\nany of our build files).\n\nRemove experimental auto-hinting \u0027warp\u0027 mode.\n\nThis feature was always experimental, and probably nevery worked\nproperly. This patch completely removes it from the source code,\nexcept for a documentation block describing it for historical\npurpose.\n\nRemove obsolete AF_Angle type and related sources.\n\nMove the af_sort_xxx() functions from afangles.c to afhints.c\nin order to get rid of the obsolete angle-related types,\nmacros and function definitions.\n\nSmall clean-ups for the last few commits.\n\n* include/freetype/fttrace.h (afwarp): Removed.\n\nMore clean-ups.\n\n* src/autofit/afhints.h (AF_GlyphHintsRec): Remove the no longer\nneeded fields `xmin_delta` and `xmax_delta`.\n\n* src/autofit/afhints.c (af_glyph_hints_reload),\nsrc/autofit/afloader.c (af_loader_load_glyph): Updated.\n\n* meson.build: Fix build for other UNIX systems (e.g., FreeBSD).\n\nWithout this change the build of `unix/ftsystem.c` fails because the\n`ftconfig.h` header that defines macros such as `HAVE_UNISTD_H` and\n`HAVE_FCNTL_H` is only being generated for Linux, macOS, and Cygwin\nsystems:\n\n```\n.../builds/unix/ftsystem.c:258:32: error:\n    use of undeclared identifier \u0027O_RDONLY\u0027\nfile \u003d open( filepathname, O_RDONLY );\n```\n\nInstead of hardcoding a list of operating systems for this check,\nupdate the logic that decides whether to build the file and set a\nboolean flag that can be checked instead.\n\nImprove documentation.\n\nReject combinations of incompatible `FT_OPEN_XXX` flags.\n\nThe three modes are mutually exclusive, and the documentation of the\n`FT_OPEN_XXX` constants notes this.  However, there was no check to\nvalidate this in the code, and the documentation on `FT_Open_Args`\nclaimed that the corresponding bits were checked in a well-defined\norder, implying it was valid (if useless) to specify more than one.\nIronically, this documented order did not agree with the actual\ncode, so it could not be relied upon; hopefully, nobody did this and\nnobody will be hurt by the new validation.\n\nEven if multiple mode bits were allowed, they could cause memory\nleaks: if both `FT_OPEN_STREAM` and `stream` are set along with\neither `FT_OPEN_MEMORY` or `FT_OPEN_PATHNAME`, then `FT_Stream_New`\nallocated a new stream but `FT_Open_Face` marked it as an \u0027external\u0027\nstream, so the stream object was never released.\n\n* src/base/ftobjs.c (FT_Stream_New): Reject incompatible\n`FT_OPEN_XXX` flags.\n\nFix `FT_Open_Face`\u0027s handling of user-supplied streams.\n\nThis was already true (though undocumented) most of the time, but\nnot if `FT_NEW` inside `FT_Stream_New` failed or if the\n`FT_OPEN_XXX` flags were bad.\n\nNormally, `FT_Open_Face` calls `FT_Stream_New`, which returns the\nuser-supplied stream unchanged, and in case of any subsequent error\nin `FT_Open_Face`, the stream is closed via `FT_Stream_Free`.\n\nUp to now, however, `FT_Stream_New` allocates a new stream even if\nit is already given one by the user.  If this allocation fails, the\nuser-supplied stream is not returned to `FT_Open_Face` and never\nclosed.  Moreover, the user cannot detect this situation: all they\nsee is that `FT_Open_Face` returns `FT_Err_Out_Of_Memory`, but that\ncan also happen after a different allocation fails within the main\nbody of `FT_Open_Face`, when the user\u0027s stream has already been\nclosed by `FT_Open_Face`.  It is plausible that the user stream\u0027s\n`close` method frees memory allocated for the stream object itself,\nso the user cannot defensively free it upon `FT_Open_Face` failure\nlest it ends up doubly freed.  All in all, this ends up leaking the\nmemory/resources used by user\u0027s stream.\n\nFurthermore, `FT_Stream_New` simply returns an error if the\n`FT_OPEN_XXX` flags are unsupported, which can mean either an\ninvalid combination of flags or a perfectly innocent\n`FT_OPEN_STREAM` on a FreeType build that lacks stream support.\nWith this patch, the user-supplied stream is closed even in these\ncases, so the user can be sure that if `FT_Open_Face` failed, the\nstream is definitely closed.\n\n* src/base/ftobjs.c (FT_Stream_New): Don\u0027t allocate a buffer\nunnecessarily.\nMove error-handling code to make the control flow more obvious.\nClose user-supplied stream if the flags are unsupported.\n`FT_Stream_Open` always sets `pathname.pointer`, so remove the\nredundant (re)assignment.  None of the `FT_Stream_Open...` functions\nuses `stream-\u003ememory`, so keep just one assignment at the end,\nshared among all possible control flow paths.\n(\u0027Unsupported flags\u0027 that may need a stream closure can be either an\ninvalid combination of multiple `FT_OPEN_XXX` mode flags or a clean\n`FT_OPEN_STREAM` flag on a FreeType build that lacks stream\nsupport.)\n\nSupport architectures where `long` is smaller than pointers.\n\nI am currently trying to compile FreeType for CHERI-extended ISAs\n(CHERI-RISC-V and Arm\u0027s Morello), but I am getting compiler warnings\nfrom the `FT_UINT_TO_POINTER` macro.  When compiling with the CHERI\nClang compiler, not using `uinptr_t` for casts between integers an\npointers results in the following `-Werror` build failures:\n\n```\nIn file included from .../src/truetype/truetype.c:22:\n  .../src/truetype/ttgload.c:1925:22: error:\n    cast from provenance-free integer type to pointer type will\n    give pointer that can not be dereferenced\n    [-Werror,-Wcheri-capability-misuse]\n  node-\u003edata \u003d FT_UINT_TO_POINTER( glyph_index );\n               ^\n  .../include/freetype/internal/compiler-macros.h:79:34: note:\n    expanded from macro \u0027FT_UINT_TO_POINTER\u0027\n```\n\n* include/freetype/internal/compiler-macros.h (FT_UINT_TO_POINTER):\nThe ISO C standard compliant fix for this would be to use\n`uintptr_t` from `stdint.h`, but I am not sure if this is supported\nby the minimum compiler version.  Therefore, use the\ncompiler-defined `__UINTPTR_TYPE__` macro (supported in GCC 4.6+ and\nClang since about 3.0) before checking for `_WIN64` and falling back\nto `unsigned long`.\n\ntests/scripts/download-test-fonts.sh rewrite in Python3\n\nReplaces download-test-fonts.sh with download-test-fonts.py\nwhich does the same work, and also avoids downloading anything\nif the files are already installed with the right content.\n\nNow uses the first 8 byte of each file\u0027s sha256 hash for the\ndigest.\n\nMinor speedup to smooth rasterizer\n\nThis speeds up the smooth rasterizer by avoiding a\nconditional branches in the hot path. Namely:\n\n- Define a fixed \"null cell\" which will be pointed\n  to whenever the current cell is outside of the current\n  target region. This avoids a \"ras.cell !\u003d NULL\"\n  check in the FT_INTEGRATE() macro.\n\n- Also use the null cell as a sentinel at the end of\n  all ycells[] linked-lists, by setting its x coordinate\n  to INT_MAX. This avoids a \u0027if (!cell)\u0027 check in\n  gray_set_cell() as well.\n\n- Slightly change the worker struct fields to perform\n  a little less operations during rendering.\n\nExample results (on a 2013 Corei5-3337U CPU)\n\n  out/ftbench -p -s10 -t5 -bc /usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf\n\n    Before: 5.472 us/op\n    After:  5.275 us/op\n\n  out/ftbench -p -s60 -t5 -bc /usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf\n\n    Before: 17.988 us/op\n    After:  17.389 us/op\n\nImplement Bezier quadratic arc flattenning with DDA\n\nBenchmarking shows that this provides a very slighty performance\nboost when rendering fonts with lots of quadratic bezier arcs,\ncompared to the recursive arc splitting, but only when SSE2 is\navailable, or on 64-bit CPUs.\n\nOn a 2017 Core i5-7300U CPU on Linux/x86_64:\n\n  ./ftbench -p -s10 -t5 -cb .../DroidSansFallbackFull.ttf\n\n    Before: 4.033 us/op  (best of 5 runs for all numbers)\n    After:  3.876 us/op\n\n  ./ftbench -p -s60 -t5 -cb .../DroidSansFallbackFull.ttf\n\n    Before: 13.467 us/op\n    After:  13.385 us/op\n\nGuard inclusion of emmintrin.h\n\nGuard inclusion of emmintrin.h with \"#ifdef __SSE2__\". The gcc version\nof this header, xmmintrin.h, and mmintrin.h check that the appropriate\ndefines are set before defining anything (are internally guarded).\nHowever the clang versions of these includes are not internally guarded.\nAs a result of this, externally guard the inclusion of these headers.\n\nFormatting and ChangeLog additions for previous commits.\n\nMinor fixes.\n\n* src/smooth/ftgrays.c (gray_render_conic): Move variable and\nstructure declarations to beginning of function.  Inspite of C99\ncompliance we still do this for the sake of backward compatibility.\nThis also avoids a shadowing declaration of `count`.\n(gray_convert_glyph_inner): Fix typo.\n\n* tests/issue-1063/main.c (main): Fix uninitialized variable.\n\nI tried running `meson test` but the test just crashed and gdb\nreported that the face argument to `FT_Get_Char_Index` was nonsense.\nWith this change the test prints \u0027Could not open file: \u0027 as it\nshould.\n\ndocs/CHANGES: Mention slight rendering changes.\n\nSuggested by Ben.\n\nAllow arbitrary build directories.\n\n* tests/issue-1063/main.c (main): I am building with a build\ndirectory that is not directly inside the source tree, so the path\n`../tests/data/As.I.Lay.Dying.ttf` does not resolve to the test\ninput file.  This change passes the test data directory as an\nenvironment variable to allow arbitrary build directories.\n\n* tests/meson.build: Updated.\n\n* src/smooth/ftgrays.c: Fix compilation if `FT_LONG64` is undefined.\n\nThe code assumed that if `__SSE2__` is defined, then 64-bit integer\ntypes are available.  This is not the case apparently for certain\nmultilib compiler targets like \u0027x86_32.x86\u0027 used by Gentoo.\n\nThis patch fixes the issue by disabling the special code path when\n64-bit integer types are not available.\n\nFixes #1071.\n\nDocument direct header inclusion valid since 2.6.1.\n\nSince commit e13391333 \u0027Make macros for header file names optional.\u0027 the\nheader file layout has become public and using the macro expansions for\nincludes is no longer required.  While this happened in 2.10.3, the header\nfile layout had not changed since commit 392cf22f8a5 \u0027Another adjustment to\nheader locations.\u0027 in 2.6.1.  Retroactively make the header file layout\npublic back to 2.6.1 to speed adoption.\n\n* Version 2.11.0 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-11-0\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.11.0.\n* docs/CHANGES: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html,\nbuilds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html,\nbuilds/wince/vc2008-ce/index.html, docs/freetype-config.1:\ns/2.10.4/2.11.0/, s/2104/2110/.\n\n* include/freetype/freetype.h (FREETYPE_MINOR): Set to 11.\n(FREETYPE_PATCH): Set to 0.\n\n* builds/unix/configure.raw (version_info): Set to 24:0:18.\n* CMakeLists.txt (VERSION_MINOR): Set to 11.\n(VERSION_PATCH): Set to 0.\n\n* builds/toplevel.mk (dist): Ignore more git-related files.\n\nSplit `afwrtsys.h`.\n\nThe header file `afwrtsys.h` has two distinct functions: to include the\nrequired writing system headers and also to generate code for each writing\nsystem.  At each current use site only one or the other is used, with\nvarious macro trickery selecting one or the other.  Split this header into\n`afws-decl.h` for the required writing system declarations and `afws-iter.h`\nfor iterating over the writing systems to generate code.\n\nThe motivation for this change is that the Visual C++ compiler treats the\nstandard include guard idiom like `#pragma once` \u0027if no non-comment code or\npreprocessor directive comes before or after the standard form of the\nidiom\u0027.  It appears to check this after macro expansion, so if\n`WRITING_SYSTEM` expands to empty the bottom of `afwrtsys.h` is empty and\nlooks like the standard include guard idiom which is treated like `#pragma\nonce`, so subsequent inclusion of `afwrtsys.h` is elided.\n\nFixes #1075.\n\n* src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h\n(AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated.\n\n* src/autofit/afwrtsys.h: Split into...\n* src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files.\n\n* CMakeLists.txt: Make `cmake` handle disabled dependencies correctly.\n\nInclude \u0027CMakeDependentOption\u0027.\n\nReplace `FT_WITH_XXX` options with `FT_DISABLE_XXX` and `FT_REQUIRE_XXX`\npairs.  Update option logic accordingly.\n\nFixes #1066.\n\n* .gitlab-ci.yml: Fixed cmake build, using correct options.\n\nFix some `cppcheck` warnings.\n\n* src/bzip2/ftbzip2.c (ft_bzip2_file_skip_output), src/gzip/ftgzip.c\n(ft_gzip_file_skip_output): Reduce scope of `delta`.\n\n* src/psaux/psintrp.c, src/psaux/psintrp.h (cf2_interpT2CharString): Add\n`const` to `buf` parameter.\n\n* src/raster/ftraster.c (DelOld): Add `const` to `profile` parameter.\n(Vertical_Sweep_Span): Reduce scope of `target`.\n(FT_Outline_Get_CBox): Reduce scope of `xMin`, `xMax`, `yMin`, `yMax`.\n\n* src/smooth/ftgrays.c (gray_render_conic): Reduce scope of `split`.\n(gray_sweep, gray_sweep_direct): Reduce scope of `area`.\n\n* src/tools/apinames.c (names_dump) \u003cOUTPUT_WATCOM_LBC\u003e: Reduce scope of\n`temp`.\n\nChangeLog housekeeping.\n\nArchive old `ChangeLog` file.\n\nWe no longer write ChangeLog entries manually; instead, the file will be\ncreated from commit messages (which should be formatted in GNU\u0027s ChangeLog\nstyle) by a call to\n\n  gitlog-to-changelog --format\u003d\u0027%B%n\u0027\n\nor something similar (this script is part of the \u0027gnulib\u0027 repository).\n\nREADME.git: Add Code of Conduct.\n\n\u0027COLR\u0027 v1 PaintTranslate and PaintScale precision\n\n* src/sfnt/ttcolr.c (read_paint): Implement spec changes in\nPaintTranslate and PaintScale and friends.  Update parsing to read\nnew shorter values.\n\nPaintRotate/PaintRotateAroundCenter spec updates\n\n* src/sfnt/ttcolr.c (read_paint): Implement spec change where\nPaintRotate and PaintRotateAroundCenter were split for a more\ncompact format definition.  Update parsing to read shorter values\nas changed in the spec.\n* include/freetype/ftcolor.h (FT_PaintRotate): Update documentation.\n\n\u0027COLR\u0027 v1 PaintSkew related spec updates\n\n* src/sfnt/ttcolr.c (read_paint): Implement spec changes around\nPaintSkew, PaintSkewAroundCenter.  Update parsing to read shorter\nvalues as changed in the spec.\n* include/freetype/ftcolor.h (FT_PaintSkew): Update documentation.\n\nRetrieve affine matrix from offset in \u0027COLR\u0027 v1 parsing.\n\n* src/sfnt/ttcolr.c (read_paint): Implement spec change where\naffine transform matrix is now referenced by offset instead of\nbeing placed inline in the PaintTransform table.\n\n\u0027COLR\u0027 v1 PaintSweepGradient spec update\n\n* src/sfnt/ttcolr.c (read_paint): PaintSweepGradient follows other\nspec changes and now has the angles specified as F2DOT14, reflect\nthat in the implementation.\n* include/freetype/ftcolor.h (FT_PaintSweepGradient): Update\ndocumentation.\n\nsrc/sfnt/ttcolr.c: Minor formatting.\n\n* meson.build: Honor `--includedir` instead of hard-coding \u0027include\u0027.\n\nSigned-off-by: Heiko Becker \u003cheirecka@exherbo.org\u003e\n\nFix invalid memory access in `bsdf` rasterizer.\n\nDo not generate SDF from bitmap if the `FT_GLYPH_OWN_BITMAP` flag is not\nset.  In some cases the bitmap buffer is freed but still points to a valid\naddress; to handle those cases check the flag before accessing the memory.\n\n* src/sdf/ftsdfrend.c (ft_bsdf_render): Handle the above case.\nAlso, return an error message if the bitmap\u0027s rows/pitch is invalid,\notherwise `slot-\u003ebuffer` might be assigned to some invalid memory location.\n(ft_sdf_render): Same as above.\nPlus, move the outline back to original state after rasterization and not if\nany error occurs.\n\nSigned-off-by: Anuj Verma \u003canujv@iitbhilai.ac.in\u003e\n\nFix out-of-range-access.\n\n* src/sdf/ftbsdf.c (first_pass, second_pass): Fix range during forward pass.\nOtherwise the index goes out of range for the last column.\n\nFixes issue #1077.\n\n* meson.build: Fix zlib support.\n\nThis commit synchronizes zlib support with both autotools and cmake: If no\nexternal zlib is found (or intentionally disabled on the command line), use\nthe internal zlib by undefining `FT_CONFIG_OPTION_SYSTEM_ZLIB` without\nmodifying `FT_CONFIG_OPTION_USE_ZLIB`.\n\nAlso improve summary output.\n\nProblem reported by Moazin.\n\nFix left shifts of negative numbers.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d36241\n\n* src/smooth/ftgrays.c (LEFT_SHIFT): New macro.\n(gray_render_conic) [BEZIER_USE_DDA]: Use it.\n\nAdd API for retrieving a \u0027COLR\u0027 v1 \u0027ClipBox\u0027 table.\n\nThe optional \u0027COLR\u0027 v1 glyph-specific clip box helps upstream graphics\nlibraries allocate a sufficiently large bitmap for a glyph without having to\ntraverse the glyph graph for that.  See\n\n  https://github.com/googlefonts/colr-gradients-spec/issues/251\n\nfor background on the introduction of this specification change.\n\n* include/freetype/ftcolor.h (FT_ClipBox): New structure.\n(FT_Get_Color_Glyph_ClipBox): New function declaration.\n\n* include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func):\nNew function type.\n(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it.\n\n* src/base/ftobjs.c (FT_Get_Color_Glyph_ClipBox): New function to link API\nwith SFNT implementation.\n\n* src/sfnt/sfdriver.c (sfnt_interface): Updated.\n* src/sfnt/ttcolr.c (Colr): New field `clip_list`.\n(tt_face_load_colr): Parse global clip list offset.\n(tt_face_get_color_glyph_clipbox): New function to find the clip box for a\nglyph id from the clip list array.\n* src/sfnt/ttcolr.h: Updated.\n\nAvoid integer overflow.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d36243\n\n* src/smooth/ftgrays.c(ADD_LONG, SUB_LONG, MUL_LONG, NEG_LONG)\n[STANDALONE_]: Removed, unused.\n(ADD_INT) [STANDALONE_]: New macro.\n(FT_INTEGRATE): Use ADD_INT.\n\ninclude/freetype/freetype.h (FT_Encoding): Improve documentation.\n\nBased on a suggestion by Antony Lee \u003canntzer.lee@gmail.com\u003e.\n\nAdd missing blend mode \u0027plus\u0027 to \u0027COLR\u0027 v1.\n\n* include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode\n\u0027plus\u0027 after it was added to the spec.\n\n* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor fix.\n\n* builds/windows/ftsystem.c (FT_Stream_Open): Support UNICODE compilation.\n\n* builds/windows/ftsystem.c (FT_Stream_Open): Cast to remove warning.\n\nFix ppem size overflow.\n\nFixes #1086.\n\n* src/base/ftobjs.c (FT_Request_Metrics): Add return value.\nCheck whether ppem values fit into unsigned short values.\n(FT_Request_Size): Updated.\n\n* include/freetype/internal/ftobjs.h: Updated.\n\n* src/cff/cffobjs.c (cff_size_request), src/cid/cidobjs.c\n(cid_size_request), src/truetype/ttdriver.c (tt_size_request),\nsrc/type1/t1objs.c (T1_Size_Request): Updated.\n\n* src/sdf/ftsdf.c (get_control_box): Fix compiler warning.\n\nUse FT_INT64 instead of FT_LONG64.\n\n* include/freetype/config/integer-types.h: Remove synonymous FT_LONG64.\n* include/freetype/internal/ftcalc.h: s/FT_LONG64/FT_INT64/.\n* src/base/ftcalc.c: Ditto.\n* src/base/fttrigon.c: Ditto.\n* src/smooth/ftgrays.c: Ditto.\n\nReadily use `long long` as a 64-bit type in C99 mode.\n\n* include/freetype/config/integer-types.h (FT_INT64):\nFT_CONFIG_OPTION_FORCE_INT64 is no longer required to use `long long`.\n\nFix format expectation for `COLR` v1 ClipList\n\n* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Change ClipList\nformat expectation to 1 instead of 0 to make it compliant with the\nlatest spec.\n\nDetermine `long long` availability based on its size.\n\nMSVC, for example, used `long long` even without full C99 support.\n\n* include/freetype/config/ftstdlib.h: Check if `long long` limits are\ndefined in \u003climits.h\u003e.\n* include/freetype/config/integer-types.h: Check `long long` size and\nuse it to typedef FT_Int64.\n\n* builds/windows/ftsystem.c (FT_Stream_Open): Support legacy Windows.\n\nFortify 64-bit algorithm.\n\n* src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): s/long/FT_Int64/ and\ns/unsigned long/FT_UInt64/.\n(gray_render_line): Adjust a critical variable type.\n\nRestore quiet no-op rendering of bitmap glyphs.\n\nFixes #1076.\n\n* src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when\nrendering a bitmap glyph.\n\nClean up the null cell usage.\n\nPut the null cell at the end of the pool and store it explicitly so that\nwe can use it as both the limit and the dumpster.\n\n* src/smooth/ftgrays.c (gray_TWorker): Store the last `cell_null` and\nremove unnecesary fields.\n(NULL_CELL_PTR, CELL_IS_NULL): Remove in favor of explicit `cell_null`.\n(gray_dump_cells, gray_set_cell, gray_sweep{,_direct}): Update callers.\n(gray_convert_glyph_inner): Trace remaining cells (oh well).\n(gray_convert_glyph): Set up `cell_null` and slightly improve the pool\nmanagement.\n\nDecorate const arguments.\n\n* src/base/ftglyph.c (FT_Glyph_Transform, FT_Glyph_To_Bitmap): Do it.\n* include/freetype/ftglyph.h (FT_Glyph_Transform, FT_Glyph_To_Bitmap):\nDo it.\n\nWhitespace formatting.\n\nAdd checksums for 2 tricky fonts.\n\nThanks to Ting717 for providing sample PDF. Fixes #1087.\n\n* src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Add\nchecksums for 2 tricky fonts `DFHei-Bd-WIN-HK-BF\u0027 and\n`DFMing-Md-WIN-HK-BF\u0027.\n\nNew function to skip the randomization tag.\n\n* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag):\nNew function to skip the randomization tag in the names of the\nfonts embedded in a PDF.  It is used by tt_check_trickyness_family(),\nto keep from mistaking \"DLC\" in the randomization tag as a\ntricky font name. See discussion in:\n\nhttps://lists.nongnu.org/archive/html/freetype-devel/2021-02/msg00002.html\n\nFor technical detail about the randomization tag, please find\nPDF Reference 5.5.3 \"Font Subsets\".  Thanks to Justyna Wawrzynska\nfor pointing out the issue caused by the randomization tag.\n\nAdd 2 tricky font names.\n\nAdditional fix for the issue #1087.\n\n* src/truetype/ttobjs.c (tt_check_trickyness_family): Add 2 tricky\nfont names reported in #1087.\n\nSimplify `trick_names\u0027.\n\n* src/truetype/ttobjs.c (tt_check_trickyness_family): For the case\nthat the beginning part of a long tricky family name is already\nregistered as another tricky family name, no need to double-check\nthe longer one.  Such long tricky family names are removed from\nthe `trick_names\u0027.\n\nFix for the family name shorter than 8 characters.\n\n* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag):\nIf the family name to be checked is shorter than 8 characters,\ndo not check its syntax.\n\n* src/smooth/ftgrays.c (gray_render_conic): Refactor redundancy.\n\nExpand comment.\n\nExpand comment (cont\u0027d).\n\nDetect SSE2 with MSVC for x86\n\nMSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is\ndefined and greater than or equal to 2.\n\n* src/smooth/ftgrays.c (FT_SSE2): New macro.\nUse it where appropriate.\n\nRevise SSE2 settings.\n\n* builds/windows/vc2010/freetype.vcxproj [x64]: Remove explicit SSE2.\n* builds/windows/visualc/freetype.vcproj [Win32]: Add explicit SSE2.\n\nFix compilation if !TT_CONFIG_OPTION_BYTECODE_INTERPRETER.\n\n* src/truetype/ttgxvar.c (tt_cvt_ready_iterator): Compile function\nconditionally.\n(tt_face_vary_cvt) [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Add code.\n\nFixes #1091.\n\nReduce shift in multiply-shift optimization.\n\n* src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): Reduce shift.\n\nSmaller shifts that keep the division operands of FT_UDIVPREP within\n32 bits result in slightly faster divisions, which is noticeable in\nthe overall performance.  The loss of precision is tolerable until the\ndivisors (the components dx and dy) approach 32 - PIXEL_BITS. With\nPIXEL_BITS \u003d 8, this corresponds to 65,000 pixels or the bitmap size\nthat we refuse to render anyway.\n\nUsing `ftbench -p -s60 -t5 -bc timesi.ttf`,\n\nBefore: 8.52 us/op\nAfter:  8.32 us/op\n\n* builds/windows/ftsystem.c (FT_Stream_Open): Fix double-close.\n\ns/0/NULL/ where appropriate.\n\nClean up stream reading.\n\n* src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset,\nFT_Stream_ReadULong and their LE variants): Remove unnecessary\ninitialization and slightly refactor.\n(FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned\nvalue and align with sister functions.\n\n* include/freetype/internal/ftstream.h (FT_Stream_GetByte,\nFT_Stream_ReadByte): Update prototypes and caller macros.\n\nCosmetic zeros.\n\n* src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling.\n\n* src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing.\n\nClean up initialization calls.\n\n* src/raster/ftraster.c (ft_black_init): Removed.\n(ft_black_new): Clean up.\n* src/sdf/ftbsdf.c (bsdf_raster_new): Ditto.\n* src/sdf/ftsdf.c (sdf_raster_new): Ditto.\n* src/smooth/ftgrays.c (gray_raster_new): Ditto.\n\nautogen.sh: Make it work with old Solaris 10 shell.\n\n* src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory.\n\nCosmetic zeros.\n\nSynchronize with upstream.\n\n* src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600.\n\nFixes #1093.\n\nUse native memory allocation API.\n\n* builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free):\nWrap HeapAlloc, HeapReAlloc, and HeapFree.\n(FT_New_Memory): Set the heap handle.\n\nsrc/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600.\n\nThis allows C99 compilation on Solaris.\n\nProblem reported by Mojca Miklavec.\n\nFortify memory debugging.\n\nThese changes are neccessary to properly recover `memory-\u003euser` that\nholds the Windows heap handle now.\n\n* src/base/ftdbgmem.c (ft_mem_debug_init): Handle all table allocations,\ninitializations, and sizing instead of...\n(ft_mem_table_new): ... this function removed.\n(ft_mem_debug_done): Better check for the active debugger and free the\ndebugger table here instead of...\n(ft_mem_table_destroy): ... here.\n\nFortify memory debugging (cont\u0027d).\n\n* src/base/ftdbgmem.c (FT_DumpMemory): Check for active debugger.\n(ft_mem_table_destroy): Move `FT_DumpMemory` call from here...\n(ft_mem_debug_done): ... to here.\n\nTweak `loca` clamping.\n\nFixes #1095.\n\n* src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping.\n* include/freetype/internal/tttypes.h (TT_Face): Correct docs.\n\nTweak `hdmx` checking.\n\nFixes #1096.\n\n* src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding.\n\n* src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero.\n\nFixes fall out from a7b199d081e7.\n\nAvoid some memory zeroing.\n\n* src/cache/ftcmru.c (FTC_MruList_New): Use Q-macro.\n* src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Ditto.\n* src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Ditto.\n\nRemove zeros.\n\n* src/cache/ftcmru.c (FTC_MruList_New): Remove initialization.\n* src/psaux/psstack.c (cf2_stack_init): Ditto.\n\nAvoid some memory zeroing.\n\n* src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done,\nft_open_face_internal, ft_open_face_internal): Use Q-macros.\n\nAvoid some memory zeroing.\n\n* src/truetype/ttgload.c (load_truetype_glyph): Use Q-macro.\n* src/truetype/ttinterp.c (Update_Max): Ditto.\n* src/truetype/ttpload.c (src/truetype/ttpload.c): Ditto.\n\nClean up `exec` initialization.\n\n* src/truetype/ttinterp.c (Init_Context): Absorbed into...\n(TT_New_Context): ... this function.\n\n* src/base/ftobjs.c (FT_CMap_New): Revert to zeroing.\n\nFixes fallout from c1fa7aa2bc96, reported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d38641\n\nAvoid some memory zeroing.\n\n* src/bdf/bdfdrivr.c (BDF_Face_Init): Use Q-macro.\n* src/sfnt/sfobjs.c (sfnt_load_face): Ditto.\n* src/psnames/psmodule.c (src/psnames/psmodule.c): Remove zero.\n\nClean up unsigned counters.\n\nLoops with unsigned decrement can be reliably stopped when the counter\nwraps around after reaching zero.\n\n* src/cff/cffload.c (cff_charset_compute_cids): Use unsigned counter.\n* src/pshinter/pshalgo.c (psh_hint_table_activate_mask): Ditto.\n* src/pshinter/pshrec.c (ps_mask_table_merge): Ditto.\n\n* src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops.\n\nFixes fallout from 731d0b685685 reported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d38685\n\nRevert to some zeroing.\n\n* src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero\n`buckets` again to fix some crashes.\n\nReplace boolean allocation macros with MEM ones.\n\n* src/base/ftbitmap.c (FT_Bitmap_Copy): Use MEM-macro.\n* src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Ditto.\n* src/bzip2/ftbzip2.c (ft_bzip2_alloc): Ditto.\n* src/cache/ftccache.c (ftc_cache_init): Ditto\n* src/gzip/ftgzip.c (ft_gzip_alloc): Ditto.\n* src/psnames/psmodule.c (ps_unicodes_init): Ditto.\n* src/sfnt/sfobjs.c (sfnt_load_face): Ditto.\n* src/sfnt/ttload.c (tt_face_load_name): Ditto.\n\nMinor type adjustments.\n\n* src/cff/cffobjs.c (cff_face_init): Reduce casting.\n* src/truetype/ttobjs.c (tt_size_ready_bytecode): Ditto.\n* src/type1/t1load.c (T1_Set_MM_Design): Ditto.\n\n* src/pcf/pcfread.c (pcf_read_TOC): Remove casting.\n\n* src/cff/cffload.c (cff_fd_select_get): Remove casting.\n\nMiscellaneous clean-ups.\n\n* src/cache/ftccache.c (ftc_get_top_node_for_hash, FTC_Cache_Clear):\nRemove barely used variables.\n(ftc_cache_add): Adjust casting.\n* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Remove casting.\n* src/cache/ftcsbits.c (ftc_snode_load): Remove casting.\n\nExplicitly set StandardEncoding or ExpertEncoding offsets.\n\nFixes #1097.\n\n* src/cff/cffload.c (cff_encoding_load): Set special offset values.\n\nTry both wide and narrow `CreateFile`\n\nWindows handles wchar_t* UTF-16 and char* ANSI (presently UTF-8)\nfilenames using alternative -A and -W API. We\u0027ll try them both\nwhen opening a file. This means that you should not worry about\nabout conversions.\n\nFixes #1098 and !76.\n\n* builds/windows/ftsystem.c (FT_Stream_Open): Call alternative\n`CreateFile` in the case of failure.\n\nMinor clean-ups.\n\n* src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses.\n* src/cache/ftccache.c (FTC_Cache_Lookup): Ditto.\n(FTC_Cache_RemoveFaceID): Remove unnecessary variable.\n\n* src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW.\n\nMinor.\n\n* src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner.\n\nRevert back to `CreateFileA` only.\n\nCalling `CreateFileW` without making sure that the patname is really\n`wchar_t` is a bad idea and can lead to unpredictable overreads. For\nWindows CE, we impelemnt the missing API.\n\nFixes #1098 and !76 again.\n\n* builds/windows/ftsystem.c (FT_Stream_Open): Call `CreateFileA`.\n[_WIN32_WCE] (CreateFileA, FileSizeEx): Implement missing interfaces.\n\nInitialize stream memory earlier.\n\nWith Windows memory management tracking heap, it is important to use\nit during the stream opening fallback. In Unix, the argument is\nunused, but it is better to set it correctly.\n\n* src/base/ftobjs.c (FT_Stream_New): Set memory before calling\n`FT_Stream_Open`.\n* builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open,\nft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper\nmemory argumment.\n\nMinor optimization.\n\n* src/pcf/pcfread.c (pcf_load_font): Do not call `FT_MulDiv` for a\nsmall job.\n* src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto.\n* src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a comment.\n\nReference `fopen` in the docs.\n\nMinor documentation fixes and improvements.\n\nUse NULL for pointers only.\n\n* src/bdf/bdflib.c (*): Code changes.\n* include/freetype/freetype.h: Comments only.\n* src/cff/cffload.c, src/cff/cffobjs.c: Ditto.\n* src/winfonts/winfnt.c: Ditto.\n\nSimplify comment collection or lack thereof.\n\nBDF comments are neither actually collected nor retrieved. There is\nno need to be fancy with delimiters.\n\n* src/bdf/bdflib.c (_add_bdf_comment): Delimit comments with zeros...\n(bdf_load_font): ...and do not null-terminate comments additionally.\n(_bdf_parse_glyphs): Check if comments are kept, which they are not.\n(_bdf_parse_start): Minor clean up.\n\nPropagate sign when reading OFF3.\n\nSigned 24-bit values are extremely rare.  FreeType only reads them in\nPFR fonts with bitmap strikes conditionally. They have not been seen\nin the known fonts.  That is why this bug could never be discovered.\n`FT_FRAME_OFF3` propagates sign correctly.\n\n* include/freetype/internal/ftstream.h (FT_PEEK_OFF3, FT_PEEK_OFF3_LE):\nPropagate sign into 32-bit value.\n(FT_GET_OFF3, FT_READ_OFF3): Needed fixing but removed as unused.\n\nDo not use autoconf SIZEOF.\n\n* builds/unix/ftconfig.h.in [FT_USE_AUTOCONF_SIZEOF_TYPES]: Removed.\n* builds/unix/configure.raw: Remove AC_CHECK_SIZEOF and update.\n\nAfter this commit, autoconf builds will fully rely on \u003climits.h\u003e\nrather than falling back on it if AC_CHECK_SIZEOF failed for some\nreason.  There is a risk that misconfigured cross-compilation might\nhave wrong headers.  Note that Meson and CMake builds always relied on\n\u003climits.h\u003e for sizes and availability of integer types.\n\n* src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation.\n\n* src/tools/apinames.c: Facilitate OpenVMS linker options.\n\n* src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting.\n\nAdditional `FT_MSB` macro definitions.\n\n* include/freetype/internal/ftcalc.h [__DECC,_CRAYC]: Use builtins\nand intrinsics.\n\nCI: Hardcode meson version to fix build failure on windows\n\nRemove unnecessary check.\n\n* src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not\ncheck if direction is defined before checking how.\n\nMore convenient direction definition.\n\nIt is easier to check directions using flags than integer values.\n\n* src/pshinter/pshalgo.h (PSH_Dir): Redefine directions.\n(PSH_PointRec): Use them as an enum type.\n\n* src/pshinter/pshalgo.c (psh_compute_dir): Modify return type.\n(psh_glyph_init, psh_hint_table_find_strong_points,\npsh_glyph_find_blue_points): Update users.\n\nAdditional clean-ups.\n\n* src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code.\n* src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields.\n\n* include/freetype/internal/ftgloadr.h: Add missing header.\n\nNoticed by Jouk Jansen.\n\nautogen.sh: Only copy submodules if building from a git branch.\n\n`autogen.sh` fails if building from a standard source tarball.  Firstly, git\nexpects to be called in a git repository, then `copy_submodule_files`\nblindly attempts to copy files.\n\nDebian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh`\nbefore compiling to regenerate build files.\n\nThis patch ensures that various git commands are only called and \u0027dlg\u0027 files\nare only copied if `autogen.sh` is called from a git repository.\n\nStandardize `mmap` failure.\n\n* builds/unix/ftsystem.c (FT_Stream_Open): Check for MAP_FAILED.\n* builds/vms/ftsystem.c (FT_Stream_Open): Ditto.\n\nThis should cover https://savannah.nongnu.org/patch/?5909 as well.\n\n* src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround.\n\nmeson.build (gen_docs): Use `current_source_dir` instead of `source_root`.\n\nThese two are not equal when FreeType is used as a subproject, such as in\n`freetype-demos`.  In that case, `source_root` points at the root project,\ncausing the docs build to fail.\n\nSignedness revisions.\n\nThis eliminates explicit casting by switching to unsigned fields.\nThe revisions mostly impact the handling of CID fonts.\n\n* include/freetype/fttypes.h (FT_Data): Change to unsigned `length`.\n* include/freetype/t1tables.h (CID_FaceDictRec): Ditto for `sd_bytes`.\n(CID_FaceInfoRec): Ditto for `gd_bytes` and `gd_bytes`.\n* include/freetype/internal/tttypes.h (TT_LoaderRec): Ditto for\n`byte_len`.\n\n* src/cid/cidgload.c (cid_load_glyph): Updated.\n* src/cid/cidload.h (cid_get_offset): Update argument.\n* src/cid/cidload.c (cid_get_offset, cid_read_subrs, cid_face_open):\nUpdated.\n* src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data):\nUpdated.\n* src/psaux/psft.c (cf2_getT1SeacComponent): Updated.\n* src/truetype/ttgload.c (TT_Process_Composite_Glyph,\nload_truetype_glyph): Updated.\n\n* src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading.\n\n* src/cid/cidload.c (cid_face_open): Streamline SubrCount check.\n\n* src/cid/cidload.c (cid_face_open): Streamline CIDCount check.\n\nSignedness revisions.\n\nUnsigned checks are simpler.\n\n* include/freetype/t1tables.h (CID_FaceInfoRec): Change to unsignd\n`num_dicts`.\n* src/cid/cidparse.h (CID_Parser): Change to unsigned `num_dict`.\n\n* src/cid/cidgload.c (cid_load_glyph): Updated.\n* src/cid/cidload.c (cid_load_keyword, parse_fd_array,\nparse_expansion_factor, parse_font_name, cid_read_subrs,\ncid_face_open): Updated.\n* src/cid/cidobjs.c (cid_face_done): Updated.\n* src/cid/cidparse.c (cid_parser_new): Updated.\n\nSignedness revisions.\n\nUnsigned indexes are easier to check.\n\n* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Updated.\n* src/psaux/psintrp.c (cf2_interpT2CharString): Ditto.\n* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto.\n* src/type1/t1load.c (read_binary_data): Ditto.\n\nRevert to signed size for binary data.\n\nRecently introduced and reported as\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d39838\n\n* src/type1/t1load.c (read_binary_data): Reject negative size.\n(parse_subrs, parse_charstrings): Use customary signed size.\n\n* src/cid/cidload.c (parse_fd_array): Protect against trancation.\n\nCI: Add macOS CI, including a clang build\n\nAdd clang build to linux CI\n\nMinor documentation improvements.\n\nReload context after re-executing `prep`.\n\nWhen a different hinting mode from the current is selected, the `prep` table\nmust be re-executed with the new mode.  After this happens the context must\nbe re-loaded in preparation for the glyph program to be run.\n\nFixes #1104.\n\n* truetype/ttgload.c (tt_loader_init): Add call to `TT_Load_Context`.\n\nFix typos in memory macros.\n\nFT_QNEW_ARRAY and FT_QRENEW_ARRAY were using the non-Q\nFT_MEM_NEW_ARRAY and FT_MEM_RENEW_ARRAY. Change these to use the Q\nversions. Also fix the one issue discovered in tt_face_load_name\nwhere table-\u003enames is created with FT_QNEW_ARRAY but the extra\nstring member is not initialized to NULL.\n\n* include/freetype/internal/ftmemory.h (FT_Q(RE)NEW_ARRAY):\nUse FT_MEM_Q(RE)NEW_ARRAY as needed.\n\n* src/sfnt/ttload.c (tt_face_load_name): Initialize `entry-\u003estring`.\n\n* src/sfnt/ttload.c (tt_face_load_name): Accounting fix.\n\nFallout reported as\n  https://crbug.com/40024\n\nFix up user properties.\n\nFallout reported as\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d40027\n\n* src/bdf/bdflib.c (_bdf_add_property): Cosmetic NULL.\n(bdf_create_property): Limit allocations to customary signed\nFT_Long and NULL-initialize unused storage.\n(bdf_free_font): Do not free unused storage.\n\n* src/sfnt/ttload.c (tt_face_load_name): NULL-initialize langTag.\n\nAnother attempt to fix fallout reported as\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d40024\n\nconfigure: Use string comparison for directory inodes.\n\nInode values might be larger than integers supported by the shell.\n\nFixes #1105.\n\nZero out the allocated properties.\n\nFallout reported as\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d40033\n\n* src/pcf/pcfread.c (pcf_get_properties): Use FT_NEW_ARRAY and zero\nout `properties` in case of failure.\n\nImprove rejection of other font formats.\n\nThis is mainly for better diagnostics of malformed fonts.\n\n* src/bdf/bdflib.c (_bfd_readstream): Stop font format testing if the first\ninput line is too long or doesn\u0027t end with `\\r` or `\\n`.\n\n* src/cid/cidparse.c (cid_parser_new): Don\u0027t handle too short input as an\nerror but as an unknown format.\n\n* src/pfr/pfrobjs.c (pfr_face_init): Ditto.\n\n* src/winfonts/winfnt.c (fnt_font_load, fnt_face_get_dll_font): Ditto.\n\n* tests/issue-1063/main.c: s/PATH_MAX/FILENAME_MAX/.\n\nCloses !97 for Windows by using a standard macro.\n\nDelay setting names and langTags until computed.\n\nPreviously, the table-\u003enames and table-\u003elangTags fields were created\npointing to uninitialized memory and an early exit could happen if the\nframe could not be entered. The caller would then be unable to properly\ndispose of the memory as the string fields had not been initialized.\n\nReported as\n  https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1261343\n\n* src/sfnt/ttload.c (tt_face_load_name): delay setting table-\u003elangTags\nand table-\u003enames until after the memory they will point to is fully\ninitialized.\n\nDelay setting gasp ranges and count until computed.\n\nPreviously, the gasp.numRanges was set and gasp.gaspRanges was\nallocated and assigned before a possible early exit if the frame could\nnot be entered. It is also possible that the gaspRanges allocation\ncould fail but the numRanges still be set to non-zero. In such cases\nan error would be returned, but the face would have a gasp in an\ninconsistent state which may still be accessed.\n\nReported as\n  https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1261450\n\n* src/sfnt/ttload.c (tt_face_load_gasp): Delay setting gasp.numRanges\nand gasp.gaspRanges until after the ranges are initialized.\n\nCommit vstore data and regions on allocation.\n\nThe vstore-\u003eregionCount and vstore-\u003edataCount were read directly\nfrom the data. However, vstore-\u003evarRegionList and vstore-\u003evarData\nwould still contain uninitialized entries with uninitialized\npointers in the event of an error, leading to issues when attempting\nto clean up.\n\nReportd as\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d40104\n\n* src/cff/cffload.c (cff_vstore_load): Read the region and data counts\ninto locals and update the vstore counts immediately after each entry\nbecomes free-able.\n\nDelay setting blend weight and design position.\n\nPreviously the `blend-\u003eweight_vector`, `blend-\u003edefault_weight_vector`,\nand `blend-\u003edesign_pos` were set early to allocated but uninitialized\nmemory under the assumption that the memory would eventually be\ninitialized. However, it is possible that some of the required\nkeywords may not actually be present, leaving the memory uninitialized.\nThis is different from a present but invalid table, which would produce\nan error.\n\nReported as\n  https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1261762\n\n* src/type1/t1load.c (t1_allocate_blend): Remove early allocation and\ninitialization.\n(parse_blend_design_positions, parse_weight_vector): Parse into local\nand assign to blend if valid.\n(T1_Open_Face): Check that if a blend exists that it has the weight\nvector and design positions.\n\nAdd ARM64 platform.\n\n* builds/windows/vc2010/freetype.sln: Updated\n* builds/windows/vc2010/freetype.vcxproj: Updated.\n* builds/windows/vc2010/freetype.vcxproj.filters: Minor fix.\n\nPrioritize x64.\n\n* builds/windows/vc2010/freetype.sln: Sort entries.\n\n* builds/windows/vc2010/freetype.vcxproj: Use MachineARM64.\n\nAdd MSVC linker optimazations.\n\nWe continue to build static libraries with statically linked C run-\ntime and add options to optimize references.\n\n* builds/windows/vc2010/freetype.vcxproj: Sort entries, add options.\n\nTolerate missing Blend dictionary entries\n\nIn a Multiple Master font, the Blend dictionary must contain valid\nPrivate, FontInfo, and FontBBox. The current code will error if any of\nthese are present and invalid, but will not error and will provide\nuninitialized data if the Blend dictionary exists but does not contain\none of these entries. This change reverts to the older behavior of\ntreating any missing entries as containing all zero data and not\nreturning an error.\n\nIn the future it may be best to keep track of when these are actually\ninitialized and error if they are not.\n\n* src/type1/t1load.c (t1_allocate_blend): Zero initiailize.\n\nFormatting.\n\nOptimize table tagging.\n\nFixes #1107.\n\n* include/freetype/internal/wofftypes.h (WOFF2_TableRec): Use\n32-bit tag.\n* src/sfnt/sfwoff2.c (compare_tags, find_table, woff2_open_font):\nUse 32-bit tag.\n* src/sfnt/woff2tags.[ch] (woff2_known_tags): Use static storage and\nreturn 32-bit tag.\n\nOptimize table tagging.\n\n* include/freetype/internal/wofftypes.h (WOFF_TableRec): Use\n32-bit tag.\n* src/sfnt/sfwoff.c (woff_open_font): Use 32-bit tag.\n\nRevise MSVC linking optimizations.\n\n* builds/windows/vc2010/freetype.vcxproj: Optimize DLL linking only.\n* builds/windows/visualc/freetype.dsp: Ditto.\n* builds/windows/visualc/freetype.vcproj: Ditto.\n\nSeparate MSVC linker and librarian.\n\nMSVC uses LIB for static and LINK for dynamic libraries. They are\nrelated but the former has much smaller set of options.\n\n* builds/windows/vc2010/freetype.vcxproj: Updated.\n\n* src/truetype/ttgload.c (load_truetype_glyph): Fix MSVC warning C4312.\n\nLet MSBuild handle DLG copy.\n\n* builds/windows/vc2010/freetype.vcxproj: Specify DlgCopy target.\n* builds/windows/vc2010/script.bat: Deleted.\n\nClarify `COLR` v1 FT_Paint* format representations\n\n* include/freetype/ftcolor.h (FT_PaintLinearGradient,\nFT_PaintRadialGradient, FT_PaintSweepGradient, FT_PaintTransform,\nFT_PaintTranslate, FT_PaintScale, FT_PaintRotate, FT_PaintSkew): Clarify\n16.16 fixed point representation of struct fields.\n* src/sfnt/ttcolr.c (read_paint): Shift coordinates for\nFT_PaintLinearGradient, FT_PaintRadialGradient, FT_PaintSweepGradient\naccordingly.\n\nFixes: https://gitlab.freedesktop.org/freetype/freetype/-/issues/1110\n\nUpdate Meson wrap for win-arm64\n\n1.6.37-5 released patches for win-arm64 to successfully build\nlibpng with Meson:\nhttps://github.com/mesonbuild/wrapdb/pull/205\nhttps://github.com/mesonbuild/wrapdb/pull/216\n\nUpdated by the following command:\nmeson wrap update libpng\n\nTested on win-arm64 and x64.\n\n* docs/INSTALL: Mention Meson and MSBuild more prominently.\n\n* src/truetype/ttgxvar.c: Fix typos in macros that guard CVAR code.\n\nFix CVAR handling of tuples for all points.\n\n* src/truetype/ttgxvar (tt_face_vary_cvt): Function\n`ft_var_readpackedpoints`, when it returns `ALL_POINTS`, also sets\n`point_count` to value 0.  However, the CVAR code was incorrectly expecting\nthat `point_count` would be set to match the length of the CVT table.\n\nFix handling of packed deltas in Variation Fonts.\n\n* src/truetype/ttgxvar (ft_var_readpackeddeltas): Don\u0027t expect the number of\nbytes used to encode the deltas to be higher than the number of encoded\nvalues.  The specification allows a very compact encoding; for example, a\nlist of 200 zeros can be encoded with just a couple of bytes.\n\nWe now count the consumed bytes to make sure to not read more than expected.\n\nAvoid some memory zeroing in variations.\n\n* src/truetype/ttgxvar.c (ft_var_readpackeddeltas, ft_var_load_avar,\nft_var_load_item_variation_store, ft_var_load_gvar): Use FT_QNEW_ARRAY\nif memory immediately initialized or discarded otherwise.\n\nLighten up the inclusions.\n\nThe DLG wrapper needs to know if FT_DEBUG_LOGGING is defined in\n`ftoption.h`. It does not need entire FreeType.\n\n* src/dlg/dlgwrap.c: Include FT_CONFIG_OPTIONS_H directly.\n\n* src/sfnt/ttload.c (tt_face_load_gasp): Fix a type mismatch warning.\n\nMake trickyness checks depend on TT_USE_BYTECODE_INTERPRETER.\n\nBased on a patch from metarutaiga (MR !106).\n\n* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag,\ntt_check_trickyness_family, tt_synth_sfnt_checksum, tt_get_sfnt_checksum,\ntt_check_trickyness_sfnt_ids, tt_check_trickyness): Put functions into a\n`TT_USE_BYTECODE_INTERPRETER` block.\n(tt_face_init): Put trickyness checks into a `TT_USE_BYTECODE_INTERPRETER`\nblock.\n\nFixes #1111.\n\nReduce footprint if WOFF and WOFF2 support is not needed.\n\nBased on a patch from metarutaiga (MR !106).  The gist of this commit is\nthat it doesn\u0027t make sense to support WOFF without compression (which would\nbe only possible in WOFF 1.0 anyway).\n\n* src/sfnt/sfobjs.c (sfnt_open_font): Guard WOFF code with\n`FT_CONFIG_OPTION_USE_ZLIB` block.\nGuard WOFF2 code with `FT_CONFIG_OPTION_USE_BROTLI` block.\n\n* src/sfnt/sfwoff.c, src/sfnt/sfwoff.h: Guard files with\n`FT_CONFIG_OPTION_USE_ZLIB` blocks, not parts of the code.\n\n* src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h, src/sfnt/woff2tags.c,\nsrc/sfnt/woff2tags.h: Guard files with `FT_CONFIG_OPTION_USE_BROTLI` blocks,\nnot parts of the code.\n\nFixes #1111.\n\nFix C++ compilation.\n\n* src/pshinter/pshalgo.c (psh_compute_dir): Fix type of `result`.\n(psh_hint_table_find_strong_points): Add cast.\n\n* src/gxvalid.*, src/otvalid.*: Fix `-Wformat` warnings.\n\n* src/sfnt/sfobjs.c (sfnt_open_font): Fix typo.\n\nRemove logging from default debug configurations.\n\nDLG is rather costly for performance and should be used judiciously.\nThis removes it from the default configurations but gives an example\nhow to enable it using the `UserDefines` property.\n\n* builds/windows/vc2010/freetype.vcxproj: Hide FT_DEBUG_LOGGING.\n\nAdditional `FT_MSB` macro definitions.\n\nBetter macros for Windoes CE and ARM in general, based on !109\nfrom metarutaiga.\n\n* include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated.\n\n* src/truetype/ttgxvar.c (ft_var_to_normalized): Edge optimization.\n\nExplicitly define `FT_MSB` for Clang.\n\n* include/freetype/internal/ftcalc.h [__clang__] (FT_MSB): Updated.\n\nImprove `DlgCopy` target.\n\nFixes #1113.\n\n* builds/windows/vc2010/freetype.vcxproj: Run `DlgCopy` conditionally\nand decouple it from `Build`.\n\nAvoid undefined shifts in `COLR` v1 paint parsing\n\n* src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Tighten shift\nbehavior by using multiplication, mostly using macros from ftcalc.h.\n\nFixes: https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1269168\n\nFix clang warnings.\n\n* src/gxvalid/gxvcmmn.h (GXV_SET_ERR_IF_PARANOID): Use \u0027do\u0027 block.\n* src/gxvalid/gxvmod.c (GXV_TABLE_LOAD, GXV_TABLE_VALIDATE): Ditto.\n\n* src/smooth/ftgrays.c (gray_convert_glyph): Add cast.\n\n* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Remove cast.\n* src/type1/t1load.c (read_binay_data): Use `FT_ULong` for `size` parameter.\n(parse_subrs, parse_charstrings, parse_dict): Ditto; also add some casts.\n\nUpdates for the forthcoming OpenType 1.9 standard (1/2).\n\nThis is in preparation for implementing `DeltaSetIndexMap` format 1, which\nis used by `COLR` v1 tables, and which allows 32bit indices.\n\n  https://docs.microsoft.com/en-us/typography/opentype/otspec190/delta/otvarcommonformats_delta.html\n\n* src/truetype/ttgxvar.h (GX_DeltaSetIdxMapRec): Change type of `mapCount`\nto `FT_ULong`.\n\n* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add argument\nfor passing the table size; update caller.\nImplement new format.\n\nUpdates for the forthcoming OpenType 1.9 standard (2/2).\n\n* src/truetype/ttgxvar.c (ft_var_load_item_variation_store):\ns/shortDeltaCount/wordDeltaCount/ (as done in the specification, too).\nRecognize new format and reject it for now.\n\nFix clang++ warnings.\n\n* src/*: Initialize some variables to NULL.\n\nProvide C++ versions for public macros with casts.\n\nMany FreeType clients use C++.  However `g++ -Wold-style-cast` warns for\nmacros with C-style casts even for system header files; this also affects\ndirectories included with `-isystem`.  While this could be seen as a problem\nwith g++, the problem is more a philosophical one: Over the time, C and C++\ndiverged more and more, and some features of C are no longer the \u0027right\u0027\nsolution in C++.\n\n* include/freetype/config/public-macros.h (FT_STATIC_CAST,\nFT_REINTERPRET_CAST): New macros.\n\n* include/freetype/freetype.h (FT_ENC_TAG, FT_LOAD_TARGET_,\nFT_LOAD_TARGET_MODE): Use `FT_STATIC_CAST`.\nCorrectly handle negative \u0027signed char\u0027 input.\n* include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto.\n* include/freetype/fttypes.h (FT_MAKE_TAG, FT_BOOL): Ditto.\n* include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): Use\n`FT_REINTERPRET_CAST`.\n\n* src/smooth/ftgrays.c (FT_STATIC_CAST)[STANDALONE_]: New macro.\n[!STANDALONE]: Include `FT_CONFIG_CONFIG_H`.\n\nFixes #1116.\n\nAvoid undefined left-shifts.\n\nWe really have to use double casts to avoid issues with C\u0027s and C++\u0027s\nsignedness propagation rules in implicit casts.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d41178\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d41182\n\n* include/freetype/config/public-macros.h (FT_STATIC_CAST,\nFT_REINTERPRET_CAST): Modify macro to take two arguments.\nUpdate all callers.\n(FT_STATIC_BYTE_CAST): New macro.\n\n* include/freetype/freetype.h (FT_ENC_TAG): Use `FT_STATIC_BYTE_CAST`.\n* include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto.\n* include/freetype/fttypes.h (FT_MAKE_TAG): Ditto.\nUse `FT_Tag` for casting.\n\n* src/ftraster/ftmisc.h (FT_MAKE_TAG): Removed, no longer needed.\n(FT_STATIC_BYTE_CAST): New macro.\n\n* src/smooth/ftgrays.c (FT_STATIC_CAST): Replace with...\n(FT_STATIC_BYTE_CAST): ... this.\n\nFix stand-alone compilation.\n\n* src/smooth/ftgrays.c (FT_Trace_Enable, FT_Trace_Disable)[STANDALONE_]:\nDefine.\n\nFix minor compilation warning.\n\n* src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup): Declare\nas static.\n\n* include/freetype/fttypes.h (FT_MAKE_TAG): Remove the same casting.\n\n* src/truetype/ttinterp.c (Ins_MD): Avoid `FT_ABS`.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d38562\n\n* meson.build: Fix compatibility version on MacOS.\n\nFixes #1117.\n\nmeson.build: Initialize `common_ldflags`.\n\nformats.txt: Add info about WOFF and WOFF2.\n\nUpdate `CHANGES` files, other minor whitespace and documentation issues.\n\n* builds/windows/vc2010/freetype.vcxproj (DlgCopy): Use transforms.\n\nPartly revert 5b626281.\n\nFixes #1118.\n\n* src/truetype/ttpload.c (tt_face_load_hdmx): Do not assume that\n`record_size` is rounded even though the records are padded.\n\nQuietly reject out-of-spec `hdmx` tables.\n\nThe `hdmx` table is optional and can be safely rejected without\nan error if it does not follow specifications. The record size\nmust be equal to the number of glyphs + 2 + 32-bit padding.\n\n* src/truetype/ttpload.c (tt_face_load_hdmx): Thoroughly check\nthe record size and improve tracing.\n\n* src/truetype/ttpload.c (tt_face_load_hdmx): Added comments.\n\n* builds/windows/vc2010/freetype.vcxproj (DlgCopy): Minor tweak.\n\n* src/base/ftobjs.c (FT_Request_Metrics): Fix build warning on Android.\n\nUse casts since `FT_USHORT_MAX` is unsigned short in bionic (libc used in\nAndroid).\n\nImprove debugging.\n\n* builds/windows/ftdebug.c (FT_Message, FT_Panic): Buffer output\nand call `OutputDebugStringA` only if `IsDebuggerPresent`.\n[_WIN32_WCE] (OutputDebugStringA): Implement the missing API.\n\n* Version 2.11.1 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-11-1\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.11.1.\n* docs/CHANGES, docs/release: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html, builds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,\ndocs/freetype-config.1: s/2.11.0/2.11.1/, s/2110/2111/.\n\n* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.\n\n* builds/unix/configure.raw (version_info): Set to 24:1:18.\n* CMakeLists.txt (VERSION_PATCH): Set to 1.\n\n* builds/toplevel.mk (version_tag, CHANGELOG_SCRIPT): New variables.\n(do-dist): Generate `ChangeLog` file with all commits since last release.\n\n* builds/windows/visualc/freetype.vcproj: Add missing file.\n\nGuard some non-ancient API.\n\nWe can support Windows 98 and NT 4.0 in principle...\n\n* builds/windows/ftdebug.c, builds/windows/ftsystem.c: Check for the\nancient SDK using _WIN32_WINDOWS, _WIN32_WCE, or _WIN32_WINNT.\n\nReduce Infinality footprint again.\n\n* src/truetype/ttgload.c (compute_glyph_metrics): Streamline and\nprioritize the Infinality checks to use `hdmx`.\n\nFix use of uninitialized value.\n\nIn _bdf_readstream if the data contained no newline then the buffer\nwould continue to grow and uninitialized data read until either the\nuninitialized data contained a newline or the buffer reached its\nmaxiumum size. The assumption was that the line was always too long and\nthe buffer had been filled, however this case can also happen when there\nis not enough data to fill the buffer.\n\nCorrect this by properly setting the cursor to the end of the available\ndata, which may be different from the end of the buffer. This may still\nresult in one extra allocation, but only on malformed fonts.\n\n* src/bdf/bdflib.c (_bfd_readstream): Correctly update cursor. Remove\nunread set of `avail`.\n\nBug: https://lists.nongnu.org/archive/html/freetype-devel/2021-12/msg00001.html\n\nLimit INSTCTRL appication within specs.\n\n* src/truetype/ttinterp.c (Ins_INSTCTRL): Limit its global effects\nto the CVT program and local effects to the glyph program.\n\nThis also fixes an Infinality buglet. The `ignore_x_mode` should be\nlocally unset by the glyph program.\n\nRelocate subpixel flag setting.\n\n`TT_RunIns` is too busy to deal with subpixel flags. It is better\nto set them in `tt_loader_init`, which is executed before each\nglyph program.\n\n* src/truetype/ttinterp.c (TT_RunIns): Move the flag setting from\nhere...\n* src/truetype/ttgload.c (tt_loader_init): ... to here.\n\nInitialize the loader with `hdmx` data.\n\nThe `hdmx` matching can be done before the glyph is loaded.\n\n* include/freetype/internal/tttypes.h (TT_LoaderRec): Add a field.\n* src/truetype/ttgload.c (compute_glyph_metrics): Relocate the `hdmx`\ncode from here...\n(tt_loader_init): ... to here, before the glyph is loaded.\n\nHonor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable.\n\nThis simply shortcuts the glyph loading if FT_LOAD_ADVANCE_ONLY\nis specified by FT_Get_Advances and the `hdmx` data are located.\nParticularly, the classic v35 interpreter or \"verified\" ClearType\nfonts might see 100x speed up in retrieving the hdmx cache.\n\n* src/truetype/ttgload.c (TT_Load_Glyph): Insert the shortcut.\n\nBinary search through the `hdmx` records.\n\nThe `hdmx` table is supposed to be sorted by ppem size, which\nenables binary search.  We also drop the check for the sufficient\nlength of the record because it is now enforced when the table\nis loaded.\n\n* include/freetype/internal/tttypes.h (TT_FaceRec): Store the `hdmx`\nrecord pointers sorted by ppem instead of ppem\u0027s themselves.\n* src/truetype/ttpload.c (tt_face_load_hdmx): Prudently sort records.\n(tt_face_get_device_metrics): Implement binary search to retrieve\nadvances.\n\nReset the IUP-called flags for each subglyph.\n\nThis fixes fall-out from 7809007a5b88b15, where the composite\naccents were no longer hinted.\n\n* src/truetype/ttgload.c (ttloader_init): Move the IUP-called flag\ninitialization from here...\n* src/truetype/ttinterp.c (TT_Run_Context): ... to here.\n\nUpstream the hdmx binary search.\n\n* src/truetype/ttobjs.h (TT_SizeRec): Add `widthp` for the hdmx\nwidths.\n* src/truetype/ttobjs.c (tt_size_reset): Initialize `widthp` even\nthough it might never be used by the interpreter.\n* src/truetype/ttgload.c (tt_loader_init): Avoid repeated searches\nin the hdmx table.\n\n* meson.build: Check the return value of `run_command`.\n\nBy default, errors are not checked and a command that is somehow broken will\njust capture incorrect output (likely an empty string).  Current development\nversions of meson now raise a warning for this implicit behavior, and advise\nexplicitly setting the `check:` keyword argumend to determine whether a\nfailing return code should be considered an error.\n\nSince none of the commands in this project are expected to fail, mark them\nas required to succeed.\n\n* builds/meson/*.py: Fix name of python executable for auxiliary scripts.\n\nThe previous change to check the return code of `run_command` invocations\ncaused the CI to fail.  Although most scripts used `python_exe` as the\nprogram command, the script to determine the project version did not.\n\nBut, all scripts used `python` as the shebang, and this is not available on\nall systems.  Particularly Debian does not provide a `python` command,\nthough `python3` does exist.  This meant that formerly the version number\nwas lacking, and now the build simply fails.\n\nInstead, rely on `python3` since it is guaranteed to exist when running\nmeson, and `python2` is end of life anyway.\n\n* meson.build: Optimize lookup for `python3` program.\n\nThe python module\u0027s `find_installation` method is intended to provide\nroutines for compiling and installing python modules into the\n`site-packages` directory.  It does a couple of slow things, including run\nan introspection command to scrape sysconfig info from the detected\ninterpreter, which are not needed for the sole use case of invoking the\nfound installation as an executable.\n\nFurthermore, when invoked without the name or path of a python binary, it is\nhardcoded to always look for `python3` corresponding to the interpreter\nmeson itself uses to run.  So using `find_installation` did not even allow\ndetecting `python2` as a fallback.\n\nInstead, switch to a simple `find_program` lookup that finishes as soon as\nthe program is found.\n\nClang-Tidy warning fixes.\n\n* src/base/ftobjs.c (FT_Get_Paint): Operator has equivalent nested operands.\n* src/bdf/bdflib.c (_bdf_add_property): Value stored to `fp` is never read.\n* src/sdf/ftbsdf.c (bsdf_init_distance_map): Value stored to `pixel` is\nnever read.\n* src/sdf/ftsdf.c (split_sdf_shape): Value stored to `error` is never read.\n\nFix warnings for CMake Unity builds.\n\n* src/cache/ftcbasic.c (FT_COMPONENT): Undefine macro before redefinition.\n* src/smooth/ftgrays.c (TRUNC, FRACT): Ditto.\n\n* builds/unix/configure.raw: Restore `SYSTEM_ZLIB` variable.\n\nThis was accidentally removed with commit 93ebcbd0 almost eight years ago.\n\nReset localpoints when varying cvt.\n\nWhen iterating over the cvt tuples and reading in the points it is necessary\nto set all of `localpoints`, `points`, and `point_count` in all cases.  The\nexisting code did not reset `localpoints` to `NULL` when there were no\nprivate point numbers.  If the previous tuple did have private point numbers\nand set `localpoints` to `ALL_POINTS` this would not be cleared and the\nwrong branch would be taken later, leading to possible heap buffer overflow.\n\n* src/truetype/ttgxvar.c (tt_face_vary_cvt): Reset `localpoints` to `NULL`\nwhen it isn\u0027t valid.\n\nFixes: https://crbug.com/1284742\n\nUse `FT_OFFSET`.\n\nThis avoids\n\n```\nruntime error: applying zero offset to null pointer\n```\n\nwarnings of clang\u0027s undefined behaviour sanitizer.\n\n* src/autofit/afcjk.c (af_cjk_hints_link_segments,\naf_cjk_hints_compute_edges, af_cjk_hints_compute_blue_edges,\naf_cjk_hint_edges, af_cjk_align_edge_points): Do it.\n\n* src/autofit/afhints.c (af_glyph_hints_align_edge_points,\naf_glyph_hints_align_strong_points): Ditto.\n\n* src/autofit/aflatin.c (af_latin_metrics_init_widths,\naf_latin_hints_link_segments, af_latin_hints_compute_edges,\naf_latin_hints_compute_blue_edges, af_latin_hint_edges): Ditto.\n\n* src/pshinter/pshalgo.c (psh_hint_table_init): Ditto.\n\nAvoid \u0027runtime error: applying zero offset to null pointer\u0027.\n\n* src/sfnt/ttsbit.c (tt_sbit_decoder_load_byte_aligned): Exit early if\n`line` is NULL.\n\n* src/sfnt/ttload.c (check_table_dir): Initialize `table`.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d42773\n\nCorrect previous commit.\n\nReally fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d42773.\n\n* src/sfnt/ttload.c (check_table_dir): Revert change.\n\n* src/type42/t42.parse.c (t42_parse_sfnts): Don\u0027t use `FT_QREALLOC` but\n`FT_REALLOC` for setting up `ttf_data` to avoid uninitialized memory access\nwhile handling malformed TrueType fonts later on.\n\nFix off-by-one error.\n\nThe 0-base index is equal to the number of previosly parsed entries.\nIt is an error to adjust it by one to get the number truncated by\na stream error.  This is probably inconsequential because valid\nentries are correctly accounted for.\n\n* src/sfnt/ttload.c (check_table_dir): Do not adjust the truncated\nnumber of tables.\n\nAvoid use of uninitialized memory.\n\n* src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Don\u0027t use `FT_QNEW` but\n`FT_NEW` for setting up `zip` to avoid uninitialized memory access while\nhandling malformed PCF fonts later on.\n\nFixes\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d42800\n\nChange Zlib configuration option.\n\n* meson_options.txt, meson.build: Change the format of the \u0027zlib\u0027 meson\nbuild configuration option to be a combo with the following choices:\n\n  - none: Do not support gzip-compressed streams at all.\n\n  - internal: Support gzip-compressed streams using the copy of the gzip\n    sources under `src/gzip/`; this should only be used during development\n    to ensure these work properly.\n\n  - external: Support gzip-compressed streams using the \u0027zlib\u0027 Meson\n    subproject, linked as a static library.\n\n  - system: Support gzip-compressed streams using a system-installed version\n    of zlib.\n\n  - auto: Support gzip-compressed streams using a system-installed version\n    of zlib, if available, or using the \u0027zlib\u0027 subproject otherwise.  This\n    is the default.\n\n  - disabled: Backward-compatible alias for \u0027none\u0027.\n\n  - enabled: Backward-compatible alias for \u0027auto\u0027.\n\nUpdate sources to zlib 1.2.11\n\nThis can be tested by building with the Unix development build\n\n  make setup devel\n  make\n\nor by building the freetype-demos programs with\n\n  meson setup build -Dfreetype2:zlib\u003dinternal\n  meson compile -C out\n\nand trying to run `ftview` with a `.pcf.gz` font file.\n\n* src/gzip/ftgzip.c, src/gzip/rules.mk: Update for new zlib sources.  Also\nremove the temporary fix introduced in commit 6a431038 to work around the\nfact that the internal sources were too old.\n\n* src/gzip/README.freetype: New file describing the origin of the sources\nand how they were modified.\n\n* src/gzip/patches/*: Patch files applied to original sources.\n\n* src/gzip/*: Updated zlib sources with the patch file(s) from\n`src/gzip/patches/` applied, followed by a conversion with zlib\u0027s\n`zlib2ansi` script.\n\nSome organizational changes.\n\nWe now first apply zlib\u0027s `zlib2ansi` script, then FreeType\u0027s patch file.\n\n* src/gzip/README.freetype: Updated.\n\n* patches/0001-zlib-Fix-zlib-sources-to-compile-for-FreeType.patch: Renamed\nto...\n* patches/freetype-zlib.diff: This.\nClean up description, then regenerate it as follows:\n\n  - Copy unmodified files from `zlib` repository.\n  - Run `zlib2ansi` script.\n  - Run `git diff -R \u003e patches/freetype-zlib.diff.new`.\n  - Insert patch description of old diff file, then replace old diff with\n    new diff file.\n\nDon\u0027t typedef `ptrdiff_t`.\n\nWhile using zlib in \u0027solo\u0027 mode (via the `Z_SOLO` macro), we actually\ninclude some standard header files, making the typedef fail on systems where\nthe native `ptrdiff_t` type differs.\n\nFixes #1124.\n\n* src/zlib/zutil.h: Comment out definition; it doesn\u0027t work on Windows.\n\n* src/zlib/patches/freetype-zlib.diff: Updated.\n\n* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Add limit checks.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d40716\n\n* subprojects/zlib.wrap: Update from upstream.\n\n.gitlab-ci.yml: Update Windows image.\n\nThe old image produced errors like\n\n```\nDownloading zlib patch from\n  https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch\nA fallback URL could be specified using patch_fallback_url key in the wrap file\nWrapDB connection failed to\n  https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch\nwith error\n  \u003curlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify\n   failed: certificate has expired (_ssl.c:1122)\u003e\n```\n\n.gitlab-ci.yml: Fix typo in previous commit.\n\n* src/type42/t42objs.c (T42_Open_Face): Avoid use of uninitialized memory.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d43508\n\n* src/sfnt/ttcolr.c (read_paint): Fix undefined left-shift operation.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d43151\n\nUpdate all copyright notices.\n\nFix limit checks for `COLR` v1 ClipBoxes\n\n* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Fix off-by-one in\nlimit checks.\n\nTrack how much type42 ttf data is available.\n\nCurrently `T42_Open_Face` eagerly allocates 12 bytes for the ttf header\ndata which it expects `t42_parse_sfnts` to fill out from /sfnts data.\nHowever, there is no guarantee that `t42_parse_sfnts` will actually be\ncalled while parsing the type42 data as the /sfnts array may be missing\nor very short. This is also confusing behavior as it means\n`T42_Open_Face` is tightly coupled to the implementation of the very\ndistant `t42_parse_sfnts` code which requires at least 12 bytes to\nalready be reserved in `face-\u003ettf_data`.\n\n`t42_parse_sfnts` itself eagerly updates `face-\u003ettf_size` to track how\nmuch space is reserved for ttf data instead of traking how much data has\nactually been written into `face-\u003ettf_data`. It will also act strangely\nin the presense of multiple /sfnts arrays.\n\n* src/type42/t42objs.c (T42_Open_Face): ensure `ttf_data` is initialized\nto NULL. Free `ttf_data` on error.\n\n* src/type42/t42parse.c (t42_parse_sfnts): delay setting `ttf_size` and\nset it to the actual number of bytes read. Ensure `ttf_data` is freed\nif there are multiple /sfnts arrays or there are any errors.\n\nRevert \"[bzip2] Avoid use of uninitialized memory.\"\n\nThis reverts commit d276bcb7f0c02c20d3585b2e5626702df6d140a6.\n\nThe original commit did avoid the use of uninitialized memory. However,\nit appears that the original commit is no longer required. The\nunderlying issue was resolved by a change in freetype2-testing \"Build\nbzip2 correctly.\" [0]. Prior to [0] bzip2 was built without msan, so\nbzip2 writes were not tracked or considered initialized. Clearing\n`buffer` in the original commit allowed msan to see the `buffer` content\ninitialized once in FreeType code, but msan saw no writes into buffer\nfrom bzip2.  With bzip2 now built with msan, the bzip2 writes are\nproperly instrumented and msan sees the bzip2 writes into the buffer. As\na result the original commit can be safely reverted to allow for better\ndetection of other uninitialized data scenarios.\n\n* src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Revert to using `FT_QNEW`.\n\n[0] https://github.com/freetype/freetype2-testing/commit/3c052a837a3c960709227a0d6ddd256e87b88853\n\n.gitlab-ci.yml: Add steps to `before_script` to ensure recent CA.\n\nFetch current list of valid CAs from Windows Update and manually import them\nto trusted datastore.  This action is required to make downloads work from\nsites that need recent Let\u0027s Encrypt ISRG Root X1 certificate.\n\n.gitlab-ci.yml: Minor comment cleanups.\n\nReset bzip stream on any error.\n\nAccording to the bzip documentation it is undefined what will happen if\n`BZ2_bzDecompress` is called on a `bz_stream` it has previously returned an\nerror against.  If `BZ2_bzDecompress` returns anything other than `BZ_OK`\nthe only valid next action is `BZ2_bzDecompressEnd`.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d43564\n\n* src/bzip2/ftbzip2.c (FT_BZip2FileRec_): Add `reset` to track the need to\nreset the stream.\n(ft_bzip2_file_init): Initialize `reset` to 0.\n(ft_bzip2_file_reset): Set `reset` to 0 after resetting.\n(ft_bzip2_file_fill_output): Set `reset` to 1 when `BZ2_bzDecompress`\nreturns anything other than `BZ_OK`.\n\n* src/lzw/ftlzw.c (FT_Stream_OpenLZW): Avoid unnecessary zeroing.\n\n* src/bdf/bdflib.c (_bdf_parse_glyphs): Remove redundant assignment.\n\n* src/base/fthash.c (hash_insert): Avoid unnecessary zeroing.\n\n* src/pshinter/pshglob.c (psh_globals_new): Avoid zeroing.\n\nThis large allocation is followed by careful initialization. Whatever\nis missed should be initialized manually.\n\n* include/freetype/internal/compiler-macros.h [FT_COMPARE_DEF]: Tighten.\n\nThis works around Watcom C library using __watcall.\n\n* src/sdf/ftbsdf.c (ED): s/near/prox/.\n\nThis works around the Watcom C definition of `near` as restricted\n__near.\n\nAdd Watcom C/C++ support.\n\n* include/freetype/config/integer-types.h: Make sure `long long` is\nused then available.\n* include/freetype/internal/ftcalc.h (FT_MSB): Add Watcom C/C++ pragma.\n\nAvoid unnecessary zeroing.\n\n* src/cache/ftccmap.c (ftc_cmap_node_new): Use `FT_QNEW`.\n* src/cache/ftcimage.c (FTC_INode_New): Ditto.\n* src/cache/ftcsbits.c (FTC_SNode_New): Ditto.\n\nAvoid accessing uninitialized zone.\n\nThe `normal_top.count` may be 0, implying no `normal_top.zones` exist.\nThe code must not access these (non-existent) `normal_top.zones`.\n\n* src/pshinter/pshalgo.c (ps_hints_apply): Do not assume that\n`normal_top.zones[0]` is initialized. Test `normal_top.count`\nbefore using `normal_top.zones[0]`. Do not rescale if there are no\n`zones`.\n\nFixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d43675\n\nAdd Watcom C/C++ calling.\n\nIn the unlikely case the source is built with OpenWatcom\u0027s -ec?\nswitches to enforce a calling convention, the qsort() compare\nfunction must still be set to __watcall.\n\n* include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF):\nUpdated.\n\nAvoid unnecessary hash zeroing.\n\n* src/bdf/bdflib.c (_bdf_parse_start): Use `FT_QALLOC`.\n* src/type1/t1load.c (parse_subrs): Use `FT_QNEW`.\n\n* src/autofit/afglobal.c (af_face_globals_new): Reduce zeroing.\n\nEverything in AF_FaceGlobals is initialized except metrics.  Those\nare zeroed here and initialized on demand later.\n\nUndefined scale means no scale.\n\nIt might be surprising that FreeType does not have default ppem and\nthe size has to be set explicitly or face undefined behavior with\nundefined variables and errors. This offers an alternative to\nmissing or zero scale by simply setting FT_LOAD_NO_SCALE.  Defined\nbehavior is bettr than undefined one.\n\nThis is alternative to !132 and discussed in\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d43708\n\n* src/base/ftobjs.c (FT_Load_Glyph): Deal with zero scale.\n* include/freetype/freetype.h: Document it.\n\n* include/freetype/freetype.h: Clarify `FT_Size` life cycle.\n\nAvoid unnecessary zeroing.\n\n* src/pshinter/pshalgo.c (psh_hint_table_init,psh_glyph_init,\npsh_glyph_interpolate_normal_points): Use FT_QNEW_ARRAY.\n\nAdd flag `FT_CONFIG_OPTION_SVG`.\n\nThis flag is going to be used to conditionally compile support for OT-SVG\nglyphs.  FreeType will do the parsing and rely on external hooks for\nrendering of OT-SVG glyphs.\n\n* devel/ftoption.h, include/freetype/config/ftoption.h\n(FT_CONFIG_OPTION_SVG): New flag.\n\nAdd code to load OT-SVG glyph documents.\n\n* include/freetype/config/ftheader.h (FT_OTSVG_H): New macro.\n* include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros.\n(FT_LOAD_SVG_ONLY): New internal macro.\n* include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value\n`FT_GLYPH_FORMAT_SVG`.\n* include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro.\n* include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`.\n* include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New\nfunctions.\n* include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for\nthe SVG table.\n* include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the\nSVG document and other necessary information of an OT-SVG glyph in a glyph\nslot.\n* include/freetype/tttags.h (TTAG_SVG): New macro.\n\n* src/base/ftobjs.c: Include `otsvg.h`.\n(ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot-\u003eother`\nif the SVG table exists.\n(ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed\nglyph.\n(ft_glyphslot_done): Free the document data if it is a GZIP compressed\nglyph.\n(FT_Load_Glyph): Don\u0027t auto-hint SVG documents.\n\n* src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for\nFT_GLYPH_FORMAT_SVG.\n\n* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`.\n* src/sfnt/sfdriver.c: Include `ttsvg.h`.\n(sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and\n`tt_face_load_svg_doc`.\n* src/sfnt/sfnt.c: Include `ttsvg.c`.\n* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and\nfree data of the the SVG table.\n* src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`,\n`tt_face_free_svg` and `tt_face_load_svg_doc`.\n* src/sfnt/ttsvg.h: Declarations of the SVG functions in\n`ttsvg.c`.\n\nAdd code to load SVG document.\n\n* src/cff/cffgload.c (cff_slot_load): Add code to load SVG doc.\n* src/truetype/ttgload.c (TT_Load_Glyph): Add code to load SVG doc.\n\nAdd `FT_Glyph` support for OT-SVG glyphs.\n\n* include/freetype/ftglyph.h (FT_SvgGlyphRec, FT_SvgGlyph): New structure.\n\n* src/base/ftglyph.c: Include `otsvg.h`.\n(ft_svg_glyph_init, ft_svg_glyph_done, ft_svg_glyph_copy,\nft_svg_glyph_transform, ft_svg_glyph_prepare): New function.\n(ft_svg_glyph_class): New class.\n(FT_New_Glyph, FT_Glyph_To_Bitmap): Updated to handle OT-SVG glyphs.\n* src/base/ftglyph.h: Updated.\n\nAdd \u0027svg\u0027 module for OT-SVG rendering.\n\n* CMakeLists.txt (BASE_SRCS): Add svg module file.\n* meson.build (ft2_public_headers): Add `otsvg.h`.\n\n* modules.cfg (RASTER_MODULES): Add `svg` module.\n\n* builds/meson/parse_modules_cfg.py: Add svg module.\n\n* include/freetype/config/ftmodule.h: Add `ft_svg_renderer_class`.\n* include/freetype/fterrdef.h: Add `Invalid_SVG_Document` and\n`Missing_SVG_Hooks` error codes.\n* include/freetype/internal/fttrace.h: Add tracing for `otsvg`.\n* include/freetype/internal/svginterface.h: New file.  It adds an interface\nto enable the presetting hook from the `base` module.\n* include/freetype/otsvg.h (SVG_Lib_Init_Func, SVG_Lib_Free_Func,\nSVG_Lib_Render_Func, SVG_Lib_Preset_Slot_Func): New hooks for SVG rendering.\n(SVG_RendererHooks): New structure to access them.\n\n* src/base/ftobjs.c: Include `svginterface.h`.\n(ft_glyphslot_preset_bitmap): Add code for presetting the slot for SVG\nglyphs.\n(ft_add_renderer): Updated.\n\n* src/svg/*: New files.\n\nHandle \u0027librsvg\u0027 for demo programs.\n\n* builds/unix/configure.raw: Check for \u0027librsvg\u0027.\n(LIB_CLOCK_GETTIME): Don\u0027t call `AC_SUBST` on this but on...\n(FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables.\n\n* builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): Replaced by...\n(FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables.\n\nAvoid annecessary zeroing.\n\n* src/psaux/psobjs.c (ps_table_new): Use FT_QNEW_ARRAY.\n* src/type1/t1load.c (parse_encoding): Ditto.\n* src/type42/t42parse.c (t42_parse_encoding): Ditto.\n\n* src/psaux/psobjs.c (ps_table_new): Revert to zeroing.\n\nReject malformed SVG tables.\n\n* src/sfnt/ttsvg.c (SVG_TABLE_HEADER_SIZE, SVG_DOCUMENT_RECORD_SIZE,\nSVG_DOCUMENT_LIST_MINIMUM_SIZE, SVG_MINIMUM_SIZE): New macros.\n(tt_face_load_svg): Check offsets.\nCheck table and record sizes.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d43918\n\n* src/svg/ftsvg.c: Rename `svg_hooks` to `svg-hooks` for consistency.\n\nMore documentation on handling OT-SVG.\n\n.mailmap: Updated.\n\n* src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers.\n\n.mailmap: Typo.\n\nEnsure all point flags are initialized.\n\nOnly off curve point flags were fully initialized.\n\n* src/pshinter/pshalgo.c (psh_glyph_init): always initialize flags.\n\nFixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d43930\n\nUpdate documentation for `FT_LOAD_COLOR`.\n\n* builds/unix/configure.raw (FT_DEMO_CFLAGS): Pass `-DHAVE-LIBRSVG`.\n\nThis helps in decoupling library support from `pkg-config` for other\nplatforms.\n\nfreetype.h: More updates to `FT_LOAD_COLOR` description.\n\nAarg, typo.\n\nDelay encoding allocation and avoid its zeroing.\n\n* src/pcf/pcfread.c (pcf_get_encodings): Refactor and use FT_QNEW_ARRAY.\n\n* src/sdf/ftsdf.c (sdf_*_new): Use standard macro.\n\n* src/pfr/pfrload.c (pfr_phy_font_load): Use FT_QNEW_ARRAY.\n\ndocs/release: Updated.\n\nImprove sRGB constants.\n\n* src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use slightly\nmore precise values.\n\nFixes #1018.\n\nFix sdf computation while `USE_SQUARED_DISTANCES`.\n\nFunction `map_fixed_to_sdf` expects spread to be absolute\nand not squared.\n\n* src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread\nwhile `map_fixed_to_sdf`.\n\n* src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto.\n\nDocument `FT_Outline_Decompose` degenerate segments.\n\n`FT_Outline_Decompose` does not filter out and can return degenerate\nsegments in an outline. This can be surprising when attemping to\nstroke such an outline. Clarify the existing documentation on this\nmatter to cover all forms of degeneracy (without specifying exactly\nhow they will be reported), why they might arise, and better explain in\nwhat cases they may be an issue.\n\n* include/freetype/ftoutlin.h (FT_Outline_Decompose): update\ndocumentation.\n\nFixes #952.\n\nMinor clean-ups.\n\n* src/base/ftrfork.c (raccess_make_file_name): Do not set error.\n* src/sfnt/sfdriver.c (get_win_string, get_apple_string): Ditto.\n* src/cff/cffobjs.c (cff_strcpy): Do not confuse about error.\n* src/psaux/psobjs.c (ps_table_done): Ditto.\n* src/truetype/ttgxvar.c (ft_var_readpacked*, ft_var_load_avar): Ditto.\n\n* unix/configure.raw: We need \u0027librsvg\u0027 version 2.46.0 or newer.\n\nOlder versions don\u0027t have function `rsvg_handle_get_intrinsic_dimensions`.\n\nCheck the availability of `bzip2.pc\u0027.\n\n(CMakeLists.txt): Check the availability of `bzip2.pc\u0027.\n\n* If `bzip2.pc\u0027 is available, Requires.private should include\nbzip2, but Libs.private should not include -lbz2.\n\n* If `bzip2.pc\u0027 is unavailable, Requires.private cannot include\nbzip2, but Libs.private should include -lbz2.\n\nFix #897.\n\n* src/psaux/psobjs.c (ps_parser_load_field): Reduce `string` scope.\n\n* CMakeLists.txt: Include \u0027FindPkgConfig\u0027 module.\n\nOlder cmake versions don\u0027t provide `pkg_check_modules` by default.\n\nFixes #1126.\n\nClean-up - do not doubt FT_FREE.\n\n* src/base/ftobjs.c (memory_stream_close): Do not reassign zero\nafter `FT_FREE`.\n* src/sfnt/sfwoff.c (sfnt_stream_close): Ditto.\n* src/sfnt/sfwoff2.c (stream_close): Ditto.\n* src/psaux/psobjs.c (ps_parser_load_field): Ditto.\n* src/truetype/ttgxvar.c (ft_var_load_avar, tt_set_mm_blend,\ntt_set_mm_blend): Ditto.\n\nFix fallouts from edd4fedc5427.\n\nReported by Werner.\n\n* src/cache/ftcimage.c (FTC_INode_New): Always initialize FT_Glyph.\n* src/cache/ftcsbits.c (FTC_SNode_New): Always initialize FT_SBit.\n\nfreetype.h: Minor documentation improvement.\n\nPartially revert 9870b6c07e2c.\n\nFix crashes reported by Werner.\n\n* src/cache/ftcmru.c (FTC_MruList_New): Use `FT_ALLOC` again.\n\n* src/cache/ftcmru.c (FTC_MruList_New): Explain zeroing.\n\nRevise `PS_Table` handling.\n\nThe old impleemntation was not using `FT_REALLOC`, buing too careful\nwith the offset rebasing.  It shoudl be safe to rely on the base\nmovements.\n\n* src/psaux/psobjs.c (reallocate_t1_table, shift_elements): Combine\ninto...\n(ps_table_realloc): ... this function based on `FT_REALLOC`.\n(ps_table_done): Simplified.\n(ps_table_add): Updated.\n\nFix build on MacOS.\n\n* CMakeLists.txt (CMAKE_OSX_ARCHITECTURES): Update value to fix the building\nof a framework on MacOS.\n\n* builds/mac/freetype-Info.plist (CFBundleExecutable): Make identifier\nlowercase only.\n\nFixes #1127.\n\n* src/winfonts/winfnt.c (fnt_face_get_dll_font): Trace font resources.\n\nAdd SVG to to project files.\n\n* builds/windows/vc2010/freetype.vcxproj: Updated.\n* builds/windows/vc2010/freetype.vcxproj.filters: Updated.\n* builds/windows/visualc/freetype.vcproj: Updated.\n\nVarious minor doc fixes.\n\nRevise the hint table handling.\n\n* src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size\ncheck; avoid array zeroing because it is fully initialized when used.\n(ps_hint_table_alloc): Fix off-by-one comparison and remove another\nzeroing of the array elements.\n\nFix mask merging.\n\nWe forgot to update the number of bits when merging a larger mask\ninto a smaller one.  This fix might have rendering effects.\n\n* src/pshinter/pshrec.c (ps_mask_table_merge): Inherit the number\nof bits from a larger mask. There is no need to zero unused bits,\nalready zeroed during allocation.\n(ps_mask_clear_bit): Removed.\n(ps_mask_ensure): Minor.\n\nUse unsigned indices.\n\nThis reduces casting and eliminates some checks.\n\n* src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_table_merge,\nps_dimension_add_t1stem, ps_hints_t1stem3): Updated.\n(ps_dimension_add_counter): Updated, unnecessary checks removed.\n\nClear reused mask.\n\nIn PS hinter, memory allocations persist until the module is done.\nTherefore, we have to clear reused masks.\n\n* src/pshinter/pshrec.c (ps_mask_table_alloc): Clear reused mask.\n\nFix `FT_Get_PS_Font_Private` for this format.\n\nSince Type42 fonts don\u0027t have a \u0027Private\u0027 dictionary, the return value\nshould be `FT_Err_Invalid_Argument`.\n\n* src/type42/t42drivr.c (t42_ps_get_font_private): Removed.\n(t42_service_ps_info): Updated.\n\nt1tables.h: Whitespace.\n\nt1tables.h: Documentation improvements.\n\nTune PSH_STRONG_THRESHOLD_MAXIMUM value.\n\nBefore the change, the hinting engine frequently confused horizontal\nstem and serif hints making some stems too thin and some serifs too\nthick. The value was tuned using serif fonts from the URW+ base 35\ncollection.\n\n* src/pshinter/pshalgo.c [PSH_STRONG_THRESHOLD_MAXIMUM]: s/30/12/.\n\nftmm.h: Minor documentation improvement.\n\nAdd support for legacy UWP builds.\n\n* builds/windows/ftsystem.c: Add neccessary macro substitutions to\nenable strict UWP builds.\n\nSee !141.\n\nCo-authored-by: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\n\nsrc/sfnt/ttkern.c (tt_face_load_kern): Micro-optimize.\n\nA kerning table can be handled by binary search if it has equal entries.\n\nFixes #1132.\n\n* builds/mac/ftmac.c, src/base/ftmac.c: s|FT_MAC_H|\u003cfreetype/ftmac.h\u003e|.\n\n* src/bdf/README: Updated.\n\nDrop the support of CMake 2.x.\n\n* CMakeLists.txt: Require CMake 3.0 (released on 2014) or newer.\n\nThe issue #1059 reports the difficulty to support both of\nCMake 2.x and newer one by single CMakeLists.txt without\nthe inflation of cmake_policy() workarounds.\n\nFor better maintainability, the support of CMake 2.x is\ndropped.\n\nFull bounds check for OtherSubr 19.\n\nIt is possible for OtherSubr 19 to be invoked when `decoder-\u003ebuildchar` is\nNULL (so that `decoder-\u003elen_buildchar` is 0), the `blend` is non-NULL with\n`blend-\u003enum_designs` set to 2, and the user supplied `idx` to be large (for\nexample 0xFFFFFFFE).  Since these are all `FT_UInt32` the existing bounds\ncheck overflows in a well defined manner, allowing for an invalid call to\n`memcpy`.\n\nIn addition, it is possible to call OtherSubr 19 with\n`decoder-\u003elen_buildchar`, `blend-\u003enum_designs`, and `idx` all zero (implying\nthat `blend-\u003eweight_vector` and `decoder-\u003ebuildchar` are NULL).  This passes\nthe bounds check (it is logically always fine to copy nothing starting at\nindex zero) but may invoke undefined behavior in `ft_memcpy` if it is backed\nby `memcpy`.  Calling `memcpy` with either the `src` or `dst` NULL is\nundefined behavior (even if `count` is zero).\n\n* src/psaux/psintrp.c (cf2_interpT2CharString): Correctly check that\n`blend-\u003enum_designs` can be copied to `decoder-\u003ebuildchar[idx]`.\nAlso avoid passing NULL to `ft_memcpy`.\n\nBug: https://crbug.com/1299259\n\nFix bounds check in SVG.\n\nThe `SVG_DOCUMENT_LIST_MINIMUM_SIZE` macro is non trivial and not\nprotected by parentheses. As a result, the expression\n`table_size - SVG_DOCUMENT_LIST_MINIMUM_SIZE` expands to\n`table_size - 2U + SVG_DOCUMENT_RECORD_SIZE` instead of the expected\n`table_size - (2U + SVG_DOCUMENT_RECORD_SIZE)`. This causes an incorrect\nbounds check which may lead to reading past the end of the `SVG ` table.\n\n* src/sfnt/ttsvg.c (tt_face_load_svg): wrap macro definitions in\nparentheses.\n\nBug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d45179\n\n* include/freetype/freetype.h: Improve SDF documentation.\n\nImplement deviation-based splitting for Bezier curves.\n\n* src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Add checks to figure\nout the deviation of Bezier curves and stop splitting if the curve is flat\nenough.\n\n* src/sdf/ftsdfcommon.h (ONE_PIXEL): New macro.\n\nFix corner checks and improve performance.\n\n* src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for a corner if\ntwo distances (for different curves) are very close.\n\n(sdf_conic_to): Check whether the conic curve can be treated as a line\n(which happens if the control point coincides with any end point).\n\nDocumentation, whitespace.\n\nAvoid invalid face index.\n\nFixes #1138.\n\n* src/sfnt/sfobjs.c (sfnt_init_face), src/sfnt/sfwoff2.c (woff2_open_font):\nCheck `face_index` before decrementing.\n\n* src/base/ftobjs.c (ft_open_face_internal): Properly guard `face_index`.\n\nWe must ensure that the cast to `FT_Int` doesn\u0027t change the sign.\n\nFixes #1139.\n\nFT_OUTLINE_OVERLAP was introduced in 2.10.3.\n\n* include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Document when added.\n\n* src/base/ftobjs.c (ft_open_face_internal): Thinko.\n\n* src/base/ftobjs.c (FT_Request_Size): Guard `face-\u003esize`.\n\nFixes #1140.\n\nSynchronize `cff_slot_load` with `TT_Load_Glyph`.\n\n* src/cff/cffgload.c (IS_DEFAULT_INSTANCE): New macro.\n(cff_slot_load): Use it.\n\nSupport overlap flag for simple glyphs.\n\nIn the woff2 spec it has been proposed to allow the OVERLAP_SIMPLE flag\nto be retained through the woff2 format [0].\n\n[0] https://www.w3.org/TR/WOFF2/#glyf_table_format\n\n* src/sfnt/sfwoff2.h (GLYF_OVERLAP_SIMPLE): add glyf flag.\n\n* src/sfnt/sfwoff2.c (reconstruct_glyf): parse optionFlags and\noverlapSimpleBitmap[]. (store_points): set OVERLAP_SIMPLE on first point\u0027s\nflag if the overlap bit is set.\n\n* src/sfnt/ttkern.c (tt_face_get_kerning): Exit early if no table.\n\nFixes #1141.\n\nImprove UWP support.\n\n* builds/windows/ftsystem.c [UWP]: Wrap CreateFile2 into CreateFileA.\n\nFix WCE support.\n\n* builds/windows/ftsystem.c [_WIN32_WCE]: Include \u003cmalloc.h\u003e needed by\n_alloca.\n\n* include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): Tag macro as public.\n\nAdd `FT_FACE_FLAG_SBIX` and `FT_HAS_SBIX`.\n\nFonts with \u0027sbix\u0027 tables need special handling by the application.\n\n* include/freetype/freetype.h (FT_FACE_FLAG_SBIX, FT_HAS_SBIX): New macros.\n\n* src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_SBIX` if \u0027sbix\u0027\ntable is present.\n\nFix \u0027sbix\u0027 table handling.\n\n* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Correct calculation of\n\u0027metrics-\u003ehoriBearingY\u0027.\nSet vertical metrics.\n\n* src/sfnt/sfobjs.c (sfnt_load_face): Adjust setting of `FT_FACE_FLAG_SBIX`.\nHandle metrics of fonts with \u0027sbix\u0027 table.\n\n* src/truetype/ttgload.c (TT_Load_Glyph): For \u0027sbix\u0027 embedded bitmaps, apply\nbbox offset and bearing values of the corresponding glyph in the \u0027glyf\u0027\ntable if it exists and has a contour.\n\n* src/truetype/ttobjs.c (tt_face_init): Handle font with \u0027sbix\u0027 table.\n\nFixes issue #998.\n\nAdd `FT_PARAM_TAG_IGNORE_SBIX`.\n\nThis is another bit to handle \u0027sbix\u0027 tables as described in the OpenType\nspecification.\n\n* include/freetype/ftparams.h (FT_PARAM_TAG_IGNORE_SBIX): New macro.\n\n* src/sfnt/sfobjc.c (is_apple_sbix): Rename to...\n(has_sbix): ... this.\nCheck for more sbit tables.\nHandle `FT_PARAM_TAG_IGNORE_SBIX` to eventually control `has_sbix`.\nOnly call sbit table loader if an sbit table is present.\n\nAdd `FT_FACE_FLAG_SBIX_OVERLAY` and `FT_HAS_SBIX_OVERLAY`.\n\n* include/freetype/freetype.h (FT_FACE_FLAG_SBIX_OVERLAY,\nFT_HAS_SBIX_OVERLAY): New macro.\n\n* src/sfnt/ttsbit.c (tt_face_load_sbit): Handle `FT_FACE_FLAG_SBIX_OVERLAY`.\nRemove obsolete tracing message.\n\nFix creation of `freetype2.pc` for static-only builds.\n\nWe have to help `pkg-config` since it can\u0027t recognize that there is no\nshared library installed.\n\nNote that meson already does exactly the same.\n\n* builds/unix/configure.raw (REQUIRES_PRIVATE, LIBS_PRIVATE): Rename to...\n(PKGCONFIG_REQUIRES_PRIVATE, PKGCONFIG_LIBS_PRIVATE): This.  Adjust them\ndepending on `$enable_shared`.\n(PKGCONFIG_REQUIRES, PKGCONFIG_LIBS): New variables.\n\n* builds/unix/freetype2.in, builds/unix/unix-def.in: Use new and updated\nvariables.\n\nWhitespace.\n\nFix clang++ warnings.\n\n* src/base/ftglyph.c (ft_svg_glyph_prepare), src/base/ftobj.c\n(ft_glyphslot_init), src/cache/ftccmap.c (ftc_cmap_node_new),\nsrc/cache/ftcimage.c (FTC_INode_New), src/lzw/ftlzw.c (FT_Stream_OpenLZW),\nsrc/psaux/psobjs.c (ps_parser_load_field), src/pshinter/pshglob.c\n(psh_globals_new), src/sfnt/ttsvg.c (tt_face_load_svg_doc): Initialize\nvariables used for allocation.\n\n* src/sdf/ftsdf.c (split_sdf_conic, split_sdf_cubic): Change type of\n`max_splits` to FT_UInt.\n(sdf_generate_bounding_box): Add cast.\n\n* Version 2.12.0 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-12-0\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.12.0.\n* docs/CHANGES, docs/release: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html, builds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,\ndocs/freetype-config.1: s/2.11.1/2.12.0/, s/2111/2120/.\n\n* include/freetype/freetype.h (FREETYPE_MINOR): Set to 12.\n(FREETYPE_PATCH): Set to 0.\n\n* builds/unix/configure.raw (version_info): Set to 24:2:18.\n* CMakeLists.txt (VERSION_MINOR): Set to 12.\n(VERSION_PATCH): Set to 0.\n\n* builds/toplevel.mk (do-dist): Generate `ChangeLog` entries for all commits\nsince version 2.11.0 (when we stopped creating this file manually).\n\nCMakeLists.txt: s/PKG_CONFIG/PKGCONFIG/, s/REQUIRED_/REQUIRES_/.\n\nCMakeList.txt: Update code to handle recent changes for `freetype.pc`.\n\nFixes #1144.\n\nUse SUB_LONG for component offset.\n\n* src/truetype/ttgload.c (TT_Process_Composite_Component): do it.\n\nBug: https://crbug.com/1309429\n\nWhitespace.\n\nCMakeLists.txt: Fix `Info.plist` path.\n\nWhen building a framework using CMake with `add_subdirectory`, CMake must be\nable to find `freetype-Info.plist` when configuring the framework\nproperties.\n\nFixes #1145.\n\nUpdate sources to zlib 1.2.12.\n\n* src/sfnt/sfwoff.c (reconstruct_glyf): Fix gcc 10 warning.\n\n* builds/unix/configure.raw: Add option `--with-librsvg`.\n\nSince \u0027librsvg\u0027 is written in Rust, this option allows distributions to\navoid a dependency on the entire Rust toolchain to provide the FreeType demo\nprograms.\n\nSuggested by Lars Wendler in !156.\n\nCorrect FT_ColorStopIterator documentation.\n\n* include/freetype/ftcolor.h (FT_ColorStopIterator): the user should not\n set `p` to NULL before calling `FT_Get_Colorline_Stops`. `p` and\n`num_color_stops` are set by `FT_Get_Paint`. `p` and\n`current_color_stop` are updated by `FT_Get_Colorline_Stops`.\n\n.gitlab-ci.yml: Add a Universal Windows build target\n\nIt\u0027s compiled for Windows 10 and up, ensuring UNICODE is set (default for UWP)\nand selecting the proper WINAPI_FAMILY (WINAPI_FAMILY_APP).\n\nDo not try to run the UWP exe in the Docker as it doesn\u0027t work.\n\n* src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_SVG]: Fix segfault.\n\nThis can happen if the function is called with `size` being `NULL`.\n\nFixes #1147.\n\n* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Integer overflow.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d46792\n\nRemove `default_library\u003dboth` from `default_options`.\n\nIt is inconsistent with what all other Meson projects do.\n\nIt also prevents static linking to FreeType when it is a subproject because\n`default_options` in a subproject takes precedence on values set on the main\nproject.  For example, building \u0027GStreamer\u0027 with `-Ddefault_library\u003dstatic`\nwould still dynamically link on FreeType unless the user also sets\n`-Dfreetype2:default_library\u003dstatic`.\n\n* meson.build: Updated.\n\n* .gitlab-ci.yml: Retain `both` option for testing.\n\nReset IUP flags in `TT_RunIns`.\n\nFixes #1148 by moving the flag initialization back, partly reverting\n7809007a and fd03dcc1.  Initializing these flags elsewhere skips \u0027cvt\u0027.\n\n* src/truetype/ttinterp.c (TT_RunIns): Initialize the IUP flag here...\n(TT_Run_Context): ... instead of here.\n\nSimplify non-desktop UWP check.\n\nFixes mingw compilation described in !159.\n\n* builds/windows/ftsystem.c: Do not use WINAPI_FAMILY_PARTITION macro.\n\nautogen.sh: Fix building when freetype is itself a git submodule.\n\nThere are situations where .git is not a directory, like when\nfreetype is a submodule in another repository.\n\n* src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_COLOR` for SVG fonts.\n\nFixes #1151.\n\nDo not throw errors for invisible glyphs.\n\n* src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Return `FT_Err_Ok` if\nwidth or height is zero, since some glyphs do not generate visible bitmaps.\n\nFixes #1150.\n\n* Version 2.12.1 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-12-1\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.12.1.\n* docs/CHANGES, docs/release: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html, builds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,\ndocs/freetype-config.1: s/2.12.0/2.12.1/, s/2120/2121/.\n\n* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.\n\n* builds/unix/configure.raw (version_info): Set to 24:3:18.\n* CMakeLists.txt (VERSION_PATCH): Set to 1.\n\nHandle inner/outer index values 0xFFFF/0xFFFF.\n\nThis was introduced in OpenType 1.8.4.\n\n* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping,\ntt_hvadvance_adjust, ft_var_load_mvar, tt_apply_mvar): Handle special\ninner/outer index values.\n(ft_var_load_item_variation_store): Add test.\n\nFixes #1154.\n\nREAMDE: Mention that gitlab\u0027s \u0027download\u0027 button doesn\u0027t work.\n\nThis is because the `git archive` command doesn\u0027t preserve submodules.\n\nNote that currently there is no support for disabling the \u0027download\u0027 button\nin gitlab (https://gitlab.com/gitlab-org/gitlab/-/issues/17032).\n\nFixes issue #1158.\n\n* subprojects/zlib.wrap: Update to zlib version 1.2.12.\n\n* builds/toplevel.mk (do-dist): Don\u0027t remove meson wrap files.\n\nFixes #1157.\n\nMove deallocation of `DeltaSetIdxMap` into own function.\n\nThis is a preparation for handling `DeltaSetIdxMap` and `VarStore` as a\nFreeType service.\n\n* src/truetype/ttgxvar.c (ft_var_done_delta_set_index_map): New function.\n(tt_done_blend): Use it.\n\nAdd service methods for `DeltaSetIdxMap` and `VarStore`.\n\nThis will be needed for \u0027COLR\u0027 v1 variation support.\n\n* src/truetype/ttgxvar.h (GX_ItemVarData, GX_AxisCoords, GX_VarRegion,\nGX_VarItemStore, GX_DeltaSetIdxMap): Move structures to...\n* include/freetype/internal/ftmmtypes.h: ... this new file.\n\n* include/freetype/internal/service/svmm.h (MultiMasters): Include\n`ftmmtypes.h`.\n(FT_Var_Load_Delta_Set_Idx_Map_Func, FT_Var_Load_Item_Var_Store_Func,\nFT_Var_Get_Item_Delta_Func, FT_Var_Done_Item_Var_Store_Func,\nFT_Var_Done_Delta_Set_Idx_Map_Func): New function typedefs.\n(MultiMasters): Add them.\n(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.\n\n* src/cff/cffdrivr.c (cff_load_item_variation_store,\ncff_load_delta_set_index_mapping, cff_get_item_delta,\ncff_done_item_variation_store, cff_done_delta_set_index_map): New wrapper\nmethods calling into mm service.\n(cff_service_multi_masters): Updated.\n\n* src/truetype/ttgxvar.c (ft_var_load_item_variation_store,\nft_var_load_delta_set_index_mapping, ft_var_get_item_delta,\nft_var_done_item_variation_store, ft_var_done_delta_set_index_map): Renamed\nto ...\n(tt_var_load_item_variation_store, tt_var_load_delta_set_index_mapping,\ntt_var_get_item_delta, tt_var_done_item_variation_store,\ntt_var_done_delta_set_index_map): ... this for consistency.\nMark them as non-static.\n* src/truetype/ttgxvar.h: Add corresponding prototypes.\n\n* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.\n\n* src/type1/t1driver.c (t1_service_multi_masters): Updated.\n\nHandle 0xFFFF special value inside delta retrieval function\n\n* truetype/ttgxvar.c (tt_hvadvance_adjust, tt_apply_mvar,\ntt_var_get_item_delta): Remove special 0xFFFF handling in favor of less\nredundant handling inside the tt_var_get_item_delta function, as it is\nequivalent to returning a 0 delta. Avoids code-duplication checking for\nspecial value 0xFFFF.\n\nSupport reading 32bit/16bit VarStore deltas\n\n* include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Define type\nto be used for delta arrays, upgrade to FT_long.\n* src/truetype/ttgxvar.c: Adhere to long_words bit and read either\nShort/Byte pairs or Long/Short pairs, as defined by spec. For better\nreadability, define macro for repetitive read code.\n\n* src/sfnt/ttmtx.c (tt_face_get_metrics): Apply variations unconditionally.\n\nThis causes a speed-up of approx. 20% for getting advance widths.\n\nUpdate favicon.\n\nUse hinted favicon.\n\nCorrect favicon.\n\nClear correct flags for doc ownership\n\nThis issue was discovered with an SVG based font with some documents\ncompressed and other uncompressed. After loading the first compressed\ndocument the ownership flag on the glyph slot was set to true but never\nset to false. As a result after loading a compressed document a glyph\nfrom an uncompressed document would load fine, but when this glyph slot\nwas cleared it would try to free its document resulting in a wild free.\n\n* src/base/ftobjs.c (ft_glyphslot_clear): clear correct flags\n\nFixes: #1162\n\nSet linear advances when loading SVG glyphs\n\n* include/freetype/freetype.h (FT_GlyphSlotRec_): update doc\n* src/cff/cffgload.c (cff_slot_load): do it\n* src/truetype/ttgload.c (TT_Load_Glyph): do it\n\nFixes: #1156\n\n* src/smooth/ftgrays.c [FT_STATIC_RASTER]: Fix compilation.\n\nFix GCC LTO crashes on Windows.\n\nFixes #1164 by using a volatile variable around `setjmp`.  It is hard to\nsay how this fixes crashes related to certain link-time optimizations.\nThis does not decrease the rendering performance.\n\n* src/smooth/ftgrays.c (gray_convert_glyph_inner): Use volatile `error`.\n\nAvoid buffer zeroing.\n\n* src/sfnt/sfwoff.c (woff_open_font): Use Q-macros.\n* src/sfnt/sfwoff2.c: Ditto.\n(reconstruct_font): Allocate table_entry on stack.\n\n* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Cosmetic macro change.\n\n* src/sfnt/sfwoff2.c (woff2_open_font): Partial revert.\n\nFixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d47981.\n\nDon\u0027t allocate table entries until needed\n\n* src/sfnt/sfwoff.c (woff_open_font): delay allocating space for the\ntable entries until they are actually written out with the data.\n\nHandle inflate returning Z_NEED_DICT\n\nWhen `inflate` returns `Z_NEED_DICT` this is currently not reported as\nan error and callers may assume that the decompression succeeded when it\ndid not. In particular, a compressed table in a woff file may not\nactually be decompressed and written as expected, leaving the backing\nmemory for the expanded table uninitialized.\n\n* src/gzlip/ftgzip.c (FT_Gzip_Uncompress): treat `Z_NEED_DICT` as\nindicating invalid data since there is no means to provide a dictionary.\n\nBug: https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1335712\n\nClean up advance adjustment.\n\n* src/truetype/ttgload.c (TT_Process_Simple_Glyph, load_truetype_glyph):\nMove the advance adjustment from here...\n* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here and\nsimplify arguments.\n* src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Update prototype\nwith fewer arguments.\n\nDirectly search for eexec in private dict\n\nThis code originally just searched for `eexec`. This was later modified\nto check that the `eexec` found is valid (not in a string or comment).\nThis was done by searching for `eexec` as before and then, for each\n`eexec` found, searching from the beginning using the correct parsing to\nsee if the `eexec` was still found. If the private dictionary is large\nand contains many copies of `eexec` which are not valid, the initial\npart of the private dictionary is scanned once for each, potentially\nleading to n^2 parsing time.\n\nInstead of finding an initial `eexec` and then re-parsing to discover if\nit is valid, drop the initial search for `eexec` and just parse to find\na valid `eexec`. This is strictly faster since the validation must\nhappen anyway and avoids restarting from the beginning each time an\n`eexec` is found in the data.\n\n* src/type1/t1parse.c (T1_Get_Private_Dict): avoid n^2 parsing\n\nBug: https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1328883\n\nClean up advance adjustment (Brrr).\n\n* src/truetype/ttgload.c (load_truetype_glyph): Remove remaining code.\n\nFix an old typo.\n\n* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Vertical\nadvance is measured along y-coordinate.\n\nFix reading s32 when long is s64\n\n`FT_READ_LONG`, `FT_GET_LONG`, and related macros did not return\nnegative values when `long` is more than 32 bits. `FT_Stream_ReadULong`\nwould read four bytes into the LSB of an `FT_ULong` and return that.\nSince this can never set the MSb of the `FT_ULong` when `FT_ULong` is\nmore than 32 bits the cast to `FT_Long` never resulted in a negative\nvalue.\n\nFix this by modifying `FT_Stream_Read*` to return a type of the same\nsize as the bytes it is reading and changing the `FT_READ_*` and\n`FT_GET_*` macros to cast to the same type returned by `FT_Stream_Read*`\nbut with the correctly signed type (instead of casting to what is\nassumed to be the type of `var` which will happen automatically anyway).\n\nThere exist a few cases like with the `OFF3` variants where there isn\u0027t\ngenerally a type with the correct size. `FT_PEEK_OFF3` works around this\nloading the bytes into the three most significant bits and then doing a\nsigned shift down. `FT_NEXT_OFF3` also already worked correctly by\ncasting this signed value to another signed type. `FT_Stream_GetUOffset`\nworks correctly but one must be careful not to attempt to cast the\nreturned value to a signed type. Fortunately there is only\n`FT_GET_UOFF3` and no `FT_GET_OFF3`.\n\nAll of these cases are handled correctly when reading values through\n`FT_Stream_ReadFields` since it generically computes the signed value\nthrough an `FT_Int32`. This change is essentially doing the same for\nthese macros.\n\n* include/freetype/internal/ftstream.h (FT_NEXT_*, FT_GET_*, FT_READ*):\nUpdate macros and return types to use fixed size types for fixed size\nvalues.\n\n* src/base/ftstream.c (FT_StreamGet*, FT_StreamRead*): Dito.\n\nIssue: #1161\n\nClean up phantom point adjustment.\n\nThis moves phantom point and advance variation adjustment next to\ncalculations. The logic stays the same, HVAR and VVAR take priority.\n\n* src/truetype/ttgload.c (load_truetype_glyph): Move it from here...\n* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here\nand check for HVAR and VVAR presence outside the main loop.\n\nClean up phantom point accounting.\n\nThis formalizes that the phantom points appended in the outline\ndo not increase its point count, nor are they tagged or included\nin any additional contours.  Only their coordinates are stored.\nThey are counted in the glyph zone, however.\n\n* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Infer `n_points`\nfrom the outline size plus four phantom points.\n* src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Remove this\nargument.\n* src/truetype/ttgload.c (tt_prepare_zone): Add phantom four.\n(TT_Process_Simple_Glyph, load_truetype_glyph): Update all callers.\n\nDisable FreeType in HarfBuzz fallback.\n\nThis avoids cyclic subproject configuration when the \u0027harfbuzz\u0027 feature is\nenabled, or `--wrap-mode\u003dforcefallback` is used, but HarfBuzz is built as a\nsubproject.  HarfBuzz does the same and disables HarfBuzz support when\nconfiguring FreeType as a subproject.\n\n* meson.build (harfbuzz_dep): Implement it.\n\n* subprojects/harfbuzz.wrap: New file.\n\n* .gitlab-ci.yml [windows meson]: Use latest version of the meson 0.59\n  series, which has a necessary bug fix to make CI work.\n\nProposal: Feature control for variable COLRv1\n\n* include/freetype/ftdriver.h (variable-color-v1 property): Add documentation\nfor variable-colr-v1 property.\n* src/truetype/ttdriver.c (tt_property_set): Ingest variable-control property\nwhen called, set to enable_variable_colrv1 driver flag.\n* src/truetype/ttobjs.h (TT_DriverRec): Add enable_variable_colrv1 flag.\n\n.gitlab-ci.yml: Correctly upgrade `meson`.\n\ns/fixed point/fixed-point/\n\n* ttgload.c (TT_Process_Composite_Glyph): Fix a signedness warning.\n\n* docs/CHANGES: Announce impending Infinality removal.\n\nUpgrade stop_offset to FT_Fixed from FT_F2Dot14\n\nCMakeLists.txt: Move inclusion of `FindPkgConfig` down.\n\nIt must come after `CMAKE_TOOLCHAIN_FILE`.\n\nFixes #1167.\n\nNew function `FT_MulAddFix` to compute the sum of fixed-point products.\n\nThis function, based on the code of `FT_MulFix`, uses 64-bit precision\ninternally for intermediate computations.\n\n* include/freetype/internal/ftcalc.h, base/ftcalc.c (FT_MulAddFix):\nImplement it.\n\nPerform variation store delta computation with 64-bit precision.\n\n* include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Make type\nexplicitly 32-bit.\n* include/freetype/internal/services/svmm.h\n(FT_Var_Get_Item_Delta_Func): Change return type to `FT_ItemVarDelta`\n* truetype/ttgxvar.h (tt_var_get_item_delta): Change return type to\n`FT_ItemVarDelta`.\n* truetype/ttgxvar.c (tt_var_get_item_delta): Store scalars and deltas\nto intermediate array, perform computation using new method\n`FT_MulAddFix`.\n\nFix initialisation of temp variable in new FT_MulAddFix\n\nsrc/truetype/ttgxvar.c (FT_MulAddFix): Initialise `temp`.\n\nMinor formatting.\n\nRound values in `FT_MulAdd_Fix`.\n\nThis avoids regressing Blink layout tests and makes `FT_MulAdd_Fix` delta\nretrieval implementation consistent with the previous implementation, which\nused `FT_fixedToInt` and included rounding.\n\n* src/base/ftcalc.c (FT_MulAdd_Fix): Implement it.\nAlso fix remaining `temp` initialization compilation issue.\n\nFixes #1169.\n\ninclude/freetype/ftmm.h: Improve documentation.\n\nCMakeLists.txt: Provide both \u0027freetype\u0027 and \u0027Freetype::Freetype\u0027 targets.\n\nFreeType can be located by consuming projects that use\n`find_package(Freetype)` either via the old `MODULE` path (which uses\n`FindFreetype.cmake` supplied by CMake), or via the new `CONFIG` path (which\nuses `freetype-config.cmake` as supplied by this project).  Up to this point\nthe CMake module has supplied the target `Freetype::Freetype` and the config\nfile provided by this project the target `freetype`.  Now we supply both\n`freetype` and `Freetype::Freetype` so that consuming projects can always\nuse the target `Freetype::Freetype` regardless of what path was taken by\n`find_package(Freetype)`.\n\nFixes #1165.\n\nImprove error handling in `FT_GlyphLoader_CheckPoints`.\n\nIf `FT_GlyphLoader_CreateExtra` returns an error (and a couple of other\nplaces), `FT_GlyphLoader_CheckPoints` would propagate the error immediately,\nrather than cleaning up the partially set up `FT_GlyphLoader`.  As a\nconsequence, a subsequent attempt to create a glyph could result in a crash.\n\n* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Ensure all the error\nconditions exits are consistent, eventually calling `FT_GlyphLoader_Reset`.\n\nLoad variation store for \u0027COLR\u0027 v1.\n\n* src/sfnt/ttcolr.c: Include `ttobjs.h` temporarily.\n(VARIABLE_COLRV1_ENABLED): New temporary macro to detect whether variable\nCOLRv1 is enabled.\n(Colr): New fields `var_store` and `delta_set_idx_map`.\n(tt_face_load_colr, tt_face_free_colr) [VARIABLE_COLRV1_ENABLED]: Load and\nfree variation store data using the functions from the Multiple Masters\nservice.\n\ndoc: Clarify description of `FT_Stream_IoFunc`.\n\nThe existing documentation comments on `FT_Stream_IoFunc` hinted at the dual\nseek/read behavior required for custom stream implementations to work, but\nit didn\u0027t explicitly explain it.  Without looking at the internals of\nFreeType, it was easy for someone to assume their implementation should\nhandle both seek and read operations all the time.  If this is done, you get\na variety of errors, but mostly just `Unknown_File_Format` (error code\n0x02).\n\nCheck safety of cast to `TT_Driver` before accessing member.\n\n* src/sfnt/ttcolr.c (VARIABLE_COLRV1_ENABLED): Access\n`enable_variable_colrv1` only if driver class matches.\n\nApply variation deltas to `PaintVarSolid`.\n\n* src/sfnt/ttcolr.c (FT_PaintFormat_Internal_): New enumeration\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`.\n\n(get_deltas_for_var_index_base) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New\nfunction to retrieve an array of delta values, which will be used for most\nof \u0027COLR\u0027 v1 variation formats (in follow-up commits).\n\n(read_paint): Add `face` parameter; update caller.\nHandle `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`.\n\nSupport variable \u0027COLR\u0027 v1 color lines.\n\n* include/freetype/ftcolor.h (FT_ColorStopIterator): Add field\n`read_variable` to indicate whether a variation index base should be read.\n\n* src/sfnt/ttcolr.c: (FT_PaintFormat_Internal): New enumerations\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_LINEAR_GRADIENT`\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_RADIAL_GRADIENT`, and\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SWEEP_GRADIENT`.\n(read_color_line): New parameter `read_variable`; update callers.\n(read_paint): Handle new enumerations.\n\nDeltas for \u0027COLR\u0027 v1 gradient coordinates.\n\n* src/sfnt/ttcolr.c (read_paint) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Read and\napply deltas to radial, linear, and sweep gradient coordinates such as \u0027p0\u0027,\n\u0027p1\u0027, \u0027p2\u0027, \u0027center\u0027, \u0027radii\u0027, and \u0027angles\u0027.\n\nSupport for \u0027COLR\u0027 v1 variable transforms.\n\n* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSFORM`.\n(read_paint): Handle new enumeration value.\n\nSupport for \u0027COLR\u0027 v1 variable translate.\n\n* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSLATE`.\n(read_paint): Handle new enumeration value.\n\nSupport \u0027COLR\u0027 v1 variable `PaintVarScale*`.\n\n* src/sfnt/ttcolr.c: (FT_PaintFormatInternal): New enumeration values\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE`,\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_CENTER`,\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM`, and\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM_CENTER`.\n(read_paint): Handle new enumeration values.\n\nSupport variable \u0027COLR\u0027 v1 `PaintVarRotate*`.\n\n* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE` and\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE_CENTER`.\n(read_paint): Handle new enumeration values.\n\nSupport variable \u0027COLR\u0027 v1 `PaintVarSkew*`.\n\n* src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW`,\n`FT_COLR_PAINTFORMAT_INTERNAL_SKEW_CENTER`, and\n`FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW_CENTER`.\n(read_paint): Handle new enumeration values.\n\nBuild outlines in amortized constant time.\n\nWhen resizing the loader\u0027s points and contours, resize them to at least 1.5\ntimes their current size.  The code currently only reserves as much space as\nis currently required, leading to O(n^2) runtime when adding points one at a\ntime.\n\nThis change does not attempt to ever shrink the loader\u0027s point and contour\nstorage since this was not attempted previously either.  The 1.5 multiple\nwas chosen as a trade-off between potentially unused space and the runtime.\n\n* src/base/ftgloader.c (FT_GlyphLoader_CheckPoints): Implement it.\n\nFixes #1173.\n\n* configure: s/egrep/grep -E/\n\n`egrep` is deprecated.\n\n* src/pfr/*.c: Trivial improvements and formatting.\n\nAdd some safety guards.\n\n* src/pfr/pfrload.c (pfr_phy_font_load): Check resolutions and number of\ncharacters.\n\nFixes #1174.\n\nFortify the kerning code.\n\nAny array index must be strictly less then the array size. Therefore,\nwe must reject indexes that are equal to the array size.  Alternatively,\nwe should move the bounds check before the index decrement but that\nwould be confusing.\n\nIn addition, it is ok to decrement zero (.notdef) and get UINT_MAX,\nwhich is then automatically rejected in the bounds check.\n\n* src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix the bounds checking.\n\nFix clang14 compiler warnings.\n\n* include/freetype/internal/ftstream.h (FT_GET_SHORT_LE, FT_GET_USHORT_LE):\nFix type.\n\n* src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Always return boolean\nvalue.\n(tt_face_get_colorline_stops): Fix type of `var_index_base`.\n\nFix compilation if `TT_CONFIG_OPTION_GX_VAR_SUPPORT` is not set.\n\n* src/sfnt/ttcolr.c: Protect relevant code with\n`TT_CONFIG_OPTION_GX_VAR_SUPPORT`.\n\n* src/base/ftglyph.c (FT_Get_Glyph): Set `*aglyph` to NULL in case of error.\n\n* src/autofit/afhints.h: Remove dead code.\n\nUse unsigned accounting for hints.\n\n* src/autofit/afhints.h (AF_AxisHintsRec): Use unsigned types.\n\n* src/autofit/afhints.c (af_axis_hints_new_{segment,edge},\naf_glyph_hints_get_num_segments, af_glyph_hints_get_segment_offset):\nUpdated accordingly.\n* src/autofit/aflatin.c (af_cjk_hints_compute_edges): Ditto.\n* src/autofit/afcjk.c (af_cjk_hints_compute_edges): Ditto.\n\nFix typo in clip box computation.\n\n* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Use appropriate\nscale factor for `yMin` and `yMax`.\n\nImplement VarClipBox.\n\n* src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Depending on the\nformat, read `var_index_base`, then retrieve and apply scaled deltas.\n\nRemove unused structure field.\n\n* include/freetype/internal/psaux.h (PS_TableRec): Remove `num_elems`.\n* src/psaux/psobjs.c (ps_table_new): Remoove its initialization.\n\nUpdated to reduce casting.\n\n* src/autofit/afglobal.h (AF_FaceGlobalsRec): Change `glyph_count` type.\n* src/autofit/afglobal.c (af_face_globals_compute_style_coverage,\naf_face_globals_get_metrics, af_face_globals_is_digit,\naf_face_globals_new): Changed local types and updated accordingly.\n* src/autofit/aflatin.c (af_latin_metrics_init_blues): Ditto.\n\nUpdated to reduce casting (cont\u0027d).\n\n* src/autofit/afmodule.h (AF_ModuleRec): Change `default_script` type.\n* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):\nRemove casting.\n* src/autofit/afmodule.c (af_property_{set,get}): Updated accordingly.\n\nRemove some casts, clean up tracing.\n\n* src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup):\nClean up tracing types.\n* src/cache/ftccache.c (ftc_node_destroy): Ditto.\n* src/cache/ftcmanag.c (FTC_Manager_Check): Ditto.\n(FTC_Manager_Check, FTC_Node_Unref): Remove a cast.\n* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto.\n\n* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Reduce casting.\n\n* src/psaux/psobjs.c (ps_table_release): Remove redundant casting.\n\n* src/sfnt/ttload.c: Trace formatting updates.\n\n* src/cache/ftcmanag.c (FTC_Manager_New): Initialize `cur_weight`.\n\nSee !192.\n\nci: bump windows image and use newer runner and vs2019\n\nThe old 1809 runner will be decommissioned at some point.\n\nBetter handling of out-of-memory situations.\n\nThis follows similar code in `cff_slot_done`.\n\n* src/base/ftobjs.c (ft_glyphslot_done), src/type1/t1objs.c\n(T1_GlyphSlot_Done): Check `internal` pointer.\n\nThe Type1 problems was reported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d50057.\n\nCMakeLists.txt (FT_ENABLE_ERROR_STRINGS): New configuration option.\n\nThis option uncomments FreeType configuration macro\n`FT_CONFIG_OPTION_ERROR_STRINGS` to make function `FT_Error_String` return\nmeaningful error strings.\n\nThis option is off by default.\n\nAvoid undefined shifts in `COLR` v1 color line retrieval\n\n* src/sfnt/ttcolr.c (tt_face_get_colorline_stops): Disambiguate shift\nbehavior by using multiplication using macros from ftcalc.h.\n\nFixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d50573\n\n* src/base/ftver.rc: Explicitly use UTF-16.\n\nFixes #1177 to avoid mistranslation and other problems.\n\nDon\u0027t require \u0027gvar\u0027 table to support variation fonts.\n\nFixes #1172.\n\n* src/sfnt/sfobjs.c (sfnt_load_face): Tag font as Multiple Masters font if\n`fvar` is present; do not require other tables to be present.\n\n* src/truetype/ttgxvar.c (tt_set_mm_blend): Allow for a missing \u0027gvar\u0027 table\nwhen setting variation coordinates.  However, if a \u0027gvar\u0027 table is actually\npresent, do perform a sanity check and fail on malformedness.\n(TT_Get_MM_Var): Don\u0027t assume \u0027fvar\u0027 needs \u0027gvar\u0027 or \u0027CFF2 tables in all\ncases, which is an overly tight check.\n\nMinor fix.\n\n* src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Avoid\ncompiler warning.\n\nPointer sanity checks before reading layer info in \u0027COLR\u0027 v0\n\n* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Check that the pointer to\nread from is within the \u0027COLR\u0027 table.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d50633\n\nHandle variable `COLR` v1 fonts without delta set index map\n\nFixes #1178.\n\n* src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Set outer index to\n0 and inner index to the delta index when retrieving deltas if the\n`COLR` table has no delta set index map.\n\nReject \u0027fvar\u0027 loading when `num_instances` is too small.\n\n* src/truetype/ttgxvar.c (TT_Get_MM_Var): Reject retrieving master when\n\u0027fvar\u0027 values locally do not match with sanitized values from initialization\nat `sfnt_init_face` time.\n\nReported as\n\n  https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1360295\n\n* src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix format 1 handling.\n\nFixes #1181.\n\nReject \u0027COLR\u0027 table if version is 1 but header too small.\n\n* src/sfnt/ttcolr.c (tt_face_load_colr): If the version is determined to\nbe 1, then the table size has to be at least the size of the v1 header.\nAlso, for peeking the number of base glyphs and entries in the layer list,\nensure that the table is sufficiently long.\n\nFixes #1179.  Original patch by Sergey Temnikov.\n\nDiscard and recreate bitmaps for copying and converting.\n\nReusing target bitmaps for copying and converting is permitted.  It is,\nhowever, pointless to preserve their content before overwriting.  Free-\nmalloc might be faster than realloc.\n\n* src/base/ftbitmap.c (FT_Bitmap_Copy, FT_Bitmap_Convert): Free\nan old buffer and create a new one.\n\nClean up the bitmap flow control.\n\n* src/base/ftbitmap.c (FT_Bitmap_Copy): Flip the copy if its pitch\nis trully opposite, zero is not a positive value.\n(FT_Bitmap_Convert): Set negative pitch as needed, accept negative\nalignment values.\n\nAdd SVG document bounds checking.\n\nAdd a check that the document content is actually contained within the\n`SVG ` table.  Without this check a malformed font may claim arbitrary\nmemory as its document content.\n\n* src/sfnt/ttsvg.c (tt_face_load_svg): Take `numEntries` into account when\ntesting \u0027documentRecord\u0027 extents.\n(find_doc): Rename `stream` to `document_records` for clarity.\n(tt_face_load_svg_doc): Split `doc` from `doc_list` pointer for clarity.\nTest that the document content is contained within the table.\nEnsure minimum length of document before testing for gzip format.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d51812\n\nGuard access in \u0027COLR\u0027 table when requesting child table pointer.\n\n* src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Tighten\npointer bounds checks.\n(get_child_table_pointer): Check whether incoming pointer `p` lies within\nthe \u0027COLR\u0027 table.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d51816\n\n* src/tools/*.py: Migrate to Python 3.\n\nFixes #1185, closes !205. Formatting changes according to PEP8.\n\nFT_Attach_Stream: Make `parameters` argument constant.\n\n* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Use lighter FT_DivFix.\n\nFix undefined pointer arithmetic.\n\n* src/truetype/ttgxvar.c (tt_var_get_item_delta, ft_var_load_mvar): Use\n`FT_OFFSET`.\n\n* src/psaux/pshints.c (cf2_hintmap_build): Improve debugging output.\n\n* src/psaux/pshints.c (cf2_hintmap_insertHint): Fix midpoint computation.\n\nReplace \u0027(start + end) / 2\u0027 with \u0027start + (end - start) / 2\u0027 to avoid\noverflow.\n\nFixes #1180.\n\n* src/cache/ftcbasic.c (ftc_basic_family_get_count): Remove redundancy.\n\n* src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid `FT_Set_Charmap`.\n\nSet charmap aggressively without all validations of `FT_Set_Charmap`\nbecause we take it from the available array and only temporarily.\nEven CMap Format 14 will gracefully return 0.\n\n* src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly.\n\nAs with the previous commit, we can avoid the validation checks\nof `FT_Set_Charmap` and set it directly when choosing from the\navailable list.\n\nReset the face charmap directly.\n\nThere is no need to validate the original charmap in `FT_Set_Charmap`.\nIt can be reset directly.\n\n* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):\nUse direct assignment.\n* src/autofit/af{latin,cjk,indic}.c (af_latin_metrics_init): Ditto.\n\nImprove FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name.\n\nMinor comment changes.\n\nSynchronize `ftoption.h` flavours.\n\nRemove `FT_CONFIG_OPTION_NO_GLYPH_NAMES`.\n\nThis ancient option stayed completely undocumented.  Given that the \u0027cff\u0027\ndriver requires the \u0027psnames\u0027 module, it makes no sense today to have this\nmacro.\n\n* src/cff/cffdrivr.c (cff_services), src/cff/cffobjs.c (cff_face_init):\nRemove corresponding conditional code.\n\nNote the lack of floating-point data types.\n\n* src/base/ftsynth.c (FT_GlyphSlot_Slant): New API with custom slant. * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Declare it.\n\n* builds/toplevel.mk: Prefix all paths with `$(TOP_DIR)/`.\n\nThis is useful for builds that are not started from the root directory.\n\nSigned-off-by: Xiang Xiao \u003cxiaoxiang@xiaomi.com\u003e\n\nGuard individual `COLR` v1 paint field reads.\n\n* src/sfnt/ttcolr.c (ENSURE_READ_BYTES): New macro.\n(read_paint): Use it – after the start pointer `p` has been checked for\nwhether it allows reading the format byte, each successive paint table field\nread need to be bounds-checked before reading further values.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d52404\n\nMinor formatting.\n\n* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Simplify calculations.\n\nUpdate sources to zlib 1.2.13.\n\nAdditional bounds checks for `COLR` v1 table handling.\n\n* src/sfnt/ttcolr.c (read_paint): Add `colr` argument, necessary for...\n... another use of `ENSURE_READ_BYTES`.\nUpdate callers.\n(tt_face_get_paint_layers): Ensure that the 4-byte paint table\noffset can be read.\n\nThis is a follow-up to !124 and issue\nhttps://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d52404\n\n* subprojects/zlib.wrap: Update to zlib version 1.2.13.\n\nSimplify SVG metrics scaling.\n\nUse pre-calculated scaling factors. Also, the advance widths used\nto be rounded, which was incorrect.\n\n* src/cff/cffgload.c (cff_slot_load): Use `x_scale` and `y_scale`.\n* src/truetype/ttgload.c (TT_Load_Glyph): Ditto.\n\n* src/truetype/ttgload.c: Cosmetic changes.\n\n* include/freetype/*: Fix documentation typos.\n\nReplace \u00271/64th\u0027 (and similar entries) with \u00271/64\u0027 in docs and comments.\n\nAdd support for `avar` table 2.0 format.\n\nSee\n\n  https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md\n\nfor the specification.\n\nCurrently, this is implemented only in most recent OS versions on Apple\nplatforms and in the HarfBuzz library, but it is expected to be added to the\nOpenType standard soon.\n\n* src/truetype/ttgxvar.h (GX_AVarTableRec): New structure.\n(GX_BlendRec): Use it to replace `avar_segment` with `avar_table`.\n\n* src/truetype/ttgxvar.c (ft_var_load_avar): Load new table version.\n(ft_var_to_normalized, tt_done_blend): Extend for new format.\n(ft_var_load_hvvar, ft_var_to_design): Updated.\n\nAccelarate charmap searches.\n\nThe binary searches within charmaps can be accelerated because they\noften contain dense continuous blocks of character codes. Within such\nblocks, you can predict matches based on misses.  This method has been\ndeployed in `bdf` since 0f122fef34; we only refactor it there.  We now\nuse it in `pfr` and `psnames`, which speeds up the unicode charmap\naccess by about 50% in PFR and Type 1 fonts.\n\n* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Refactor.\n* src/pfr/pfrcmap.c (pfr_cmap_char_{index,next}): Predict `mid` based\non the mismatch distance.\n* src/psnames/psmodule.c (ps_unicodes_char_{index,next}): Ditto.\n\n* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search.\n\nThis is mostly for consistency because PFR fonts with bitmap strikes\ndo not seem to exist.\n\nfix for make multi\n\nFix \"make multi\" by MR !223\n\n* include/freetype/internal/services/svmm.h: include ftmm.h to define FT_Get_MM_Func.\n* src/truetype/ttgxvar.h: include ftmmtypes.h to use GX_AVarTable properly.\n* src/base/ftmac.c: include ftdebug.h to use FT_THROW() properly.\n\nuse AC_CHECK_PROG() macro for libpng-config detection\n\n* builds/unix/configure.raw: use AC_CHECK_PROG() instead of `which` to find `libpng-config`.\n\ndocs/CHANGES: Updated.\n\nRestore behavior of ft_var_load_hvvar\n\n* src/truetype/ttgcvar.c (ft_var_load_hvvar): restore previous behavior\n\nIn a previous change [0] the behavior of `ft_var_load_hvvar` was changed\nto not load the item variation store if it was at offset 0, but not\nreturn an error when this happened. This broke any users, like\n`tt_hvadvance_adjust`, that rely on successful completion of\n`ft_var_load_hvvar` to imply that returned table\u0027s `itemStore` had been\ninitialized. This lead such users to dereference NULL.\n\nThis change appears to have been unintentional and unrelated to the\nactual avar2 changes. As a result, fix these NULL dereferences by\nrestoring the code to always attempt to initialize the `itemStore`.\n\n[0] ae4eb996 \"[truetype] Add support for `avar` table 2.0 format.\"\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d53061\n\nCheck avar_segment before access\n\n* src/truetype/ttgxvar.c (tt_done_blend): check `avar_segment` before\naccessing to free its `correspondence`.\n\nReported as:\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d53062\n\nFix `-Wstrict-prototypes`.\n\n* builds/unix/configure.raw: Fix `-Wstrict-prototypes`.\nClang 16 warns on these and they will be dropped in C23.\n\n* builds/unix/freetype2.m4: Ditto.\n\nSigned-off-by: Sam James \u003csam@gentoo.org\u003e\n\nImprove CMap efficiency and readability.\n\n* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Check and walk\nthe encoding array indexes.\n\nIn `ItemVariationStore`, value 0xFFFF for `dataCount` is valid.\n\nIt corresponds to outer indices of 0 to 0xFFFE.\n\n* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Remove invalid\ncode.\n\nImprove bounds checks for `ItemVariationStore`.\n\n* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Move bounds check ...\n(tt_var_get_item_delta): ...  to this function, because it is safer.  For\nexample, the \u0027avar\u0027 table 2.0 codepath was not performing a bounds check at\nall.\n\nAdd `TT_CONFIG_OPTION_NO_BORING_EXPANSION` configuration macro.\n\nThis gives users a possibility to deactivate new features not (yet) in the\nOpenType standard.\n\n* include/freetype/config/ftoption.h, devel/ftoption.h\n(TT_CONFIG_OPTION_NO_BORING_EXPANSION): New macro.\n\n* src/truetype/ttgxvar.c (ft_var_load_avar): Use it to disable \u0027avar\u0027\nversion 2.0 support.\n\nFix generated ftmodule.h\n\nThe sdf module wasn\u0027t recognized, so the generated ftmodule.h had \"None_renderer_class\".\n\n* builds/meson/parse_modules_cfg.py: Handle sdf in RASTER_MODULES.\n\nUse generated ftmodule.h\n\nftmodule.h is generated at the root of the build directory, but FT_CONFIG_MODULES_H\n(freetype/config/ftmodule.h) is used instead.\nThis makes the build fail when disabling modules in modules.cfg.\n\n* meson.build (harfbuzz_dep): Add \u0027-DFT_CONFIG_MODULES_H\u003d\u003cftmodule.h\u003e\u0027.\n\n* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Integer overflow.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d50462\n\n* src/pcf/pcfutil.c ({Two,Four}ByteSwap): Use builtins or shifts.\n\nWe trust glibc which uses shifts or builtins to swap bytes.  This\nmust be more efficient.\n\n* src/autofit/afloader.c (af_loader_load_glyph): Fix dereference.\n\nThis must happen after the NULL check.\n\nTaken from\n\n  https://github.com/freetype/freetype/pull/2\n\nComments added.\n\n* src/autofit/afloader.c (af_loader_load_glyph): Remove `size` check.\n\nThis is done by `FT_Load_Glyph`.\n\n* src/base/ftdbgmem.c (ft_mem_source_compare): Add FT_COMPARE_DEF.\n\nCloses !230.\n\n* include/freetype/internal/ftcalc.h (FT_MSB): Support Open Watcom 2.0.\n\nCloses !232.\n\n* subprojects/zlib.wrap: Micro-update from upstream.\n\nHandle minor compiler warnings.\n\n* src/sdf/ftsdf.c (get_min_distance_conic): Initialize `nearest_point`.\n\n* src/sfnt/ttsvg.c (find_doc): Initialize `mid_doc`.\n\nFixes #1195.\n\n* builds/unix/configure.raw: Don\u0027t check for `memcpy` and `memmove`.\n\nWe expect a C99 compiler, and both functions are part of this standard.\n\n* src/gzip/ftzconf.h: Updated to zlib 1.2.13.\n\nI forgot to copy that file.\n\nMake static compilation not leak global symbols.\n\n* src/gzip/ftgzip.c (HAVE_HIDDEN): Do not define; it is no longer needed\nbecause everything is static.\n(HAVE_MEMCPY): Define.\n(zcalloc, zcfree): Remove no longer needed definitions (because `Z_SOLO` is\nactive).\n\n* src/gzip/patches/freetype-zlib.diff: Regenerated.\n\nFixes #1146.\n\nCo-authored-by: Werner Lemberg \u003cwl@gnu.org\u003e\n\nDelay the upem validity assertion.\n\nFixes #1194.\n\n* src/psaux/psft.c (cf2_getUnitsPerEm): Remove the upem assert.\n(cf2_checkTransform): Assert the upem validity after checking the scale.\n\n* src/base/ftobjs.c (FT_Request_Metrics): Avoid division by zero.\n\nThe division-by-zero might happen in broken fonts (see #1194).\nInstead of returning a huge number from FT_DivFix and failing\nto scale later, we now bail immediately.\n\nFix color stop bounds check calculation at table end.\n\nFixes https://bugs.chromium.org/p/skia/issues/detail?id\u003d14021\n\n* src/sfnt/ttcolr.c (VAR_IDX_BASE_SIZE): New macro.\n(tt_face_get_colorline_stops): Fix off-by-one bounds check calculation, take\n`VarColorStop` into account, and hopefully make it easier to read.\n\nfix spelling err in LICENSE.txt\n\nReport used stream\u0027s external status.\n\nIn `open_face` the initial stream is set on the face, along with the\ninformation about if FreeType is the owner of the stream object itself.  The\nloaders may in the course of their work replace this stream with a new\nstream (as is the case for \u0027woff\u0027 and \u0027woff2\u0027), which may have a different\nownership than the initial stream object (likely the original stream object\nis owned by the user and is external, while the new stream object is created\ninternally to FreeType and is internal).  When the stream is replaced, the\nface\u0027s flags are updated with the new ownership status.\n\nHowever, `open_face` cannot itself free this stream as its caller\n`ft_open_face_internal` is responsible for this.  In addition, in the case\nof an error `open_face` cannot return an actual face with the new stream and\nits ownership status to the caller.  As a result, it must pass this\ninformation back to the caller as a sort of \"failed face\" so that the caller\ncan clean up.\n\n`open_face` was already passing back the new stream but was not passing back\nthe stream ownership information.  As a result the stream may not have been\nfree\u0027d when needed.\n\nFixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d54700\n\n* src/base/ftobjs.c (open_face): Pass back the ownership information as\nwell.\n(ft_open_face_internal): Updated.\n\nKeep variation store consistent.\n\n`tt_var_load_item_variation_store` fills out a `GX_ItemVarStore`.  While it\nmay return an error, the item store must be left in a consistent state so\nthat any use or destruction of the item store can properly use or free the\ndata in it.  Before this change the counts from the font data were read\ndirectly into the item store before the actual allocation of the arrays to\nwhich they referred.  There exist many opportunities between the time the\ncounts are read and the arrays are allocated to return early due to invalid\ndata.  When this happened the item store claimed to have entires it actually\ndid not, leading to crashes later when it was used.\n\nFixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d54449\n\n* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Read the counts\ninto local variables and store them in the item store only after the related\narrays are actually created on the item store.\n\nDon\u0027t depend on \u0027hb-ft\u0027.\n\nThe circular dependency is still there, but at least we no longer depend on\nthe HarfBuzz API that is only present if HarfBuzz has been built with\nFreeType support, making the bootstrapping a bit easier.\n\n* src/autofit/ft-hb.c, src/autofit/ft-hb.h: New files, providing\n`_hb_ft_font_create`, which is more or less a verbatim copy of the\ncorresponding HarfBuzz code from file `hb-ft.cc`.\n\n* src/autofit/afglobal.c (af_face_globals_new): Use it.\n* src/autofit/afshaper.h: Don\u0027t include `hb-ft.h` but `ft-hb.h`.\n* src/autofit/autofit.c: Include `ft-hb.c`.\n\n* LICENSE.TXT: Updated.\n\nReset cvt and storage in context load.\n\nCurrently the cvt and storage are saved and restored in `TT_RunIns`.\nHowever, this is too granular as the cvt and storage area should be set to\nthe original cvt and storage area only when setting up the hinting context.\nThis allows for the cvt and storage area to be modified while parsing\nmultiple glyphs, as is the case with composite glyphs.\n\n* src/truetype/ttinterp.h (TT_ExecContextRec): Remove `origCvt` and\n`origStorage`.\n\n* src/truetype/ttinterp.c (TT_RunIns): Don\u0027t save and restore the cvt and\nstorage area.\n(Modify_CVT_Check, Ins_WS): Switch from \"if in glyph and using original data\ndo copy on write\" to \"if in glyph and not using glyph specific data do copy\non write\".\n\n* src/autofit/ft-hb.c (_hb_ft_reference_table): Minor integration fixes.\n\nRemove temporary runtime flag for variable \u0027COLR\u0027 v1.\n\nFixes #1187.\n\n* src/sfnt/ttcolr.c (top level, read_paint, tt_face_load_colr,\ntt_face_free_colr, get_deltas_for_var_index_base,\ntt_face_get_color_glyph_clipbox, tt_face_get_colorline_stops): Remove macro\ndefinition `VARIABLE_COLRV1_ENABLED` and its usage.\n\n* src/truetype/ttdriver.c (tt_property_set): Remove parsing of\n\u0027TEMPORARY-enable-variable-colrv1\u0027 property name.\n\n* src/truetype/ttobjs.h (TT_DriverRec): Remove `enable_variable_colrv1`\nflag.\n\nsr/*.c: Various minor fixes.\n\n* src/autofit/ft-hb.c (_hb_ft_reference_table): Call `FT_UNUSED` after\nvariable declarations.\n\n* src/gxvalid/gxvjust.c (gxv_just_widthDeltaClusters_validate): Eliminate\nunused variable.\n\n* src/gzip/ftgzip.c: Don\u0027t call GCC \u0027-Wstrict-prototypes\u0027 pragma for C++\ncompiler.\n\n* src/sfnt/ttcolr.c (ENSURE_READ_BYTES): Remove final semicolon to avoid\ncompiler warning.\n\n* src/sfnt/ttsvg.c (tt_face_load_svg_doc): Fix signedness warning.\n\nFix leak of internal stream marked external.\n\n`open_face_from_buffer` allocates a new `FT_Stream` to pass to\n`ft_open_face_internal`.  Because this is an `FT_OPEN_STREAM`,\n`ft_open_face_internal` will mark this as an \u0027external stream\u0027, which the\ncaller must free.  However, `open_face_from_buffer` cannot directly free it\nbecause the stream must last as long as the face.  There is currently an\nattempt at this by clearing the \u0027external stream\u0027 bit after\n`open_face_from_buffer` returns successfully.  However, this is too late as\nthe original stream may have already been closed and the stream on the face\nmay not be the same stream as originally passed.\n\nIt is tempting to use `FT_OPEN_MEMORY` and let `ft_open_face_internal`\ncreate the stream internally.  However, with this method there is no means\nto pass through a \u0027close\u0027 function to the created stream to free the\nunderlying data, which must be owned by the stream.\n\nA possibility is to check on success if the stream of the face is the same\nas the original stream.  If it is then unset the external flag.  If not,\nthen free the original stream.  Unfortunately, while no current\nimplementation does so, it is possible that the face still has the original\nstream somewhere other than as the `FT_FaceRec::stream`.  The stream needs\nto remain available for the life of the face or until it is closed,\nwhichever comes earlier.\n\nThe approach taken here is to let the stream own itself.  When the stream is\nclosed it will free itself.\n\n* src/base/ftobjs.c (memory_stream_close): Free `stream`.\n(open_face_from_buffer): Simplify error handling, since\n`ft_open_face_internal` always closes `args.stream` on any error.\n\nFixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d54930\n\nAlways close user-provided stream.\n\nThe `FT_Open_Face` documentation states\n\n\u003e If `FT_OPEN_STREAM` is set in `args-\u003eflags`, the stream in `args-\u003estream`\n\u003e is automatically closed before this function returns any error (including\n\u003e `FT_Err_Invalid_Argument`).\n\nHowever, if the user provides a stream in `args.stream` with\n`FT_OPEN_STREAM` set and a `close` function, but then for some reason passes\nNULL for `aface` and a non-negative `face_index`, the error\n`Invalid_Argument` is returned but the `close` callback will not be called\non the user-provided stream.  This may cause resource leaks if the caller is\ndepending on the `close` callback to free resources.\n\nThe difficulty is that a user may fill out a `FT_StreamRec` and pass its\naddress as `args.stream`, but the stream isn\u0027t really \u0027live\u0027 until\n`FT_Stream_New` is called on it (and `memory` is set).  In particular, it\ncannot really be cleaned up properly in `ft_open_face_internal` until the\nstream pointer has been copied into the `stream` local variable.\n\n* src/base/ftobj.c (ft_open_face_internal): Ensure that user-provided\n`args.stream.close` is called even with early errors.\n\n\u0027close\u0027 callback may not use `stream-\u003ememory`.\n\nThe documentation for `FT_StreamRec::memory` states that it \u0027shouldn\u0027t be\ntouched by stream implementations\u0027.  This is true even for internal\nimplementations of the \u0027close\u0027 callback, since it is not guaranteed that\n`memory` will even be set when the \u0027close\u0027 callback occurs.\n\n* src/base/ftobjs.c (new_memory_stream): stash current `memory` in\n`stream-\u003edescriptor`.\n(memory_stream_close): Use it.\n\n* src/tools/no-copyright: Updated.\n\nUpdate all copyright notices.\n\n* src/tools/update-copyright: Allow execution from other repositories.\n\nWe use this for `freetype-demos`.\n\nAvoid nullptr dereference in reading malformed \u0027COLR\u0027 v1 table.\n\nFixes https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1408044.\n\n* src/sfnt/ttcolr.c (tt_face_load_colr): When the \u0027COLR\u0027 v1 table header is\ntoo small, don\u0027t deallocate delta set index map structures.\n\nReturn error if requested driver is not found.\n\nIn `open_face_from_buffer` it is possible that a driver is requested but\nFreeType was built without the requested module.  Return an error in this\ncase to indicate that the request could not be satisfied, rather than trying\nall existing driver modules.\n\n* src/base/ftobjs.c (open_face_from_buffer): Return `FT_Err_Missing_Module`\nif a driver is specified but not found.\n\nFix typo.\n\n* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Request module \u0027t1cid\u0027,\nnot \u0027cid\u0027.\n\n* docs/oldlogs/ChangeLog.210: Typos.\n\nThe \u0027COLR\u0027 v1 API will no longer be experimental in the next release.\n\nFix crash in COLRv1.\n\nThis is a stopgap until issue #1202 is properly fixed.\n\n* src/truetype/ttxgvar.c (tt_var_get_item_delta): Check `normalizedcoords`.\n\nWhitespace.\n\nMinor changes.\n\nComment fixes, typos, removing of unnecessary parentheses.\n\n* subprojects/harfbuzz.wrap, subprojects/libpng.wrap: Updated.\n\n* docs/CHANGES: Add news for \u0027freetype-demos\u0027.\n\n* src/truetype/ttgxvar.c (tt_var_get_item_delta): Check `face-\u003eblend`.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d55581\n\n* src/cff/cffgload.c (cff_slot_load): Avoid memory leak.\n\nFixes issue #1204.\n\n* src/type1/t1afm.c (T1_Read_Metrics): Validate ascender and descender.\n\nThe ascender and descender are optional in the AFM specifications.\nThey could be omitted or even set to zero, e.g., in the current release\nof URW++ base 35 fonts.\n\n* src/type1/t1afm.c (T1_Read_Metrics): Reaffirm ascender and descender.\n\nComment on optional ascender and descender.\n\ndocs/CHANGES: Updated.\n\nUse 32-bit integers internally.\n\n* src/sdf/ftsdfcommon.h (FT_16D16, FT_26D6): Use 32-bit integers\n  instead of `FT_Fixed` for internal data types. `FT_Fixed` i.e.\n  `signed long` is 64-bit on some architectures.\n\n* src/base/ftsynth.c (FT_GlyphSlot_Slant): Add vertical slant. * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Update it.\n\nAdditional variation tags.\n\nSync with\n  https://learn.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg#registered-axis-tags\n\n* src/truetype/ttgxvar.h (TTAG_ital): New tag.\n* src/truetype/ttgxvar.c (TT_Get_MM_Var): Use it.\n* src/type1/t1load.c (T1_Get_MM_Var): Handle \u0027slnt\u0027 and \u0027ital\u0027.\n\nFix minor clang and clang++ warnings.\n\nAvoid reserved identifiers that are globally defined.\n\nThis is mandated by the C99 standard, and clang 15 produces zillions of\nwarnings otherwise.\n\n* devel/ftoption.h, include/freetype/config/ftoption.h,\ninclude/freetype/internal/ftmemory.h, src/autofit/afhints.h,\nsrc/autofit/afmodule.c, src/autofit/aftypes.h, src/base/ftadvanc.c,\nsrc/base/ftdbgmem.c, src/base/ftstream.c, src/bdf/bdflib.c,\nsrc/truetype/ttinterp.c: Replace identifiers of the form `_foo` with `foo_`.\n\nFor debugging, avoid implicit conversion from integer to double.\n\nOtherwise we get zillions of clang 15 warnings.\n\n* src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c,\nsrc/base/ftobjs.c, src/base/ftoutln.c, src/cff/cffparse.c,\nsrc/raster/ftraster.c, src/sfnt/pngshim.c, src/truetype/ttgload.c,\nsrc/truetype/ttgxvar.c, src/truetype/ttobjs.c, src/type1/t1gload.c: Use\n`double` cast in debugging and tracing macros.\n\nFix \u0027fall-through\u0027 warning messages.\n\nModern compilers get more insistent on that...\n\n* include/freetype/internal/compiler-macros.h (FALL_THROUGH): Define.\n* src/*: Use it instead of `/* fall through */` comments.\n\nFix `FT_LOCAL` and `FT_LOCAL_DEF` tags.\n\nFix \u0027multi\u0027 compilation.\n\n* src/autofit/ft-hb.c: Decorate with `FT_LOCAL_DEF`.\nAdd ANSI boilerplate code for otherwise empty file.\n* src/autofit/ft-hb.h: Include `compiler-macros.h` and `freetype.h`.\nUse `FT_BEGIN_HEADER` and `FT_END_HEADER`.\nDecorate with `FT_LOCAL`.\n\n* src/autofit/rules.mk (AUTOF_DRV_SRC): Add `ft-hb.c`.\n\nComment on `FT_GlyphSlot_Slant\u0027.\n\n* Version 2.13 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-13-0\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.13.\n* docs/CHANGES: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html, builds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,\ndocs/freetype-config.1: s/2.12.1/2.13/, s/2121/2130/.\n\n* include/freetype/freetype.h (FREETYPE_MINOR): Set to 13.\n(FREETYPE_PATCH): Set to 0.\n\n* builds/unix/configure.raw (version_info): Set to 25:0:19.\n* CMakeLists.txt (VERSION_MINOR): Set to 13.\n(VERSION_PATCH): Set to 0.\n\n* build/toplevel.mk (do_dist): Fix typo.\n\n* builds/meson/parse_modules_cfg.py: Handle `gxvalid` and `otvalid`.\n\nThese need a name mapping similar to what was done for other modules,\nor linking will fail.\n\nRound design coordinates.\n\nThe design coordinates for MM fonts were not rounded. For example,\n`FT_Get_Var_Design_Coordinates` returned values with fractional part.\n\n* src/type1/t1load.c (mm_axis_unmap): Refactor with rounding.\n\n* include/freetype/ftmm.h (FT_Var_Axis, FT_Set_Var_Design_Coordinates,\nFT_Get_Var_Design_Coordinates): Reword documentation.\n\nDocumentation improvement for `FT_Bitmap`.\n\nFixes #1205.\n\n* src/base/ftoutln.c (FT_Outline_Reverse): Anchor first contour points.\n\nA cubic contour has to always start from an on-point. Therefore, we\nshould not swap the first with the last point, which might be off, and\nobtain an invalid contour. This does not matter for conic contours.\nIf anything, it also saves one swap there. Fixes #1207.\n\nHide Infinality.\n\nRemove Infinality as an option before its complete extraction.\n\n* include/freetype/ftoption.h: Remove the Infinality option.\n* devel/ftoption.h: Ditto.\n* include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Is 40 now.\n\n* src/base/ftoutln.c (FT_Outline_Check): Update error code, clean up.\n\nClean up contour indexing.\n\n* src/base/ftoutln.c (FT_Outline_Reverse, FT_Outline_EmboldenXY,\nFT_Outline_Get_Orientation): Set the first and last indexes together.\n(FT_Outline_Decompose): Ditto and check them more stringently.\n* src/smooth/ftgrays.c (FT_Outline_Decompose)[STANDALONE_]: Ditto.\n\n* src/base/ftstroke.c (FT_Stroker_ParseOutline): Clean up contour indexing.\n\n* src/sdf/ftsdf.c (get_min_distance_cubic): Fix C4701, typos.\n\n* src/base/ftoutln.c (FT_Outline_Check): Fix C4701 warning.\n\nClean up contour indexing.\n\n* src/autofit/aflatin.c (af_latin_metrics_init_blues): Refactor.\n* src/autofit/afcjk.c (af_cjk_metrics_init_blues): Ditto.\n\nClean up contour indexing.\n\n* src/raster/ftraster.c (Decompose_Curve, Convert_Glyph): Use consistent\nindex types (Int) and compact iterations.\n\n* src/base/ftsystem.c (ft_ansi_stream_io): Avoid undefined behaviour. Also short-circuit on `offset` to avoid checking `count` a second time when `ft_ansi_stream_io` is used for reading.\n\nPer ISO/IEC 9899:\n\n  If an argument to a function has an invalid value (such as a value outside\n  the domain of the function, or a pointer outside the address space of the\n  program, or a null pointer, or apointer to non-modifiable storage when the\n  corresponding parameter is not const-qualified) or a type (after\n  promotion) not expected by a function with variable number of arguments,\n  the behavior is undefined.  If a function argument is described as being\n  an array, the pointer actually passed to the function shall have a value\n  such that all address computations and accesses to objects (that would be\n  valid if the pointer did point to the first element of such an array) are\n  in fact valid.\n\nPer IEEE Std 1003.1:\n\n  size_t fread(void *restrict ptr, size_t size, size_t nitems,\n               FILE *restrict stream);\n\n  The `fread` function shall read into the array pointed to by `ptr` up to\n  `nitems` elements whose size is specified by `size` in bytes, from the\n  stream pointed to by `stream`.\n\nSince the first argument to `fread` is described as being an array, its\nbehavior is undefined when that argument is a null pointer.\n\nPer the documentation on `ft_ansi_stream_io`:\n\n  If `count\u0027 is zero (this is, the function is used for seeking), a non-zero\n  return value indicates an error.\n\nThus the intent is clear, and the call to `fread` can be skipped, avoiding\nundefined behaviour.\n\n* src/type1/t1load.c (T1_Get_MM_Var): Optimize array zeroing.\n\n* src/cff/cffload.c (cff_encoding_load): Optimize array zeroing.\n\nThis is unnecessary for predefined standard and expert encodings.\nEven for custom encodings the arrays might be already zeroed when\nCFF_FontRec is created but we keep it just in case.\n\n* configure: Don\u0027t hardcode `grep -E`.\n\nTeXLive still supports Solaris 5.10, where the system\u0027s `grep` doesn\u0027t\naccept the `-E` option.  We thus introduce an `EGREP` variable that is set\nto either `grep -E` or `-egrep`.\n\n* src/*: Replace leading underscores with trailing ones in dummy variables.\n\nThis is to avoid clang warnings.\n\n* include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update.\n\nThis follows\n\n  https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00159.html\n\nTreat 38 as 40 without Infinality.\n\n* include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Reinstate.\n* src/truetype/ttdriver.c (tt_property_set): Fallback from 38 to 40.\n\n* include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update.\n\nThis follows\n\n  https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00200.html\n\nFix static linking.\n\nWithout this patch, static linking with MS Visual Studio causes linking\nerrors.\n\n* src/gzip/ftgzip.c: Set `ZEXPORT` to nothing and `ZEXTERN` to static for\nall compilers.\n\n* src/gzip/README.freetype: Update version.\n\n* src/cff/cffload.c (cff_subfont_load): Synonymous update.\n\nAvoid strtol on non-null-terminated data.\n\nTechnically, `strtol` can only be used with C strings terminated with\n`\\0`.  CID data is not generally null-terminated and often does not\ncontain a `\\0` if it is hex-encoded.  AddressSanitizer with `ASAN_OPTIONS`\ncontaining `strict_string_checks\u003d1` verifies this by using an adversarial\n`strtol` that always reads to the terminating `\\0`.\n\nTo avoid undefined behavior from `strtol` in `cid_parser_new`, use the\nparser to parse the tokens instead of attempting to parse them ad-hoc.\nThis will internally use `PS_Conv_Strtol` to parse the integer, which\nrespects the parser\u0027s limits and directly implements the PostScript\nparsing rules for integers.\n\n* src/cid/cidparse.c (cid_parser_new): Use the parser to parse the\ntokens.\n\nFixes: https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1420329\n\n* configure: Use `sed` instead of `grep`.\n\nThis is more portable and consistent with `autogen.sh`.\n\nShorten de-referencing.\n\n* src/cff/cffobjs.c (cff_clot_init): Use immediate library reference.\n* src/cid/cidobjs.c (cid_slot_init): Ditto.\n* src/type1/t1objs.c (T1_GlyphSlot_Init): Ditto.\n\n* src/cff/cffobjs.c (cff_size_get_globals_funcs): Shorten de-referencing.\n\nShorten de-referencing.\n\n* src/pfr/pfrobjs.c (pfr_face_done, pfr_face_init): Use closer `memory`.\n* src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove `loader`.\n\n* src/sfnt/sfobjs.c (sfnt_load_face): Shorten de-referencing.\n\n* src/cff/cffobjs.c (cff_size_init): Synonymous change.\n\nClean up memory management in the old engine.\n\n* src/cff/cffparse.c (finalize_t2_strings): Fix NULL-dereferencing\nin the out-of-memory situation, use `FT_FREE`.\n(cff_parser_run): Use FreeType memory allocation macros and avoid\nuninitialized pointers.\n\n* src/cff/cffparse.c (cff_parser_run): Fix variable type.\n\nClean up CharString number encoding.\n\n* src/cff/cffparser.c (cff_parser_run): Work with signed numbers.\n\n* src/cff/cffparse.c (cff_parser_run): Thinko.\n\n* builds/windows/vc2010/freetype.vcxproj: Suppress C4267 on _WIN64.\n\nThis usually comes from `strlen` returning 64-bit `size_t`, which\nwe often assign to 32-bit `FT_ULong` on Windows-64 (LLP64).\n\nFix a couple of MSVC warnings.\n\n* src/base/ftcalc.c (FT_MulAddFix): Add cast.\n* src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Ditto.\n\nAdded information about the zlib version update in the changelog\n\nSimplify memory management.\n\nInstead of using `Update_Max`, switch to regular FreeType memory\nallocation macros, stop pre-allocating the glyph instruction arrays.\n\n* src/truetype/ttgload.c (TT_Load_Simple_Glyph,\nTT_Process_Composite_Glyph): Switch to regular memory allocation.\n* src/truetype/ttinterp.c (Update_Max): Removed.\n(TT_Load_Context): Reallocate stack and free old instructions.\n(Modify_CVT_Check, Ins_WS): Switch to regular memory allocation.\n* src/truetype/ttinterp.h (Update_Max): Removed.\n\n* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Triage memory leak.\n\nThis leak has been introduced in the previous commit and immediately\ndetected:\n  https://chromium-review.googlesource.com/c/chromium/src/+/4313202\n\n* src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix leak too.\n\n* src/tools/apinames.c (panic): Accept variable number of arguments.\n\nFix VMS handling of overly long function names.\n\nBased on ideas from Jouk Jansen \u003cjoukj@hrem.nano.tudelft.nl\u003e.\n\n* src/tools/vms_shorten_symbol.c: New file, taken from\n\n  https://sourceforge.net/p/vms-ports/vmsshortsym/ci/default/tree/vms_shorten_symbol.c\n\nwith some minor edits to allow compilation with C++ and being included in\nanother source code file.\n\n* src/tools/apinames.c: Include `vms_shorten_symbol.c`.\n(PROGRAM_VERSION): Set to \u00270.5\u0027.\n(names_dump) [OUTPUT_VMS_OPT]: Call `vms_shorten_symbol` to get unique function\nidentifiers not longer than 31 characters.\n\nFile `infback.c` is not needed.\n\n* src/gzip/infback.c: Remove.\n* src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.\n\napinames.c: Add comment.\n\n* src/truetype/ttgload.c (TT_Hint_Glyph): Mostly cosmetic update.\n\nThe number of instructions is now taken from the executed context.\nTechnically, this means that `control_len` and `control_data`\nvalues are no longer _used_ internally but only expose them.\n\nUpdate VMS installation support.\n\nFix recent fallout in memory management.\n\n* src/truetype/ttgload.c (TT_Process_Composite_Glyph,\nTT_Load_Simple_Glyph): Clean up old instructions regardless of\nnew ones, postpone setting `control_len` and `control_data` until...\n(TT_Load_Glyph): ... the exit from this function.\n\nbuilds/vms/apinames_vms.bash: Fix `unzip` artifact\n\nThe problem occured when unpacking a zip file created on OpenVMS on Linux.\nWhile OpenVMS knows many different file formats, Unix only knows stream-LF\nand binary.  In principle `zip` on Linux should have translated the file to\nstream-LF but failed to do so.  That caused the file to incorrectly contain\nonly one line with control-characters.\n\n* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean up.\n\nClean up glyph loading.\n\n* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean space checking.\n(TT_Hint_Glyph): Don\u0027t copy the outline structure.\n(TT_Process_Simple_Glyph): Cosmetic update.\n\n* src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API.\n\n* include/freetype/ftsystem.h (FT_Stream_IoFunc): Improve documentation.\n\nFixes #1208.\n\nClean up zeroing and local variables.\n\n* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Avoid zeroing.\n(load_truetype_glyph): Avoid zeroing and clean local variables.\n\n* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use for-loop.\n\nEven though we never call `TT_Load_Simple_Glyph` with zero contours,\nout of abundance of precaution, let\u0027s handle this case properly.\n\nRework the stream limit checks.\n\nThe old stream limit checks, before 6986ddac1ece, were good but\npointless for the crafted t2_strings.  Checking limits there is\nnot necessary as they are created to hold all data.  By using two\nconditions, we can detect the actual crossing of the stream boundary\nas appropriate for the stream pointer only.  The t2_strings parsing\nwill not be triggering these checks.\n\n* src/cff/cffparse.c (cff_parser_within_limits): Removed.\n(cff_parse_real, cff_parse_integer): Redesign the stream limit check.\n(cff_parse_num, do fixed, cff_parse_fixed_dynamic): Update callers.\n\nSimplify `t2_strings` management in the old engine.\n\n* src/cff/cffparse.c (cff_parser_run): Allocate the charstring buffers\nand the list nodes together so that they can be freed at once.\n(finalize_t2_strings): Removed as no longer needed.\n(cff_parser_done): Updated.\n\nStreamline POST format 2.0 handing (cont\u0027d).\n\n* src/sfnt/ttpost.c (load_format_20): Co-allocate the string data and\ntheir pointers, which makes it easier to handle and free them.\n(tt_face_free_ps_names): Updated.\n* include/freetype/internal/tttypes.h (TT_Post_20): Update type.\n\n* src/sfnt/ttpost.c (load_format_20): Simplify comutations.\n\nMiscellaneous POST clean-ups.\n\n* src/sfnt/ttpost.c (load_format_20): Decrease casts.\n(load_format_25): Check the table length and impose a theoretical\nglyph number limit usable with 8-bit offset.  Decrease casts.\n(load_post_names): Pass the mapping data length without 2 bytes.\n\nConsolidate POST version 2.0 and 2.5 (pt 1).\n\nThe deprecated POST version 2.5 can be handled using the data\nstructures of version 2.0.  The goal is to reduce the footprint.\n\n* include/freetype/internal/tttypes.h (TT_Post_Names): Absorb and...\n(TT_Post_20, TT_Post_25): ... remove these structures.\nsrc/sfnt/ttpost.c (load_post_names, tt_face_get_ps_name,\ntt_face_free_ps_names, load_format_20): Updated accordingly.\n(load_format_25): ditto and convert offsets to glyph indices.\n\nConsolidate POST version 2.0 and 2.5 (pt 2).\n\n* src/sfnt/ttpost.c (load_format_20, load_format_25): Update arguments\nand move shared calls and checks upstream to...\n(load_post_names): ... this function.\n(tt_face_free_ps_names, tt_face_get_ps_name): Updated.\n\n* src/sfnt/ttpost.c: Formatting and comments.\n\n* src/sfnt/ttpost.c (load_format_*): Streamline frame reading.\n\n* src/sfnt/ttpost.c (load_format_25): Do not abort frame reading.\n\nClean up CMAP{4,12,13} handling.\n\nThis moves the charcode overflow checks upstream and turns some\nwhile-loops into the do-while ones to avoid the uninitialized warnings.\nThis should slightly reduce the number of checks and jumps.\n\n* src/sfnt/ttcmap.c (tt_cmap{4,12,13}_next,\ntt_cmap{4.12.13}_char_map_linear): Remove the charcode overflow check.\n(tt_cmap{4,12,13}_char_map_binary): Ditto and use do-while.\n(tt_cmap{12,13}_char_next): Add the overflow check.\n\nAlign `char_next` return types.\n\nThis is mostly cosmetic because FT_UInt and FT_UInt32 are likely identical.\n\n* src/sfnt/ttcmap.c, src/cff/cffcmap.c, src/psaux/t1cmap.c,\nsrc/psnames/psmodule.c, include/freetype/internal/service/svpcsmap.h,\nsrc/pfr/pfrcmap.c, src/winfonts/winfnt.c (*_char_next): return FT_UInt.\n\n* src/cff/cffcmap.c (cff_cmap_encoding_char_next): Abbreviate.\n\nAdd `size_reset` to `MetricsVariations`.\n\nThis is a generalization of commit\n\n```\ncommit e6699596af5c5d6f0ae0ea06e19df87dce088df8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Feb 2 11:38:04 2017 +0100\n\n    [truetype] Fix MVAR post-action handling.\n```\n\nIt is also possible for plain `CFF ` style fonts to contain an `fvar` and\n`MVAR` table and use `cff_metrics_adjust`.  `tt_size_reset` should only be\ncalled with `TT_Size` and never with `CFF_Size`.\n\nAllow the \"metrics-variations\" service to specify the correct function (if\nany) to reset `FT_Size`s after adjusting metrics.\n\n* src/truetype/ttobjs.c (tt_size_reset): Split off some functionality\ninto...\n(tt_size_reset_height): ... this new function.\n\n* src/truetype/ttdriver.c (tt_service_metrics_variations): Add\n`size_reset`.\n(tt_size_select, tt_size_request): Updated.\n\n* src/truetype/ttobjs.h: Updated.\n\n* include/freetype/internal/services/svmetric.h (MetricsVariations): Add\n`size_reset`.\n(FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Updated.\n\n* include/freetype/internal/tttypes.h (TT_FaceRec_): Rename `var` to\n`tt_var` and add `face_var`.\n\n* src/cff/cffdrivr.c (cff_service_metrics_variations): Add `size_reset`.\n(cff_hadvance_adjust, cff_metrics_adjust): Updated.\n\n* src/cff/cffobjs.c (cff_face_init): Use `face_var`.\n\n* src/sfnt/sfobjs.c (sfnt_init_face): Initialize `face_var`.\n\n* src/sfnt/ttmtx.c (tt_face_get_metrics): Use `tt_var`.\n\n* src/truetype/ttgxvar.c (tt_size_reset_iterator): Renamed to...\n(ft_size_reset_iterator): ... this new function.\nCall `size_reset`.\n(tt_apply_mvar): Pass `size_reset` to `ft_size_reset_iterator`.\n\nFixes #1211\n\n* src/truetype/ttinterp.c: Remove outdated comments.\n\ntt_size_reset_height to take FT_Size\n\nThe `MetricsVariations` `FT_Size_Reset_Func` is defined to take an\n`FT_Size`. Because `tt_size_reset_height` is to be used as such a\nfunction, it must also take an `FT_Size` instead of a `TT_Size`. Even\nthough the pointers passed will be the same at runtime, calling a\nfunction through a pointer of a different type from the original\nfunction pointer type is undefined behavior. This may be caught at\nruntime by Control Flow Integrity with something like clang\u0027s\n`cfi-icall`.\n\nIssue: https://crbug.com/1433651\n\n* src/truetype/ttobjs.h (tt_size_reset_height): take `FT_Size`\n\n* src/truetype/ttobjs.c (tt_size_reset_height): take `FT_Size` and\nupdate documentation\n\nFT_Size_Reset_Func to return FT_Error\n\nThe `MetricsVariations` `FT_Size_Reset_Func` is currently defined to\nreturn `void`, but the implementations return `FT_Error`. Even though\nthe pointers passed will be the same at runtime, calling a function\nthrough a pointer of a different type from the original function pointer\ntype is undefined behavior. This may be caught at runtime by Control\nFlow Integrity with something like clang\u0027s `cfi-icall`.\n\nIssue: https://crbug.com/1433651\n\n* include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func):\nreturn `FT_Error` instead of `void`.\n\nFix `make multi\u0027.\n\n* src/truetype/ttgxvar.c: Include freetype/internal/services/svmetric.h\nfor the FT_Service_MetricsVariations type definition.\n\nChange the trace messages of the charstrings retrieval errors.\n\nThe t1cid driver catches 3 types of errors in\nthe charstrings retrieval;\nA) The invalid FD number, there are 2 subtypes;\n  A-1) FD number is the maximum number fitting to FDBytes.\n  A-2) FD number is greater than num_dicts.\nB) Declared length is overrunning.\nC) Declared length is invalid (its end is before its head).\n\nConsidering that some widely distributed fonts\n(e.g., \"CJKV\" book by O\u0027Reilly) have A-1 errors\nin the unimplemented glyphs, the trace level for\nA-1 is calmed to level 1.\n\nThe errors A-2, B, and C would be irregular;\ntheir trace levels are kept at level 0, but\nthe updated trace messages include the CID number.\n\nFix handling of PS names for Variation Fonts.\n\n* src/sfnt/sfdriver.c (get_win_string, get_apple_string): Continue\nconstruction of string if an invalid character is encountered.\n\nFixes #1218.\n\nImprove/add source comments and documentation.\n\nClean up the atom property parsing.\n\n* src/bdflib.c (bdf_is_atom_): Refactor code with fewer checks.\n(bdf_list_join_): Return NULL.\n(bdf_add_comment_): Use const argument.\n(bdf_get_property): Ditto, ditto, make the function static.\n* src/bdf.h (bdf_get_property): Remove prototype.\n\ns/this is,/that is,/\n\n* src/ttgxvar.c: Minor changes.\n\n(TT_Get_MM_Var): Improve tracing messages.\n(tt_set_mm_blend): Minor speed-up.\n\nMinor documentation updates.\n\n* src/cid/cidgload.c (cid_load_glyph): Fix compiler warnings.\n\n* src/cff/cffdrivr.c (cff_ps_get_font_info): Reject \u0027CFF2\u0027 format.\n\n* src/cff/cffdrivr/c (cff_get_ps_name): Avoid unnecessary crash.\n\nThe situation can happen if `FT_New_Face` (or one of its siblings) is called\nwith a negative index to get the number of contained faces, followed\nimmediately by a call to `FT_Get_Postscript_Name`.  While this is not a valid\nuse of the FreeType library there is no need for a crash.\n\nFixes #1219.\n\n* src/sfnt/ttload.c (tt_face_load_font_dir): Add another guard.\n\nReject \u0027OTTO\u0027 fonts with no valid tables.\n\n* src/sfnt/pngshim.c (Load_SBit_Png): Remove FALL_THROUGH warning.\n\nAPI documentation: Re-organize chapters and sections\n\n* Split the very long \u0027Base Interface\u0027 section into smaller sections.\n* Split the \u0027Core API\u0027 chapter into two chapters.\n* Remove single enumeration values from `@order` fields since they have no\n  effect.\n\nImprove cid_get_cid_from_glyph_index().\n\nUpdate cid_get_cid_from_glyph_index() to\nreturn an error and CID\u003d0 in the case that\nthe specified glyph index points to an invalid\nentry.\n\ncidgload.h (cid_compute_fd_and_offsets):\nDeclare new helper function to set the\nfd_select and 2 offsets to access the glyph\ndescription data.\n\ncidgload.c (cid_compute_fd_and_offsets):\nMove the part loading fd_select and 2 offsets\nfrom cid_load_glyph() to here.  If the loaded\nparameters are broken, return the Invalid_Offset\nerror.  This function does not load the glyph\ndata, only fills these parameters.\n\n(cid_load_glyph): Use new helper function in above.\n\ncidriver.c (cid_get_cid_from_glyph_index):\nCheck whether the requested glyph index points\nto a valid entry, by calling cid_compute_fd_and_offsets().\nIf it is valid, fill the cid by the glyph\nindex (\u003dCID).  If it is invalid, return an\nerror and fill the cid by 0.\n\nRevise list cleansing.\n\n* src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Use one loop to\ndo it.\n* src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_FlushN):\nStreamline loops.\n\n* src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Purge backwards.\n\n* src/cache/ftccache.c (ftc_node_hash_unlink): Minor.\n\nImprove tracing messages; formatting.\n\nNew Variation Font function `FT_Get_Default_Named_Instance`.\n\n* include/freetype/ftmm.h, src/base/ftmm.c (FT_Get_Default_Named_Instance):\nNew function.\n\n* include/freetype/internal/services/svmm.h\n(FT_Get_Default_Named_Instance_Func): New typedef.\n(FT_Service_MultiMasters): New field `get_default_named_instance`.\n(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.\n\n* include/freetype/internal/tttypes.h (TT_Face): New field\n`var_default_named_instance`.\n\n* src/sfnt/sfobjc.s (sfnt_init_face): Initialize\n`var_default_named_instance`.\n\n* src/cff/cffdrivr.c (cff_get_default_named_instance): New function.\n(cff_service_multi_masters): Updated.\n\n* src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize\n`var_default_named_instance`.\n(TT_Get_Default_Named_Instance): New function.\n* src/truetype/ttgxvar.h: Updated.\n* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.\n\n* src/type1/t1driver.c (t1_service_multi_masters): Updated.\n\n* docs/CHANGES: Updated.\n\ns/set_instance/set_named_instance/\n\n* include/freetype/internal/services/svmm.h (FT_Set_Instance_Func): Renamed\nto...\n(FT_Set_Named_Instance_Func): ...this.\n(FT_Service_MultiMasters): Rename `set_instance` to `set_named_instance`.\n(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.\n\n* src/base/ftmm.c (FT_Set_Named_Instance): Updated.\n\n* src/cff/cffdrivr.c (cff_set_instance): Renamed to...\n(cff_set_named_instance): ...this.\n(cff_service_multi_masters): Updated.\n* src/cff/cffobjs.c (cff_face_init): Updated.\n\n* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.\n\n* src/type1/t1driver.c (t1_service_multi_masters): Updated.\n\nFix deactivation of variation font handling.\n\nAccording to the documentation, the functions `FT_Set_Named_Instance`,\n`FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and\n`FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag.\n(The same is true for `FT_Set_MM_WeightVector` but this information was\naccidentally omitted from the documentation.)\n\nHowever, if a call of these functions didn\u0027t change the axis values this\ncould fail because internal shortcuts exited too early.\n\nThis commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the\ntop-level API functions, also taking care of the issue at hand.\n\n* src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector,\nFT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,\nFT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`.\n\n* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design,\nTT_Set_Named_Instance) Don\u0027t handle `FT_FACE_FLAG_VARIATION`.\n\n* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector,\nT1_Set_MM_Design): Ditto.\n\n* src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of\nlow-level functions.\n\n* src/truetype/ttobjs.c (tt_face_init): Ditto.\n\n* include/freetype/internal/services/svmm.h: Minor changes.\n\nFix PostScript name handling for variation fonts.\n\nA variation font\u0027s PostScript name of a named instance is usually different\nfrom the PostScript name of an unnamed instance.  However, if a change\nbetween a named instance and an unnamed instance with exactly the same\ndesign axis values happened, it was possible that the PostScript name wasn\u0027t\ncorrectly updated.\n\nThis commit reorganizes the code to handle this issue within the top-level\nAPI functions, using a new service to trigger recomputation of the\nPostScript name.\n\n* include/freetype/internal/services/svmm.h (FT_Construct_PS_Name_Func): New\ntypedef.\n(FT_Service_MultiMasters): New field `construct_ps_name`.\n(FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.\n\n* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,\nFT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Call\n`mm-\u003econstruct_ps_name` to handle `postscript_name`.\n(FT_Set_Named_Instance): Call `mm-\u003econstruct_ps_name` to handle\n`postscript_name`.\nUse shortcut.\n* src/cff/cffdrivr.c (cff_construct_ps_name): New function.\n(cff_service_multi_masters): Updated.\n\n* src/truetype/ttgxvar.c (tt_set_mm_blend): Don\u0027t handle `postscript_name`.\n(TT_Set_MM_Blend): Simplify.\n(TT_Set_Named_Instance): Return -1 if axis values haven\u0027t changed.\nDon\u0027t set `face_index`.\n(tt_construct_ps_name): New function.\n\n* src/truetype/ttgxvar.h: Updated.\n\n* src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.\n\n* src/type1/t1driver.c (t1_service_multi_masters): Updated.\n\n* src/type1/t1load.c (T1_Set_MM_Blend): Simplify.\n\nFix style name handling for variation fonts.\n\n* include/freetype/internal/tttypes.h (TT_FaceRec): New field\n`non_var_style_name`.\n\n* src/sfnt/sfobjs.c (sfnt_load_face): Initialize `non_var_style_name`.\n(sfnt_done_face): Free `non_var_style_name`.\n\n* src/truetype/ttgxvar.c (TT_Set_Named_Instance): Restore non-VF style name\nif switching back to non-VF mode.\n\n* src/cff/*: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\n* src/bdf/bdfdrivr.c: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\n* src/cid/cidriver.c: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\n* src/pcf/pcfdrivr.c: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\n* src/pfr/pfrdrivr.c: face -\u003e pfrface, pfrface -\u003e face.\n\n* src/psnames/psmodule.c: Use `FT_CALLBACK_DEF`.\n\n* src/sfnt/sfdriver.c, src/sfnt/ttbdf.c: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\n* src/sfnt/sfdriver.c (sfnt_load_table): New wrapper function.\n(sfnt_service_sfnt_table): Use it.\n\n* src/truetype/*: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\n* src/type1/*: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\n* src/type42/t42drivr.c: Clean up interface.\n\nEnsure that all driver functions use the signature of the service or driver.\nThis avoids pointer mismatches, which are technically undefined behaviour.\nRecent compilers are more picky in catching them as part of Control Flow\nIntegrity tests.\n\nSignature fixes.\n\nSignature fixes.\n\n* src/type1/t1load.c: Signature fixes.\n\n* src/cff/cffcmap.c: Signature fixes.\n\n* src/cid/cidload.c: Signature fixes.\n\nSignature fixes.\n\n* src/type42/t42parse.c: Signature fixes.\n\n* src/winfonts/winfnt.c: Signature fixes.\n\n* src/pcf/pcfdrivr.c: Signature fix.\n\n* src/sfnt/ttcmap: Signature fixes.\n\nSignature fixes.\n\nSignature fixes.\n\n* src/pshinter/pshrec.c (t1_hints_close, t1_hints_apply): New wrapper\nfunctions.\n(t1_hints_funcs_init): Use them.\n(t2_hints_close, t2_hints_apply): New wrapper functions.\n(t2_hints_funcs_init): Use them.\n\nSignature fixes.\n\nSignature fixes.\n\n* src/svg/ftsvg.c: Signature fixes.\n\nSignature fixes.\n\nSignature fixes.\n\n* src/cache/ftcglyph.c, src/cache/ftcglyph.h (FTC_GNode_Compare): Remove\nredundant function.  It is equivalent to `ftc_gnode_compare` and becomes\ncompletely meaningless with fixed signatures.\nUpdate all callers.\n\n* src/cache/ftcsbits.c, src/cache/ftcsbits.h (FTC_SNode_Compare): Remove\nredundant function.  It is equivalent to `ftc_snode_compare` and becomes\ncompletely meaningless with fixed signatures.\nUpdate all callers.\n\n* src/bzip2/ftbzip2.c: Signature fixes.\n\n* src/psaux/t1cmap.c: Signature fixes.\n\nMinor compiler warning fixes.\n\n* src/autofit/afcjk.c (af_cjk_get_standard_widths), src/autofit/aflatin.c\n(af_latin_get_standard_widths): Use `FT_CALLBACK_DEF`.\n\n* src/cff/cffparse.c (cff_parser_run): Initialize and fix allocation of `q`.\n\n* src/cff/cffdrivr.c (cff_glyph_load): Fix guard for `size`.\n\nThis was forgotten to change in commit 2b54eba36b (in May 2004).\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d58739\n\n* src/smooth/ftgrays.c (FT_SSE2): Don\u0027t define for VMS.\n\nSet FT_FACE_FLAG_CID_KEYED.\n\n* cidobjs.c (cid_face_init): Set FT_FACE_FLAG_CID_KEYED.\n\n* cidriver.c (cid_get_is_cid): Comment about the case that\nis_cid cannot guarantee the glyph collection specification.\n\nRevise the dynamic hash table accounting.\n\nInstead of counting entries relative to the middle of the hash table,\nthis switches to the absolute counter with the full index range mask.\nAs a result, some calculations become a bit simpler.  The cache resizing\nlogic stays largely the same.\n\n* src/cache/ftccache.h (FTC_NODE_TOP_FOR_HASH): Revised with new counter.\n* src/cache/ftccache.c (ftc_get_top_node_for_hash): Ditto.\n(ftc_cache_resize): Simplify reallocations and stop their zeroing.\n(ftc_cache_init): Stop over-allocating but keep zeroing initially.\n(FTC_Cache_Clear, FTC_Cache_RemoveFaceID): Updated accordingly.\n\n* include/freetype/internal/t1types.h: Fix the indentation.\n\n* include/freetype/ftcache.h: Formatted and updated.\n\n* include/freetype/ftcache.h: Typo, punctuation.\n\nMinor casting and cosmetic updates.\n\n* src/cache/ftcglyph.c (ftc_gcache_{init,done}): Remove casting.\n(FTC_GCache_Lookup): Cosmetic variable renaming.\n* src/cache/ftcsbits.c (ftc_snode_compare): Formatting.\n\nMerge functions.\n\n* src/cache/ftccache.c (FTC_Cache_Init): Merge into...\n(ftc_cache_done): ... this function, with unnecessary checks removed.\n\n.mailmap: Updated.\n\nAdd new load flag `FT_LOAD_NO_SVG`.\n\nModern color fonts often contain both an \u0027SVG\u0027 and \u0027COLR\u0027 table.  FreeType\nalways preferred \u0027SVG\u0027 over \u0027COLR\u0027 (this was a design decision), however,\nthis might not be the right choice for the user.  The new flags makes\nFreeType ignore the \u0027SVG\u0027 table while loading a glyph.\n\nFixes #1229.\n\n* include/freetype/freetype.h (FT_LOAD_NO_SVG): New macro.\n\n* src/base/ftobjs.c (FT_Load_Glyph), src/cff/cffgload.c (cff_slot_load),\nsrc/truetype/ttgload.c (TT_Load_Glyph): Use it.\n\nvms_make.com: Create shared executable for x86 version of OpenVMS.\n\nReduce heap allocation of `deltaSet` variation data.\n\n`deltaSet` is an array of packed integers that can be 32 bits, 16 bits, or\n8 bits.  Before this change, these values were unpacked to 32-bit integers.\nHowever, this can cause big heap allocations, e.g., around 500 KByte for\n\u0027NotoSansCJK\u0027.  To reduce this amount, store the packed integers and unpack\nthem just before passing to the calculation.  At calculation time, due to\nthe variable length of region indices, temporary heap allocations are\nnecessary.  This heap allocation is not negligible and visible in `ftbench`\nresults.  So, use stack-allocated arrays for short array calculations.\n\nFixes #1230.\n\n* include/freetype/internal/ftmmtypes.h (GX_ItemVarDataRec): New fields\n`wordDeltaCount` and `longWords`.\n\n* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Load packed\ndata.\n(tt_var_get_item_delta): Unpack data before applying.\n\nAdd missing end quote of a string in the example code of FT_Trace_Set_Level\n\nType1 GX (sfnt-wrapped Type1) is not supported.\n\n* docs/formats.txt: Clarify the reference of Type1 GX,\nand state that this format is not supported.  This\nis because the content `TYP1\u0027 table is not exactly same\nwith the Type1 font format specification; no eexec\nencryption is used.  For detail and concrete examples,\nsee the analysis on:\n\nhttps://gitlab.freedesktop.org/freetype/freetype/-/issues/1231\n\ndocs/DEBUG: Formatting.\n\nReplace `sprintf` with `snprintf`.\n\nFixes #1233.\n\n* include/freetype/config/ftstdlib.h (ft_sprintf): Replace with...\n(ft_snprintf): This new macro.\n\n* src/autofit/afhints.c (af_print_idx): Add argument to pass the buffer\nsize.\n(af_glyph_hints_dump_points, af_glyph_hints_dump_segments,\naf_glyph_hints_dump_edges): Updated.\n\n* src/bdf/bdflib.c (BUFSIZE): New macro.\n(bdf_parse_properties_, bdf_parse_start_): Use `ft_snprintf`.\n\n* src/tools/ftrandom/ftrandom.c (do_test): Use `snprintf`.\n\nMinor formatting.\n\n*/*: Remove many function pointer casts.\n\nIn C it is undefined behavior to call a function through a function pointer\nof a different type.  This is now detected by the Control Flow Integrity\nSanitizer.  All known issues have already been fixed.  Prevent any\naccidental re-introduction by removing function pointer casts when defining\nservices.  The services will call the service functions through the function\npointers on the service.  As a result the functions must have the same type\nso there should be no need to cast.  Removing the casts allows compilers to\nwarn about assignment to an incompatible function pointer type.\n\nFix some `FT_Fixed` vs. `FT_Long` confusion.\n\n`FT_Fixed` and `FT_Long` are both typedef\u0027ed to be `signed long`.  However,\n`FT_Fixed` implies that the lower 16 bits are being used to express\nfractional values and so these two types should not be confused.\n\n* include/freetype/internal/services/svmm.h (FT_Set_MM_Blend_Func): Use\n`FT_Fixed` for `coords`.  Users are passing `FT_Fixed` and implementations\nare taking `FT_Fixed`.\n(FT_Get_MM_Blend_Func): Ditto.\n\n* src/autofit/afcjk.c (af_cjk_metrics_check_digits): Use `FT_Long` for\n`advance` and `old_advance`.  `advance`\u0027s address is passed as `FT_Long*` to\n`af_shaper_get_elem`, which writes the advance in em units (not fixed).  The\nexact value is not important here as it is only compared to check whether it\nhas changed.\n\n* src/autofit/aflatin.c (af_latin_metrics_check_digits): Ditto.\n\nMark FT_Renderer_Class::raster_class as pointer to const\n\nThe `FT_DEFINE_RASTER_FUNCS` macro declares a `const FT_Raster_Funcs`.\nThe address of the definition is taken and assigned to\n`FT_Renderer_Class::raster_class` which is currently `FT_Raster_Funcs*`.\nUntil recently the `const` was cast away and with the removal of the\ncast there are now warnings about dropping this `const`. Instead of\nadding back the casts, make `FT_Renderer_Class::raster_class` a pointer\nto const, as is done with pointers in other interfaces.\n\n* include/freetype/ftrender.h (FT_Renderer_Class_): mark `raster_class`\nas const.\n\nCorrect handling of empty glyphs.\n\nThis is a refinement of commit 7b3ebb9.\n\n* src/sdf/ftsdfrend.c (ft_sdf_render): Goto \u0027Exit\u0027 instead of directly\nreturning.\n(fd_bsdf_render): Ditto, also taking care of setting `FT_GLYPH_OWN_BITMAP`\ncorrectly.\n\nComment fixes.\n\n* Version 2.13.1 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-13-1\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.13.1.\n* docs/CHANGES: Updated.\n* docs/release, docs/README, builds/macs/README: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html, builds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,\ndocs/freetype-config.1: s/2.13.0/2.13/1/, s/2130/2131/.\n\n* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.\n\n* builds/unix/configure.raw (version_info): Set to 26:0:20.\n* CMakeLists.txt (VERSION_PATCH): Set to 1.\n\n* subprojects/libpng.wrap, subprojects/zlib.wrap, subprojects/dlg: Updated.\n\nDon\u0027t compile internal zlib development files when using system zlib.\n\n`src/gzip/rules.mk` compiles the internal zlib sources even when using the\nzlib development files provided by a host system.  If the internal zlib\ndevelopment files are not present, FreeType fails to build from source.\n\nThis patch ensures the internal zlib development files are only\nprerequisites when not using zlib development files on a host system.\n\n* src/gzip/rules.mk (GZIP_DRV_SRCS): Define conditionally.\n\n* src/truetype/ttgload.c (TT_Hint_Glyph): More mostly cosmetic update.\n\nThis is a follow-up to commit 49c74ac02, which creates a new local variable\n\"exec \u003d loader-\u003eexec\", and shortening a lot of \"loader-\u003eexec\".  This commit\ndoes two more such changes missed in that first commit.\n\nSigned-off-by: Hin-Tak Leung \u003chtl10@users.sourceforge.net\u003e\n\nMake blend operator work with floats in private dicts.\n\nThe CFF2 blend operator takes N default values and corresponding\nsets of deltas and pushes N values specific to a designspace\nlocation.  CFF has a floating point numeric type and the FreeType\nblending code was not converting those into its internal 16.16\nFixed type format.\n\nFixes #1243.\n\n* src/cff/cffparse.c (do_fixed): Handle floating point numbers.\nAlso fix scaling overflow check for integer-to-fixed conversion.\n\n* src/cff/cffload.c (cff_blend_doBlend): Updated.\n\nRemove sfnt size guess check\n\nIn WOFF the `totalSfntSize` must be correct, however in WOFF2 this value\nis now just a hint and a conforming implementation must not reject\notherwise valid data if the `totalSfntSize` turns out not to be exact.\n\n* src/sfnt/sfwoff2.c (woff2_open_font): remove check that uncompressed\nwoff2 data would fit in the sfnt size guess.\n\nFixes: #1235\n\nFix compiler warning.\n\n* src/cff/cffparse.c, src/cff/cffparse.h: Make `cff_parse_fixed` a local\nfunction.\n\nAvoid allocation bomb.\n\nThis is a fix for commit 85167dbd5, reported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d60615\n\n* src/sfnt/sfwoff2.c (MAX_SFNT_SIZE): New macro.\n(woff2_open_font): Use it to limit the maximum size of an uncompressed WOFF2\nfont.\n\nClean up on large brotli expansion\n\n* src/sfnt/sfwoff2.c (woff2_open_font): set error and goto cleanup\n\nFixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d60711\n\nvms_make.com: Add `/warn\u003dnoinfo` to `CFLAGS`.\n\nThis reduces enormously the informationals while compiling on x86_64 (i.e.,\nwhich `.h` file is inluded form where).\n\nvms_make.com: Make use of additional libraries optional.\n\nCheck whether `.olb` files are present.\n\nAlso check for the HarfBuzz library.\n\n* src/smooth/ftgrays.c (FT_SSE2): Fix definition for VMS.\n\n* vms_make.com: Fix typos.\n\n* vms_make.com: Provide separate library compiled with C++.\n\nSome types on OpenVMS x86_64 (for example, `long\u0027) have different sizes\ndepending on whether compiled with either C or C++.  In particular,\nX-Windows applications crash if linked with the C++ version.\n\nThis patch makes `vms_make.com` create a second version of the FreeType\nlibrary compiled with C++ if OpenVMS is running on the x86_64 platform.\n\nRemove Infinality for good.\n\nRemove everything `#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY`,\nwhich was undefined for a while now.\n\n* include/freetype/internal/tttypes.h: Ditto.\n* src/truetype/truetype.c: Ditto.\n* src/truetype/ttdriver.c: Ditto.\n* src/truetype/ttgload.c: Ditto.\n* src/truetype/ttinterp.c: Ditto.\n* src/truetype/ttinterp.h: Ditto.\n* src/truetype/ttobjs.c: Ditto.\n* src/truetype/ttsubpix.[ch]: Remove files.\n* src/truetype/rules.mk: Don\u0027t mention \"ttsubpix.c\".\n\nRemove Infinality for good (remaining bits).\n\n* src/truetype/ttobjs.h: Remove remaining fields.\n* src/truetype/ttinterp.c: Do not initialize them.\n* include/freetype/internal/tttypes.h: Remove descriptions.\n\nReduce v40 footprint.\n\n*  src/truetype/ttgload.c (TT_HInt_Glyph, tt_loader_set_pp,\ntt_loader_init): Refactor code.\n\n* src/base/ftobjs.c (open_face_from_buffer): Silence `maybe-uninitialized`.\n\nWe never call this function without a `driver_name` (#1245).\n\nAvoid overflow in COLR bounds checks.\n\nThe values read into `base_glyphs_offset_v1` and `layer_offset_v1` may\nbe in the range 0xFFFFFFFD-0xFFFFFFFF. On systems where `unsigned long`\nis 32 bits adding 4 to such values will wrap and pass bounds checks but\naccessing values at such offsets will be out of bounds.\n\nOn the other hand `table_size` has already been tested to be at least\n`COLRV1_HEADER_SIZE` (34) so it is safe to subtract 4 from it.\n\n* src/sfnt/ttcolr.c (tt_face_load_colr): subtract 4 from `table_size`\ninstead of adding 4 to font data offsets in bounds checks\n\nFixes: https://crbug.com/1469348\n\nFix warnings in tracing messages for 32bit compilation.\n\nSince we now require C99, use `%td` for `ptrdiff_t` and `%zu` for `size_t`.\n\nAvoid UB with memcpy\n\n`FT_NEW_ARRAY(p, 0)` sets `p` to `NULL`. `FT_Stream_ReadAt` with a\nmemory based stream uses `FT_MEM_COPY` which is `memcpy` which specifies\nthat it is undefined behavior for either the `src` or `dst` to be\n`NULL`. Instead of forcing all callers work around calling\n`FT_Stream_Read` when `buffer \u003d\u003d NULL \u0026\u0026 count \u003d\u003d 0` do the check in\n`FT_StreamRead`. This allows any call with `count \u003d\u003d 0` to succesfully\nread zero bytes without UB.\n\n* src/base/ftstream.c (FT_Stream_ReadAt): skip `FT_MEM_COPY` when\n`count \u003d\u003d 0`. (FT_Stream_TryRead): ditto\n\nFixes: #1250\n\nbuilds/freetype.mk: Invoke `mkdocs` as a Python module\n\nFreeType\u0027s `refdoc` target currently allows users to override the\ndefault Python path, which is useful for testing and development.\n\nIn contrast, `mkdocs` is invoked via the default Python path.\n\nInvoking `mkdocs` via Python\u0027s module syntax allows for greater\nflexibility, although there is no change for the default use case.\n\nbuilds/toplevel.mk: Don\u0027t use `\\#` in functions.\n\nThe behaviour changed in GNU make 4.3, where `#` (without the backslash)\nwould be necessary.  Using a variable instead the code works with both older\nand newer GNU make versions.\n\nFixes #1252.\n\nImprove the matrix degeneracy check.\n\nAlso fixes #1251.\n\n* src/base/ftcalc.c (FT_Matrix_Check): To avoid overflow, scale by shifting.\n* include/freetype/internal/ftcalc.h (FT_Matrix_Check): Update description.\n\n* builds/toplevel.mk: Simplify version extraction.\n\nbuilds/unix/configure.raw: Use variable to specify minimum Python version.\n\n* subprojects/*.wrap: Updated.\n\nFix clang warnings.\n\n* src/cffload.c (cff_blend_doBlend): Fix type of `sum`.\n* src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Fix type of\n  `word_delta_count`.\n\n* src/base/ftcalc.c (FT_MulAddFix): Simplify 32-bit rounding.\n\n* Version 2.13.2 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-13-2\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.13.2.\n* docs/CHANGES: Updated.\n* docs/release, docs/README, builds/macs/README: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html, builds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,\ndocs/freetype-config.1: s/2.13.1/2.13.2/, s/2131/2132/.\n\n* include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.\n\n* builds/unix/configure.raw (version_info): Set to 26:1:20.\n* CMakeLists.txt (VERSION_PATCH): Set to 2.\n\ndocs/freetype-web.txt: New file.\n\ndocs/release: Minor fixes.\n\nUpdate sources to zlib 1.13.\n\n* src/sfnt/ttpost.c (load_format_20): Permit long names.\n\nFixes #1254.\n\nComment added.\n\nAbbreviate the DLG submodule update.\n\n* autogen.sh, builds/toplevel.mk: Revise the command options.\n\n* src/sfnt/ttpost.c (load_format_20): Rework tracing.\n\nFix typos.\n\nThis also reduces the used heap size by a large factor.\n\nFrom Behdad.\n\n* src/autofit/afcjk.h (AF_CJKAxisRec): Use `AF_BLUE_STRINGSET_MAX_LEN`.\n* src/autofit/aflatin.h (AF_LatinAxisRec): Ditto.\n\nFix synchronization mistake between FreeType and ttfautohint.\n\nFound by Behdad.\n\n* src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix array size of\n`blue_sorted`: FreeType doesn\u0027t have artificial blue zones.\n\n* src/sfnt/ttpost.c (load_format_20): Micro-optimize.\n\nImprove prefix and suffix removal.\n\n* src/cff/cffobjs.c (remove_style): Rewrite using pointers.\n(remove_subset_prefix): Unwrap loop and use `memmove`.\n* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): Unwrap loop\nand avoid `strlen`.\n\n* src/type1/t1driver.c (t1_ps_get_font_value): Avoid redundant null.\n\n* src/type1/t1afm.c (t1_get_index): Avoid `strlen` call.\n\nInstead, we check the terminal zero.\n\nStreamline dictionary parsing.\n\nWhen matching the keywords, we avoid calculating their lengths by\nchecking the stored values. This itself is a sufficient pre-check\nbefore diving into `memcmp`. Therefore, we remove explicit check of\nthe first characters.\n\n* include/freetype/internal/psaux.h (T1_FieldRec): Store length.\n* src/cid/cidload.c (cid_parse_dict): Use `memcmp` and stored length.\n* src/type1/t1load.c (parse_dict): Ditto.\n* src/type42/t42parse.c (t42_parse_dict): Ditto.\n\nUpdate forgotten array termini.\n\n* src/cid/cidload.c (cid_field_records): Account for added `len`.\n* src/type1/t1load.c (t1_keywords): Ditto.\n* src/type42/t42parse.c (t42_keywords): Ditto.\n\nPost-cleanup.\n\n* include/freetype/internal/psaux.h (T1_FIELD_ZERO): Terminating macro.\n* src/cid/cidload.c (cid_parse_dict): Use while-loop.\n* src/type1/t1load.c (parse_dict): Ditto.\n* src/type42/t42parse.c (t42_parse_dict): Ditto.\n\n* src/cff/cffparse.c (CFF_Field_Handler): Some s/0/NULL/.\n\n* src/type1/t1afm.c (t1_get_index): Restore `strlen` call.\n\nThis reverts commit 8ed6d97446f2f3e5523da62eefbbf32ef7c1290e\nand fixes\n   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d62246\n\nsrc/psaux/psintrp.c (cf2_escSQRT): Improve initial guess.\n\nThe worst number of iterations decreased from 11 to 5.\n\n* src/psaux/cffdecode.c (cff_op_sqrt): Improve initial guess.\n\n* src/psaux/cffdecode.c (cff_op_sqrt): Correct upper limit.\n\nFix typo to correct predicate for call\n\n* src/base/ftobj.c (FT_Get_Color_Glyph_Paint): check\n`get_colr_glyph_paint` before calling `get_colr_glyph_paint` and not\n`get_colr_layer`\n\nUpdate 2 files\n\n- /src/base/ftcalc.c\n- /include/freetype/internal/ftcalc.h\n\n* src/tools/apinames.c (read_header_file): Typos.\n\n* src/base/ftcalc.c /* FT_SqrtFixed */: Fix defunct overflow.\n\nReintroduce `FT_SqrtFixed`.\n\nThe general square root calculations are not necessary in FreeType.\nFor vector normalization or length, FreeType uses special functions.\nIt is, however, required in the legacy CFF specifications.\n\n* src/base/ftcalc.c (FT_SqrtFixed): New function that uses either\nBabylonian or bit-wise algorithm, whichever is faster for the given\nsituation.\n* include/freetype/internal/ftcalc.h (FT_SqrtFixed): Declare it.\n\nUse `FT_SqrtFixed`.\n\n* src/psaux/cffdecode.c \u003ccff_op_sqrt\u003e: Call `FT_SqrtFixed`.\n* src/psaux/psintrp.c \u003ccf2_escSQRT\u003e: Ditto.\n\n* include/freetype/internal/ftcalc.h (FT_MSB): Define for Solaris 11.\n\n* src/base/ftcalc.c (FT_MOVE_SIGN): Enclose assignments.\n\nComment typos.\n\n* src/gxvalid/gxvcommn.h (GXV_USHORT_TO_SHORT): Removed.\n\n* src/smooth/ftgrays.c (gray_render_conic) [SSE2]: Improve flow.\n\nfix typo in FT_Outline_Decompose note\n\n* src/raster/ftraster.c: Tracing updates.\n\n* src/smooth/ftgrays.c: Move the sweep functions...\n\n... out of the setjmp/longjmp scope for readability.\n\nMiscellaneous clean-ups.\n\n* src/raster/ftraster.c (New_Profile): Use NULL.\n(End_Profile): Optimize variables.\n(Convert_Glyph): Do not initialize `cProfile` yet.\n(Render_Single_Pass): Tracing.\n\nFix pool overflow checking.\n\n* src/raster/ftraster.c (New_Profile, End_Profile): Check for overflow\nimmediately.\n(Convert_Glyph, Render_Single_Pass): Fix boundaries.\n\n* src/raster/ftraster.c (Convert_Glyph): Fix null-dereference.\n\nImprove profile accounting.\n\n* src/raster/ftraster.c (End_Profile): Do not initiate next profile.\n(New_Profile): Fully initiate new profile.\n(Convert_Glyph): Clean up variables, initialize `fProfile` here.\n\n* src/raster/ftraster.c: Improve tracing.\n\nFix linked profiles in contour loops.\n\nThis fixes a subtle bug when the last profile in a contour was not\nproperly short-circuited if it was still empty at `End_Profile`.\nWe finalize all linking in `Finalize_Profile_List` now and do nothing\nelse there.  The turns are added in `End_Profile`.\n\n* src/raster/ftraster.c (Insert_Y_Turn): Moved up unchanged.\n(End_Profile): Take care of turns but set only preliminary linking.\n(Finalize_Profile_Table): Take care of linking and null-termination.\n(Convert_Glyph): Adjusted accordingly.\n\n* src/raster/ftraster.c (Convert_Glyph): Remove redundant check.\n\nSmall optimizations.\n\n* src/raster/ftraster.c (New_Profile): Set important fields only and\ndelay setting `gProfile` until...\n(End_Profile): ... it is checked to be valid here.\n(Convert_Glyph): Updated.\n\n* src/pcf/pcfutil.c (BSWAP16): Limit clang support.\n\nThese ancient builtins have been supported by clang since 2013. We\ncondition it somewhat stricter but still around 2017.  This is more\nportable than `__has_builtin`. Fixes #1260.\n\n* src/raster/ftraster.c (Insert_Y_Turn): Improve flow.\n\nClean up sweeping.\n\n* src/raster/ftraster.c (Draw_Sweep): Zero initialize the working\nlists directly and remove unnecessary y-turn checks.\n(Init_Linked): Removed.\n\nSlightly improve the pool design.\n\n* src/raster/ftraster.c (TProfile): Include the variable array member\nand repackage with pointers first.\n(New_Profile): Advance the top using the variable array pointer.\n\nIncrease the raster pool density.\n\nThis only helps to delay the pool overflow and bisections to larger\nsizes and benefits only very intricate glyphs at reasonable sizes.\n\n* src/raster/ftraster.c (TProfile): Use Int instead of Long or PLong\nwhen it is sufficient.\n(New_Profile, End_Profuile, Bezier_Up, Sort): Updated accordingly.\n\nSwitch to routine Int instead of Short.\n\nThis is mostly cosmetic and removes a few casts, plus Short is\npromoted to Int in calculations anyway.\n\n* src/raster/ftraster.c (Vertical_Sweep_Init, Vertical_Sweep_Span,\nVertical_Sweep_Drop, Horizontal_Sweep_Init, Horizontal_Sweep_Span,\nHorizontal_Sweep_Drop, Draw_Sweep): Mostly s/Short/Int/ and remove\ncasting.\n\nSimplify sweeping entry and exit.\n\n* src/raster/ftraster.c (Draw_Sweep): Use y-turns to set the range,\ncorrectly set the initial position, directly loop through y_turns,\nand remove a 5-gray remnant at exit.\n\nSimplify dropout detection.\n\n* src/raster/ftrater.c (Draw_Sweep): Use a single dropout condition.\n\nRemove the jitter exception.\n\nThe jitter exception used to be applied when two neighboring pixels\nwere barely inside the outline. One the left one was turned on then,\nwhich contradicts the OpenType specifications.  Intended to remove\nglitches, it caused disappearing lines and was softened by adding an\nexception to the exception (#54589).\n\n* src/raster/ftraster.c (Vertical_Sweep_Span): Drop the jitter exception.\n\nModify the split condition.\n\nWhile curving close to a pixel center, vertical and horizontal pass\nmight split the curve differently and cause a rare dropout.  This\nmakes the split condition invariant of the sweep direction and more\nrobust.\n\n* src/raster/ftraster.c (Bezier_Up): Modify the split condition.\n\nInstantly remove profiles from linked lists.\n\n* src/raster/ftraster.c (DelOld): Remove loopy function.\n(Draw_Sweep): Implement instant profile removal.\n\nConsolidate profile increment to the next line.\n\n* src/raster/ftraster.c (s/Sort/Increment): Rename this function to\nreflect its true purpose, delete exhausted profiles here...\n(Draw_Sweep): ... instead of here.\n\nImprove profile accounting during sweeping.\n\n* src/raster/ftraster.c (TProfile): Get rid of `countL`.\n(Draw_Sweep): Use `start` for countdown to activation.\n(Horizontal_Sweep_Drop, Vertical_Sweep_Drop): Rely on `height` and\n`offset` to verify profile ends for the stub detection.\n\nReshuffle code for readability.\n\n* src/raster/ftraster.c (Render_Glyph): Setup the rendering pool here.\n(ft_black_render): Setup the target bitmap helpers here.\n\n* src/raster/ftraster.c (Bezier_Up): Improve flow.\n\nHarmonize target bitmap navigation.\n\n* src/raster/ftraster.c (black_TWorker): Store signed maximum indexes\nin both directions instead of unsigned dimensions of the original bitmap.\n(*_Sweep_*, Render_Glyph, ft_black_render): Updated all users.\n\n* src/raster/ftraster.c (Bezier_Up): Improve joint and loop.\n\n* src/raster/ftraster.c (End_Profile, Convert_Glyph): Clean up.\n\n* src/raster/ftraster.c (Line_Up): Updated and fixed up.\n\nThis largely synchronizes the entries into `Line_Up` and `Bezier_Up`.\nMinor bugs in the remainder calculations and accumulations are fixed.\n\n* src/raster/ftraster.c (Line_Up, Bezier_Up): Check \"between\" earlier.\n\nGet rid of the joint flag.\n\n* src/raster/ftraster.c (Line_Up, Bezier_Up): Deal with the scanline\njoints directly based on the initial y-coordinate.\n(New_Profile, black_TWorker): Remove the boolean flag.\n\nGet rid of the fresh flag.\n\n* src/raster/ftraster.c (black_TWorker): Remove the fresh flag.\n(New_Profile): Set the starting scanline here based on the current\ncoordinate and initialize the joint crossing if necessary.\n(Line_Up, Bezier_Up): Do not deal with fresh and joint starts at all.\n(Line_Down, Bezier_Down): Simplify.\n(Conic_To, Cubic_To): Update the current coordinate after each\nsubsection.\n\n* src/raster/ftraster.c (Increment): Minor tweak.\n\n* include/freetype/ftimage.h: Fix type and link.\n\n* src/raster/ftraster.c (Conic_To, Cubic_To): Fix recent regression.\n\nRevise overshoot setting.\n\n* src/raster/ftraster.c (New_Profile, End_Profile): Deal with overshoots\nlocally.\n(Line_To, Conic_To, Cubic_To): Update callers.\n\nStylistic changes.\n\n* src/raster/ftraster.c (Line_To): Code it similar to curves;\nshortcut the flat lines here...\n(Line_Up): ... instead of here.\n\n* src/raster/ftraster.c: Comments.\n\nDissolve a loop.\n\n* src/raster/ftraster.c (End_Profile): Set initial `X` here...\n(Draw_Sweep): ... instead of here; delay the `start` decrement.\n\n* src/raster/ftraster.c (Draw_Sweep): Use more natural loop.\n\n* src/raster/ftraster.c (End_Profile): Reduce branching. (InsNew): Tweak condition.\n\nKeep only bottom y-turns.\n\nThis results in noticeable performance improvement.\n\n* src/raster/ftraster.c (Insert_Y_Turns): All bottom y-turns are still\nsorted and stored; only the maximum top y-turn is recorded now. The\nfunction is renamed.\n(End_Profile): Updated accordingly.\n(Convert_Glyph): Reserve space for the top value.\n\n* docs/CHANGES: Updated.\n\nUse bitwise dropout mode interpretation.\n\n* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,\nDraw_Sweep, Render_GLyph): Interpret dropout mode using bit masks.\n\nRearrange dropout control.\n\nThis reduces the code duplication.\n\n* src/raster/ftraster.c (Function_Sweep_Span): Change signature.\n(Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Focus on pixel setting\nand move duplicated the dropout control logic to...\n(Draw_Sweep): ... this function and refactor.\n(Vertical_Sweep_Span, Horizontal_Sweep_Span): Minor.\n\nSweep polishing.\n\n* src/raster/ftraster.c (*_Sweep_Span): Polish.\n(*_Sweep_Drop): Restore tracing, polish.\n(Draw_Sweep): Simplify the dropout processing loop.\n\n* src/raster/ftraster.c (Draw_Sweep): No-fault return. (Render_Single_Pass): Updated.\n\n* src/raster/ftraster.c (FT_Outline_Get_CBox ) [STANDALONE_]: Removed.\n\n* src/raster/ftraster.c: Comments, defines, includes, cleanups.\n\nEliminate intensive flow checking.\n\n* src/raster/ftraster.c (Draw_Sweep): Pass the flow increment.\n(Increment): Accept the flow increment.\n\n* docs/*: Typos.\n\nSpeed up Bézier arches with extrema.\n\nWhile it is recommended to have an explicit point at each curve\nextrema, they might be missing or outline could be rotated. This\nleads to excessive bisections in raster to find them.  This change\nhelps to decrease the number of bisections.  The scanline\nintersections remain monotonous, of course.\n\n* src/raster/ftraster.c (Conic_To, Cubic_To): Check that control\npoints cross the scanlines to bisect.\n\n* src/raster/ftmisc.h (FT_MulDiv): Remove unused copy.\n\n* src/raster/ftraster.c (Draw_Sweep): Swap stub conditions.\n\nStreamline the process.\n\nMSBuild.exe can now be fired from the root folder without options.\n\n* builds/windows/vc2010/freetype.sln: Relocated to...\n* MSBuild.sln: ... here with minor changes.\n* MSBuild.rsp: New file with command line options.\n* docs/INSTALL: Reference `MSBuild.sln`.\n\n* src/truetype/ttgxvar.c (ft_var_to_normalized): Fix undefined left-shift.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d63723\n\n* vms_make.com: Switch to `clang`.\n\nAlso add proper bzip2 support.\n\nImprove tracing.\n\n* src/psaux/psintrp.c (cf2_doBlend, cf2_interpT2CharString [cf2_cmdBLEND]):\nShow blended values.\n\nExtract `BlueValues` as `Fixed` rather than `Int`.\n\nThis is a follow-up to commit 26a7f047,\n\n  [cff] Make blend operator work with floats in private dicts.\n\nwhich addressed the \u0027party baseline\u0027 bug.  However, the reporting user\nindicated that the default location and some other points in design space\nrendered OK, but other points in design space still had problems.  The most\nobvious issue being that the x-heights of lower-case letters did not align;\nsee\n\n  https://github.com/adobe-fonts/source-serif/issues/121#issuecomment-1773794136\n\nAfter some analysis we determined that this was due to an interaction\nbetween `BlueValue` rounding and the zone-based algorithm.  In short, for a\npoint to be considered in a zone it must fall within the bounds of the zone.\n(There is a slop factor in some cases, but only a very small one.)  In the\nAdobe-contributed side of the code, point values are not integer-rounded,\ninstead they\u0027re kept as (some form of) fixed.  Rounding just the `BlueValues`\nmeans that points that need to be considered within a zone will fall outside\nof it at some points in design space.\n\nThe majority of this patch changes the storage and parsing of `BlueValues`\nto keep them as `FT_Fixed`.  No significant code changes were needed because\nthe values are converted to `Fixed` anyway when stored in `CF_BlueRec`.  No\nattempt was made to address problems in the older pshinter code beyond\nconverting the values from `FT_Fixed` to `FT_Short` when copying the private\ndictionary.  (However, as the point values are also rounded in that code,\nthe problem is much less likely to occur, although inconsistency between\nrounding and truncation could cause an analogous problem.)\n\n* include/freetype/internal/cfftypes.h (CFF_PrivateRec): Use `FT_Fixed` for\n`blue_values`, `other_blues`, `family_blues`, and `family_other_blues`.\n\n* src/cff/cffload.c (cff_blend_doBlend): Updated.\n\n* src/cff/cffobjs.c (CFF_fixedToInt): New macro.\n(cff_make_private_dict): Use it.\n\n* src/cff/cffparse.h (cff_kind_delta_fixed): New enum value.\n\n* src/cff/cffparse.c (do_fixed): Updated.\n(CFF_FIELD_DELTA, CFF_FIELD_DELTA_FIXED, CFF_DELTA_KIND): New set of macros,\nreplacing `CFF_FIELD_DELTA`.\n(cff_parser_run): Updated to handle fixed-float deltas.\n\n* src/cff/cfftoken.h: Updated to use `CFF_FIELD_DELTA_FIXED` for blue\nvalues.\n\n* src/psaux/psblues.c (cf2_blueToFixed): Removed, no longer needed.\n(cf2_blues_init): Updated.\n\n* src/pxaux/psft.c, src/pxaux/psft.h (cf2_getBlueValues, cf2_getOtherBlues,\ncf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated signatures.\n\n* src/psaux/psobjs.c (t1_make_subfont): Updated.\n\nAdd support for MSBuild on Windows.\n\nThis adds msbuild job for VS2019 (x64).\n\n* .gitlab-ci.yml: Added \"windows msbuild vs2019 amd64\".\n\nGuard access in \u0027COLR\u0027 v1 glyph binary search.\n\nReported as\n\n  https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1505216\n\n* src/sfnt/ttcolr.c (find_base_glyph_v1_record): Guard access of the search\npointer during binary search.  The pointer needs to be checked as we go as\nthe test that compares number of v1 glyphs with table size at the time of\nloading the table is not sufficient on its own.\n\nA scenario is possible in which the `BaseGlyphRecord` list extends into\nnon-`BaseGlyphRecord` parts of the \u0027COLR\u0027 v1 table (but passed the size\ncomparison check).  Then, at those locations, invalid glyph ID values are\nread and may provoke an invalid read due to reassigning min and max values\nduring the binary search.\n\n* .gitlab-ci.yml: Use detached CI pipelines.\n\nSee issue freedesktop/freedesktop#540.\n\nRestrict POST version 1.0.\n\nA font has surfaced with `post` version 1.0 and fewer than 258 glyphs.\nIts glyphs did not correspond to their names. We now reject such `post`\nstrictly following specifications.\n\n* src/sfnt/ttpost.c (tt_face_get_ps_name): Check the number of glyphs\nfor version 1.0.\n\nFix up Mac resource forks and dfonts.\n\n* src/base/ftobjs.c (IsMacResource): Assign `face_index`.\n* src/base/ftmac.c (FT_New_Face_From_Suitcase): Ditto after rework.\n\n* src/sfnt/ttcolr.c (find_base_glyph_v1_record): Fix build in C90 mode.\n\n* CMakeLists.txt: Accommodate MingGW.\n\nSee https://github.com/StephanTLavavej/mingw-distro/issues/97.\n\nRemove SSE2.\n\nAs a result of 7b308a29dd10, the regular 64-bit execution is now faster\nthan SSE2. The rendering speed of script fonts at 64 ppem or larger is\nimproved by about 3% without SSE2. See !314 for the testing results.\n\n* src/smooth/ftgrays.c (gray_render_conic)[FT_INT64]: Remove SSE2 code.\n\nAdd support for kerning from \u0027GPOS\u0027 tables.\n\nThis commit adds support for kerning from \u0027GPOS\u0027 tables, while maintaining\nsupport for basic \u0027kern\u0027 tables.  `FT_HAS_KERNING` will be true for a font\nwith either available and `FT_Get_Kerning` will still use the basic \u0027kern\u0027\ntable data if avilable, otherwise check the GPOS \u0027kern\u0027 feature.\n\nThis feature is disabled by default; it can be enabled with the\n`TT_CONFIG_OPTION_GPOS_KERNING` flag.\n\nOnly basic kerning (pair positioning with just an x advance) is supported\nfrom the GPOS layout features; support for that was added to make the\nexisting `FT_Get_Kerning` API more consistently functional.  FreeType does\nnot intend to extend itself to further GPOS functionality though; a\nhigher-level library like HarfBuzz can be used instead for that.\n\n* include/freetype/config/ftoption.h, include/devel/ftoption.h\n(TT_CONFIG_OPTION_GPOS_KERNING): New configuration option.\n\n* include/freetype/internal/fttrace.h: Add `ttgpos` trace handler.\n\n* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_gpos` and\n`get_gpos_kerning` fields.\n(FT_DEFINE_SFNT_INTERFACE): Updated.\n\n* include/freetype/internal/tttypes.h: Include `fttypes.h`.\n(TT_FaceRec) [TT_CONFIG_OPTION_GPOS_KERNING]: Add `gpos_table` and\n`gpos_kerning_available` fields.\n\n* src/sfnt/ttgpos.c, src/sfnt/ttgpos.h: New files.\n\n* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`.\n(sfnt_interface): Updated.\n\n* src/sfnt/sfnt.c: Include `ttgpos.c`.\n\n* src/sfnt/sfobjs.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`.\n(sfnt_load_face) [TT_CONFIG_OPTION_GPOS_KERNING]: Load and free GPOS kerning\ndata; check GPOS kerning availability.\n\n* src/truetype/ttdriver.c (tt_get_kerning): Use GPOS kerning if there\u0027s no\n\u0027kern\u0027 table.\n\n* src/sfnt/ttgpos.c (tt_gpos_get_glyph_class): Fix warning C4018.\n\nUpdate all copyright notices.\n\n* src/truetype/ttgxvar.c (ft_var_to_normalized): Integer overflow.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d66543\n\nAlways set up default variable instance.\n\nFor default variable instances `cff_face_init` did not set the blend.  This\nmostly worked as later use of the unset blend produced the default\nvariation.  However, if a user called `TT_Get_MM_Var` the blend would be\npartially set up, but not fully.  In particular the number of axes, the axis\ndefinitions, and the instance locations would be set up, but not the current\ninstance location (`coords` and `normalizedcoords`).  This could lead to the\ndefault instances of CFF2 fonts erroring on any use of `blend`.\n\nEnsure the default variable instance is fully set up by always calling\n`FT_Set_Named_Instance` on a variable face.\n\n* src/cff/cffobjs.c (cff_face_init): Call `FT_Set_Named_Instance` on\ndefault instances.\n* src/truetype/ttobjs.c (tt_face_init): Ditto.\n\nFixes #1268.\n\nmeson: Use the standard dependency mechanism to find bzip2\n\nThis follows standard conventions in Meson by using the pkg-config file.\nThis change allows Conan to switch to the Meson build system.\n\n* CMakeLists.txt: Bump required version to 3.5.\n\nFixes #1267.\n\nAvoid n^2 scanning for binary data.\n\nWhen creating a CID parser the location of the \u0027StartData\u0027 or \u0027/sfnts\u0027\ntokens needs to be known.  However, the token parser requires that the\nentire document be in memory and flattening the entire stream into memory is\nto be avoided.\n\nTo avoid forcing the entire stream into memory, previously this code would\nscan through the stream looking for \u0027StartData\u0027 or \u0027/sfnts\u0027 as strings.\nHowever, these strings could have been in a comment or string token, so the\nstream would be read into memory up to that point and the parser run to\ncheck that these strings were actually tokens.  This forced a parser restart\nfrom the beginning each time; as a result, data with many \u0027StartData\u0027\nnon-tokens would take n^2 time to check.\n\n* src/cid/cidparse.c (cid_parser_new): Change algorithm to make the initial\nscan look for the last possible \u0027StartData\u0027 or \u0027/sfnts\u0027 string in the\nstream.  The stream is read forward instead of backward as a typical normal\nCID font will have one \u0027StartData\u0027 toward the beginning of the data and it\nit much faster to read the data from beginning to end instead of end to\nbeginning.  For memory-based fonts the limit is set to the end of the stream\nsince the stream is already in memory.  Then the parser is run once to look\nfor \u0027StartData\u0027 or \u0027/sfnts\u0027 tokens.  If they are found the parser is re-set\nto reflect this new information.\n\nReported as\n\n  https://issues.chromium.org/issues/40201695\n\nEnsure enough bytes for PaintColrLayers\n\n* src/sfnt/ttcolr.c (read_paint): check that there are five additional\nbytes to be read when reading PaintColrLayers.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d66566\n\nStore persistent clipping box.\n\n* src/smooth/ftgrays.c (gray_TWorker, gray_raster_render): Add and set\nthe new structure field.\n(gray_convert_glyph): Use it.\n\n* src/smooth/ftgrays.c (gray_convert_glyph): Refactor for convenience.\n\nSwitch to vertical bisections.\n\nWith horizontal bisections, the smallest section is a whole single\nscanline. Almost horizontal lines or other complex scanlines can\neasily overflow the rendering pool. Switching to vertical bisections\nsplits the scanlines and should rule out the overflows.  Fixes #1269.\n\n* src/smooth/ftgrays.c (gray_convert_glyph): Bisect vertically.\n\nFix error handling.\n\nManipulate the cache after a face is requested or a size is looked up\nsuccessfully. Fixes #1270.\n\n* src/cache/ftcmanag.c (ftc_size_node_init, ftc_size_node_reset,\nftc_face_node_init): Check for errors before accepting a change.\n* src/cache/ftcmru.c (FTC_MruList_New): Do nothing if reset fails.\n\nImprove MRU list management.\n\n* src/cache/ftcmru.c (FTC_MruList_Remove): Cosmetic.\n(FTC_MruList_New): Accept only valid changes.\n* src/cache/ftcmanag.c (ftc_size_node_done):  Simplify.\n\n* src/cache/ftcglyph.c [!FTC_INLINE]: Fix compilation.\n\nTweak headers.\n\n* src/cache/ftccback.h: Include less and move `ftc_node_destroy`...\n* src/cache/ftccache.h: ... to here.\n* src/cache/ftcmanag.c: Include less.\n\n* src/cache/{ftcbasic.c,ftccmap.c}: Use FTC_INLINE.\n\nReduce type mismatches.\n\n* src/cache/ftcbasic.c (FTC_BasicAttrRec): Match type of `load_flags`\nto its main purpose in `FT_Load_Glyph`.\n(FTC_ImageCache_Lookup{,Scaler},FTC_SBitCache_Lookup{,Scaler}): Updated.\n\n* src/cache/ftcbasic.c: Cosmetic harmonization.\n\nMinor tweaks.\n\n* src/cache/ftcimage.c (ftc_inode_free): Remove unnecessary check.\n* src/cache/ftcmanag.c (FTC_Manager_Done): Do not zero before freeing.\n\nImprove SDF documentation.\n\n* include/freetype/ftdriver.h: s/truncated/clamped/.\n\nDocument the SDF spread further.\n\n* src/cache/ftcimage.c (ftc_inode_weight): Formatting.\n\n* src/cache/ftcmru.c (FTC_MruList_New): Do not reset nodes.\n\nResetting of the size nodes can crash, if a parent face purge happens\nsimultaneously and destroys the node. It is safer to create a new node.\nFixes #1270, reopened with a separate issue.\n\nRemove unused `node_reset`.\n\n* src/cache/ftcmru.h (FTC_MruListClassRec): Remove `node_reset` field.\n* src/cache/ftcbasic.c (ftc_basic_{image,sbit}_family_class): Ditto.\n* src/cache/ftcmanag.c (ftc_face_list_class): Ditto.\n(ftc_size_node_reset): Remove function.\n* src/cache/ftcglyph.h: Fix comment.\n\n* src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Remove nodes instantly.\n\n* docs/CHANGES: Updated.\n\n* src/sfnt/sfwoff2.c (compute_ULong_sum): Clean up.\n\nUse faster macros in checksums.\n\n* src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Use FT_NEXT_XXX.\n* src/sfnt/sfwoff2.c (compute_ULong_sum): Use macros.\n\nDisallow zero table font entries\n\nThe existing code already disallows zero table woff2 overall, but still\nallows for individual CollectionFontEntry to create font instances with\nzero tables. Such fonts are not useful so error early.\n\nThis also fixes an MSAN discovered issue where if a CollectionFontEntry\nnumTables is zero then the sfnt_header was not fully initialized.\n\n* src/sfnt/sfwoff2.c (woff2_open_font): error on zero tables, always\ninitalize sfnt_header\n\nFixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d68384\n\nLimit the number of tables and use FT_MSB.\n\nThe upper limit of 4095 is implied by the SFNT header format\nwhere the multiplication by 16 would overflow without it.\n\n* src/sfnt/sfwoff.c (woff_open_font): Updated.\n* src/sfnt/sfwoff2.c (woff2_open_font): Ditto.\n\n* src/sfnt/sfwoff2.c (woff2_open_font): Fix copy-paste typo.\n\n* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Remove FT_ABS.\n\nSee\n    https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d68679\n\nUse shared FT_SqrtFixed.\n\nFT_SqrtFixed (95b0fe2a6dff) is faster and does not overflow.\n\n* src/sdf/ftsdfcommin.h (square_root): Replace with a macro.\n* src/sdf/ftsdfcommin.c (square_root): Remove function.\n\n.mailmap: Fix entry for Ben Wagner.\n\nAvoid overflow in range checks\n\nIn 32 bit builds `FT_ULong` is 32 bits and can silently overflow when a\nlarge number is read into one and then it is summed or multiplied with\nanother number.  Checks for range overflow must be written so that they\nthemselves do not overflow.  Also ensure that the table_size is always the\nfirst part of the range check and consistently use `\u003c` or `\u003c\u003d`.\n\n* src/sfnt/ttcolr.c (tt_face_load_colr): Avoid overflow.\n(find_base_glyph_v1_record): Remove old work-around.\n\nBug: https://issues.chromium.org/issues/41495455\nBug: https://issues.chromium.org/issues/40945818\n\n* include/freetype/internal/psaux.h: Fix g++ warning.\n\nReported by Hin-Tak Leung.\n\nFix location and type order in initializer\n\n`T1_FIELD_ZERO` is used to zero initialize a `T1_FieldRec`.\n`T1_FIELD_ZERO` is currently initilizing `T1_FieldRec::location` with a\n`T1_FieldType` and `T1_FieldRec::type` with a `T1_FieldLocation`. This\nwas detected with `-Wenum-conversion`.\n\n* include/freetype/internal/psaux.h (T1_FIELD_ZERO): correct order of\ninitalizers\n\n* src/pshinter/pshrec.c (ps_hints_stem): Correct argument.\n\nTighten headers.\n\n* include/freetype/internal/t1types.h: Host PS_DesignMap and PS_Blend.\n* include/freetype/ftmm.h: Host and document TT_MAX_MM_XXX.\n* include/freetype/t1tables.h: Remove them from here.\n\n* docs/CHANGES: Mention the last commit.\n\n* src/type1/t1load.c (parse_blend_design_map): Add risky cast.\n\nSafer handle arrays of different types.\n\n* src/type1/t1load.c (parse_blend_design_map): Separately allocate...\n(T1_Done_Blend): ... and free `design_points` and `blend_points`.\n\n* include/freetype/ftmm.h: Include `freetype.h`.\n\nReported by Ben Wagner, see !326.\n\n* builds/windows/ftsystem.c: Use _WINRT_DLL to check for UWP.\n\nFixes compilation using Windows GDK, reported by Erin Melucci.\n\nUse FT_DUP to duplicate data.\n\n* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use concise FT_DUP.\n* src/truetype/ttgxvar.c (TT_Get_MM_Var): Ditto.\n* src/type1/t1load.c (parse_subrs): Ditto.\n\nUse FT_DUP to duplicate data.\n\n* src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Use concise FT_MEM_DUP.\n\nUse concise macros.\n\n* src/bdf/bdflib.c (bdf_create_property): Use FT_STRDUP.\n(bdf_parse_glyphs_, bdf_parse_start_): Use FT_DUP for brevity.\n\nOptimize the blend vector computations.\n\n* src/cff/cffload.c (cff_blend_build_vector): Use FT_MulDiv and skip\nmultiplying by 1.\n\n* src/truetype/ttgxvar.c (tt_var_get_item_delta): Minor refactoring.\n\n* src/truetype/ttgxvar.c (tt_var_get_item_delta): Align with specs.\n\nRearrange variation range checks.\n\nThis should achieve quicker results for common cases.\n\n* src/cff/cffload.c (cff_blend_build_vector): Rearrange conditionals.\n* src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto.\n\nValidate variation axes immediately.\n\nInstead of validating variation axes in every access, OpenType specs\nsuggest that peak \u003d 0 be used to tag invalid ranges.  This implements\njust that once during loading.\n\n* src/cff/cffload.c (cff_blend_build_vector): Move the range checks...\n(cff_vstore_load): ... here.\n* src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto...\n(tt_var_load_item_variation_store): ... ditto.\n\n* include/freetype/internal/ftmemory.h (FT_MEM_DUP): Fix g++ error.\n\n* .gitlab-ci.yml: Disable UWP compilation.\n\nReduce allocation scope.\n\n* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Reduce scope\nof `points_org` and \u0027points_out`.\n\nRevert \"[truetype] Reduce allocation scope.\"\n\nThis reverts commit 9ff4153cbfd60491f11bb56905ce6e20e94d23c7.\n\n* src/truetype/ttgxvar.c (ft_var_apply_tuple): Reduce checks.\n\nWhitespace.\n\nConsolidate memory allocations.\n\n* src/truetype/ttgxvar.c (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas):\nAllocate and split bigger memory blocks, avoid unnecessary zeroing,\ndo not copy shared tuples, revise error exit paths.\n\nReplace tabs with spaces\n\nAlso clarify comments around conversion and clamping.\n\n* src/truetype/ttgxvar.c (ft_var_to_normalized): doit\n\n* include/freetype/ftimage.h: Explain standard types.\n\nRemove unnecessary casting.\n\n* src/autofit/afhints.c (af_glyph_hints_reload): Remove (short) casting.\n* src/base/ftgloadr.c (FT_GlyphLoader_Add): Ditto.\n* src/psaux/psobjs.c ({t1,cff,ps}_builder_{add,close}_contour): Ditto.\n\n* src/base/ftgloadr.c (FT_GlyphLoader_Prepare): Minor refactoring.\n\n* src/pfr/pfrgload.c (pfr_glyph_curve_to): Avoid casting.\n\nUse unsigned point and contour indexing in `FT_Outline`.\n\nThis doubles the number or allowed points, see\n    https://github.com/harfbuzz/harfbuzz/issues/4752\n\nAlthough it is hardly practical to use more than 32767 points,\nother font engines seem to support it.\n\n* docs/CHANGES: Announce it.\n* include/freetype/ftimage.h (FT_Outline): Do it and update limits.\n* src/*: Update `FT_Outline` users.\n\nAvoid \"applying zero offset to null pointer\"\n\nIn C it is undefined behavior to do arithmetic on a null pointer, including\nadding zero. When using NotoSansKhmer[wdth,wght].ttf UBSAN produces a report\nlike\n\nttgxvar.c:1052:31: runtime error: applying zero offset to null pointer\n\nwhen adding zero to `varData-\u003edeltaSet` (which is null) to produce `bytes`.\nProtect against all the potential issues of this kind by returning early if\n`varData-\u003eregionIdxCount \u003d\u003d 0`.\n\n* src/truetype/ttgxvar.c (tt_var_get_item_delta): early return on no regions\n\nUse unsigned tags `FT_Outline`.\n\nThis change comes along with 2a7bb4596f56 ans is only meant to reduce\npointer casting in the code.\n\n* include/freetype/ftimage.h (FT_Outline): Do it.\n* src/*: Update `FT_Outline` users.\n\n* src/truetype/ttgload.c (load_truetype_glyph): Unsigned fix.\n\nMake \u0027multi\u0027 build work again.\n\n* src/psaux/psobjs.c: Include `psft.h`.\n\n* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttgpos.c`.\n\nFixes issue #1284.\n\nCMakeLists.txt: Respect FT_DISABLE_ZLIB value\n\nThe CMake build uses `find_package` to look for dependencies. Before calling `find_package` it looks to see if the dependency was disabled. If not the associated `_FOUND` variable will be set. This value is then checked to determine if the dependency is added.\n\nHowever `find_package(PNG)` calls `find_package(ZLIB)` within its find module. So in the case of `FT_DISABLE_ZLIB\u003dTRUE` and `FT_DISABLE_PNG\u003dFALSE` the `ZLIB_FOUND` value can be set and even though `FT_DISABLE_ZLIB` is turned on.\n\nUnset the value of `ZLIB_FOUND` after the call to `find_package(PNG)` so the value is only set when `FT_DISABLE_ZLIB` is turned off.\n\n* psobjs.c (ps_table_add): Check length before calling `FT_MEM_CPY`.\n\nFixes issue #1280.\n\n* src/truetype/ttobjs.c (tt_size_run_prep): Correct scaling of CVT values.\n\nThis reverts the scaling behaviour introduced in commit 37580053.\n\nFixes issue #1005.\n\n* include/freetype/internal/ftcalc.h (FT_MSB)[_M_ARM64EC]: Added.\n\nRemove barely used marcros.\n\n* include/freetype/internal/ftobjs.h (FT_FACE_SIZE, FT_SIZE_FACE):\nRemoved.\n* src/bdf/bdfdrivr.c (BDF_Glyph_Load): Updated.\n* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.\n* src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto\n* src/sfnt/ttbdf.c (tt_face_find_bdf_prop): Ditto.\n\n* src/autofit/afmodule.c (af_autofitter_load_glyph): Shorten deref.\n\n* src/sfnt/ttload.c (tt_face_load_name): Shorten dereference.\n\nRead stream more aggressively.\n\nWith ample checks against the table size, we should be able to use\nmacros without the limit checks and functional calls.\n\n* src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}):\nUse FT_NEXT_* instead of FT_GET_*.\n\nRead points and deltas more carefully.\n\nHopefully fixes newly introduced buffer overflows:\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d70807\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d70809\n\n* src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Explicitly\ncheck stream frame limits and modify run counting.\n\nUse more robust conditions.\n\n* src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Rewrite\nconditions to avoid undefined behavior.\n\n* src/base/ftstream.c (FT_Stream_ReadFields): Update condition.\n\n* src/winfonts/winfnt.c (fnt_face_get_dll_font): Unwrap arithmetic.\n\n* src/base/ftstream.c (FT_Stream_ReadFields): Switch to `FT_Offset`.\n\n* src/truetype/ttgxvar.c (ft_var_readpacked*): Minor.\n\ntttables.h (FT_Get_CMap_Format): Minor documentation improvement.\n\nVarious minor documentation or formatting fixes.\n\n* subprojects/*.wrap: Updated.\n\n* src/*/*: Fix C++ compilation; fix clang warnings.\n\n* meson.build: Install `freetype2.m4`.\n\nFixes #1290.\n\n* Version 2.13.3 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-13-3\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.13.3.\n* docs/CHANGES: Updated.\n* docs/release, docs/README, builds/macs/README: Updated.\n\n* README, src/base/ftver.rc, builds/windows/vc2010/index.html,\nbuilds/windows/visualc/index.html, builds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,\ndocs/freetype-config.1: s/2.13.2/2.13.3/, s/2132/2133/.\n\n* include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.\n\n* builds/unix/configure.raw (version_info): Set to 26:2:20.\n* CMakeLists.txt (VERSION_PATCH): Set to 3.\n\n* messon.build: Install `include/freetype/ftlogging.h`.\n\nFixes #1292.\n\nFix various typos.\n\n* include/freetype/ftimage.h (FT_Bitmap): Describe empty bitmap.\n\n* src/sfnt/ttcmap.c (tt_cmap*_get_info): Remove casting.\n\nImprove the build rule for `apinames`.\n\n* builds/unix/configure.raw: copy `CFLAGS` \u0026\n`LDFLAGS` values to `CFLAGS_BUILD` \u0026\n`LDFLAGS_BUILD`, in a self-hosting case.\n\n* builds/unix/unix-cc.in: set `CCexe_CFLAGS` \u0026\n`CCexe_LDFLAGS` by `CFLAGS_BUILD` \u0026\n`LDFLAGS_BUILD`.\n\nIn some confused environments, simple building\nlike `cc -o apinames apinames.c` is no longer\nable to build an executable running on the host.\n\nThe validity of `CC` is tested with consideration\nof `CFLAGS` and `LDFLAGS`, thus, duplicating\n`CFLAGS` \u0026 `LDFLAGS` to `CCexe_CFLAGS` \u0026\n`CCexe_LDFLAGS` (via XXX_BUILD) would be slightly\nsafer in a self-hosting build.\n\nFixes the issue #1296.\n\nAdd `clang` to host compiler candidates in cross building.\n\n* builds/unix/configure.raw: In cross building,\n`clang` is tried if there is no `gcc`, nor `cc`.\n\nSupport sbix graphicType \u0027flip\u0027.\n\n* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Currently undocumented by\nApple, this flips the bitmap data horizontally.  It is used on macOS in\nApple Color Emoji; 19.4d6e1; 2024-02-05 (file `Apple Color Emoji.ttc`).\n\nFixes issue #1282.\n\n* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Tweak loop.\n\n* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Respect metrics_only.\n\nAlso fixes recursive flip.\n\nMinor fixes for OpenVMS.\n\n* vms_name.com: Suppress a warning with the latest Clang compiler.\n\n* builds/vms/apinames_vms.bash: Use absolute path to avoid dependency on the\n  environment.\n\nFix help message of apinames.\n\n* src/tools/apinames.c: The first header file must be\n  given after the options.  All arguments after the\n  first header file are dealt as header files to be\n  parsed, regardless with their leading \"-\".\n\n  For example,\n  \"apinames include/freetype/freetype.h -dFREETYPE.DLL\"\n  warns \"unable to open -dFREETYPE.DLL\".\n\n  Thus, the \"header1\" must be given after the arguments\n  to be parsed as the options.\n\n* meson.build: Add support for compiling with error strings. * meson_options.txt: Document it.\n\n* meson.build: Fix `bzip2` option handling.\n\n* meson.build: Minor improvements.\n\n* meson.build: Define DLL_EXPORT for shared library only.\n\nFixes #1298.\n\n* vms_make.com: Format rules.\n\nUse tabs in rules only à la Makefile.\n\napinames: Fix out-of-scope reference of a static array.\n\n* apinames.c (names_dump): For WATCOM_LBC format, the\n  DLL name with no suffix is constructed on a static\n  array temp[], but the scope is closed before use it.\n  The declaration of temp[] is moved to the wider\n  scope for the dumping part to refer it.\n\napinames: Fix a buffer overrun for VMS platform.\n\nSome output formats may rewrite symbol names during the output,\nlike the concatenation of \"64__\" suffix on VMS.  To estimate\nsufficient size to store symbol name, pass the output format\ninfo to `names_add`.  For VMS, `names_add` allocates longer\nbuffer to append \"64__\".\n\n* apinames.c (SUFFIX_VMS_64ADDR): New macro of \"64__\".\n(main): Pass the format info to `read_header_file`.\n(read_header_file): Pass the format info to `names_add`.\n(names_add): Receive the format info, and reserve the symbol\nname buffer 4 byte longer in the case of VMS, to append the\nsuffix in `names_dump`.\n\n* src/smooth/ftgrays.c (gray_convert_glyph): Clear stack pointers.\n\nFixes a dangling pointer warning, see #1299.\n\n* autogen.sh: Fix for Solaris 10.\n\no Replace `test -e` by `test -d` (directory) and `-h`\n  (symlink), because pre-POSIX /bin/sh of Solaris 10\n  does not support `test -e`.\no Replace the combination of `head` and `sed ...` by\n  single sed command `sed -n 1...p`.  GNU libtoolize\n  with Solaris 10 /bin/sh complains \"Broken Pipe\" for\n  the closure of stdout by `head`.  Let `sed` receive\n  all stdout and discard.\n\n* src/truetype/ttgload.c (load_truetype_glyph): Rearrange.\n\nMove generic destroy to later in the face and size destruction.\n\n* src/base/ftobjs.c (destroy_size, destroy_face): This is such that the\n  generic destroy can be used to call `FT_Done_Library`.  For that to work,\n  it needs to call it *after* having removed the face from the respective\n  module.\n\nDownload the latest gnu-config files in `make dist`.\n\n* builds/toplevel.mk: In `make dist`, checkout gnu-config\ngit repository at savannah, copy the latest versions of\n`config.guess` and `config.sub` to builds/unix/.  Also\nthe latest version of `gitlog-to-changelog` is used to\ngenerate `ChangeLog`.\n\n* src/cff/cffobjs.c (cff_face_init): Better handling of Type0 fonts.\n\nThis issue relates to the PDF specification and its usage of CFF-based\nembedded Type0 fonts.  For Type0 fonts containing CID-keyed descendant\nCFF-based fonts, the glyph index is the CID present in the content stream.\nAs a result, there is no requirement for a \u0027cmap\u0027 table to be present in the\nfont since the glyph indices are derived directly from the CIDs.  FreeType\nthrows an error when it doesn’t find a \u0027cmap\u0027 table for such an Open Type\nfont containing CFF outlines.  This commit relaxes this requirement for a\n\u0027cmap\u0027 table for such fonts.\n\nFix leak of cmap data\n\nWhen `sfnt-\u003eload_face` succeeds it has already loaded any (optional)\ncmap data. As a result, a subsequent call to `sfnt-\u003eload_cmap` will\noverwrite the cmap data pointer with a new copy of the data but not free\nthe old, leading to a leak.\n\nThis is a fix for \"* src/cff/cffobjs.c (cff_face_init): Better handling\nof Type0 fonts.\". This still allows the cmap to be missing but avoids\nthe leak by only calling `sfnt-\u003eload_cmap` when there is no `head`\ntable (the font data is not being loaded as OpenType/CFF).\n\n* src/cff/cffobjs.c (cff_face_init): Fix leak\n\nFixes: #1306\n\nFix invalid pointer assignement to `arc`\n\nIn `FT_Stroker_ConicTo` and `FT_Stroker_CubicTo` there is a `bez_stack`.\n`arc` is initialized with `arc \u003d bez_stack` and is never set to point\ninto any different object. The main loop looks like `while ( arc \u003e\u003d\nbez_stack )` which is depending on a later `arc -\u003d 2` (or `arc -\u003d 3`) to\nmake `arc` point to before `bez_stack`. However, using pointer\nsubtraction to make `arc` point outside the array is undefined behavior,\nand attempting to use the value in the loop predicate is \"very\"\nundefined behavior. (C99 \"Additive operators\" 6.5.6.8.)\n\nThis particular undefined behavior was discovered as either hangs or\nMemorySantizer issues after \"[InstCombine] Infer nuw for gep inbounds\nfrom base of object\" [0]. With this change, clang can infer that `arc`\nmust always point into the `bez_stack` object and therefore cannot be at\na \"negative index\" so the predicate is always true.\n\n[0] https://github.com/llvm/llvm-project/commit/e21ab4d16b555c28ded307571d138f594f33e325\n\n* src/base/ftstroke.c (FT_Stroker_ConicTo, FT_Stroker_CubicTo): test\nloop exit condition (there are no more arcs to process) before\ndecrementing `arc`\n\nFixes: #1307\n\nIngnore FT_LOAD_NO_BITMAP in bitmap-only fonts.\n\nFor consistency with other bitmap-only fonts, we should ignore this\nflag of the font is not scalable.\n\n* src/truetype/ttgload.c (TT_Load_Glyph): Check if face is scalable\nwhen checking for FT_LOAD_NO_BITMAP.\n\n* docs/CHANGES: Start new chapter wtith this change.\n\nConsolidate bitmap strike handling.\n\n* src/truetype/ttgload.c (TT_Load_Glyph): Relocate omitted whitespace\nstrike handling from here...\n(load_sbit_image): ... to here.\n\n* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Refactor `flip`.\n\n* src/truetype/ttobjs.c: Abbreviate tracing.\n\nRemove superfluous outline zeroing.\n\nThis is already done by `ft_glyphslot_clear`.\n\n* src/cff/cffgload.c (cff_slot_load): Do not zero outline fields.\n* src/cid/cidgload.c (cid_slot_load_glyph: Ditto.\n* src/pfr/pfrobjs.c (pfr_slot_load): Ditto.\n* src/truetype/ttgload.c (load_sbit_image): Ditto.\n* src/type1/t1gload.c (T1_Load_Glyph): Ditto.\n\n* builds/compiler/gcc-dev.mk: Silence some warnings.\n\nDelay FT_GLYPH_FORMAT_OUTLINE assignmets.\n\nThis assignmets used to be done prematurely before errors were checked\nand outlines were actually loaded. Delaying the assignment provides\ncertain protection against careless usage of malformed input that\nshould now remain FT_GLYPH_FORMAT_NONE.\n\n* src/cff/cffgload.c (cff_slot_load): Ditto.\n* src/cid/cidgload.c (cid_slot_load_glyph): Ditto.\n* src/pfr/pfrobjs.c (pfr_slot_load): Ditto.\n* src/truetype/ttgload.c (TT_Load_Glyph): Ditto.\n* src/type1/t1gload.c (T1_Load_Glyph): Ditto.\n\n* src/truetype/ttgload.c (TT_Load_Glyph): Consolidate flag setting.\n\n* src/cff/cffdrivr.c (cff_get_advances): Do only fast advances.\n\nOtherwise, let TT_Get_Advances fall back on cff_load_glyph to do\nslow advances. This avoids unchecked access to cff_load_glyph and\nthis is how tt_get_advances is implemented.\n\nRemove size/slot checks.\n\nAfter the previous commit, cff_glyph_load is no longer called\nwithout first checking for valid size and glyph objects in\nFT_Glyph_Load and these checks can be removed downstream.\n\n* src/cff/cffdrivr.c (cff_glyph_load): Remove `size` and `glyph` checks.\n* src/cff/cffgload.c (cff_slot_load): Ditto.\n\n* CMakeLists.txt: Use modern IMPORTED targets.\n\nThis resolves build problems with newer libPNG versions by switching\nto using IMPORTED CMake targets for common libraries where provided.\nTo do this the required CMake version is raised to version 3.12.\nDoing this seems justified as using IMPORTED targets is a cleaner\nand more powerful solution that can leverage advanced and CMake-specific\nfeatures that may be utilized by the referred dependencies\u0027 CMake modules.\n\nResolves #1311.\n\n* MSBuild.rsp: Force console color for mintty.\n\n* src/bdf/bdflib.c (bdf_parse_start_): Fix tracing labels.\n\n* builds/windows/ftsystem.c: Fix ancient condition.\n\n* src/bdf/bdf.h (bdf_font_t): Correct `internal` type. * src/bdf/bdflib.c (*): Update users.\n\n* src/bdf/bdflib.c (bdf_parse_*_): Minor improvements.\n\n* src/bdf/bdflib.c (a2i): Formatting.\n\nSpeed up bitmap parsing.\n\nA dedicated parser of bitmap data with minimal error checking and\nno string comparisons helps to improve performance.\n\n* src/bdf/bdflib.c (bdf_parse_bitmap_): New dedicated bitmap parser.\n(bdf_parse_glyphs_): Pass to `bdf_parse_bitmap_` on BITMAP.\n\n* src/bdf/bdflib.c (bdf_parse_glyphs_): Avoid possible leak.\n\n* src/bdf/bdflib.c (bdf_parse_glyphs_): Store glyph as soon as possible.\n\n* src/bdf/bdflib.c (bdf_parse_glyphs_): Free unused glyph_name.\n\nSee https://issues.oss-fuzz.com/issues/389330334.\n\n* src/bdf/bdflib.c (bdf_readstream_): Tweak variables and loop design.\n\nAdjust parsing flow and CHARS handling.\n\n* src/bdf/bdflib.c (bdf_readstream_): Remove CHARS exception.\n(bdf_parse_glyphs_): Move glyphs allocation...\n(bdf_parse_properties_): and missing ascent and descent handling...\n(bdf_parse_start_): ...to here under CHARS.\n\nUse flags instead of options.\n\n* src/bdf/bdf.h (bdf_options_t): Removed.\n(BDF_KEEP_COMMENTS, BDF_KEEP_UNENCODED, BDF_CORRECT_METRICS): Updated\nto avoid collisions with the other parsing flags.\n* src/bdf/bdfdrivr.c (BDF_Face_Init): Use default flags explicitly.\n* src/bdf/bdflib.c (bdf_load_font): Use flags as an argument to\ninitialize the parser.\n(bdf_set_fedault_spacing_): Default to BDF_PROPORTIONAL explicitly.\n(bdf_parse_*_): Updated.\n\n* src/bdf/bdflib.c: Clean up.\n\n* src/bdf/bdflib.c (bdf_add_property_): Add extra protection.\n\nSee https://issues.oss-fuzz.com/issues/389972472\n    https://issues.oss-fuzz.com/issues/389968131\n\n* src/bdf/bdflib.c (bdf_parse_start_): Reserve space for artificial properties.\n\n* src/bdf/bdflib.c (bdf_readstream_): Skip all control characters.\n\nThis agrees with specifications and makes the code a lot simpler.\n\n* src/bdf/bdflib.c (bdf_parse_start_): Do not overwrite flags.\n\n* src/bdf/bdflib.c (bdf_parse_start_): Prevent another STARTPROPERTIES.\n\nOnly one STARTPROPERTIES was permitted in the old flow preventing\nleaks and overflows.\n\nSee https://issues.oss-fuzz.com/issues/389968131\n    https://issues.oss-fuzz.com/issues/390464875\n\nTokenize input instead of listing.\n\nInstead of cumbersome field list mamangement, we will tokenize input\nusing custom `bdf_strtok_`.\n\n* src/bdf/bdflib.c (bdf_list_t_, bdf_list_init_, bdf_list_ensure_,\nbdf_list_shift_, bdf_list_join_, bdf_list_split_,\nbdf_set_default_spacing_): Removed.\n(bdf_strtok_): New function which NUL-terminates the first token at\nthe delimiter position and returns the next token that follows\nconsequtive delimiters.\n(bdf_parse_*_, bdf_load_font): Updated.\n\n* docs/CHANGES: Claim overall 75% performance improvement.\n\n* src/bdf/bdflib.c (bdf_parse_glyphs_): Fix tracing.\n\n* src/truetype/ttgxvar.c (tt_face_vary_cvt): Fix all shared values.\n\nApplying cvar deltas to all shared points was incorrectly omitted.\nFixes #1314.\n\n* src/bdf/bdflib.c (bdf_parse_start_): Relax the header order.\n\nWe now check that the header is complete in no specific order.\n\nPostpone font ascent and descent handling.\n\n* src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling\nof the font ascent and descent until...\n* src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties.\n\nPostpone font spacing handling.\n\n* src/bdf/bdf.h (bdf_font_t): Remove `monowidth`.\n* src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling\nof the font spacing until...\n* src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties.\n\nPostpone font default char handling.\n\n* src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling\nof the default char until...\n* src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties.\n\n* src/bdf/bdflib.c (bdf_ato{i.ul.s.us}_]): Remove uncecessary checks.\n\n* src/bdf/bdflib.c (bdf_atous_): Remove unnecessary checks.\n\n* src/bdf/bdflib.c (BDF_SWIDTH_ADJ_): Remove clashing flag and update.\n\nTreat all comments uniformly.\n\n* src/bdf/bdflib.c (bdf_parse_start_): Reject fonts with initial\nCOMMENTs.\n(bdf_parse_properties_): Skip COMMENTs so that...\n(bdf_add_property_): Do not make exception for COMMENT.\n(bdf_parse_glyphs_, bdf_add_comments): Updated.\n\n* src/bdf/bdflib.c (bdf_parse_start_): Move setup of properties.\n\nBug: 42140797\nChange-Id: I40e36d5f4a1b33c0ac5ffa79b2d9533e60fa2884\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/1202006\nReviewed-by: David Turner \u003cdigit@google.com\u003e\nReviewed-by: Adam Perry \u003cadamperry@google.com\u003e\n"
    },
    {
      "commit": "311feb7c562dbc7e7fbbfef3d87c02df7e3337e0",
      "tree": "4001dc2526ffbb2ca3da7ed8319ffe2d2a7c570d",
      "parents": [
        "3335e3ab45fcb53d6dbdbcc867add5713482182e"
      ],
      "author": {
        "name": "Gulfem Savrun Yeniceri",
        "email": "gulfem@google.com",
        "time": "Fri Jan 26 23:35:53 2024 +0000"
      },
      "committer": {
        "name": "Gulfem Savrun Yeniceri",
        "email": "gulfem@google.com",
        "time": "Sat Jan 27 00:27:14 2024 +0000"
      },
      "message": "[freetype2] Add -fno-define-target-os-macros\n\nBug: 321109569\nChange-Id: I1f085def18f2ea1a45244dd5a403548b441b4740\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/981496\nReviewed-by: Daniel Thornburgh \u003cdthorn@google.com\u003e\n"
    },
    {
      "commit": "3335e3ab45fcb53d6dbdbcc867add5713482182e",
      "tree": "fe56399dc8571f0b36591dce5823632cde2f0b65",
      "parents": [
        "357a8b04f36ed6fb344df2c08537532ec6e12697"
      ],
      "author": {
        "name": "Mitchell Kember",
        "email": "mkember@google.com",
        "time": "Thu Jan 25 17:07:51 2024 -0800"
      },
      "committer": {
        "name": "Mitchell Kember",
        "email": "mkember@google.com",
        "time": "Sat Jan 27 00:26:57 2024 +0000"
      },
      "message": "[fxbug.dev] Migrate bug numbers\n\nThis changes fxbug.dev/ URLs from Monorail bug numbers to the new\nFuchsia Issue Tracker numbers.\n\nThe migration to the new issue tracker was announced here:\nhttps://groups.google.com/a/fuchsia.dev/g/announce/c/GOYfJozEqmk/m/qsGsaJ7UAAAJ\n\nBug: 298074672\nChange-Id: Ib4ddfeb1546c775df9e8f30a08244cd914b3f165\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/980263\nReviewed-by: Ian McKellar \u003cianloic@google.com\u003e\n"
    },
    {
      "commit": "357a8b04f36ed6fb344df2c08537532ec6e12697",
      "tree": "965954893cc4d20f3cc8422645f709c4133582c9",
      "parents": [
        "04284d4464570c17ffb968e3f5938adc17da6399"
      ],
      "author": {
        "name": "Leonard Chan",
        "email": "leonardchan@google.com",
        "time": "Thu Jun 01 18:15:58 2023 +0000"
      },
      "committer": {
        "name": "Leonard Chan",
        "email": "leonardchan@google.com",
        "time": "Fri Jun 02 03:58:55 2023 +0000"
      },
      "message": "[freetype2] Temporarily disable function-type-mismatch checks\n\nThere\u0027s a lot of this type of UB in freetype2. Rather than fixing them\nall to unblock the clang roll, just disable this check for now and come\nback to fix them. Disabling this check is a no-op since prior to a\nrecent clang change, -fsanitize\u003dfunction only worked on C++ code, but\nfreetype2 is all C, so these were already existing bugs.\n\nBug: 128274\nChange-Id: Iec24ee73c2b2f42c858dd11000064a54794361b8\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/864797\nReviewed-by: Petr Hosek \u003cphosek@google.com\u003e\n"
    },
    {
      "commit": "04284d4464570c17ffb968e3f5938adc17da6399",
      "tree": "5cbbc1055f88ed6559cc7b23d0db7a6d7a613b85",
      "parents": [
        "17a70086333cfbef6827a8bc8c8b63c501e23160"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Feb 24 10:44:41 2023 -0500"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Fri Feb 24 19:30:27 2023 +0000"
      },
      "message": "[freetype2] Avoid undefined behavior\n\nPer ISO/IEC 9899:\n\n  If an argument to a function has an invalid value (such as a value\n  outside the domain of the function, or a pointer outside the address\n  space of the program, or a null pointer, orapointer to non-modifiable\n  storage when the corresponding parameter is not const-qualified) or a\n  type (after promotion) not expected by a function with variable number\n  of arguments, the behavior is undefined. If a function argument is\n  described as being an array, the pointer actually passed to the\n  function shall have a value such that all address computations and\n  accesses to objects (that would be valid if the pointer did point to\n  the first element of such an array) are in fact valid.\n\nPer IEEE Std 1003.1:\n\n  size_t fread(void *restrict ptr, size_t size, size_t nitems,\n         FILE *restrict stream);\n\n  The fread() function shall read into the array pointed to by ptr up to\n  nitems elements whose size is specified by size in bytes, from the\n  stream pointed to by stream.\n\nSince the first argument to `fread` is described as being an array, its\nbehavior is undefined when that argument is a null pointer.\n\nPer the documentation on `ft_ansi_stream_io`:\n\n  If `count\u0027 is zero (this is, the function is used for seeking), a\n  non-zero return value indicates an error.\n\nThus the intent is clear, and the call to fread can be skipped, avoiding\nUB.\n\nBug: 42500\nChange-Id: Id8139730500015b1f3de83aaddcc984ddad4cd60\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/809648\nReviewed-by: Adam Barth \u003cabarth@google.com\u003e\n"
    },
    {
      "commit": "17a70086333cfbef6827a8bc8c8b63c501e23160",
      "tree": "045f2e381337412cfd411ceaff8e18d9ca9a90f6",
      "parents": [
        "c0450f62dbd220c680a17f10d407f9b30778a74b"
      ],
      "author": {
        "name": "Marina Ciocea",
        "email": "marinaciocea@google.com",
        "time": "Wed Dec 14 18:04:36 2022 -0500"
      },
      "committer": {
        "name": "Marina Ciocea",
        "email": "marinaciocea@google.com",
        "time": "Thu Dec 15 00:47:57 2022 +0000"
      },
      "message": "[freetype2] Add OWNERS file\n\nAdd as owners the owners of the code that calls into this dependency.\n\nThe OWNERS file is generated by `fx update-3p-owners`.\n\nBug: 102810\nChange-Id: I89c73854c25c9bb8d67dd146911d701583363d96\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/776965\nReviewed-by: Filip Filmar \u003cfmil@google.com\u003e\n"
    },
    {
      "commit": "c0450f62dbd220c680a17f10d407f9b30778a74b",
      "tree": "e29973b398736f99f3470e44219208f5371fd931",
      "parents": [
        "0b9a0aa381ec9e4b6653ae5803f06945cae79f22"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Sun May 09 12:18:15 2021 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Sun May 09 19:23:33 2021 +0000"
      },
      "message": "[config] Suppress implicit-fallthrough\n\nChange-Id: I91223c9e2297955ebdf7108bf8a99fb535755621\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/527267\nReviewed-by: Shai Barack \u003cshayba@google.com\u003e\n"
    },
    {
      "commit": "0b9a0aa381ec9e4b6653ae5803f06945cae79f22",
      "tree": "a699e7edfec8d43b231ade20d23f78b1879e70c1",
      "parents": [
        "f91671ab0d50a073631cd69823d8bb32f16216ce"
      ],
      "author": {
        "name": "Jayson Adams",
        "email": "shrike@google.com",
        "time": "Wed Dec 09 14:50:24 2020 -0800"
      },
      "committer": {
        "name": "Jayson Adams",
        "email": "shrike@google.com",
        "time": "Mon Dec 14 23:05:21 2020 +0000"
      },
      "message": "[freetype2] Reenable usan\n\nThe latest version of freetype2 fixes the usan errors that came up\nwhen we enabled the sanitizer. This cl reenables usan for the project.\n\nBug: fxbug.dev/46923\nTest: the following instructions work around problems connecting to\nthe package server from arm64.\n\n1. fx set with core.arm64 and //src/fonts/font_info:font_info_tests and\n//garnet/bin/run_test_component:run-test-component-pkg added to base.\n2. fx emu --experiment-arm64 -m 8192 -N -I qemu -u /usr/bin/shortleash-upscript\n3. run fuchsia-pkg://fuchsia.com/font_info_tests#meta/font_info_test.cmx\n\nChange-Id: I1e0ab01482d3471657e6fc4d3b93cf7083f6222d\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/460031\nReviewed-by: Shai Barack \u003cshayba@google.com\u003e\n"
    },
    {
      "commit": "f91671ab0d50a073631cd69823d8bb32f16216ce",
      "tree": "fa51305c777527ca666c315a9cf87ad93f87e055",
      "parents": [
        "8d194291224f4a1d2ff33d711353c6b5e1083479"
      ],
      "author": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Tue Oct 20 14:22:15 2020 -0700"
      },
      "committer": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Wed Oct 21 01:06:59 2020 +0000"
      },
      "message": "[freetype2] Update to version 2.10.4\n\nCustom changes in:\n- BUILD.gn\n- freetype-fuchsia-config/ftmodule.h\n\nTEST: integration patch\n      Id855a7fa52478dd47240eecc99522a8e772f042a\n\nBug: 62377\n\nSquashed commit of the following:\n\ncommit 6a2b3e4007e794bfc6c91030d0ed987f925164a8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Oct 20 07:10:27 2020 +0200\n\n    * Version 2.10.4 released.\n    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Tag sources with `VER-2-10-4\u0027.\n\n    * docs/VERSION.TXT: Add entry for version 2.10.4.\n    * docs/CHANGES: Updated.\n\n    * README, src/base/ftver.rc, builds/windows/vc2010/index.html,\n    builds/windows/visualc/index.html,\n    builds/windows/visualce/index.html,\n    builds/wince/vc2005-ce/index.html,\n    builds/wince/vc2008-ce/index.html, docs/freetype-config.1:\n    s/2.10.3/2.10.4/, s/2103/2104/.\n\n    * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.\n\n    * builds/unix/configure.raw (version_info): Set to 23:4:17.\n    * CMakeLists.txt (VERSION_PATCH): Set to 4.\n\ncommit a3bab162b2ae616074c8877a04556932998aeacd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Oct 19 23:45:28 2020 +0200\n\n    [sfnt] Fix heap buffer overflow (#59308).\n\n    This is CVE-2020-15999.\n\n    * src/sfnt/pngshim.c (Load_SBit_Png): Test bitmap size earlier.\n\ncommit 840ce58f94bafdd24a138a9f7920becb5a30695f\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Oct 18 07:36:57 2020 -0400\n\n    * src/sfnt/tt{colr,cpal}.c: Fix signedness warnings from VC++.\n\ncommit a93f50b61150605745771e95e8f522c2cb714ff9\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Oct 17 21:58:50 2020 -0400\n\n    * src/sfnt/sfwoff2.c (Read255UShort): Tweak types to please VC++.\n\ncommit 82d331556ce73de07c16afd51a865ba1ff806a65\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Oct 11 21:56:50 2020 -0400\n\n    Unnest markdown.\n\ncommit 337670af0a1e94df3718c6467ca544ecb0282731\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Oct 10 18:14:57 2020 +0200\n\n    * Version 2.10.3 released.\n    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Tag sources with `VER-2-10-3\u0027.\n\n    * docs/VERSION.TXT: Add entry for version 2.10.3.\n\n    * README, src/base/ftver.rc, builds/windows/vc2010/index.html,\n    builds/windows/visualc/index.html,\n    builds/windows/visualce/index.html,\n    builds/wince/vc2005-ce/index.html,\n    builds/wince/vc2008-ce/index.html, docs/freetype-config.1:\n    s/2.10.2/2.10.3/, s/2102/2103/.\n\n    * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.\n\n    * builds/unix/configure.raw (version_info): Set to 23:3:17.\n    * CMakeLists.txt (VERSION_PATCH): Set to 3.\n\ncommit c9f588be56a6c89c210284711417130ea53bd72e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Oct 10 12:48:18 2020 +0200\n\n    Document changes to last release.\n\ncommit 40479fad93fd939450f1c0efb54a99074cb1b5d3\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Sep 25 17:44:00 2020 +0200\n\n    [autofit] Synchronize with ttfautohint.\n\n    This corresponds to the following commits in the ttfautohint git\n    repository:\n\n      bb6842bd3bd437b7b4a7921b0376c860f5e73d18  Typo, formatting.\n      d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa  Add Medefaidrin script.\n\n    * src/autofit/afblue.dat: Add blue zone data for Medefaidrin.\n    * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.\n\n    * src/autofit/afscript.h: Add Medefaidrin standard characters.\n\n    * src/autofit/afranges.c, src/autofit/afstyles.h: Add Medefaidrin\n    data.\n\ncommit e8ee98e669c25d0b8e67cdaace9a6b7e49c7a0c0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Sep 25 07:22:08 2020 +0200\n\n    Move `scripts/make_distribution_archives.py` to `src/tools`.\n\n    * scr/tools/scripts/make_distribution_archives.py: (_TOP_DIR,\n    _SCRIPT_DIR): Updated to new location.\n    (main): s/shutils.copyfile/shutils.copy/ to preserve file\n    permissions.\n    (main): Prefix source file paths with `git_dir` while copying files\n    to allow calls of the script from other places than the top-level\n    directory.\n\ncommit 4f13a43ab32ba77793d8528d4b4c057c6f76b835\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 24 09:35:24 2020 +0200\n\n    * src/cff/cffgload.c (cff_slot_load): Scale `vertBearingY`.\n\n    Towards the end of the the function there is a call to\n    `FT_Outline_Get_CBox` that retrieves the glyph bbox in scaled units.\n    That sets `horiBearing{X,Y}` and `vertBearingX` but `vertBearingY`\n    is left alone, and is not scaled.\n\n    Patch from Eric Muller \u003cemuller@amazon.com\u003e.\n\ncommit bed960d9484df1a0c9547ba6855f457d6629ffb5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 24 09:31:56 2020 +0200\n\n    * src/base/ftobjs.c (FT_Load_Glyph): Trace glyph metrics.\n\ncommit 3ce0df52e2bba8a8f788a05c705b90fd10275665\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 22 20:05:37 2020 +0200\n\n    [meson] Move auxiliary scripts to `builds/meson`.\n\n    Suggested by Alexei.\n\n    * scripts/*.py: Move meson scripts to...\n    * builds/meson/*.py: ... this new location.\n\n    * meson.build: Updated.\n\ncommit d686f2ff9c40235085558fed91a57d05c7656335\nAuthor: David Turner \u003cdavid.turner.dev@gmail.com\u003e\nDate:   Tue Aug 25 20:52:32 2020 +0200\n\n    Add python script for building tarballs.\n\n    * scripts/make_distribution_archives.py: New file.\n\n    This standalone Python script should be equivalent to running `make\n    dist` with the Make-based build system, with the following minor\n    differences:\n\n    - Since `make distclean` doesn\u0027t always clean up `objs/` properly,\n      `make dist` archives may contain some stale binaries like\n      `objs/.libs/libfreetype.so.6` or others.\n\n    - `config.guess` and `config.sub` are not updated unless option\n      `--gnu-config-dir\u003dDIR` is used to specify the location of these\n      files.\n\n    - Some bits of the auto-generated reference documentation may\n      appear in slightly different order, probably due to issues related\n      to mkdocs and docwriter.\n\n    As an example, the call\n\n      scripts/make_distribution_archives.py /tmp/freetype2-dist\n\n    creates the following files under `/tmp/freetype2-dist`:\n\n      freetype-\u003cversion\u003e.tar.gz\n      freetype-\u003cversion\u003e.tar.xz\n      ft\u003cwinversion\u003e.zip\n\ncommit 46417607e67f89a5c9948d4deed6ad8ead51318d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Sep 21 09:03:13 2020 +0200\n\n    * scripts/extract_freetype_version.py: Fix regex typos.\n\ncommit 66978a58874169c6a4f2f984a7461e2901901784\nAuthor: David Turner \u003cdavid.turner.dev@gmail.com\u003e\nDate:   Sun May 17 18:45:41 2020 +0200\n\n    Add Meson build project file.\n\n    Example usage:\n\n      # Configure Meson build in directory `build-meson` to generate\n      # release binaries comparable to to the ones from the\n      # autotools/make build system.\n      meson setup build-meson \\\n            --prefix\u003d/usr/local \\\n            --buildtype\u003ddebugoptimized \\\n            --strip \\\n            -Db_ndebug\u003dtrue\n\n      # After configuring the Meson build with the above command,\n      # compile and install to `/usr/local/`; this includes a pkg-config\n      # file.\n      ninja -C build-meson install\n\n      # Alternatively, compile and install to `/tmp/aa/usr/local/...`\n      # for packaging.\n      DESTDIR\u003d/tmp/aa ninja -C build-meson install\n\n      # Generate documentation under `build-meson/docs`.\n      ninja -C build-meson docs\n\n    Library size comparison for stripped `libfreetype.so` generated by\n    all three build systems:\n\n      - Default build (autotools + libtool): 712 KiB\n      - CMake build (RelWithDebInfo):        712 KiB\n      - Meson build:                         712 KiB\n\n    * meson.build: New top-level Meson build file for the library.\n\n    * meson_options.txt: New file.  It holds user-selectable options for\n    the build, which can be printed with `meson configure`, and selected\n    at `meson setup` or `meson --reconfigure` time with\n    `-D\u003coption\u003e\u003d\u003cvalue\u003e`.\n\n    * scripts/parse_modules_cfg.py: A script invoked by `meson.build` to\n    parse `modules.cfg` and extract important information out of it\n    (i.e., the list of modules).\n\n    * scripts/process_ftoption_h.py: New script invoked by `meson.build`\n    to process the original `ftoption.h` file.  It enables or disables\n    configuration macro variables based on the available dependencies.\n    This is similar to what other build systems are using (i.e., Meson\u0027s\n    `configure_file()` command is not used here).\n\n    * scripts/extract_freetype_version.py: New script invoked by\n    `meson.build` to extract the FreeType version number from\n    `\u003cfreetype/freetype.h\u003e`.\n\n    * scripts/extract_libtool_version.py: New script invoked by\n    `meson.build` to extract the libtool `revision_info` data from\n    `builds/unix/configure.raw`, and to generate the corresponding\n    shared library suffix.\n\n    * scripts/generate_reference_docs.py: New script invoked by\n    `meson.build` to generate the FreeType 2 reference documentation\n    (using the `docwriter` and `mkdocs` packages, which must be already\n    installed).\n\ncommit ab6a21b73314ef302299b47b1707f5b2d03826cf\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Sep 18 22:32:20 2020 -0400\n\n    Documentation updates.\n\ncommit 20186d1be6415d1bd7cb79ac56f1b806c26b677c\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Sep 11 23:47:54 2020 -0400\n\n    [raster] Improve the second pass (#58373).\n\n    Besides dropout control the second horizontal sweep is supposed to\n    clean up straight horizontal edges that are mishandled by the first\n    vertical sweep when a line passes through pixel centers.  This line\n    would present as perfectly aligned span edges in the second sweep.\n\n    * src/raster/ftraster.c (Horizontal_Sweep_Span): Replace the old\n    implementation with a better one focusing on aligned span edges only.\n\ncommit c3721642f1d373f363d02081a94f24984960484e\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Sep 11 23:13:02 2020 -0400\n\n    [raster] Tune SMART macro (#58352).\n\n    Windows seems to perform smart dropout control at 26.6 precision.\n    To mimick Windows independent of increased precision, we need to tweak\n    the macro so that some close calls break down rather than up.\n\n    * src/raster/ftraster.c (SMART): Tweak the macro.\n\ncommit cb4733136992265ba8b52c5f009864a0b7769949\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Sep 8 22:41:53 2020 -0400\n\n    [raster] Introduce SMART macro.\n\n    * src/raster/ftraster.c (SMART): New macro for smart dropout rounding.\n    (Verstical_Sweep_Drop, Horizontal_Sweep_Drop): Use it.\n\ncommit 3594eaee595f174fc6d9f39f55e9918aa4eaa9e7\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Sep 8 22:20:11 2020 -0400\n\n    [raster] Improve tracing.\n\ncommit fa82803f46aa27e5f173d35a3e2bffcd67dc2e5a\nAuthor: Nikolaus Waxweiler \u003cmadigens@gmail.com\u003e\nDate:   Thu Sep 3 11:11:41 2020 +0100\n\n    * ChangeLog: Add entry for last commit.\n\ncommit 69353a19a197b0ab89b8382966c07f072fed8453\nAuthor: Boris Dalstein \u003cdalboris@gmail.com\u003e\nDate:   Tue Aug 25 13:53:54 2020 +0200\n\n    Export version info (#58935)\n\ncommit 600d59e343a0d6529a2cd714bf90b70a107b39d7\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Sep 2 15:48:03 2020 -0400\n\n    [truetype] Reduce Infinality footprint (cont\u0027d).\n\n    * src/truetype/ttinterp.c (Ins_DELTAP): Shrink variable scope.\n    (Ins_SHPIX, Ins_MIRP): Revise if-logic.\n\ncommit 51a5e3389cef401cecd0860e717a5075e715786d\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Sep 2 00:02:28 2020 -0400\n\n    [truetype] Reduce Infinality footprint.\n\n    * src/truetype/ttinterp.c (Ins_SHPIX, Ins_MSIRP, Ins_MIAP, Ins_MDRP,\n    Ins_MIRP): Shrink variable scopes and consolidate ifdefs.\n\ncommit e6c7e4b42bc39a7cfa438b2fa628aa3198374124\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Sep 1 21:49:52 2020 -0400\n\n    [truetype] Refactor compensation color.\n\n    * src/truetype/ttinterp.h (TT_Round_Func): Change the last argument.\n    * src/truetype/ttinterp.c (Ins_ROUND, Ins_NROUND, Ins_MDAP, Ins_MIAP,\n    Ins_MDRP, Ins_MIRP): Move compensation retrieval from here...\n    (Round_*): ... to here.\n    * src/truetype/ttobjs.c (tt_size_init_bytecode): Reserve zero\n    compensation at color index 3.\n\ncommit 16ee2a22abb642a310dcbf08accf70b1c38e3181\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Aug 28 23:08:42 2020 -0400\n\n    [smooth] Don\u0027t set target in direct mode.\n\n    * src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Remove assignment.\n    (ft_smooth_raster_lcd) [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Ditto.\n\ncommit d8228a00704d7932bd54a87dc5b69561ac7ba594\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Aug 28 22:28:47 2020 -0400\n\n    Improve FT_Outline_Render docs.\n\ncommit 6730854c397130879c64bd766c673b9bccf9c04a\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Aug 25 23:16:27 2020 -0400\n\n    * src/smooth/ftsmooth.c (ft_smooth_raster_overlap): Limit width.\n\n    Segmentation fault reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d24729\n\ncommit cdc009c24afac88846ed24e21c84e33792384665\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 22 13:30:11 2020 +0200\n\n    * src/truetype/ttgload.c (TT_Get_VMetrics): Add tracing message.\n\ncommit f9f6adb625c48ef15b5d61a3ac1709a068ea95a3\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Aug 5 08:24:15 2020 -0400\n\n    [truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND.\n\n    For glyphs with OVERLAP_SIMPLE or OVERLAP_COMPOUND, set\n    FT_OUTLINE_OVERLAP to render them with direct oversampling, which\n    mitigates artifacts (see 3bb512bc9f62).\n\n    * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Redefine to rhyme\n    with OVERLAP_SIMPLE.\n    * src/base/ftgloadr.c (FT_GlyphLoader_Rewind): Reset outline flags.\n    * src/truetype/ttgload.c\n    (TT_Load_Simple_Glyph): Retain OVERLAP_SIMPLE.\n    (load_truetype_glyph): Retain OVERLAP_COMPOUND.\n\ncommit 3a1f4b7aaa30b05a363c5eac07122a1033699904\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Aug 4 22:17:05 2020 -0400\n\n    * src/truetype/ttgload.c (TT_Load_Glyph): More tracing.\n\ncommit 8b3601324fde1ba49338dd6279057cd366c25919\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 4 10:48:42 2020 +0200\n\n    Minor typos, formatting.\n\ncommit 986a340dd52825ceaa142ae19473de0ee52d57f2\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jul 28 23:20:59 2020 -0400\n\n    Unbreak compilation.\n\ncommit f76f7fdecdb14f343beb009dcef63a01b08162df\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jul 28 23:13:51 2020 -0400\n\n    Hide internal functions with SunPro.\n\n    * include/freetype/internal/compiler-macros.h\n    (FT_INTERNAL_FUNCTION_ATTRIBUTE) \u003c__SUNPRO_C\u003e: Define as __hidden.\n\ncommit 3273521f408938e0088258bda62d280d6e5967eb\nAuthor: Anuj Verma \u003canujv@iitbhilai.ac.in\u003e\nDate:   Tue Jul 28 18:34:37 2020 +0200\n\n    Fix static compilation with Visual C.\n\n    * include/freetype/internal/compiler-macros.h\n    (FT_INTERNAL_FUNCTION_ATTRIBUTE) \u003c_WIN32\u003e: Define as empty.\n\ncommit fffc303a7f397d08eee719eca351bdb55b3a1e83\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 28 18:28:10 2020 +0200\n\n    Formatting, improving comments.\n\ncommit 53be1753dea9bd3e586f3e6f3ffc55b31080d450\nAuthor: Priyesh Kumar \u003cpriyeshkkumar@gmail.com\u003e\nDate:   Tue Jul 28 07:33:40 2020 +0200\n\n    Fix `-Wformat\u0027 compiler warnings.\n\n    * src/*: Fix format specifiers.\n\n    * builds/unix/ftsystem.c (FT_Stream_Open): Ditto.\n\ncommit 8cfc41ae955d99ff49214deea731527bbb8035f0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jul 25 12:23:22 2020 +0200\n\n    Fix `-Wformat\u0027 compiler warnings.\n\n    Problem reported by Priyesh kumar \u003cpriyeshkkumar@gmail.com\u003e\n\n    * src/base/ftoutln.c (FT_Outline_Decompose): Fix number of arguments\n    to tracing macro.\n\n    * src/bdf/bdfdrivr.c (bdf_cmap_char_next, bdf_get_bdf_property):\n    Ditto.\n\n    * src/cache/ftcbasic.c (ftc_basic_family_get_count): Ditto.\n    Reformulate message.\n\n    * src/pcf/pcfdrivr.c (pcf_get_bdf_property): Ditto.\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Ditto.\n    Trace table offset, too.\n\n    * src/truetype/ttgxvar.c (ft_var_apply_tuple): Ditto.\n\ncommit b6183ea369757f6f0126c9822d21eaa88903b7c5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jul 23 13:03:22 2020 +0200\n\n    * src/sfnt/sfwoff2.c (woff2_decompress): Fix compiler warning.\n\n    Reported by Hin-Tak.\n\ncommit ee19a6cbbcb28e7aab04dd13918edd46f21ecb22\nAuthor: David Turner \u003cdavid.turner.dev@gmail.com\u003e\nDate:   Fri May 1 15:37:56 2020 +0200\n\n    Add .clang-format file\n\n    This file can be used to reformat FreeType sources and commits\n    using one of these methods:\n\n    - Direct formatting of a whole file:\n\n        clang-format -i path/to/file\n\n      For example, to reformat all sources at once:\n\n        echo builds/unix/ftconfig.h.in $(git ls-files *.[hc]) | xargs clang-format -i\n\n    - Only reformat the changed lines in the current work directoy:\n\n        git clang-format\n\n    The style settings in this file are very close to the FreeType\n    formatting style, with the following exceptions which are not supported\n    here:\n\n    - Mminimal 2-space margin on each non-empty line.\n      (no left margin instead).\n\n    - 2 empty lines between variable declarations and statements in C blocks.\n      (only 1 is kept).\n\n        {\n          int  x \u003d ...;\n\n          foo(x);\n        }\n\n      becomes\n\n        {\n          int x \u003d ...;\n\n          foo(x);\n        }\n\n    - Aignment of declarations uses 2 spaces to separate types and variable\n      names (only 1 space is kept).\n\n         int  x;    \u003d\u003e   int x;\n         int  y;         int y;\n\n    - The start used for output parameters in function signature should be\n      near the variable name (always near the type).\n\n        void foo(int* input_ptr, int *output_ptr)\n          \u003d\u003e void foo(int* input_ptr, int* output_ptr)\n\ncommit b7c467b6efa5a91945854de81632be45d6f360ff\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jul 15 09:15:25 2020 +0200\n\n    [doc] Stem darkening is off by default for CFF driver.\n\n    Bug reported by Ishi Tatsuyuki \u003cishitatsuyuki@gmail.com\u003e.\n\ncommit 5fe7c044c25bba9dfae315ef56bacfc83976ddd0\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Tue Jul 14 16:12:29 2020 +0200\n\n    freetype.h (FT_Set_Transform): Minor documentation update.\n\n    In order to mention the limited accuracy of `FT_Matrix\u0027 coefficients\n    and encourage client code to perform the transform themselves with\n    floating point values instead.\n\ncommit 95de21ab19cc5409ea09c9347f1d9b5e2cc2d332\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 14 08:32:45 2020 +0200\n\n    README: Add information on contributing patches.\n\ncommit c922ffa5d2fe359d5e0d788f3a0850a59da4ae20\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jul 12 07:52:55 2020 +0200\n\n    * builds/unix/configure.raw: Fix inclusion of `ftoption.h\u0027.\n\ncommit b1286b32a9f2bcba3f22c9857ba6df30733b7845\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Thu Jul 9 14:31:00 2020 -0400\n\n    Document `FT_Face_Rec_::box\u0027 with variable fonts (#54969).\n\n    As pointed out in the \"Note:\" in the section of\n\n      https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview#variation-data-tables-and-miscellaneous-requirements\n\n      ... the xMin, yMin, xMax, yMax, macStyle and lowestRecPPEM fields in\n      the font header (\u0027head\u0027) table are not supported by variation data and\n      should only be used in relation to the default instance for the font.\n\n    Document that `FT_Face_Rec_::box\u0027 does not vary with OpenType variable\n    fonts.\n\ncommit 96fb73efd5c69c2c34ebe2a4d7096774c87da145\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 7 16:58:14 2020 +0200\n\n    Fix clang warnings.\n\n    * include/freetype/internal/autohint.h\n    (FT_DECLARE_AUTOHINTER_INTERFACE): New macro.\n    * src/autofit/afmodule.h: Use it to declare\n    `af_autofitter_interface\u0027.\n\n    * include/freetype/internal/ftobjs.h (FT_DECLARE_GLYPH): New macro.\n    * src/base/ftbase.h: Use it to declare `ft_bitmap_glyph_class\u0027 and\n    `ft_outline_glyph_class\u0027.\n\n    * src/base/ftglyph.c: Include `ftbase.h\u0027.\n\n    * src/cff/cffparse.c (cff_parser_run): Fix type of `t2_size\u0027.\n\n    * src/pcf/pcfdrivr.c (pcf_cmap_char_next): Fix type of `result\u0027.\n\n    * src/psaux/psauxmod.c (psaux_module_class): Use `FT_DEFINE_MODULE\u0027.\n    * src/psaux/psauxmod.h: Declare `afm_parser_funcs\u0027,\n    `t1_cmap_classes\u0027, `cff_decoder_funcs\u0027, and `psaux_module_class\u0027.\n\n    * src/pshinter/pshmod.c: Include `pshmod.h\u0027.\n\n    * src/sfnt/sfwoff2.c (ROUND4, WRITE_SHORT): Fix implicit sign\n    conversion.\n    (compute_ULong_sum): Fix return type.\n    Fix implicit sign conversion.\n    (store_points): Fix type of `last_flag\u0027, `repeat_count\u0027, and `flag\u0027.\n    Use casts to avoid warnings.\n    (reconstruct_glyf): Fix implicit sign conversion.\n    Use cast to avoid warning.\n    (get_x_mins): Fix implicit sign conversion.\n    * src/sfnt/ttcmap.c: Undef `TTCMAPCITEM\u0027.\n    * src/sfnt/ttcmap.h: Define `TTCMAPCITEM\u0027 and include `ttcmapc.h\u0027 to\n    declare cmap classes.\n\n    * src/smooth/ftsmooth.c (ft_smooth_overlap_spans): Use cast.\n\n    * src/truetype/ttinterp.c (Ins_MIAP): Fix typo.\n\ncommit 0f35b042e02e23cc6fb29d805d25aa85679274eb\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Mon Jul 6 10:56:36 2020 +0200\n\n    [build] Really fix multi and C++ builds.\n\n    The following builds were still failing due to previous changes:\n\n      make multi\n      make multi CC\u003d\"c++\"\n      make CC\u003d\"c++\"\n\n    This patch fixes the issues, which were missing includes to get the\n    right macro definitions in multi-build mode.\n\n    Also, `FT_UNUSED\u0027 is actually used by third-party code, so move it\n    back to `public-macros.h\u0027 to avoid breaking it.\n\n    * include/freetype/config/public-macros.h (FT_EXPORT): Remove\n    special definition for C++.\n    (FT_UNUSED): Define here instead of...\n    * include/freetype/config/compiler-macros.h: ... here.\n    (FT_FUNCTION_DECLARATION): Remove special definition for C++.\n    (FT_LOCAL_ARRAY_DEF): Fix definition.\n\n    * src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h,\n    src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER\u0027 and `FT_END_HEADER\u0027.\n\ncommit cb4a943bc4d24d48eeb5d1515c5acd880c4a82ab\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Mon Jul 6 10:56:36 2020 +0200\n\n    [build] Fix multi and C++ builds.\n\n    The following builds were failing due to previous changes:\n\n      make multi\n      make multi CC\u003d\"c++\"\n\n    * include/freetype/config/ftconfig.h: Remove `FT_END_HEADER\u0027.\n\n    * include/freetype/config/ftheader.h (FT_BEGIN_HEADER,\n    FT_END_HEADER): Protect against redefinition.\n\n    * src/cache/ftccache.h, src/cache/ftcmru.h, src/pcf/pcfutil.h,\n    src/psaux/pserror.h, src/psaux/psft.h, src/psaux/psstack.h,\n    src/sfnt/woff2tags.h: Include `compiler-macros.h\u0027.\n\n    * src/sfnt/woff2tags.c: Include `woff2tags.h\u0027.\n\ncommit 2eb8f8862669f50bf11693fb5c4f729a0ddf847f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jul 6 09:21:03 2020 +0200\n\n    [psaux] Improve `t1_decoder_parse_metrics\u0027 (#58646).\n\n    * src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy\n    corresponding code from old engine\u0027s `t1_decoder_parse_charstrings\u0027\n    function to handle `op_callsubr\u0027 and `op_return\u0027.\n\ncommit b0667d2d36fb134d48030b2a560eaaa37810d6ba\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Thu Jul 2 11:20:10 2020 +0200\n\n    [build] Improve visibility support of library function names.\n\n    * include/freetype/config/public-macros.h\n    (FT_PUBLIC_FUNCTION_ATTRIBUTE): New macro to tag functions as\n    public (and thus exportable).\n    (FT_EXPORT): Use it.\n\n    * include/freetype/config/compiler-macros.h\n    (FT_INTERNAL_FUNCTION_ATTRIBUTE): New macro to tag functions as\n    internal to the library (and thus hidden).  Note that on ELF\n    systems, all internal functions have hidden visibility, which avoids\n    the need to enforce this when invoking the compiler (e.g., with an\n    option like `-fvisibility\u003dhidden\u0027).\n\n    (FT_FUNCTION_DECLARATION, FT_FUNCTION_DEFINITION): New base macros\n    to deal with C and C++ linkage issues at the same time.\n\n    (FT_LOCAL, FT_LOCAL_DEF, FT_LOCAL_ARRAY, FT_LOCAL_ARRAY_DEF,\n    FT_BASE, FT_BASE_DEF, FT_EXPORT_VAR, FT_BASE_CALLBACK,\n    FT_BASE_CALLBACK_DEF): Redefined using new macros.\n\ncommit bb66c8d8cf1eb86309273d7c53c44522d35941d4\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Thu Jul 2 11:09:57 2020 +0200\n\n    [build] Split off more stuff from `ftconfig.h\u0027.\n\n    * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,\n    include/freetype/config/ftconfig.h: Split off macro definitions\n    required by the FreeType API headers to...\n    * include/freetype/config/public-macros.h: ...this new file.\n\n    * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,\n    include/freetype/config/ftconfig.h: Split off macro definitions used\n    by the library but not to be exposed to clients to...\n    * include/freetype/config/compiler-macros.h: ...this new file.\n\n    * include/freetype/internal/*.h, src/raster/ftraster.h: Include\n    `compiler-macros.h\u0027 where needed.\n\ncommit 0322efb5e5fcd2c64f9fb433b890ff476abb696f\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Thu Jul 2 10:31:28 2020 +0200\n\n    [build] Move mac support code to `mac-support.h\u0027.\n\n    * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,\n    include/freetype/config/ftconfig.h: Split off mac-specific stuff\n    to...\n    * include/freetype/config/mac-support.h: ...this new file.\n\n    * CMakeLists.txt, builds/unix/configure.raw: Remove `/undef -\u003e\n    #undef\u0027 string replacement; the affected code is no longer part of\n    the `ftconfig.h\u0027 template.\n\ncommit bd7251ac97eea134873118f4d9f005c333e31953\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Thu Jul 2 10:24:20 2020 +0200\n\n    [build] Put integer type definitions into `integer-types.h\u0027.\n\n    Refactor some of the `ftconfig.h\u0027 headers and template to move the\n    definition of the FreeType integer types (e.g., `FT_Int16\u0027) to a\n    common header file `freetype/config/integer-types.h\u0027.\n\n    * builds/unix/ftconfig.h.in, builds/vms/ftconfig.h,\n    include/freetype/config/ftconfig.h: Split off integer type\n    definition stuff to...\n    * include/freetype/config/integer-types.h: ...this new file.\n\n    * builds/unix/ftconfig.h.in: Control the definition of\n    `FT_SIZEOF_INT\u0027 and `FT_SIZEOF_LONG\u0027 with macro\n    `FT_USE_AUTOCONF_SIZEOF_TYPES\u0027.  If these are not defined, auto\n    detection happens in `integer-types.h\u0027 as usual based on `INTXX_MAX\u0027\n    values.  Otherwise the autoconf-detected values are used.\n\n    * builds/unix/configure.raw (CPPFLAGS): Don\u0027t include path to\n    `config\u0027 directory.  Instead, ...\n    (FT_CONFIG_STANDARD_LIBRARY_H): Use complete path.\n\ncommit a4d9206754e6c68dc768e05b6676268149c197f1\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Thu Jul 2 10:10:25 2020 +0200\n\n    [build] Rename `build/unix/ftconfig.in\u0027 to `ftconfig.h.in\u0027.\n\n    Since we are no longer limited to 8.3 file names, it is simpler to\n    follow the usual conventions for template files.\n\n    * builds/unix/ftconfig.in: Renamed to...\n    * builds/unix/ftconfig.h.in: ...this.\n\n    * CMakeLists.txt, builds/unix/configure.raw: Updated.\n\ncommit 3bb512bc9f621e1329927292d9ee7ba764549cae\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Jul 3 22:29:34 2020 -0400\n\n    [smooth] Introduce direct oversampling for overlaps.\n\n    This implements oversampling to metigate artifacts in pixels partially\n    covered by overlapping contours.  It turns out that the 4x4\n    oversampling is sufficient but, at least, quadruples the rendering\n    time.  The outline has to set FT_OUTLINE_OVERLAP to use this method.\n\n    * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): New flag.\n    * src/smooth/ftsmooth.c (ft_smooth_render): Check it to...\n    (ft_smooth_raster_overlap): ... inflate outline and set up direct\n    rendering for oversampling with...\n    (ft_smooth_overlap_spans): ... new span function that integrates them.\n\ncommit 19d39f43d25b375767b40b26aac7b2061d321ae2\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Jul 3 09:17:22 2020 -0400\n\n    [smooth] Use direct rendering mode in Harmony.\n\n    Instead of rendering 3 bitmaps side by side and reshuffling, we use\n    direct rendering to deliver the bitmaps on each third byte.\n\n    * src/smooth/ftsmooth.c (ft_smooth_raster_lcd)\n    [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Set up direct mode with...\n    (ft_smooth_lcd_spans): ... new span function.\n\ncommit 2d67511a142dcb772c6b75b0b3dfd416bd53e51c\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Jul 3 09:02:09 2020 -0400\n\n    [smooth] Separate LCD paths from gray rendering.\n\n    This makes `ft_smooth_render\u0027 a lot smaller and easier to follow. It\n    also cleanly separates Harmony and ClearType-style LCD rendering\n    algorithms. Now I only wish to move LCD filtering and geometry from\n    FT_Library to FT_Renderer.\n\n    * src/smooth/ftsmooth.c (ft_smooth_render): Move LCD code from here...\n    (ft_smooth_raster_lcd, ft_smooth_raster_lcdv): ... to here.\n    [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Reorganize #ifdef\u0027s.\n\ncommit a4434747558d872c55e55ce428019a8e15d222dc\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Sat Jun 20 05:31:34 2020 +0200\n\n    [cff] Fix handling of `style_name \u003d\u003d NULL\u0027 (#58630).\n\n    * src/cff/cffobjs.c (cff_face_init): If a call to `cff_strcpy\u0027 fails\n    by returning NULL in `cff_face_init\u0027, `remove_style\u0027 is still\n    called.  This means that the NULL pointer is dereferenced, causing a\n    crash.\n\ncommit de088b1dfd0dd549005feb503efe1b41ca668b36\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Jun 19 22:46:30 2020 -0400\n\n    Simplify unused macro.\n\ncommit f594ffdc357a4e73f739fa6c2c79f656b7d31a0b\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Fri Jun 19 18:55:49 2020 +0200\n\n    [cff] Fix another two memory leaks (#58629).\n\n    * src/cff/cffobjs.c (cff_size_init): If a call to `funcs-\u003ecreate\u0027\n    fails to allocate one of the `internal-\u003esubfont\u0027 variables, make\n    sure to free `internal-\u003etopfont\u0027 and any successfully allocated\n    subfonts.\n\ncommit 2e2f3cb5baf1aed20c4eda08e043a2cf2515f275\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Fri Jun 19 16:29:07 2020 +0800\n\n    [psaux] Fix memory leak (#58626).\n\n    * src/psaux/psstack.c (cf2_stack_init): If `cf2_stack_init\u0027 fails to\n    allocate the stack, return error early.\n\ncommit 09b98060d3e0edfe78ea88ca8b851751a924ecac\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Fri Jun 19 16:21:08 2020 +0800\n\n    Fix memory leak (#58624).\n\n    * src/base/ftobjs.c (FT_New_Size): Avoid trying to free\n      `size-\u003einternal`, unless `size\u0027 has been allocated. This\n      mistake appeared in the fix for 58611.\n\ncommit 6e722f2eaa5840e6b8c6f1eaa6a1fce9d7f90833\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Jun 19 08:39:23 2020 -0400\n\n    [base] Rework d1180b5f9598 until further notice.\n\n    * src/base/ftoutln.c (FT_Outline_Get_Orientation): Reject large\n    outlines.\n\ncommit 8ed5a2477eecf27e645bbb568b66a37eea12973c\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Fri Jun 19 10:35:57 2020 +0200\n\n    [cff, cid] Fix segfaults in case of error (#58621).\n\n    * src/cff/cffobjs.c (cff_slot_done), src/cid/cidobjs.c\n    (cid_slot_done): If `ft_glyphslot_init\u0027 fails to allocate\n    `internal\u0027, then the class\u0027 `done_slot\u0027 callback (called by\n    `ft_glyphslot_done\u0027) must not dereference the pointer to `internal\u0027.\n\ncommit d1180b5f9598088ab1bc9d772e5e09ece0702a38\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jun 19 08:18:26 2020 +0200\n\n    [base] Fix UBSAN error.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d23166\n\n    * src/base/ftoutln.c (FT_Outline_Get_Orientation): Avoid values\n    larger than 32 bits.\n\ncommit 4d364b68215f1380b66164f3f0e4bdadc154d08f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jun 19 05:41:37 2020 +0200\n\n    [woff2] Fix segfault.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d23402\n\n    * src/sfnt/sfwoff2.c (get_x_mins): Check whether `loca\u0027 table\n    exists.\n\ncommit d924c5cf7e5554b22f7edfcb9e98670c4c02c3f0\nAuthor: Stephen McDowell \u003csvenevs.dev@gmail.com\u003e\nDate:   Fri Jun 19 04:14:39 2020 +0200\n\n    [sfnt] Support Intel compilers.\n\n    * src/sfnt/pngshim.c (premultiply_data): Intel compilers do not\n    currently support `__builtin_shuffle\u0027.\n\ncommit a4429959b030e4a6e4aa41baa4306950158224f1\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Thu Jun 18 15:12:03 2020 +0800\n\n    [base] Fix memory leak (#58611).\n\n    * src/base/ftobjs.c (FT_New_Size): When the call to `clazz-\u003einit_size\u0027\n    fails, make sure to free `size-\u003einternal\u0027.\n\ncommit 575b78d9e3b9c701edb5087aa1c5f9c4031d3548\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Thu Jun 18 15:12:03 2020 +0800\n\n    [cff] Fix memory leak (#58610).\n\n    * src/cff/cffobjs.c (cff_size_init): When the call to\n    `funcs-\u003ecreate\u0027 fails, make sure to free `internal\u0027.\n\ncommit 74cebeae1249f8ebade559a7316fe84db7a36fd2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jun 19 03:41:12 2020 +0200\n\n    * src/cff/cffload.c (cff_index_get_pointers): Rename `t\u0027 to `tbl\u0027.\n\ncommit c8cd139c3025f6371974c8aecfe3a393dd5ad994\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Thu Jun 18 13:46:37 2020 +0800\n\n    [cff] Free table upon error allocating other data (#58609).\n\n    * src/cff/cffload.c (cff_index_get_pointers): When new_bytes fails\n    to allocate, make sure to free the table.  Do the same for both\n    allocations if there is a later error.\n\ncommit 7438235b42e9d425888c68519d1e05dd2b69fff7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jun 17 15:12:30 2020 +0200\n\n    woff2tags.h: Fix copyright year.\n\ncommit 165868596783af1d296aa4fa30295b22cf7e79a2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 13 21:15:45 2020 +0200\n\n    Remove redundant inclusion of `ft2build.h\u0027.\n\n    * */*: Remove `#include \u003cft2build.h\u003e\u0027 where possible.\n\n    * include/freetype/freetype.h: Remove cpp error about missing\n    inclusion of `ft2build.h\u0027.\n\ncommit e13391333f501967db8823025ce8c63259b5d57e\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Mon Jun 8 13:31:55 2020 +0200\n\n    Make macros for header file names optional.\n\n    We no longer have to take care of the 8.3 file name limit; this\n    allows us (a) to introduce longer, meaningful file names, and (b) to\n    avoid macro names in `#include\u0027 lines altogether since some\n    compilers (most notably Visual C++) doesn\u0027t support this properly.\n\n    */*: Replace\n\n       #include FOO_H\n\n    with\n\n       #include \u003cfreetype/foo.h\u003e\n\n    or something similar.  Also update the documentation.\n\ncommit 9e6e903cc4f6f2de86356d551e74eace75927c31\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 2 17:14:54 2020 +0200\n\n    * src/sfnt/ttcmap.c (tt_face_build_cmaps): Trace number of cmaps.\n\ncommit 62fea391fa9993f8c1d206a50080d690178ce518\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Mon May 18 09:33:38 2020 +0200\n\n    Remove obsolete HAVE_STDINT_H probing macro.\n\n    This macro was updated by the unix configure script and the\n    `CMakeLists.txt\u0027 one, but is never used in the source tree (nor is\n    \u003cstdint.h\u003e included anywhere).\n\n    * CMakeLists.txt, builds/unix/ftconfig.in: Don\u0027t handle\n    `HAVE_STDINT_H\u0027.\n\ncommit 4eee13404dca62cdaed4e26b5523f0d8f92f2a1f\nAuthor: David Turner \u003cdavid@freetype.org\u003e\nDate:   Mon May 18 09:16:12 2020 +0200\n\n    Remove Jamfile files from the tree.\n\n    These have not been used in a very, very long time, so better remove\n    them.  A corresponding patch will be submitted to the\n    `freetype2-demos\u0027 repository.\n\n    * src/Jamfile, src/*/Jamfile, Jamrules: Delete.\n\ncommit 3f70e6d20c82b28174096adcd0657b3c998b007b\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue May 12 00:38:46 2020 -0400\n\n    [smooth] Turn on LCD filtering during FreeType initialization.\n\n    * src/smooth/ftsmooth.c (ft_smooth_init): Enable LCD filtering.\n\n    * include/freetype/ftlcdfil.h: Document it, remove patent warnings.\n    * include/freetype/freetype.h (FT_Render_Mode): Updated.\n    * include/freetype/config/ftoption.h, devel/ftoption.h\n    [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Do not mention patents.\n\ncommit 652f88631932713309b6fa2cf12669699e3fc8e6\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon May 11 23:30:37 2020 -0400\n\n    [smooth] Stop using dedicated LCD modules and classes.\n\n    The LCD modules were never truly independent. They mostly served as\n    a way to disable patented LCD rendering, which is no longer necessary.\n    The `smooth\u0027 module now handles LCD modes as well.\n\n    * src/smooth/ftsmooth.c (ft_smooth_lcd_renderer_class.\n    ft_smooth_lcdv_renderer_class): Deleted.\n    (ft_render_smooth): Reworked from `ft_render_smooth_generic\u0027.\n    * src/smooth/ftsmooth.h: Remove dedicated LCD classes.\n    * src/smooth/module.mk: Remove dedicated LCD modules.\n    * include/freetype/config/ftmodule.h: Ditto.\n    * builds/amiga/include/config/ftmodule.h: Ditto.\n    * include/freetype/ftmodapi.h: Do not mention LCD modules.\n\ncommit 093f87bfe45160195ade7bd5174bbaaf50ebd6be\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat May 9 22:32:03 2020 -0400\n\n    Formatting.\n\ncommit 132f19b779828b194b3fede187cee719785db4d8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 5 20:14:14 2020 +0200\n\n    * Version 2.10.2 released. \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Tag sources with `VER-2-10-2\u0027.\n\n    * docs/VERSION.TXT: Add entry for version 2.10.2.\n\n    * README, Jamfile (RefDoc), src/base/ftver.rc,\n    builds/windows/vc2010/index.html, builds/windows/visualc/index.html,\n    builds/windows/visualce/index.html,\n    builds/wince/vc2005-ce/index.html,\n    builds/wince/vc2008-ce/index.html, docs/freetype-config.1:\n    s/2.10.1/2.10.2/, s/2101/2102/.\n\n    * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.\n\n    * builds/unix/configure.raw (version_info): Set to 23:2:17.\n    * CMakeLists.txt (VERSION_PATCH): Set to 2.\n\n    * docs/CHANGES: Updated.\n\ncommit a45da2534960586fabea22481bd21ed5ed766022\nAuthor: Jakub Alba \u003cjalba@vewd.com\u003e\nDate:   Fri May 8 10:59:37 2020 +0200\n\n    * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#58319).\n\n    The font that exceeds the old limit is Icono Regular, version\n    1.00000.\n\ncommit ed62b12d6c810c1b046a53ee6b0d25c5f61944a1\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun May 3 23:22:08 2020 -0400\n\n    Typo and comment.\n\ncommit de60e7d3f8f721445e4435e90a209656ca777352\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun May 3 17:11:20 2020 -0400\n\n    * builds/freetype.mk: Refactor for readability.\n\ncommit 49967cb6101bc7e6593535d1c6fa293c8b26fa4a\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat May 2 13:50:33 2020 -0400\n\n    [builds] Clean up Windows CE project files.\n\n    Remove version from filenames that caused a lot of polution in the\n    release process. Use VERSIONINFO resource instead.\n\n    * builds/wince/vc2005-ce/freetype.vcproj,\n    builds/wince/vc2008-ce/freetype.vcproj,\n    builds/windows/visualce/freetype.vcproj,\n    builds/windows/visualce/freetype.dsp: s/2101//g, but add `ftver.rc\u0027.\n    * builds/wince/vc2008-ce/index.html,\n    builds/wince/vc2005-ce/index.html,\n    builds/windows/visualce/index.html: s/2101//g.\n\ncommit a612da0e8bb643c3a4fe562088c485fb28796558\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri May 1 22:52:52 2020 -0400\n\n    * devel/ft2build.h: Override FT_CONFIG_MODULES_H here as well.\n\ncommit 9c850f5611a603b023d2b32a8186ea00e2092632\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri May 1 22:30:15 2020 -0400\n\n    [builds/unix] Consolidate marco overrides (for the demos to see them).\n\n    * builds/unix/unix-cc.in (FT_CONFIG_MODULES_H, FT_CONFIG_OPTIONS_H):\n    Override them here...\n    * builds/freetype.mk: ... instead of here.\n\ncommit d79946311bf8c72d31a8dadc8ae33e298554c61b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Apr 30 08:37:16 2020 +0200\n\n    Grammar fix for last commit.\n\ncommit e6ecce9ae820ab8c5425357623401e38a06822bc\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Apr 30 07:27:28 2020 +0200\n\n    CHANGES: We are going to remove Jam.\n\ncommit 11beee855e29757a07320fd60e85de2e8da4e037\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Apr 8 09:05:32 2020 +0200\n\n    Allow setting `CC\u0027 in Unix build (#58051).\n\n    * builds/unix/unix-cc.in (CC): Use `override\u0027.  The command line\n      value of `CC\u0027 (if any) is stored already in `CCraw\u0027.\n\ncommit 7a019a63ed9753772e758beec3cad7c0b74ee2aa\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Apr 4 14:06:37 2020 +0530\n\n    [woff2] Return if single stream operation fails.\n\n    * src/sfnt/sfwoff2.c (get_x_mins): Do it.\n\n    * src/sfnt/woff2tags.c: Remove unused include.\n\ncommit 13c0df80dca59ce2ef3ec125b08c5b6ea485535c\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Mar 22 23:29:51 2020 +0530\n\n    [docs] Fix building docs if `srcdir\u0027 !\u003d `builddir\u0027.\n\n    `docs/reference/*\u0027 was moved one directory up in commit 237fed6.\n\n    * builds/unix/unix-def.in (PIP): Remove variable.\n\n    * configure: Create `docs\u0027 directory and copy assets from\n    `docs/markdown\u0027.\n\n    * docs/README: Output directory is `reference\u0027.\n\ncommit 1fd3148713def5fe72ff6844a33e4fc896a80780\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Mar 21 20:17:17 2020 +0530\n\n    [docwriter] Drop support for Python \u003c 3.5.\n\n    Python versions \u003c 3.5 have reached end-of-life and as such, no\n    security or bug fixes will be provided for those versions.  See\n\n      https://devguide.python.org/#status-of-python-branches\n\n    for more information.\n\n    * Jamfile (RefDoc): Add `site\u0027 parameter.\n\n    * builds/detect.mk (std_setup): Update Python version requirement.\n\n    * builds/freetype.mk (refdoc-venv): Use pip as `python -m pip\u0027.\n\n    * builds/unix/ax_compare_version.m4,\n    builds/unix/ax_prog_python_version.m4: Macros to detect Python\n    version.  New files.\n\n    * builds/unix/configure.raw: Check for Python \u003e\u003d 3.5 and remove\n    check for `pip\u0027.\n\n    * docs/CHANGES, docs/INSTALL.GNU, docs/README: Updated.\n\ncommit 6a431038c9113d906d66836cd7d216a5c630be7c\nAuthor: Moazin Khatti \u003cmoazinkhatri@gmail.com\u003e\nDate:   Mon Mar 2 18:21:27 2020 +0500\n\n    [gzip] Support `gzip\u0027 encoded header conditionally.\n\n    In order to support `gzip\u0027 encoded header the call to\n    `inflateInit2\u0027 was modified in commit 6a92b1fadde26477a9179.\n    However, this code breaks with the outdated internal version\n    of zlib.  This is a temporary fix to conditionally support\n    `gzip\u0027 encoded header whenever a system installation of zlib\n    is being used.\n\n    Problem report in\n\n      https://lists.nongnu.org/archive/html/freetype-devel/2020-02/msg00023.html\n\n    * src/gzip/ftgzip.c (FT_Gzip_Uncompress): Change the the call to\n    `inflateInit2\u0027 depending on whether the system installation is\n    being used or the internal copy.\n\ncommit 11975fe9f6ed92b7630698e599b936a0186d965d\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Sat Feb 29 20:18:00 2020 +0100\n\n    Fix state of `FT_Face\u0027 for buggy `gvar\u0027 tables (#57923).\n\n    By resetting the blend as implemented with this commit fonts with\n    invalid `gvar\u0027 tables may keep calling into `ft_var_load_gvar\u0027 from\n    `tt_set_mm_blend\u0027 and failing, but the font was invalid anyway and\n    we want to keep seeing the failure in `tt_set_mm_blend\u0027.\n\n    * src/truetype/ttgxvar.c (ft_var_load_gvar): Calculate length of\n    offset array once.\n    Allocate arrays after `FT_FRAME_ENTER\u0027 (extra check before\n    allocating and avoid needing to free array later if error entering\n    frame).\n    Always call `FT_FRAME_EXIT\u0027.\n    Consistently set counts immediately after array initialized.\n    Reset the blend (particularly `blend-\u003eglyphoffsets\u0027) on failure.\n\ncommit 149b9055e61d9c46937d3b0cc5727e75484ed042\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Feb 29 20:28:03 2020 +0100\n\n    ChangeLog entry for last commit.\n\ncommit 21c2311e633385e1cf77154d4880d492c19064f1\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Mar 1 00:37:31 2020 +0530\n\n    Update docwriter stylesheet.\n\n    This change is required to support docwriter 1.2.1.\n\n    See\n\n      https://github.com/freetype/docwriter/issues/36\n\n    for more information.\n\n    * docs/markdown/stylesheets/extra.css:\n    (.md-typeset code) -\u003e (.md-typeset pre\u003ecode)\n    (pre) -\u003e (pre\u003ecode)\n    (p, .md-typeset p, h4): Remove commented styles.\n    (table.index): Remove unused styles.\n\ncommit 216e077600a58346bb022d8409fd82e9d914a10a\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Fri Feb 28 07:43:00 2020 +0100\n\n    [truetype] Add better checks for loading `gvar\u0027 table (#57905).\n\n    * src/truetype/ttgxvar.c (ft_var_load_gvar): Delay settings of any\n    `blend-\u003exxxcount\u0027 values until the corresponding data has been\n    checked.\n    Also do some sanitizing to avoid a too early exit.\n\n    (TT_Vary_Apply_Glyph_Deltas): Improve tracing message.\n\ncommit 141da028168efc554f6c8b70c2efe8fbe9945e4a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Feb 27 09:49:06 2020 +0100\n\n    Make `FT_HAS_*\u0027 and `FT_IS_*\u0027 really return true (#57906).\n\n    * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Implement it.\n\ncommit 5b1a37af563349172230842fcfdb59b5f22afcd0\nAuthor: Dominik Röttsches \u003cdrott@chromium.org\u003e\nDate:   Tue Feb 25 11:08:11 2020 +0200\n\n    Fix for CFF space glyph regression (#57541).\n\n    * src/psaux/psft.c (cf2_decoder_parse_substrings): Replace early-out\n      with FT_OFFSET.\n\ncommit fa147af4a5255bf9017c9b004f7abd1d5e72f497\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Feb 22 18:30:46 2020 +0100\n\n    [woff2] Fix font table access.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d20778\n\n    * src/sfnt/sfwoff2.c (get_x_mins): Explicitly check for presence of\n    `head\u0027 table, which might not have been processed yet.\n\ncommit 6e49dff0052a73faaea13dd8bdf6f0724539db07\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Feb 21 20:57:52 2020 +0100\n\n    [psaux] Make `t1_decoder_parse_metrics\u0027 handle `op_div\u0027 (#57519).\n\n    * src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy\n    corresponding code from old engine\u0027s `t1_decoder_parse_charstrings\u0027\n    function.\n\ncommit 49f3394d7a531320e96170d13be471647d505f60\nAuthor: Nikolaus Waxweiler \u003cnikolaus.waxweiler@daltonmaag.com\u003e\nDate:   Wed Feb 19 12:56:49 2020 +0000\n\n    [autofit] Add support for Hanifi Rohingya script.\n\n    * src/autofit/afblue.dat: Add blue zone data for Hanifi Rohingya.\n    * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.\n\n    * src/autofit/afscript.h: Add Hanifi Rohingya standard character.\n\n    * src/autofit/afranges.c, src/autofit/afstyles.h: Add Hanifi\n      Rohingya data.\n\ncommit 84d56589f04eb1f459d865e8401e9c723fbbefb3\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Feb 19 18:13:02 2020 +0100\n\n    Require HarfBuzz 1.8.\n\n    * builds/unix/configure.raw, CMakeLists.txt: Request HarfBuzz 1.8.0\n    or newer.\n\n    We are going to add auto-hinter support for Hanifi Rohingya, which\n    was introduced in Unicode 11.0.\n\ncommit d09e8315591bb3b8767185d9abd8c3e40b8cc347\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Feb 16 15:24:27 2020 +0100\n\n    Minor.\n\ncommit 8930cc96188c21a0ea5f7da7a6d00c4fefd86d3a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Feb 12 18:25:03 2020 +0100\n\n    * src/sfnt/ttcmap.c (tt_face_build_cmaps): Ignore version (#57708).\n\ncommit 4a19a53d5a89d13047b64c4972252e6af2e8badc\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Feb 4 13:37:19 2020 +0100\n\n    * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#57732).\n\n    The font that exceeds the old limit is Constantine, version 1.001.\n\ncommit e5038be70414cf66da6c4d5ce4e30375884c30d8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jan 19 17:05:19 2020 +0100\n\n    Update all copyright notices.\n\ncommit fd03cf88167ac15a38c73cc5c51d55dfba0b5c82\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jan 4 19:28:36 2020 +0100\n\n    [base] Fix `FREETYPE_PROPERTIES\u003dtype1:hinting-engine\u003dadobe`.\n\n    * src/base/ftpsprop.c (ps_property_set) [hinting-engine]: Avoid an\n    incorrect return value that caused a warning.  The function did the\n    right thing, though.\n\ncommit 50b013871c53f7624b5351dd4820a137303fe14b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jan 4 18:42:27 2020 +0100\n\n    Add reference to another oss-fuzz bug report.\n\ncommit a99a8e2863a44dcf7397e27f73655e4e0cc36704\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jan 3 18:09:12 2020 +0100\n\n    [woff2] Fix memory leaks and a runtime warning.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19773\n\n    * src/sfnt/sfwoff2.c (compute_ULong_sum): Add missing cast.\n    (reconstruct_hmtx): Add missing deallocation calls.\n\ncommit 10d8de7541ab1f26f6f04b2118d13a92a7119102\nAuthor: Dominik Röttsches \u003cdrott@chromium.org\u003e\nDate:   Mon Dec 30 11:22:04 2019 +0200\n\n    [truetype] Fix UBSan warning on offset to nullptr (#57501).\n\n    * src/truetype/ttinterp.c (Ins_CALL): Fail if `exc-\u003eFDefs\u0027 is null.\n\ncommit a4df0373c71f426711fb77e3a21d4b58b7c42e66\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Tue Dec 31 16:04:01 2019 +0100\n\n    [woff2] Allow bitmap-only fonts (#57394).\n\n    * src/sfnt/sfwoff2.c (reconstruct_font): Fix test for `glyf\u0027 and\n    `loca\u0027 tables.\n\ncommit 496601e5045bb9af24be4819646700a503ce103a\nAuthor: Hugh McMaster \u003chugh.mcmaster@outlook.com\u003e\nDate:   Wed Dec 18 23:11:22 2019 +1100\n\n    [docs] (2/2) Fix generation of API documentation (#56745).\n\n    Creating the API Reference in the (new) `reference\u0027 sub-directory is\n    consistent with other documentation sub-topics, such as `design\u0027,\n    `glyphs\u0027 and `tutorial\u0027.\n\n    This patch fixes broken hyperlinks in the documentation pointing to\n    and from the API Reference.  It also allows web assets to load from\n    their relative paths.\n\n    * builds/freetype.mk (DOC_DIR): Adjust.\n    (refdoc, refdoc-venv): Add `--site\u0027 argument.\n\n    * builds/toplevel.mk (do-dist): Updated.\n\ncommit 237fed6d5a75e5aff6c0cdc58d7bcc43b990bc0d\nAuthor: Hugh McMaster \u003chugh.mcmaster@outlook.com\u003e\nDate:   Wed Dec 18 23:07:35 2019 +1100\n\n    [docs] (1/2) Move static web assets (#56745).\n\n    * docs/reference/*: Move ...\n    * docs: ... one directory up.\n\ncommit 8cee1dde4e708b1d4a9f028f3ac6cca99495d729\nAuthor: Dominik Röttsches \u003cdrott@chromium.org\u003e\nDate:   Tue Dec 17 14:12:38 2019 +0200\n\n    Fix more UBSan warnings on adding offset to nullptr (#57432).\n\n    * src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c\n    (cf2_initLocalRegionBuffer): Use `FT_OFFSET\u0027.\n\ncommit 7e1b39f6cd1f8e14d45592c9b192ade643d8d9de\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Dec 16 11:07:58 2019 +0100\n\n    [truetype] Fix UBSan warnings on adding offsets to nullptr.\n\n    Reported as\n\n      https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1032152\n\n    * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET\u0027.\n\ncommit 0c14a3adb08ca5aaac3188a63246361c50b069d4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Dec 14 00:04:01 2019 +0100\n\n    [truetype] Fix integer overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19305\n\n    * src/truetype/ttinterp.c (Ins_MIRP): Use `ADD_LONG\u0027.\n\ncommit 2c9a2d58ca9c8e58cae1d0b63f17e291297484eb\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Dec 13 23:56:25 2019 +0100\n\n    Another bunch of UBSan warnings on adding offsets to nullptr.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19427\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19433\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19441\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19451\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19452\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d19457\n\n    * src/autofit/aflatin.c (af_latin_hints_compute_segments,\n    af_latin_hints_compute_edges): Use `FT_OFFSET\u0027.\n\n    * src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET\u0027.\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early\n    if there is no charstring.\n\n    * src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET\u0027.\n\n    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for\n    zero bitmap dimensions.\n\ncommit 11d4ce23ac55a7d881bba5214c47922c05127242\nAuthor: Dominik Röttsches \u003cdrott@chromium.org\u003e\nDate:   Mon Dec 9 12:40:42 2019 +0200\n\n    Fix more UBSan warnings on adding offset to nullptr (#57384)\n\n    * src/smooth/ftsmooth.c (ft_smooth_render_generic),\n    src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET\u0027.\n\ncommit dfc9a049ded53e2ca5c9b935f912a476d6f676ed\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Dec 5 08:44:30 2019 +0100\n\n    * src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/chromium/issues/detail?id\u003d1030614\n\ncommit 551bd3a90e352fa3a66ee7644c07440939c03d81\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Dec 3 11:52:48 2019 +0100\n\n    More nullptr offset UBSan warnings (#57331, #57347).\n\n    * src/autofit/afcjk.c (af_cjk_hints_compute_segments),\n    src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c\n    (Ins_UNKNOWN): Use `FT_OFFSET\u0027.\n\ncommit 4270e9f3243079bb90b6af618ed4d4fd31266412\nAuthor: Dominik Röttsches \u003cdrott@chromium.org\u003e\nDate:   Wed Nov 27 11:38:45 2019 -0500\n\n    Avoid more nullptr offset UBSan warnings (#57316).\n\n    * src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points.\n    * src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET\u0027.\n    * src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if\n    `charstring_base\u0027 or `charstring_len\u0027 are null.\n    * src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET\u0027.\n\ncommit d4f9c249893a146b0c94a152f7674e288d181f95\nAuthor: John Stracke \u003cjstracke@Google.com\u003e\nDate:   Sat Nov 23 11:25:28 2019 +0100\n\n    [base] Really fix #57194.\n\n    Apply accidentally missed second part of patch.\n\n    * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call\n    `FT_GlyphLoader_CreateExtra\u0027.\n\ncommit 9df460b632985f7d245d7669147c8c6a72724419\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Nov 23 11:09:40 2019 +0100\n\n    [truetype] Avoid sanitizer warning (#57289).\n\n    * src/truetype/ttpload.c (tt_face_get_device_metrics): Use\n    `FT_OFFSET\u0027.\n\ncommit c67b9a1c5b27afbb466a35222c84b1bccb81d238\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Sat Nov 23 11:01:18 2019 +0100\n\n    [truetype] Fix integer overflow (#57287).\n\n    * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG\u0027.\n\ncommit 3cb7b3f7cb35fe403195e5e5dd76c1a8fce2e59a\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Sat Nov 23 10:54:51 2019 +0100\n\n    [sfnt] Avoid sanitizer warning (#57286).\n\n    * src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +\n    offset\u0027 computation.\n    Tag `table\u0027 as `const\u0027.\n\ncommit 2d1d60aac67e105e6b812aa4ed6448d277f985e2\nAuthor: John Stracke \u003cjstracke@Google.com\u003e\nDate:   Sat Nov 23 10:42:04 2019 +0100\n\n    [base] Fix `NULL + offset\u0027 sanitizer warnings (#57194).\n\n    * src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points,\n    FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET\u0027.\n    (FT_GlyphLoader_CreateExtra): Add short cut if some values are zero.\n\ncommit 26d0f579c01018e2f42250ee48c0250e2e524541\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Nov 23 10:28:37 2019 +0100\n\n    * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro.\n\n    Use this for `base + offset\u0027 pointer calculations where `base\u0027 can\n    be NULL (triggering a sanitizer warning even if the resulting\n    pointer gets never dereferenced since it is undefined behaviour\n    in C).\n\n    Suggested by Ben Wagner.\n\ncommit 9b0179597e100e85d543b4e346490ed7b2bb2fff\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Sat Nov 23 10:07:48 2019 +0100\n\n    [sfnt] Ensure OTTO fonts have tables (#57285).\n\n    * src/sfnt/ttload.c (tt_face_load_font_dir): Add test.\n\ncommit 07c8d8bbdb0489de06f4d019a2872f4e372e1d73\nAuthor: Behdad Esfahbod \u003cbehdad@behdad.org\u003e\nDate:   Sat Nov 23 10:00:02 2019 +0100\n\n    Minor fixes for recent compilers.\n\n    * src/gzip/infutil.h (inflate_mask): Add `const\u0027.\n\n    * src/autofit/aflatin2.c: Include `ft2build.h\u0027.\n\ncommit 3aaae716b25bd2d3232e279bc05af65cff446dd9\nAuthor: Nikolaus Waxweiler \u003cmadigens@gmail.com\u003e\nDate:   Thu Nov 7 23:39:41 2019 +0000\n\n    CMakeLists.txt: minor doc additions, compile builds/unix/ftsystem.c on UNIX\n\ncommit b75031a26eed8838222ddb3a81bc1672a0e463a8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Oct 25 21:29:13 2019 +0200\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts\u0027 for TTCs.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d18494\n\ncommit 0a3d2bb99b45b72e1d45185ab054efa993d97210\nAuthor: Filip Filmar \u003cfilmil@gmail.com\u003e\nDate:   Sun Oct 20 02:05:02 2019 -0700\n\n    [doc] FT_Open_Args: Clarify the ownership of `pathname\u0027.\n\n    Don\u0027t expect the function to deallocate the buffer.  This may be obvious\n    in C, but it is not so obvious in FFI bindings for FreeType 2.\n\ncommit 3b8bc65c50b6d306239d461cf96f22f50fc2aed5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Oct 22 08:07:05 2019 +0200\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift.\n\n    Also improve tracing.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d18390\n\ncommit 90a30f154a612693641e5366ea8d1d27ea2a4a99\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Oct 10 22:04:50 2019 -0400\n\n    * src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only.\n\ncommit 545a481a74a3c3b70af8928793a01a84f8b0ee9b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Oct 10 13:11:06 2019 +0200\n\n    * src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d18108\n\ncommit 1e9229f0fcb46fd4cd8e0fdc48fb4a44ddb7a8a1\nAuthor: John Tytgat \u003cJohn.Tytgat@esko.com\u003e\nDate:   Wed Oct 9 15:37:19 2019 +0200\n\n    [cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023).\n\n    * src/cff/cffobjs.c (cff_face_init): Don\u0027t set FT_FACE_FLAG_GLYPH_NAMES\n    for CFF2 based fonts.\n\ncommit 5a1a79c0e8de8e886cc347ad22801982e8298a06\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Oct 8 11:12:18 2019 +0200\n\n    [woff2] Fix SFNT table checks.\n\n    Also reduce number of SFNT table lookups.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d18065\n\n    * include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields\n    `glyf_table\u0027, `loca_table\u0027, and `head_table\u0027.\n\n    * src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature.\n    Use table pointers in `info\u0027 parameter.\n    (get_x_mins): Check `maxp_table\u0027\n    Use table pointers in `info\u0027 parameter.\n    (reconstruct_font):  Use and set table pointers in `info\u0027 parameter.\n    Fix check for `glyf\u0027 and `loca\u0027 tables.\n    Update call to `reconstruct_glyf\u0027.\n    (woff2_open_font): Updated.\n\ncommit 1167bff3e9a6302687667c6134673e4b3fd13636\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Oct 6 23:22:34 2019 +0200\n\n    * src/sfnt/sfwoff2 (reconstruct_glyf): Fix reallocation.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d18046\n\ncommit 0fcf486e0d6f3bb1cb17b6a6f00f651e21077dda\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Oct 6 21:12:42 2019 +0200\n\n    Improve memory debugging.\n\n    * include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use\n    `FT_DEBUG_INNER\u0027 to set source code file name and line.\n\n    * src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of\n    tracing message.\n\ncommit d355a73aa3821ae83e0e28e0888eb22dd83b2d96\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Oct 6 20:07:09 2019 +0200\n\n    docs/DEBUG: Document environment variable `FT2_KEEP_ALIVE\u0027.\n\n    Also do some formatting and minor edits.\n\ncommit 1f4e5bcb19eaa9170466c8d845edfd11aba54937\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Oct 3 21:07:16 2019 +0200\n\n    * src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d17966\n\ncommit c912690d22ab16d772328396c27c47075924b012\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Sep 30 22:45:34 2019 -0400\n\n    * src/base/ftstroke.c (ft_stroker_inside): Speed up.\n\ncommit 94815d6efa3804da0b41466716e80620014327d7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Oct 1 00:15:25 2019 +0200\n\n    * src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d17804\n\ncommit 839a023619b593b742f62ffab8e7e4f9da8c1593\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Sep 30 07:41:57 2019 +0200\n\n    * src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d17812\n\ncommit 12696dcf9bf614fef816bb768ed7c21b8eeee959\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Sep 30 07:27:55 2019 +0200\n\n    [woff2] Reject fonts without `head\u0027 table.\n\n    Also fix memory deallocation in case of error.\n\n    `head\u0027 problem reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d17820\n\n    * src/sfnt/sfwoff2.c (reconstruct_glyf): Don\u0027t use `stream_close\u0027.\n    Abort if `head_table\u0027 is NULL.\n    Don\u0027t free `transformed_buf\u0027 in case of error.\n    (woff2_open_font): Don\u0027t set `uncompressed_buf\u0027 to NULL.\n\ncommit ba06adafcdd35a34af6d9be63800c2f55dd03a75\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Sep 29 13:29:21 2019 +0200\n\n    [woff2] Fix compiler warnings.\n\n    Problem reported by Alexei.\n\n    * src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min\u0027.\n    (reconstruct_font): Initialize `num_hmetrics\u0027.\n    (woff2_open_font): Initialize `info\u0027.\n\ncommit c37a501458e2b5389ac977ed2523eed3e2d9bd61\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Sep 28 07:42:34 2019 +0200\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check.\n\n    Correct thinkos in patch from 2019-09-01.\n\ncommit 2bf603bde6f8d8ee307f16a32a986f9879639f1b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Sep 28 07:37:24 2019 +0200\n\n    [woff2] Fix memory leaks.\n\n    One of them reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d17766\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Free `info-\u003ex_mins\u0027 and\n    `woff2-\u003ettc_fonts\u0027.\n\n    (reconstruct_glyf): Initialize `info-\u003ex_mins\u0027.\n\ncommit b39576f984276ef7b9d6febbea2a509b2c95d0f2\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Sep 27 19:18:49 2019 -0400\n\n    * src/base/ftstroke.c (ft_stroker_cap): Speed up caps.\n\ncommit 432efa25b3476a6884426c0a30f6d6a624310e5d\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Sep 25 21:50:16 2019 -0400\n\n    * src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter.\n    * include/freetype/ftstroke.h: Wordsmith miter docs.\n\ncommit db4083fd7f19fd3fbd5d5a8e60d5c8e0f19778bd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Sep 25 08:48:26 2019 +0200\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d17684\n\ncommit 4881f75b7ca04a35da4b467b46b28ae52b176482\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Sep 23 22:57:00 2019 -0400\n\n    * src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations.\n\ncommit 5327092bb28b6df742386d75555ba3ccc6d05ce6\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Fri Sep 20 06:30:28 2019 +0200\n\n    [woff2] Fix memory leaks.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d16896\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling.\n    Free `uncompressed_buf\u0027.\n    (reconstruct_font): Free `transformed_buf\u0027.\n\ncommit 04ebb2a000ee40df2a9900198ec62d79af745b1f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 17 19:46:59 2019 +0200\n\n    * src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count\u0027.\n\n    Problem reported by Marc Schönefeld \u003cmarc.schoenefeld@gmx.org\u003e.\n\ncommit 99f23d6ff2203966d210bccd49eacc62a20328f9\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 17 13:22:28 2019 +0200\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Check table index.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d17100\n\ncommit cc17f852d575a8a66f9be51461af550d0f413891\nAuthor: Avi Halachmi (:avih) \u003cavihpit@yahoo.com\u003e\nDate:   Sun Sep 15 04:30:18 2019 +0300\n\n    [cmake] Don\u0027t fail if brotli is missing (#56894).\n\n    The libs which cmake controls are commented out at\n\n      include/freetype/config/ftoption.h\n\n    and cmake un-comment each enabled library, but the brotli option was\n    not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI\u0027 remained\n    defined even if brotli was missing/disabled/etc.\n\n    Comment it such that cmake can control it, which means leaving it\n    undefined if brotli is missing.\n\n    * include/freetype/config/ftoption.h: Fix typo.\n\ncommit 3de1b8d0b0983cf49a187a4227e7950395a3b08f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 5 14:10:01 2019 +0200\n\n    [cmake] Add brotli support.\n\n    * CMakeLists.txt (FT_WITH_BROTLI): New option.\n\n    * builds/cmake/FindBrotliDec.cmake: New file.\n\ncommit bbb14361dbb87e6ef30d0f35b22770c965d166b4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 5 12:37:03 2019 +0200\n\n    FindHarfBuzz.cmake: Change indentation to two spaces; shorten lines.\n\ncommit 87f5225256969e59dec7ea64c96067776d8a2f2d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 5 12:14:03 2019 +0200\n\n    Fix handling of `AF_CONFIG_OPTION_INDIC\u0027.\n\n    * devel/ftoption.h, include/freetype/config/ftoption.h:\n    `AF_CONFIG_OPTION_INDIC\u0027 needs `AF_CONFIG_OPTION_CJK\u0027.\n\ncommit 12351eeefa677de3dee4c3a3c9c91ba3b5fb6855\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 5 12:02:59 2019 +0200\n\n    CMakeLists.txt: Fix generation of DLL related stuff (#56852).\n\n    Extract `version_info\u0027 variable from `builds/unix/configure.raw\u0027 and\n    use the data to correctly set `LIBRARY_VERSION\u0027 and\n    `LIBRARY_SOVERSION\u0027.\n\n    Also use the data to set `ft_version\u0027 field in `freetype2.pc\u0027.\n    Also fix the needed minimum version of HarfBuzz in `freetype2.pc\u0027.\n\ncommit 3fa35aa420ee88856c60d3c0b7fedd43801953cc\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 3 21:10:20 2019 +0200\n\n    * src/sfnt/sfwoff2.c (compute_ULong_sum): Fix undefined shift.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d16933\n\ncommit 543a3b939df50e02e52b948f4c9c8ba63bf38059\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Sep 1 23:03:09 2019 +0200\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Add sanity check.\n\n    Don\u0027t trust `totalSfntSize\u0027 unconditionally.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d16893\n\ncommit cbee985a2bc14750ff850192f9ee8c1efe2bd7c7\nAuthor: Dominik Röttsches \u003cdrott@chromium.org\u003e\nDate:   Tue Aug 27 15:08:15 2019 +0300\n\n    [woff2] Don\u0027t use `FT_UInt64\u0027 (#56815).\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Use `FT_UInt32\u0027 for\n    `file_offset\u0027.  This fixes builds on platforms where `FT_LONG64\u0027 is\n    not defined while still being sufficient to store a file offset.\n\ncommit 594156586b888805681a7085a780bd743fb180bd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 27 14:07:14 2019 +0200\n\n    [truetype] Prevent crash in `TT_Set_Named_Instance\u0027 (#56813).\n\n    * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Fix error\n    handling.\n\ncommit ed7e8194e00ce310905925f9fd10508382fecce6\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 27 14:07:05 2019 +0200\n\n    CHANGES: Updated.\n\ncommit eef5c1dd1455208dee1a6378016f018c8a69be35\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 27 10:43:32 2019 +0200\n\n    [woff2] Fix compiler warnings.\n\n    * src/sfnt/sfwoff2.c (read_num_hmetrics): Remove unused argument\n    `table_len\u0027.\n    Update caller.\n    (triplet_decode, compute_bbox, store_loca, reconstruct_glyf): Make\n    `i\u0027 variable unsigned.\n    (reconstruct_glyph): Remove condition which is always false.\n    (reconstruct_html): Removed unused argument `transformed_size\u0027.\n    Update caller.\n\n    * src/sfnt/woff2tags.c (woff2_known_tags): Remove condition which is\n    always false.\n\ncommit 60c52f0edbfaddcfcc87e01922fa5f7640e11cf5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 27 10:08:01 2019 +0200\n\n    [woff2] Formatting; some comments.\n\ncommit 86803acd2a8e274c76f7e985878258c8f16c2360\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Thu Aug 22 16:46:03 2019 +0530\n\n    [woff2] Check whether known tag is in array bounds.\n\n    If table tag is not 0x3f, we expect a value between 0 and 62.  If\n    this is not the case, exit with errors.\n\n    * src/sfnt/sfwoff2/c: Check whether table tag makes sense.\n\n    * src/sfnt/woff2tags.c: Return 0 if tag is out of bounds.\n\ncommit d2681a49771228b35266d359e97b68f1a729fd6d\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Wed Aug 21 20:21:02 2019 +0530\n\n    [woff2] More formatting and documentation.\n\n    * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff2.c: Implement\n    formatting changes suggested as\n\n      https://lists.nongnu.org/archive/html/freetype-devel/2019-08/msg00052.html\n\ncommit 1a103015328a5897005311fa051fd57cb4b6aadb\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Aug 17 14:57:59 2019 +0530\n\n    * src/sfnt/sfwoff2.c: Improve trace comments.\n\n    Adjust tracing levels for comments, and more formatting.\n\ncommit 97616704aa2eb789d60d588a56ffb391acf1cdc8\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Wed Aug 14 17:39:55 2019 +0530\n\n    [woff2] Formatting.\n\n    * src/sfnt/sfobjs.c, src/sfnt/sfwoff2.c: Better formatting.\n\ncommit 2a23dc7fb30a46f86f625d4b7ec210bf8fe310e7\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Wed Aug 14 02:36:27 2019 +0530\n\n    [woff2] Support `hmtx\u0027 reconstruction when `glyf\u0027 is untransformed.\n\n    `reconstruct_hmtx\u0027 requires `info-\u003ex_mins\u0027 and `info-\u003enum_glyphs\u0027 to\n    reconstruct the hmtx table.  In case glyf is not transformed, we\n    call `get_x_mins\u0027 which does the necessary work.\n\n    * src/sfnt/sfwoff2.c (get_x_mins): New function.\n    (reconstruct_font): Call get_x_mins.\n\ncommit 5367e0ca016bc79096cb3b57217fc1326dc3b997\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Mon Aug 5 01:53:00 2019 +0530\n\n    [sfnt] Support `face-\u003enum_faces\u0027 for WOFF2 fonts.\n\n    Set correct value of `face-\u003enum_faces\u0027 for WOFF2 fonts.  This is\n    being handled separately because we only load the tables for the\n    requested font face in `woff2_open_font\u0027 and create a single-face\n    sfnt stream.\n\n    The full discussion is at:\n\n      https://lists.gnu.org/archive/html/freetype-devel/2019-08/msg00000.html\n\n    * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter\n    `woff2_num_faces\u0027.\n    (sfnt_init_face): Introduce variable `woff2_num_faces\u0027, and change\n    `face-\u003eroot.num_faces\u0027 if `woff2_num_faces\u0027 is set.\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Validate requested face\n    index and handle negative face indices.\n\n    * src/sfnt/sfwoff2.h (woff2_open_font): Add parameter `num_faces\u0027 to\n    declaration.\n\ncommit bb7668d7c30e16ef1d6442c4aa2b694fadd15295\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jul 28 19:38:05 2019 +0530\n\n    [woff2] Improve memory and error handling.\n\n    Free up memory after use, and improve error handling.\n\n    * src/sfnt/sfwoff2.c (reconstruct_font, woff2_open_font): Implement\n    changes.\n\ncommit 1e0207681544327f9e96c6d50231b6fbc1f6ed70\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Thu Jul 18 01:50:16 2019 +0530\n\n    [woff2] Avoid too many calls to `FT_REALLOC\u0027.\n\n    We do this by using `totalSfntSize\u0027 as an initial reference, and\n    extending the buffer when required.  This reduces rendering time\n    considerably.\n\n    * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add\n    `totalSfntSize\u0027, rename `total_sfnt_size\u0027 to `actual_sfnt_size\u0027.\n\n    * src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size\u0027 to keep\n    track of and update total size of stream.\n\n    (WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly.\n\n    (pad4, store_loca, reconstruct_glyf, reconstruct_hmtx,\n    reconstruct_font): Update parameters to accept `sfnt_size\u0027.\n\n    (woff2_open_font): Add variable `sfnt_size\u0027.  Use WOFF2 header field\n    `totalSfntSize\u0027 as initial reference (if value makes sense) and\n    allocate `totalSfntSize\u0027 bytes for the sfnt stream.  `write_buf\u0027\n    handles reallocation if and when required.  Also resize the stream\n    to `actual_sfnt_size\u0027 after reconstruction.\n\ncommit 4d9b3d1d506c2da2cc078369ed130fb2b6994bb2\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Tue Jul 16 02:45:03 2019 +0530\n\n    [woff2] Reconstruct `loca\u0027, `hmtx\u0027, and swap out stream.\n\n    Add necessary functions to reconstruct loca and hmtx tables (the two\n    remaining tables that can have a transform).  `woff2_open_font\u0027 is\n    now capable of loading a woff2 font face.  This code may still need\n    more refining and better memory management.\n\n    * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total\n    (final) size of sfnt stream.\n\n    (WOFF2_InfoRec): Add header checksum value.\n\n    * src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index\u0027\n    parameter to its pointer so its value can be modified by\n    `woff2_open_font\u0027.\n\n    * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into\n    sfnt buffer at given position.\n\n    (write_buf): Add parameter `extend_buf\u0027 which allows caller to\n    specify whether buffer should be reallocated before copying data.\n\n    (WRITE_SFNT_BUF): Updated.\n\n    (pad4, store_loca, reconstruct_htmx): New functions.\n\n    (reconstruct_glyf): Calculate loca values and store them.\n\n    (reconstruct_font): Call `reconstruct_hmtx\u0027, write table record\n    entries, and calculate table checksums.  Also calculate font\n    checksum and update `checksumAdjustment\u0027 entry in head table.\n\n    (woff2_open_font): Open stream for sfnt buffer, swap out input\n    stream and return.\n\n    * src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept\n    pointer to `face_index\u0027.\n\ncommit e3953e5410eaeec7ae49dbda26be6e4b1ca5d26c\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Jul 13 03:14:17 2019 +0530\n\n    [woff2] Reconstruct transformed `glyf\u0027 table.\n\n    Reconstruct `glyf\u0027 table if it is transformed in the uncompressed\n    table stream.  Also add necessary structures, macros and functions.\n\n    * include/freetype/internal/wofftypes.h (WOFF2_InfoRec,\n    WOFF2_SubstreamRec, WOFF2_PointRec): New structures.\n    (WOFF2_TableRec): s/OrigLength/dst_length/.\n\n    * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use\n    `FT_SET_ERROR\u0027 to set implicit `error\u0027 variable.\n\n    (WRITE_SHORT): New macro.\n\n    (N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM,\n    COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to\n    refer to substreams of the transformed `glyf\u0027 tables.\n\n    (Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX\u0027\n    macros.\n\n    (with_sign, safe_int_addition): New functions to add sign to values\n    based on a flag and perform safe addition respectively.\n\n    (triplet_decode): Decode variable-length (flag, xCoordinate,\n    yCoordinate) triplet for a simple glyph.   See\n\n      https://www.w3.org/TR/WOFF2/#triplet_decoding\n\n    (store_points, compute_bbox, composteGlyph_size, reconstruct_glyf):\n    New functions.\n\n    (reconstruct_font): Call `reconstruct_glyf\u0027.\n\n    * src/sfnt/sfwoff2.h: Add required constants.\n\n    * src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h\u0027.\n\ncommit 81cf5326d59282265ccc0911050005a4b5d20a99\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Jul 6 18:05:18 2019 +0530\n\n    [woff2] Copy un-transformed tables to sfnt stream.\n\n    Copy un-transformed tables to the sfnt stream.\n\n    * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF): New macro.\n    (write_buf): New function.  Extend memory of `dst\u0027 buffer and copy\n    bytes from `src\u0027.\n    (compute_ULong_sum): New function.  Calculate checksum of table.\n    (reconstruct_font): Change `FT_Byte* sfnt\u0027 to `FT_Byte**\n    sfnt_bytes\u0027.  This has been done because we reallocate memory to\n    `sfnt\u0027 multiple times, which may change the pointer value of `sfnt\u0027.\n    This new pointer must be propogated back to the caller.  Same reason\n    for using a double pointer in `write_buf\u0027.\n\n    * src/sfnt/woff2tags.h (WOFF2_DEFAULT_MAX_SIZE): New macro used for\n    overflow checking.\n\ncommit 106bacf5022e8c7c8bdcd8407efd64fb6db182b4\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Fri Jul 5 01:09:52 2019 +0530\n\n    [woff2] Create stream for uncompressed buffer.\n\n    Uncompressed buffer is now an `FT_Stream\u0027.\n\n    Perform basic checks and start iterating over tables.\n\n    * src/sfnt/sfwoff2.c (stream_close, find_table, read_num_hmetrics):\n    New functions.\n    (reconstruct_font): Modify parameters and iterate over tables.\n    (woff2_open_font): Updated.\n\ncommit 18f6ff11f91e377d6296bad2ece8bb2be7dbb0e2\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Mon Jul 1 01:29:30 2019 +0530\n\n    [woff2] Handle TTCs and start reconstructing font.\n\n    We `handle\u0027 TTCs by modifying the `indices\u0027 array to point to only\n    those tables that are part of the requested `face_index\u0027.\n\n    Set and use `num_tables\u0027 in `WOFF2_TtcFont\u0027.\n\n    * src/sfnt/sfwoff2.c (reconstruct_font): New function.\n    (woff2_open_font): Start reconstruction of font.\n\ncommit 7a1639bc1ee3ab8d79bfd7b58270c2f3eb908269\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jun 30 20:01:20 2019 +0530\n\n    [woff2] Get known tags from function.\n\n    Change `KnownTags\u0027 to a function (`woff2_known_tags\u0027).  This avoids\n    introducing a global constant array.  This function returns the\n    specified index without *any* checks.  The caller must ensure that\n    `index\u0027 is within array limits.\n\n    * src/sfnt/sfwoff2.c (woff2_open_font): Change `KnownTags[...]\u0027\n    notation to `woff2_known_tags( ...  )\u0027.\n\n    * src/sfnt/woff2tags.c: Perform changes.\n\n    * src/sfnt/woff2tags.h: Update definitions.\n\ncommit c6c2c0b574c6a8b6f0a780516f96b1a98af8492e\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jun 30 19:32:27 2019 +0530\n\n    [woff2] Minor.\n\n    * src/sfnt/sfwoff2.c (woff2_uncompress): Add error message\n    (woff2_open_font): Free `uncompressed_buf\u0027.\n\ncommit fc65d45a62e1ffec6010cd17f22cfe59668e5592\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jun 30 04:31:04 2019 +0530\n\n    [woff2] Uncompress Brotli streams and `face_index\u0027 support.\n\n    WOFF2 compressed stream is now uncompressed if Brotli is available.\n    This data is stored in a separate buffer (uncompressed_buf) because\n    it does not contain direct table data.  Certain tables have\n    transformations applied to them, and they must be reconstructed\n    before we can write those tables to the SFNT stream.\n\n    `face_index\u0027 is now being passed as a parameter to\n    `woff2_open_font\u0027.\n\n    * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter\n    `face_instance_index\u0027.\n\n    * src/sfnt/sfwoff2.c (woff2_uncompress): New function.\n    (woff2_open_font): Call `woff2_uncompress\u0027.\n    (compute_first_table_offset): Fix return type.\n\n    * src/sfnt/sfwoff2.h (woff2_open_font): Modify declaration.\n\ncommit 732da8a4b7d3e28da5d89eeeafb7dbbe965f0870\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jun 30 04:15:55 2019 +0530\n\n    * builds/unix/configure.raw: Change argument name to `brotli\u0027.\n\ncommit 9443a1bc3e6cfa315db976ff80f6c5e91b12b387\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Fri Jun 28 01:01:17 2019 +0530\n\n    Add Brotli dependency and required checks.\n\n    Brotli is required for decompressing WOFF2 font directory streams.\n    The library is thus being added as an optional dependency for\n    FreeType.\n\n    * builds/unix/configure.raw: Add checks for `libbrotlidec\u0027.\n    (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated.\n\n    * devel/ftoption.h, include/freetype/config/ftoption.h\n    (FT_CONFIG_OPTION_USE_BROTLI): New macro.\n\ncommit 76c64f6ba1eb66cb983f38e03f39e179ceb74487\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Mon Jun 24 01:07:18 2019 +0530\n\n    [woff2] Write SFNT Offset table.\n\n    * src/sfnt/sfwoff2.c (WRITE_USHORT, WRITE_ULONG): New macros.\n    (compare_tags): New function.\n    (woff2_open_font): Implement it.\n\ncommit e09fe4cc790086c2282313aa968dfef4a4196f91\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Tue Jun 18 19:58:55 2019 +0530\n\n    * src/sfnt/sfwoff2.c: #undef macros.\n\ncommit e496cb2980978be5b4b7a3721135a9d6a5d68aa8\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jun 16 18:56:18 2019 +0530\n\n    [woff2] Read table and collection directory.\n\n    * include/freetype/internal/wofftypes.h (WOFF2_TtcFontRec): New\n    structure.\n    (WOFF2_HeaderRec): Add more fields.\n\n    * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128, ROUND4): New\n    macros.\n    (Read255UShort, CollectionHeaderSize, compute_first_table_offset):\n    New functions.\n    (ReadBase128): Use `FT_READ_BYTE\u0027.\n    (woff2_open_font): Add functionality to read table directory and\n    collection directory (if present).\n\ncommit 8c1e3fc339eeb66d2de526425ca21794161c0346\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jun 16 18:40:48 2019 +0530\n\n    [sfnt] Include `woff2tags.c\u0027 for building.\n\n    * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `woff2tags.c\u0027.\n\n    * src/sfnt/sfnt.c: Include `woff2tags.c\u0027.\n\ncommit b45c7dd5e2719da00a724bbb29fbc2b882060ade\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Jun 16 17:55:59 2019 +0530\n\n    [sfnt] Add WOFF2 constants.\n\n    Add constants required for WOFF2, and known table tags as defined in\n    the specification.  See\n\n      https://www.w3.org/TR/WOFF2/#table_dir_format\n\n    for details.\n\n    * src/sfnt/woff2tags.c, src/sfnt/woff2tags.h: New files.\n\ncommit 2fa573c1b038a32b7c6f5c76477f9b66a47cc425\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Wed Jun 12 00:21:20 2019 +0530\n\n    [sfnt] Read WOFF 2 header.\n\n    Check for WOFF2 tag, call `woff2_open_font\u0027, and implement it to read\n    header according to specification.\n\n    * include/freetype/internal/fttrace.h: Add `sfwoff2.c\u0027.\n\n    * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `sfwoff2.c\u0027.\n\n    * src/sfnt/sfnt.c: Include `sfwoff2.c\u0027.\n\n    * src/sfnt/sfobjs.c (sfnt_open_font): Check for `wOF2\u0027 tag and call\n    `woff2_open_font\u0027.\n\n    * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h: New files.\n\ncommit 83dba0e9ec073d26e1a6febe62cc12e9dca2583c\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Tue Jun 11 23:40:19 2019 +0530\n\n    Add structures for WOFF2.\n\n    Add structures and macro for WOFF 2 header and table directory.\n\n    * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec,\n    WOFF2_TableRec_): New structures.\n\n    * include/freetype/tttags.h (TTAG_wOF2): New macro.\n\ncommit 9adc3b35f1a6909c1785c42ae7b8cf369634b225\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Aug 26 20:36:19 2019 +0200\n\n    * src/psaux/cffdecode.c (cff_operator_seac): Fix numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d16470\n\ncommit 7d1d3b9a0e9310376a559ad2eac8a9dc4c60ce59\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Aug 26 09:08:56 2019 +0200\n\n    [type1] Fix `FT_Get_Var_Axis_Flags\u0027 (#56804).\n\n    * src/type1/t1load.c (T1_Get_MM_Var): Allocate space for axis flags.\n    Also remove redundant assignment.\n\ncommit 734d60f63cfa27f9b337ddbb80adb9edd60475bf\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 6 20:38:17 2019 +0200\n\n    Another minor documentation improvement.\n\ncommit ad3443c93121c59181fc4b46c5179d0d00bfcc4e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Aug 5 10:00:41 2019 +0200\n\n    Minor documentation improvement.\n\ncommit 12af46b649fdb946bacf150428e5cdfc3470a7ca\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jul 23 22:38:30 2019 -0400\n\n    * src/base/ftbbox.c (cubic_peak): Sanitize left shift (#56586).\n\ncommit d5522ac0603a15bd87f795d36dc218681befe022\nAuthor: Weiyi Wu \u003cw1w2y3@gmail.com\u003e\nDate:   Mon Jul 22 09:49:22 2019 +0200\n\n    * src/cid/cidload.c (cid_hex_to_binary): Fix typo (#56653).\n\ncommit b110acba9e6f7e40314f0da5d249cb3cb3beeab8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jul 12 11:36:12 2019 +0200\n\n    [sfnt, winfonts] Avoid memory leaks in case of error (#56587).\n\n    * src/sfnt/sfwoff.c (woff_open_font): Call `FT_FRAME_EXIT\u0027 in case\n    of error.\n\n    * src/winfonts/winfnt.c (fnt_face_get_dll_font): Ditto.\n\ncommit 12e4307dc7b48c9a4a4fc3ac6c32220874ab18ec\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Fri Jul 12 10:48:10 2019 +0200\n\n    Properly handle phantom points for variation fonts (#56601).\n\n    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Scale phantom\n    points if HVAR and/or VVAR is present.\n\ncommit 05439f5cc69eaa3deaf3db52a7999af09a2c293a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jul 4 14:28:04 2019 +0200\n\n    [psaux] (2/2) Handle fonts that use SEAC for ligatures (#56580).\n\n    The same as previous commit but for the old engine.\n\n    * src/psaux/t1decode.c (t1operator_seac): Implement it.\n\ncommit f2b64583cb2587373e126b06d8da9ac97b287681\nAuthor: Chris Liddell \u003cchris.liddell@artifex.com\u003e\nDate:   Thu Jul 4 14:04:52 2019 +0200\n\n    [psaux] (1/2) Handle fonts that use SEAC for ligatures (#56580).\n\n    As originally intended, a Type 1 SEAC charstring would be used for\n    an accented glyph (like `acaron\u0027 or `uumlaut\u0027), where the advance\n    width of the SEAC glyph is the same as that of the `base\u0027 glyph\n    (like `a\u0027 or `u\u0027).  In this case it is not uncommon for the SEAC\n    glyph to not use an (H)SBW opcode of its own but to rely on the\n    value from the base glyph.\n\n    However, out-of-spec fonts also use SEAC glyphs for ligatures (like\n    `oe\u0027 or `fi\u0027), and in those cases the overall advance width is\n    greater than that of the `base\u0027 glyph.  For this reason we have to\n    allow that the SEAC glyph can have an (H)SBW value of its own, and\n    if it has, retain this value, rather than the one from the base\n    glyph.\n\n    * src/psaux/psintrp.c (cf2_interpT2CharString) \u003ccf2_escSEAC\u003e:\n    Implement it.\n\ncommit 8cf046c38d4c6ada76ba070562beff0d5041f795\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jul 1 13:54:54 2019 +0200\n\n    * Version 2.10.1 released.\n    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Tag sources with `VER-2-10-1\u0027.\n\n    * docs/VERSION.TXT: Add entry for version 2.10.1.\n\n    * README, Jamfile (RefDoc), src/base/ftver.rc,\n    builds/windows/vc2010/freetype.vcxproj,\n    builds/windows/vc2010/index.html,\n    builds/windows/visualc/freetype.dsp,\n    builds/windows/visualc/freetype.vcproj,\n    builds/windows/visualc/index.html,\n    builds/windows/visualce/freetype.dsp,\n    builds/windows/visualce/freetype.vcproj,\n    builds/windows/visualce/index.html,\n    builds/wince/vc2005-ce/freetype.vcproj,\n    builds/wince/vc2005-ce/index.html,\n    builds/wince/vc2008-ce/freetype.vcproj,\n    builds/wince/vc2008-ce/index.html: s/2.10.0/2.10.1/, s/2100/2101/.\n\n    * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.\n\n    * builds/unix/configure.raw (version_info): Set to 23:1:17.\n    * CMakeLists.txt (VERSION_PATCH): Set to 1.\n\n    * include/freetype/fterrors.h (FT_Error_String): Fix C++ compilation.\n\ncommit 7b1c7585d7ab929d9b29932d6697a22149162c13\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Jun 26 20:18:00 2019 -0400\n\n    * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Fix inequality.\n\n    Reported by Armin Hasitzka.\n\ncommit 81445c034aca36040b6311dc71a2cbed9548b262\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Jun 22 22:54:57 2019 -0400\n\n    Doc polishing.\n\ncommit a41e560b213d72f36c37b7b25960839de7d29fd0\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Jun 19 22:29:55 2019 -0400\n\n    Minor.\n\ncommit 1e20a37f641d3b3e5e92b9a49d08553bc7bac5de\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jun 19 16:45:39 2019 +0200\n\n    docs/CHANGES: Updated.\n\ncommit 983a87c6ece8d46e33bf7f6ff68f61b0d7a133d2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 16 15:58:21 2019 +0200\n\n    * src/tools/apinames.c: Formatting, minor edits.\n\ncommit 47ca5cb69d26b606b51292a90d025688d4dc5e4e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 16 15:32:11 2019 +0200\n\n    [autofit] Disable hinting if no blue zones are available (#56450).\n\n    * src/autofit/afglobal.c (af_face_global_get_metrics): Start again\n    (with dummy hinter module) if no blue zones are present.\n\n    * src/autofit/aflatin.c (af_latin_metrics_init_blues): Change\n    signature to return error code.\n    If no blue zones are found, update `glyph_styles\u0027 array to hold\n    AF_STYLE_NONE_DFLT instead of the current style.\n    (af_latin_metrics_init): Return internal error code if no blue zones\n    are found.\n\ncommit 82e4090431e07825e80add74910e5135bb1f3b90\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 16 10:09:17 2019 +0200\n\n    Towards better VMS support.\n\n    More to come.\n\n    * builds/vms/LIBS.OPT_IA64, builds/vms/_LINK.OPT_IA64,\n    builds/vms/vmslib.dat: New files provided by Jouk Jansen\n    \u003cjoukj@hrem.nano.tudelft.nl\u003e.\n\n    * builds/vms/ftconfig.h: Update, also from Jouk.\n\ncommit 3736b28af9d93d74d3d4c269897a80d01dfbfe46\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 13 13:45:05 2019 +0200\n\n    * src/autofit/aflatin.c (af_latin_metrics_init_widths): Minor.\n\ncommit 8acd9800edf581428e5a227022545b700e7ab130\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 13 11:12:26 2019 +0200\n\n    Add memory access macro summary.\n\ncommit e7ac9288acde8ad21c96ad9c448ad2b2cfc9fe6a\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Jun 13 00:17:36 2019 -0400\n\n    [smooth] Restore the span buffering for direct mode only.\n\n    The buffer size FT_MAX_GRAY_SPANS is set to 10 spans, which should be\n    enough to cover the entire scanline for simple glyphs in most cases:\n    each slightly slanted edge needs up to two spans, plus a filling span\n    in-between.  This is not new, we used to do it before cb4388783cecc.\n\n    * src/smooth/ftgrays.c (gray_TWorker): Add `spans\u0027 and `num_spans\u0027.\n    (gray_hline, gray_sweep): Implement the span buffering.\n    (gray_raster_render): Use negative `num_spans\u0027 to avoid the direct\n    mode.\n\ncommit 59e0c6f92e142bb8b5c13a3303a1d7428e09a9bc\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Jun 12 22:30:21 2019 -0400\n\n    * include/freetype/ftmodapi.h (FT_DebugHook_Func): Return error.\n\n    Fix a warning by adding a return value as in `TT_RunIns\u0027,\n    which should not be a compatibility issue.\n\ncommit bdac4cbe6fb77108a753be859fe73579c5cddc97\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Jun 12 21:58:35 2019 -0400\n\n    Rendering considerations.\n\ncommit d1b16325e27b766c27cc9f569c0aa334f1ecb732\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jun 11 21:43:47 2019 -0400\n\n    * src/truetype/ttobjs.c (tt_check_trickyness_family): Add `const\u0027.\n\ncommit 6a92b1fadde26477a9179cbea988b3e04bd2decc\nAuthor: Moazin Khatti \u003cmoazinkhatri@gmail.com\u003e\nDate:   Tue Jun 11 21:29:52 2019 +0500\n\n    [gzip] Add support for `gzip\u0027 encoded header (#9812).\n\ncommit 78c02bc110b6a605c41487d8c26ae18960df251b\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Jun 10 23:09:49 2019 -0400\n\n    [type1,type42] Use `const\u0027 for string literals.\n\n    * include/freetype/internal/psaux.h (PS_Table_FuncsRec): Updated.\n    * include/freetype/internal/t1types.h (T1_EncodingRec): Updated.\n    * src/psaux/psobjs.[ch] (ps_table_add): Updated.\n    * src/type1/t1load.c (T1_Open_Face, parse_encoding): Updated.\n    * src/type42/t42objs.c (T42_Open_Face): Updated.\n    * src/type42/t42parse.c (t42_parse_encoding): Updated.\n\n    * src/cff/cffobjs.c (cff_face_init): Minor.\n\ncommit afaf3f1de925ade18d7fc2a202f28922cd5e91ff\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Jun 10 22:27:39 2019 -0400\n\n    [bdf,pcf] Use `const\u0027 for string literals.\n\n    * src/bdf/bdf.h (bdf_property_t): Updated `name\u0027.\n    * src/bdf/bdflib.c (_bdf_list_split,bdf_create_property,\n    _bdf_add_property,_bdf_ato*): Updated.\n    * src/bdf/bdfdrivr.c (bdf_interpret_style): Updated.\n    * src/pcf/pcfread.c (pcf_intrpret_style): Ditto.\n\ncommit 7fde521bd918d2299cce80c306ecc2cac9f51303\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 10 15:37:33 2019 +0200\n\n    Update CHANGES file.\n\ncommit 711b593e4b589fbd726a4962ad492fc4e416355d\nAuthor: Philip Race \u003cphilip.race@oracle.com\u003e\nDate:   Fri Jun 7 09:15:28 2019 +0200\n\n    * src/base/ftinit.c (FT_Set_Default_Properties): Fix crash.\n\n    Terminate loop at end of environment.\n\ncommit c949ab0757a2514cd3a37b3e1e8390fd662a025b\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jun 4 20:17:05 2019 -0400\n\n    Minor.\n\ncommit e13c1f46dc1afb1b2287849be5fa74ef70e0607b\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri May 31 22:31:47 2019 -0400\n\n    Solidify VC2005 builds.\n\n    * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly\n    declare `_BitScanReverse\u0027 intrinsic.\n    * builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics.\n\ncommit 7b275a5af161c71a169dcec65f2f6998c9f2d6d5\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Thu May 30 23:57:34 2019 +0530\n\n    [sfnt] Separate WOFF sources and headers.\n\n    Move WOFF sources and headers to separate files.\n\n    * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff.c,\n    src/sfnt/sfwoff.h: New files.\n\n    * include/freetype/internal/fttrace.h: Register `sfwoff.c\u0027.\n\n    * include/freetype/internal/internal.h: Define\n    FT_INTERNAL_WOFF_TYPES_H.\n\n    * include/freetype/internal/sfnt.h: Include FT_INTERNAL_WOFF_TYPES_H.\n\n    * include/freetype/internal/tttypes.h: Move out WOFF structures.\n\n    * src/sfnt/rules.mk: Add `sfwoff.c\u0027.\n\n    * src/sfnt/sfnt.c: Include `sfwoff.c\u0027.\n\n    * src/sfnt/sfobjs.c: Include `sfwoff.h\u0027, move out WOFF sources.\n\ncommit f0de218cedc693f3dee62fbf045cdd39ac03d12d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 30 08:43:45 2019 +0200\n\n    [base] Fix `make multi\u0027.\n\n    Reported by Nikhil.\n\n    * src/base/fterrors.c: Include FT_INTERNAL_DEBUG_H.\n\ncommit f37083edf0ef562fb8bae0dfc6f916b1037f71fe\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Wed May 29 08:15:38 2019 +0200\n\n    [truetype] Fix copy-and-paste error (#56409).\n\n    * src/truetype/ttgload.c (load_truetype_glyph): Use correct indices\n    into `unrounded\u0027 array for phantom points.\n\ncommit 49079ce297c1698139456d0d3664bf32674d0ee5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed May 29 08:08:53 2019 +0200\n\n    [truetype] Fix 32bit builds (#56404).\n\n    Patch suggested by Ben Wagner \u003cbungeman@google.com\u003e.\n\n    * src/truetype/ttgxvar.c (FT_fixedToInt, FT_fixedToFdot6): Remove\n    harmful cast to unsigned type.\n\ncommit 9159128a9297710071e28b24e3cbd29b7a475ebc\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed May 29 07:45:54 2019 +0200\n\n    Silence gcc 7\u0027s fall-through warnings in `switch\u0027 blocks.\n\n    Instead of an intentionally missing `break\u0027 statement there must be a\n    comment line containing `fall through\u0027 (and nothing else) right before the\n    next `case\u0027 statement.\n\n    See\n\n      https://stackoverflow.com/questions/45129741/gcc-7-wimplicit-fallthrough-warnings-and-portable-way-to-clear-them\n\ncommit 86d997e5b1c401db06114b51d44d1bef6c7fe994\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Sun May 26 09:37:41 2019 -0400\n\n    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Improve accuracy.\n\ncommit e55f969869f4afa55259058c8ea78199abf24a59\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat May 25 20:56:54 2019 +0530\n\n    * src/sfnt/sfobjs.h: Minor.\n\ncommit 306d2f6ccb5a05eb54c8de7ef07fc5b46f1649a1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 23 14:41:57 2019 +0200\n\n    [truetype] Draw glyphs without deltas in variation font (#56374).\n\n    * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Always fill\n    `unrounded\u0027 array.\n\ncommit c3be6f06b70bd6636cfdef0e3cf892151d6c7a1d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 21 11:23:36 2019 +0200\n\n    src/truetype/ttinterp.c: Give order of operations for some instructions.\n\ncommit 262fce445a50ee5cc50f177c61b0b4889cdfb6e7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 21 09:58:51 2019 +0200\n\n    * src/truetype/ttinterp.c (opcode_name): Improve mnemonics.\n\ncommit 8eafa52830713f1ae5d8dc264c293d2b2055e8a8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 21 09:57:38 2019 +0200\n\n    ttinterp.c: Improve documentation of engine compensation.\n\ncommit 141e3173dbddf809ee139d8775c06fac82288243\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon May 20 23:09:59 2019 -0400\n\n    Rendering considerations.\n\ncommit b0522701f890372ff9f3d921cf212bccd1f64400\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 16 12:52:57 2019 +0200\n\n    [truetype] Actually scale varied CVT values.\n\n    Up to now, only the unscaled CVT values were varied; in other words,\n    the `CVAR\u0027 data was never used for bytecode hinting.\n\n    * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary\n    function.\n    (tt_face_vary_cvt): Use it to trigger rescaling of CVT values.\n\ncommit 37580053b491b69284988ed25cbbf6e884151eb0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 16 12:15:54 2019 +0200\n\n    [truetype] Use 26.6 format for storing unscaled CVT values.\n\n    If `CVAR\u0027 data is applied to variation fonts, fractional values are\n    possible.\n\n    * include/freetype/internal/tttypes.h (TT_FaceRec): Change type of\n    `cvt\u0027 from `FT_Short\u0027 to `FT_Int32\u0027.\n\n    * src/truetype/ttgxvar.c (FT_fdot6ToFixed): New macro.\n    (tt_face_vary_cvt): Use it to update code to 26.6 format.\n\n    * src/truetype/ttobjs.c (tt_size_run_prep): Update code to 26.6\n    format.\n\n    * src/truetype/ttpload.c (tt_face_load_cvt): Stora data in 26.6\n    format.\n\ncommit ac335cd5865fcae031689e23c470907245aad4a0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 16 10:15:53 2019 +0200\n\n    * src/truetype/ttgload.c (load_truetype_glyph): Init `unrounded\u0027.\n\n    This fixes linear advance width values for spacing glyphs.  Bug\n    introduced 2019-05-09.\n\ncommit 535b687e58960f29c2da936c486deb3065d32250\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 16 09:55:16 2019 +0200\n\n    [truetype] Avoid code duplication.\n\n    * src/truetype/ttobjs.c (tt_size_run_prep): Scale CVT values in this\n    function.\n    (tt_size_ready_bytecode): Updated.\n    * src/truetype/ttgload.c (tt_loader_init): Updated.\n\ncommit 787db7c04815acf9ef25ec262be675a632cdd95e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon May 13 22:22:57 2019 +0200\n\n    * vms_make.com: Updated.  Handle `bzip2\u0027 directory, too.\n\ncommit 03f3f8ab9e5bab63d925c7369a78d59b831896d7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon May 13 06:53:19 2019 +0200\n\n    * src/psaux/psfont.c (cf2_font_setup): Fix compiler warning.\n\ncommit 94ebc248653ede802b2bfbf6219e17f487fab3ff\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun May 12 21:05:36 2019 +0200\n\n    [truetype] Doh.  Fix last commit to make it work.\n\n    Very embarassing :-)\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d14701\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d14705\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d14710\n\n    * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): Move up and add\n    argument; update all callers.\n    (TT_Process_Simple_Glyph): Use it.  The `unrounded\u0027 array is active\n    for variation fonts only, thus also enclose related code with\n    `#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT ...  #endif\u0027 where\n    necessary.\n    Revert commit a113e5d from 2019-05-09, and don\u0027t use `extra_points2\u0027\n    but allocate a temporary array.\n    Speed up the scaling of the `unrounded\u0027 array.\n\n    * src/truetype/ttgxvar.c (FT_fixedToInt, FT_FixedToFdot6): Fix type\n    conversions and rounding.  The unsigned type must have more or equal\n    bits to the signed type.\n\ncommit 1178227b39a4eeecbefad226d4a753b345a16eb1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat May 11 09:29:19 2019 +0200\n\n    [truetype] Increase precision of font variation (#54371).\n\n    This patch make FreeType use font units in 26.6 format internally\n    instead of integers.\n\n    * src/truetype/ttgxvar.c (FT_fixedToFdot6): New macro.\n    (TT_Vary_Apply_Glyph_Deltas): Add argument to output unrounded font\n    coordinates.\n    * src/truetype/ttgxvar.h: Updated.\n\n    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Use\n    `extra_points2\u0027 array to temporarily hold unrounded point\n    coordinates; use them to compute scaled coordinates and linear\n    advance width and height.\n    (load_truetype_code): Adjust similarly.\n\ncommit a113e5df0cc31425e7bb4135cd297305db33d0ed\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 9 11:37:58 2019 +0200\n\n    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Minor.\n\ncommit bc3b5281ed08d1cae3a2d881d2c72d0e98e57c05\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed May 8 22:08:40 2019 -0400\n\n    [smooth] Faster fractions.\n\n    * src/smooth/ftgrays.c (SUBPIXELS): Replace with...\n    (FRACT): A fractional coordinate macro to use in...\n    (gray_render_line, gray_render_scanline): ... here.\n\ncommit 0c6f61ab12963c2a594e1b264388820599050f0e\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue May 7 19:07:11 2019 -0400\n\n    * src/raster/ftraster.c (Draw_Sweep): Unbreak.\n\ncommit ea7e20fba62717319e088e9e0d776c3b4473eda8\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue May 7 07:00:38 2019 -0400\n\n    * src/raster/ftraster.c: Clean-ups.\n\ncommit dc39f76cb7aecbefa3a601dd19e498eb903042fd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 7 10:09:55 2019 +0200\n\n    * src/truetype/ttgxvar.c: More use of `FT_fdot14ToFixed\u0027.\n\ncommit 81725773800029731617b95cee57cd32a8b46756\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat May 4 08:11:20 2019 -0400\n\n    * src/smooth/ftgrays.c (gray_render_line): Small shortcut.\n\ncommit 7b841047207c40b70590ab59c11be898a41504c2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat May 4 08:13:22 2019 +0200\n\n    Various clang 8.0 static analyzer fixes.\n\n    Reported by Sender Ghost \u003clightside@gmx.com\u003e.\n\n    * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Catch a corner\n    case where `edge-\u003efirst\u0027 could be NULL.\n\n    * src/pfr/pfrobjs.c (pfr_slot_load): Remove unnecessary test of\n    `size\u0027.\n\n    * src/raster/ftraster.c (Draw_Sweep): Catch a corner case where\n    `draw_right\u0027 might be NULL.\n\n    * src/sfnt/ttmtx.c (tt_face_get_metrics): Fix limit test for\n    `aadvance\u0027.\n    Ensure `abearing\u0027 always hold a meaningful result.\n\n    * src/truetype/ttgload.c (load_truetype_glyph): Ensure `subglyph\u0027 is\n    not NULL before accessing it.\n    * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Remove unnecessary\n    test of `namedstyle\u0027.\n\n    * src/type42/t42parse.c (t42_parser_done): Ensure\n    `parser-\u003eroot.funcs.done\u0027 is not NULL before accessing it.\n\ncommit 300458eb949f71a486710b69bb6b704139765b26\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri May 3 23:16:42 2019 -0400\n\n    Miscellaneous macro updates.\n\n    * src/base/ftoutln.c (SCALED): Updated.\n    * src/smooth/ftgrays.c (SCALED): Ditto.\n    (FLOOR, ROUND, CEILING): Removed.\n    * src/psaux/psfixed.h (cf2_fracToFixed): Updated.\n\ncommit 65f9516bc7554c15d76ceb303ff110c84e61a55f\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu May 2 23:06:55 2019 -0400\n\n    Tweak LCD filtering.\n\n    * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):\n    Choose direction from bitmap\u0027s pixel_mode.\n    * include/freetype/internal/ftobjs.c (FT_Bitmap_LcdFilterFunc):\n    Updated.\n    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.\n\ncommit 65e4925af4070ef80798b8d479947aec7a0fbfc6\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 2 07:21:34 2019 +0200\n\n    * vms_make.com: Updated (#56253).\n\n    Remove no longer existing directories (`autohint\u0027, `otlayout\u0027).\n    Update used base extensions.\n    Activate `autofit\u0027 module.\n    Add `gxvalid\u0027 module.\n    Update copyright notices.\n\ncommit 2ea511eed81770f423544525adebf7f954b8be93\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Apr 29 22:49:15 2019 -0400\n\n    [smooth] Simplify cubic Bézier flattening.\n\n    The previous implementation is correct but it is too complex.\n    The revised algorithm is based on the fact that each split moves\n    the control points closer to the trisection points on the chord.\n    The corresponding distances are good surrogates for the curve\n    deviation from the straight line.\n\n    This cubic flattening algorithm is somewhat similar to the conic\n    algorithm based the distance from the control point to the middle of\n    the chord.  The cubic distances, however, decrease less predictably\n    but are easy enough to calculate on each step.\n\n    * src/smooth/ftgrays.c (gray_render_cubic): Replace the split\n    condition.\n\ncommit 80475edead39eb3e7305ebfd43c3fb03a04d372f\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Apr 26 21:53:00 2019 -0400\n\n    [smooth] Bithacks and cosmetics.\n\n    * src/smooth/ftgrays.c (gray_record_cell, gray_set_cell, gray_hline,\n    gray_render_conic, gray_convert_glyph_inner): Updated.\n\ncommit 7a81b63abc2b3da0d7f0950f69377d2b3f54b0fb\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Apr 25 22:06:33 2019 -0400\n\n    Optimize Bézier bisections.\n\n    * src/raster/ftraster.c (Split_Conic, Split_Cubic): Use shifts and\n    refactor.\n    * src/smooth/ftgrays.c (gray_split_conic, gray_split_cubic): Ditto.\n    * src/base/ftstroke.c (ft_conic_split, ft_cubic_split): Ditto.\n    * src/base/ftbbox.c (cubic_peak): Use shifts.\n\ncommit 432bb50ff539e7672723dc9161e44046710a1334\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Apr 23 21:51:42 2019 -0400\n\n    Clarify docs.\n\ncommit 6abce2c2b04a14bd711d5d0fee3ba23e9612a747\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Apr 23 06:52:07 2019 +0200\n\n    * src/sfnt/ttcmap.c (tt_cmap12_next): Remove dead code.\n\n    Found by clang 8.0\u0027s static analyzer and reported by Sender Ghost\n    \u003clightside@gmx.com\u003e.\n\ncommit 4166c453601e856fa61e8994085f240d8771e980\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Apr 23 06:49:56 2019 +0200\n\n    [base] Fix thinko in previous commit.\n\n    * src/base/ftbitmap.c (FT_Bitmap_Blend): Check final width, not\n    target pitch.\n\n    Problem reported by Sender Ghost \u003clightside@gmx.com\u003e.\n\ncommit 9f6ed10545b1009cce86289f793165dd7e4b7c9e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Apr 22 08:10:56 2019 +0200\n\n    * src/base/ftbitmap.c (FT_Bitmap_Blend): Check target pitch.\n\n    Problem reported by Sender Ghost \u003clightside@gmx.com\u003e.\n\ncommit af400438b7da3f07afadc3a5b3a6b982b2bdb84e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Apr 22 07:41:35 2019 +0200\n\n    Fix return value of `FT_Set_Named_Instance\u0027 (#56186).\n\n    * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Correctly handle\n    internal return value -1 of `TT_Set_Var_Design\u0027.\n\ncommit d74106e2333fefbb015ccf2018ece01c01b554fa\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Apr 19 07:07:01 2019 +0200\n\n    Typo.\n\ncommit c149f7397e484c97f45fb75fa1c7fdda2fc646cd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Apr 17 07:49:17 2019 +0200\n\n    [pcf] Fix handling of undefined glyph (#56067).\n\n    This commit fixes the changes from 2018-07-21, which broke charmap\n    iteration.  We now add the default character as a new glyph with\n    index 0, thus increasing the number of glyphs by one (as before).\n\n    * src/pcf/pcfread.c (pcf_get_metrics): Adjust to new artificial\n    glyph with index 0.\n    Limit number of elements to 65534.\n    (pcf_get_bitmaps): Ditto.\n    Unify two loops into one; this avoids allocation of an intermediate\n    array.\n    (pcf_get_encodings): Don\u0027t flip indices but copy glyph metrics of\n    default character to index 0.\n    Also handle invalid default character.\n\n    * docs/CHANGES: Updated.\n\ncommit ebe375081289844e580242fe7956fa2082ab89b6\nAuthor: Minmin Gong \u003cgongminmin@msn.com\u003e\nDate:   Mon Apr 15 10:46:19 2019 +0200\n\n    * CMakeLists.txt: Avoid rewriting of unchanged configuration files.\n\n    Reported as\n\n      https://savannah.nongnu.org/patch/index.php?9755\n\ncommit 8837ac26d00f5a433ec9fd8bc08446b6df4c5bd5\nAuthor: JDG \u003cJonathanG@iQmetrix.com\u003e\nDate:   Mon Apr 15 10:10:38 2019 +0200\n\n    * src/tools/apinames.c (main): Fix error message.\n\n    Reported as\n\n      https://savannah.nongnu.org/patch/?9796\n\ncommit 01aed76c6815842631c87f43ec77b9870c4a1884\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Apr 14 09:39:28 2019 +0200\n\n    Minor.\n\ncommit 9e9bc9dadedd1dfa4023ba2124dba5afcf4f835f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Apr 12 06:19:25 2019 +0200\n\n    Split off ChangeLog.29.\n\ncommit 1f271751a39e5bc9c639adc213183ed5e58a9401\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Apr 11 23:48:21 2019 -0400\n\n    [smooth] Fix segfault in direct mode (#56092).\n\n    * src/base/ftoutln.c (FT_Outline_Render): Set missing clip_box for\n    direct mode.\n    * src/smooth/ftgrays.c (gray_raster_render): Use it.\n\ncommit f0384d5fb09d6a079614ad79fadf52cce5daba83\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Apr 9 11:01:24 2019 +0200\n\n    Minor.\n\ncommit 885b4c2475f3272afd4115c97c150266cd815406\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Apr 6 07:07:37 2019 +0200\n\n    * src/sfnt/ttcmap.c (tt_get_glyph_name): Pacify compiler (#56061).\n\n    This is for Visual Studio 2019 on ARM.\n\ncommit 74e9ca6d2ef5b0010d9ac8f2763dcf16163f40ce\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Apr 6 06:51:08 2019 +0200\n\n    For distribution, replace `.tar.bz2\u0027 with `.tar.xz\u0027 bundles.\n\n    * builds/toplevel.mk (build): Do it.\n\n    * README, docs/CHANGES, docs/release: Updated.\n\ncommit 3ad1c93ac1b111b76dc671181b1deab252cc1f1e\nAuthor: Antony Lee \u003canntzer.lee@gmail.com\u003e\nDate:   Sat Apr 6 06:37:42 2019 +0200\n\n    Make `glyph_name\u0027 parameter to `FT_Get_Name_Index\u0027 a `const\u0027.\n\n    * include/freetype/freetype.h (FT_Get_Name_Index),\n    include/freetype/internal/ftobjs.h (FT_Face_GetGlyphNameIndexFunc),\n    include/freetype/internal/services/svgldict.h\n    (FT_GlyphDict_NameIndexFunc), src/base/ftobjs.c (FT_Get_Name_Index),\n    src/cff/cffdrivr.c (cff_get_name_index), src/sfnt/sfdriver.c\n    (sfnt_get_name_index), src/type1/t1driver.c (t1_get_name_index),\n    src/type42/t42drivr.c (t42_get_name_index): Add `const\u0027 to second\n    argument.\n\ncommit 6986ddac1ece9404c9b640a512cbd99534205fda\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Sun Mar 31 11:08:49 2019 +0100\n\n    [cff] Fix boundary checks.\n\n    642bc7590c701c8cd35a9f60fa899cfa518b17ff introduced dynamically\n    allocated memory when parsing CFF files with the \"old\" engine.  Bounds\n    checks have never been updated, however, leading to pointless\n    comparisons of pointers in some cases.  This commit presents a\n    solution for bounds checks in the CFF module with an extended logic\n    for the \"old\" engine while staying as concise as possible for the\n    \"new\" one.\n\n    * src/cff/cffparse.h: Introduce the struct `CFF_T2_StringRec\u0027 and\n    the additional field `t2_strings\u0027 within `CFF_ParserRec\u0027.\n\n    * src/cff/cffparse.c (cff_parser_within_limits): Move all boundary\n    checks into this new function and update the rest of `cffparse.c\u0027 to\n    use it.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d12137\n\ncommit fdb10e8b50cfff7be2ec2b77cb4a695f3d77643c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Mar 21 13:51:59 2019 +0100\n\n    Improve link.\n\ncommit df266d3e6b657c6220ae1a13b516f03d1a307d21\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Mar 20 07:04:06 2019 +0100\n\n    [autofit] Fix Mongolian blue zone characters.\n\n    * src/autofit/afblue.dat: Use U+200D (ZERO-WIDTH JOINER) characters\n    to get medial forms for some Mongolian characters.\n    * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.\n\ncommit dde03eec37579ef86ca6a9e04bf290bc85f785ad\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Mar 19 10:50:38 2019 +0100\n\n    [autofit] Add support for Mongolian script.\n\n    As a de-facto standard, layouts using this script are constructed\n    horizontally line by line, then the lines are rotated clockwise for\n    vertical display.\n\n    * src/autofit/afblue.dat: Add blue zone data for Mongolian.\n    * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.\n\n    * src/autofit/afscript.h: Add Mongolian standard characters.\n\n    * src/autofit/afranges.c, src/autofit/afstyles.h: Add Mongolian\n    data.\n\ncommit fbbcf50367403a6316a013b51690071198962920\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Mar 15 07:27:02 2019 +0100\n\n    * Version 2.10.0 released.\n    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Tag sources with `VER-2-10-0\u0027.\n\n    * docs/VERSION.TXT: Add entry for version 2.10.0.\n    * docs/CHANGES: Updated.\n\n    * README, Jamfile (RefDoc), src/base/ftver.rc,\n    builds/windows/vc2010/freetype.vcxproj,\n    builds/windows/vc2010/index.html,\n    builds/windows/visualc/freetype.dsp,\n    builds/windows/visualc/freetype.vcproj,\n    builds/windows/visualc/index.html,\n    builds/windows/visualce/freetype.dsp,\n    builds/windows/visualce/freetype.vcproj,\n    builds/windows/visualce/index.html,\n    builds/wince/vc2005-ce/freetype.vcproj,\n    builds/wince/vc2005-ce/index.html,\n    builds/wince/vc2008-ce/freetype.vcproj,\n    builds/wince/vc2008-ce/index.html: s/2.9.1/2.10.0/, s/291/2100/.\n\n    * include/freetype/freetype.h (FREETYPE_MINOR): Set to 10.\n    (FREETYPE_PATCH): Set to 0.\n\n    * builds/unix/configure.raw (version_info): Set to 23:0:17.\n    * CMakeLists.txt (VERSION_MINOR): Set to 10.\n    (VERSION_PATCH): Set to 0.\n\n    * builds/toplevel.mk (version, winversion): Since the minor version\n    number has two digits now, never omit the patch number.  We would\n    get ambiguous zip file names otherwise.\n    (dist): Remove remnants of `docmaker\u0027 tool.\n    (do-dist): Remove unused intermediate files.\n\n    * src/cff/cffparse.c (destrict_c2s_item): Guard function with\n    CFF_CONFIG_OPTION_OLD_ENGINE macro.\n\ncommit 4e64d9d3daa6356da8ad30b8303402f7dd4a30d2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Mar 8 00:13:08 2019 +0100\n\n    CHANGES: Minor fixes.\n\ncommit 2f4b740ce435bc1ad5ef8570bb91ab7cd5682720\nAuthor: Andrei Alexeyev \u003c0x416b617269@gmail.com\u003e\nDate:   Thu Mar 7 09:42:25 2019 +0100\n\n    Fix invalid function pointer casts.\n\n    This change should allow Freetype to work on WASM/Emscripten without\n    needing `-s EMULATE_FUNCTION_POINTER_CASTS\u003d1\u0027.\n\n    * src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.\n\n    * src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,\n    parse_expansion_factor, parse_font_name): Return `void\u0027, not\n    `FT_Error\u0027.\n\n    * include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):\n    Fix signature.\n\ncommit 31757f969fba60d75404f31e8f1168bef5011770\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Mar 5 11:35:03 2019 +0100\n\n    [base] Handle numeric overflow (#55827).\n\n    * src/base/ftglyph.c (FT_Glyph_Get_CBox): Use `FT_PIX_CEIL_LONG\u0027.\n\ncommit 6a4718a3a0584c976b10d4e3a2cc58dc5f4a8242\nAuthor: Sebastian Rasmussen \u003csebras@gmail.com\u003e\nDate:   Tue Mar 5 17:25:19 2019 +0800\n\n    Fix use of uninitialized memory.\n\n    * src/psaux/psintrp.c (cf2_interpT2CharString): The call to\n    `cf2_arrstack_setCount\u0027 may fail because the allocator ran out of\n    memory.  When this happens the stack is still written to before the\n    error condition is checked.  This means that FreeType writes outside\n    of allocated memory.  This commit moves the error check prior to the\n    stack assignment, hence the function now properly returns with an\n    error condition.\n\ncommit 6d65c60fca0ebce88e2bcfeac92a7a791e03bf42\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Mar 2 16:05:51 2019 +0530\n\n    Minor formatting.\n\ncommit bf04c592490402e7f00f6c7900bac01f9bd08fc6\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Feb 25 06:32:26 2019 +0100\n\n    Minor doc fixes.\n\ncommit 4d51f78de9b26de3d182f17b7aa47eb644a708d4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Feb 23 11:21:48 2019 +0100\n\n    More documentation updates.\n\n    In particular, mark the new behaviour of `FT_LOAD_COLOR\u0027 as experimental.\n\ncommit 6ab36880ce25ad0f67661609ac9ec9a3dcd4c992\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Feb 23 11:18:39 2019 +0100\n\n    * src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets.\n\n    The function only provided a framework without an actual\n    implementation, which this commits removes.\n\ncommit 7585997024b354499dfb1a0d7b2423544467c3a5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Feb 23 10:07:09 2019 +0100\n\n    Update all copyright notices.\n\ncommit fd8fc64efb9b355a73192dc4d01d5daa8ecd31cd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Feb 23 10:05:37 2019 +0100\n\n    * src/tools/update-copyright-year: Insert `(C)\u0027.\n\ncommit b77826e139dee90d2f1f6f804971e9a355a2f8a3\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Thu Feb 21 10:23:15 2019 +0000\n\n    Triage 8ea854bfe92443706d55656072f891ec8f2cb3c2.\n\ncommit 8ea854bfe92443706d55656072f891ec8f2cb3c2\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Thu Feb 21 10:14:57 2019 +0000\n\n    [truetype] Mask numeric overflows.\n\n    * src/truetype/ttinterp.c (Move_CVT, Move_CVT_Stretched, Ins_MIRP):\n    Mask numeric overflows.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d11681\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d11734\n\ncommit 5e3a38b194f3a68e9a5a03a1bd0c6bb2eb3dec1f\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Thu Feb 21 10:04:28 2019 +0000\n\n    [psaux] Mask numeric overflow.\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Mask numeric\n    overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d13041\n\ncommit a346abc0934de411f26f8472ffbc6c4e0a8f95c7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Feb 21 09:19:09 2019 +0100\n\n    s/`....`/\u0027....\u0027/ for SFNT table tags in documentation.\n\ncommit 8de11f3def20c1e265ab0c60b7a4e81fa011ccf7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Feb 20 16:18:40 2019 +0100\n\n    s/NULL/`NULL`/ in documentation.\n\ncommit f92fa39341846b694864fb5e94da442c6f3fbb6e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Feb 20 16:04:48 2019 +0100\n\n    Minor documentation fixes.\n\ncommit de8de1ce0e498b8cc9ae39e5a7d156100bcda99b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Feb 20 12:48:36 2019 +0100\n\n    Minor (whitespace, spelling, doc update).\n\ncommit 0ac6921109aa78a26b874ad3a89b6ea0a209a7fc\nAuthor: Wink Saville \u003cwink@saville.com\u003e\nDate:   Sat Feb 16 07:05:39 2019 +0100\n\n    * src/autofit/afwarp.h (af_warper_compute): Fix declaration.\n\ncommit 29b302ad36d527ea0c6e1c4b8e5f84bf3051a956\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Feb 16 07:05:24 2019 +0100\n\n    Minor.\n\ncommit b66d6a91123c891978ac7cc5e28943b24b8e11d6\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Feb 6 07:38:25 2019 +0100\n\n    CHANGES: Document recent metrics change from Nikolaus.\n\ncommit a6feefdfefd6eb8e62728f40638241bb1d8c993e\nAuthor: Nikolaus Waxweiler \u003cmadigens@gmail.com\u003e\nDate:   Sat Feb 2 15:50:57 2019 +0000\n\n    [truetype] Apply MVAR hasc, hdsc and hlgp metrics to current FT_Face metrics.\n\n    Instead of setting typo or win metrics as the new FT_Face metrics\n    indiscriminately, apply only typo deltas to the currently active FT_Face\n    metrics. This prevents line height differences when e.g. the default\n    outlines were used as the regular face and instances for everything else.\n\n    * src/truetype/ttgxvar.c (tt_apply_mvar): Implement.\n\ncommit f72b00746c64e13625cf8371f031411fbd0d6161\nAuthor: Nikolaus Waxweiler \u003cmadigens@gmail.com\u003e\nDate:   Sat Feb 2 15:45:31 2019 +0000\n\n    [sfnt] Use typo metrics if OS/2 fsSelection USE_TYPO_METRICS bit is set.\n\n    If the OS/2 table exists and fsSelection bit 7 (USE_TYPO_METRICS) is set,\n    use the sTypo* set of values to compute the FT_Face\u0027s ascender, descender\n    and height. Otherwise, fall back to old behavior.\n\n    * src/sfnt/sfobjs.c (sfnt_load_face): Implement.\n\ncommit f686ad46a3a9801ffa78063202250c68276330cb\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jan 22 20:31:44 2019 +0100\n\n    Update copyright years.\n\ncommit f61f49fef7a958830be54ffbed801c1bfd18a0be\nAuthor: John Tytgat \u003cJohn.Tytgat@esko.com\u003e\nDate:   Fri Jan 18 13:25:23 2019 +0100\n\n    [sfnt] Handle TT fonts having two PostScript font names (#55471).\n\n    * src/sfnt/sfdriver.c (sfnt_get_name_id): Prefer English over any\n    other language found for PostScript font names.\n\ncommit 1e7a8f30c231bace001c617099e78f78743dd3b4\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jan 8 20:54:13 2019 -0500\n\n    [psaux, type1] Align tracing.\n\ncommit b75abeb5e6561024d182ccdc0eb36a7d2630310e\nAuthor: Chris Liddell \u003cchris.liddell@artifex.com\u003e\nDate:   Tue Jan 8 20:51:39 2019 -0500\n\n    [psaux] Fix closepath (#55414).\n\n    All of the Type 1 path building is done with code common to the\n    revised CFF engine, with the exception of closepath, which was still\n    calling ps_builder_close_contour(), thus previously cached segments\n    were not always written to the path, and glyph corruption, or even\n    invalid outlines were possible.\n\n    * src/psauc/psinterp.c (cf2_interpT2CharString) \u003ccf2_cmdCLOSEPATH\u003e:\n    Switch to calling `cf2_glyphpath_closeOpenPath\u0027.\n\ncommit 2875ada19766f9559feab3c643026fac57ac2a81\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Dec 30 20:02:08 2018 +0530\n\n    Minor documentation fix.\n\ncommit b89166cc4daea4562c86e009b3db203b3afe77ff\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Dec 29 08:55:01 2018 +0100\n\n    * src/autofit/aflatin2.c: Some fixes from `aflatin.c\u0027 (#55310).\n\ncommit 0238237508a985956bc4baa4fc29fe7396c55434\nAuthor: suzuki toshiya \u003cmpsuzuki@hiroshima-u.ac.jp\u003e\nDate:   Wed Dec 26 12:02:10 2018 +0900\n\n    * builds/mac/README: Fix a hyperlink to defunct www.gyve.org.\n\ncommit afa043de9cf2329ce697714a1e7eadba3055dead\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Dec 25 22:44:05 2018 +0100\n\n    Fix links (mostly http -\u003e https).\n\ncommit 5e02965905e64e543a92d8d29fba32c86b350104\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Dec 25 19:24:06 2018 +0100\n\n    * src/psaux/cffdecode.c (cff_operaor_seac): Fix numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d11915\n\ncommit ec439711b1d32ea8182fa98df73166120b7b0cb0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Dec 12 19:59:42 2018 +0100\n\n    [gxvalid] Fix compiler warnings.\n\n    * src/gxvalid/gxvjust.c (gxv_just_check_max_gid),\n    src/gxvalid/gxvmort.c (gxv_mort_coverage_validate): Use `FT_UNUSED\u0027.\n\ncommit e8bbef85c0027cb5ade84dbcc0bb12c1eb080e06\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Dec 12 14:05:03 2018 +0100\n\n    Fix documentation of TrueType bytecode interpreter debug hook.\n\ncommit 2b4e61e4d61dab168cef572e40368c6d2e687f8b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Dec 12 09:36:39 2018 +0100\n\n    Minor documentation fixes.\n\ncommit 3e8a2283f5119376098a0ec66f876866ff5cea4d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Dec 11 23:54:17 2018 +0100\n\n    * src/truetype/ttgload.c (TT_Hint_Glyph): Remove useless test.\n\n    `control_len\u0027 only gets its value from `n_ins\u0027 (and vice versa),\n    which is always read as `unsigned short\u0027 and thus can\u0027t be larger\n    than 0xFFFF.\n\ncommit 0c83ba6d61e686ca55c3cc763d48a38cb4d7ca67\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Dec 10 12:11:54 2018 +0100\n\n    Minor documentation updates and fixes.\n\ncommit d01e28f41f8810c8ea422b854f8722659589fa99\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Dec 6 08:12:27 2018 -0500\n\n    Important doc fix.\n\ncommit f1b6183f36d4a28a874bd25fd89363dc8ac32574\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Dec 4 11:51:15 2018 +0100\n\n    [bdf] Ignore data after `ENDFONT\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10798\n\n    * src/bdf/bdflib.c (_bdf_parse_end): New function.\n    (_bdf_parse_glyphs): Switch to `_bdf_parse_end\u0027 after `ENDFONT\u0027 has\n    been encountered.\n\ncommit 456e9c8fcefa000518f114c1dffd38cfce66420f\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Dec 2 23:40:55 2018 -0500\n\n    * builds/windows/visualc/freetype.dsp: Dust off.\n\ncommit c1e58b4d93886ac1f985a31fac61b251f1c77fc7\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Thu Nov 29 12:57:35 2018 +0530\n\n    * include/freetype/ftmm.h: Minor.\n\ncommit 3dd4e76b19f3cd4f706c3455d6ae01765d07eee5\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Nov 27 23:22:52 2018 -0500\n\n    * builds/windows/vc2010/freetype.vcxproj: Simplify.\n\ncommit 78a1e69517ca067224d6e33beffd25e2ec8361d2\nAuthor: Chris Liddell \u003cchris.liddell@artifex.com\u003e\nDate:   Tue Nov 27 22:24:06 2018 +0100\n\n    [type1,cff] Add FT_{Set,Get}_MM_WeightVector API calls.\n\n    For multiple master fonts, common usage (in Postscript) is to modify\n    the WeightVector of an existing font instance, this addition\n    supports that use.\n\n    * include/freetype/ftmm.h, src/base/ftmm.c (FT_Set_MM_WeightVector,\n    FT_Get_MM_WeightVector): New API functions.\n\n    * include/freetype/internalservices/svmm.h\n    (FT_Set_MM_WeightVector_Func, FT_Get_MM_WeightVector_Func): New\n    function types.\n    (MultiMasters): Add `set_mm_weightvector\u0027 and `get_mm_weightvector\u0027\n    members.\n    (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.\n\n    * src/cffcffdrivr.c (cff_set_mm_weightvector,\n    cff_get_mm_weightvector): New functions.\n    (cff_service_multi_masters): Register them.\n\n    * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.\n    This driver doesn\u0027t use the new interface.\n\n    * src/type1/t1load.c (T1_Set_MM_WeightVector,\n    T1_Get_MM_WeightVector): New functions.\n    * src/type1/t1driver.c (t1_service_multi_masters): Register them.\n    * src/type1/t1load.h: Updated.\n\ncommit 1fc6937f7fa3bd80edbadc1e3c69d21dd9929e74\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Tue Nov 27 18:02:44 2018 +0100\n\n    [cff] Fix compiler warning (#55105).\n\n    * src/cff/cffparse.c (cff_parser_run): Guard label only used if\n    CFF_CONFIG_OPTION_OLD_ENGINE is active.\n\ncommit 74cdd75f6fb5c6df74f12e4724ecd84edab0dddd\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Tue Nov 27 17:55:40 2018 +0100\n\n    [truetype] Fix numeric overflow (#55103).\n\n    * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG\u0027.\n\ncommit 1c4004bb345080fb5356402f30af83e648d0b503\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Nov 25 23:19:39 2018 -0500\n\n    [builds] Belated DLL support with vc2002-vc2008.\n\n    The solution and project files should be automatically upgraded for\n    the approriate Visual C++ version.\n\n    * builds/windows/visualc/freetype.{sln,vcproj}: Major upgrades.\n    * builds/windows/visualc/index.html: Document the change.\n    * builds/windows/vc2005, builds/windows/vc2008: Removed as redundant.\n\ncommit 55b35cd61168269a1064f3651d998d9c190c57ed\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Thu Nov 22 11:43:48 2018 +0000\n\n    * src/cff/cffparse.c: Please the compiler.\n\ncommit 642bc7590c701c8cd35a9f60fa899cfa518b17ff\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Thu Nov 22 10:29:35 2018 +0000\n\n    [cff] Fix memory overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9869\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10869\n\n    * src/cff/cffparse.c (destruct_t2s_item, cff_parser_run): Store\n    evaluated T2 charstrings in separately allocated memory.\n\ncommit 81f43a9d36c977beadc8ece0b28ba13ba86484ba\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Nov 18 14:47:32 2018 -0500\n\n    * builds/windows/{visualc,vc2005,vc2008}/freetype.vcproj: Fix it.\n\ncommit 8d517e679b65a9f4b85abf995045cf76cb8b5354\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Nov 10 15:47:48 2018 -0500\n\n    Clarification.\n\ncommit 78db9eecff412608bcfb56af281a4cd3b51b2cd4\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Nov 10 15:39:19 2018 -0500\n\n    [smooth] Placeholder only for library-enabled LCD filtering.\n\n    * src/smooth/ftsmooth.c (ft_smooth_init): Add disabled\n    `FT_Library_SetLcdFilter\u0027 call.\n\ncommit 58e48e92877f873248b84435e0c2350dab208bfa\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Nov 9 12:14:35 2018 +0100\n\n    [psaux] Add safety guard (#54985).\n\n    * src/psaux/psobjs.c (cff_builder_close_contour): Do it.\n\ncommit 3b6e65f7bf674601b9419d02ce0aa633e2e882fb\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Nov 8 23:36:37 2018 -0500\n\n    * builds/unix/configure.raw: Require `windows.h\u0027 for windres.\n\ncommit 181033d396acac847e1dbcb766a1df8e5dc9d711\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Nov 8 21:04:56 2018 -0500\n\n    [ftstroke] Fix unpredictable failures (#54986).\n\n    * src/base/ftstroke.c (ft_sroke_border_lineto): Fix lineto check.\n\ncommit 81c31f62cb30bb5526ffa3f19fb06b14ca593b00\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Nov 8 07:54:47 2018 -0500\n\n    [ftstroke] Fix unpredictable failures (#54976).\n\n    * src/base/ftstroke.c (ft_sroke_border_close): Set the start tags.\n\ncommit fb0d66d04c4dd8d7f9604af1a6001b2737cb5098\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Wed Nov 7 00:47:44 2018 +0100\n\n    [truetype] Fix VF check from 2018-09-12 (#54973).\n\n    * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use correct\n    offsets for estimates.\n\ncommit fbd24523461d57d38bd040d842f9fba2690545cd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Nov 6 11:15:31 2018 +0100\n\n    [pshinter] Fix numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d11242\n\n    * src/pshinter/pshrec.c (ps_dimension_add_t1stem): Implement it.\n\ncommit 5b86f53dd60c7545dcea75684561199ac3d3e90f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Nov 6 11:08:41 2018 +0100\n\n    [psaux] Fix timeout in old CFF engine.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d11260\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)\n    \u003ccff_op_sqrt\u003e [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix potential endless\n    loop.\n\ncommit cc288e383bbb95442f3ed72539917323bd1dabbf\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Nov 4 22:09:16 2018 -0500\n\n    Minor.\n\ncommit 1f43affc0907382e9620951501d47bd21b529b84\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Nov 4 13:11:16 2018 -0500\n\n    * src/truetype/ttgxvar.c: Use enum definitions.\n\ncommit d95a12b88ddfaa531dfe69675ac1004a4758736f\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Nov 3 23:02:58 2018 -0400\n\n    * src/truetype/ttgxvar.c (ft_var_apply_tuple): Adjust condition.\n\ncommit 547f82f20eb52e4421675e1f41c839091f16fd95\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Nov 3 23:00:36 2018 -0400\n\n    * src/truetype/ttgxvar.c (ft_var_apply_tuple): Tracing tweaks.\n\ncommit ce3feb0b9d71680cc6aec032ca304585958237d1\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Nov 3 22:43:21 2018 -0400\n\n    Revert due to specs: [truetype] Speed up variation IUP.\n\n    This reverts commit 1e4496c54c010843c1bac56e5d344115d1a49620.\n\ncommit dfa86d65e5b8f4f4c62f37160a2475b705e14c56\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Nov 3 22:36:52 2018 -0400\n\n    Revert \"[truetype] Speed up variation IUP.\"\n\n    This reverts commit 1e4496c54c010843c1bac56e5d344115d1a49620.\n\ncommit 61d50756b6ddc6cce459f64445abf19f09d18253\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Nov 2 20:42:25 2018 -0400\n\n    * src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic.\n\n    Reported and tested by Behdad.\n\ncommit 339c451ad0e8a743b59fb2bd0589fe9362b45024\nAuthor: Shailesh Mistry \u003cshailesh.mistry@hotmail.co.uk\u003e\nDate:   Fri Nov 2 10:10:10 2018 +0100\n\n    [autofit] Prevent SEGV.\n\n    See\n\n      https://bugs.ghostscript.com/show_bug.cgi?id\u003d697545\n\n    for more details on how the bug was found.\n\n    * src/autofit/afloader.c (af_loader_load_glyph): Propagate error\n    code.\n\ncommit 1e4496c54c010843c1bac56e5d344115d1a49620\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Oct 31 23:17:33 2018 -0400\n\n    [truetype] Speed up variation IUP.\n\n    * src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial\n    snapping to the same position from true interpolation.\n\ncommit ba03310b5aa6a8b752f892c32f2354aff9a73f78\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Oct 31 22:01:36 2018 -0400\n\n    * src/type1/t1load.c (t1_set_mm_blend): Optimized.\n\ncommit 300da33d61512fe98dc6f34e68fbc330120600ba\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Oct 31 21:55:40 2018 -0400\n\n    * src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized.\n\ncommit c13635ee4bf34e621816cd09d7f2baf918e20af8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Oct 29 21:25:10 2018 +0100\n\n    [base] Fix numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d11080\n\n    * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use `MUL_LONG\u0027.\n\ncommit ba62f9d8f5f85c6dda93b481271de37fb1f09e77\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Oct 29 21:11:36 2018 +0100\n\n    [cff] Fix numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10988\n\n    * src/cff/cffparse.c (cff_parser_run)\n    [CFF_CONFIG_OPTION_OLD_ENGINE]: Use `NEG_LONG\u0027.\n\ncommit acb19ed4e9c0cf1339e240069a252b9080dcb31e\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Oct 28 14:19:33 2018 -0400\n\n    Comment on timestamp storage.\n\ncommit 3e8ec291ffcfa03c8ecba1cdbfaa55f5577f5612\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Oct 26 23:23:48 2018 -0400\n\n    [sfnt] Make `head\u0027 timestamps unsigned.\n\n    It\u0027s been more than 2^31 seconds since 1904.\n\n    * include/freetype/tttables.h (TT_Header): Change field types.\n    * src/sfnt/ttload.c (tt_face_load_generic_header): Updated.\n\ncommit d71f2bc1593200a8f763841c0a083ba91f7dad01\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Oct 26 22:52:25 2018 -0400\n\n    Revert \"Align FreeType with standard C memory management.\"\n\n    This reverts commit 877aa1b2cc662978aae61ed4d5c6ea8ba56b2fe7.\n\ncommit bfe53294757b03873b1432b7c1cd3e027802c634\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Oct 27 00:07:53 2018 +0200\n\n    [psaux] Fix numeric overflow.\n\n    Triggered by\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d11157\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) \u003ccff_op_blend\u003e\n    [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix integer overflow.\n\ncommit f56830ed406f90f6f53ee6367f2068a0f27bf90b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Oct 20 07:27:47 2018 +0200\n\n    Avoid endless loop while tracing (#54858).\n\n    * src/type1/t1load.c (parse_buildchar): Guard tracing stuff with\n    FT_DEBUG_LEVEL_TRACE.\n\ncommit 0c4feb72cf976f63d4bf62436bc48f190d0e0c28\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Oct 17 11:25:32 2018 +0200\n\n    * CMakeLists.txt: Specify `RUNTIME DESTINATION\u0027.\n\n    This is needed for DLL builds.\n\ncommit 428854931e683b405da20d2f404073f51c5a183d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Oct 10 12:21:10 2018 +0200\n\n    Minor.\n\ncommit 912e174c662043672f18d52bbec09fa80a1f2d42\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Oct 7 09:28:52 2018 +0200\n\n    A missing Unicode cmap is not a fatal error.\n\n    This is a follow-up to the previous commit.\n\n    * src/cff/cffobjs.c (cff_face_init), src/sfnt/sfobjs.c\n    (sfnt_load_face), src/type1/t1objs.c (T1_Face_Init),\n    src/type42/t42objs.c (T42_Face_Init): Implement it.\n\ncommit 885f5b0b4edb0c00a48af3eabe98507cf4f94430\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Oct 7 09:03:05 2018 +0200\n\n    Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794).\n\n    * src/cff/cffcmap.c (cff_cmap_unicode_init), src/psaux/t1cmap.c\n    (t1_cmap_unicode_init), src/sfnt/ttcmap.c (tt_cmap_unicode_init):\n    Check `unicodes_init\u0027 field.\n\ncommit 0a178144e85594e15cd83e3ae55e441c26f42985\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Oct 7 08:59:56 2018 +0200\n\n    Whitespace.\n\ncommit f262d15d0a4732e7b6b516f2e9ce37e83fcc604c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Oct 7 07:40:37 2018 +0200\n\n    Minor comment improvement.\n\ncommit 9817571cc96d3afa3faf553627ec1874648a6650\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Oct 3 08:04:55 2018 +0200\n\n    [ftgrays] Fix typo in stand-alone mode (#54771).\n\n    * src/smooth/ftgrays.c (FT_THROW) [STANDALONE_ \u0026\u0026\n    FT_DEBUG_LEVEL_TRACE]: Fix call to `FT_ERR_CAT\u0027.\n\ncommit d280ae1e8c707d2478a8f4ac2059f762cf58e6d8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Oct 2 20:45:16 2018 +0200\n\n    [psaux] Fix segfault.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10768\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)\n    \u003ccff_op_callothersubr\u003e [CFF_CONFIG_OPTION_OLD_ENGINE]: Check\n    argument.\n\ncommit 6b660f12151c7f333f8be6d84df916db210d3742\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Oct 2 16:48:59 2018 +0200\n\n    [psaux] Fix numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10768\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) \u003ccff_op_roll\u003e\n    [CFF_CONFIG_OPTION_OLD_ENGINE]: Use NEG_INT.\n\ncommit 83fc524dfc93bfabee681ea2484b93ad1f66ca15\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Oct 2 16:36:49 2018 +0200\n\n    [pshinter] Handle numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10550\n\n    * src/pshinter/pshglob.c (psh_blues_snap_stem): Mask numeric\n    overflow.\n\ncommit 877aa1b2cc662978aae61ed4d5c6ea8ba56b2fe7\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Sep 27 21:17:36 2018 -0400\n\n    Align FreeType with standard C memory management.\n\n    * include/freetype/ftsystem.h: Include FT_TYPES_H.\n    (*FT_Alloc_Func, *FT_Realloc_Func): Use size_t for the size arguments.\n    * src/raster/ftmisc.h: Ditto.\n\n    * builds/amiga/src/base/ftsystem.c, builds/unix/ftsystem.c,\n    * builds/vms/ftsystem.c, src/base/ftsystem.c (ft_alloc, ft_realloc):\n    Use size_t for the size arguments.\n\n    * src/base/ftdbgmem.c (ft_mem_debug_alloc, ft_mem_debug_realloc): Use\n    FT_Offset, aka size_t, for the size arguments.\n\ncommit 4500c701c29f154eb0acd44552590d0dc315ac5f\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Sep 26 22:04:50 2018 -0400\n\n    Typo.\n\ncommit efe7f6489858bbe84933c76f7b0bdefd37cdd0e2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 25 09:16:45 2018 +0200\n\n    Typo.\n\ncommit a9af69148173f64e39ed6b1be1944a014ffb0d6c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 25 09:10:09 2018 +0200\n\n    Fix handing of `FT_Bool\u0027.\n\n    Before this commit we had code like\n\n      (FT_Bool)( globals-\u003eglyph_styles[gindex] \u0026 0x8000)\n\n    Since `FT_Bool\u0027 is defined to be an `unsigned char\u0027, the code\n    evaluated to something like\n\n      (unsigned char)( 0x8532 \u0026 0x8000)\n\n    which in turn expanded to\n\n      (unsigned char)( 0x8000)\n\n    and finally yielded 0x00 – i.e., false – not as expected.\n\n    Problem reported and analyzed by Tony Smith \u003ctony.smith@macro4.com\u003e.\n\n    * include/freetype/fttypes.h (FT_BOOL): Add a comparison against\n    zero so that we always have a Boolean expression.\n\n    */*: Replace castings to `FT_Bool\u0027 with calls to `FT_BOOL\u0027 where\n    possible.\n\ncommit 0f122fef346af27ce469fa3e521bbde747fb741c\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Sep 23 21:46:26 2018 -0400\n\n    [bdf] Speed up charmap access.\n\n    This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.\n\n    * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search\n    with continuous prediction.\n\ncommit 793a9ff9f5de353e4e3f7cf0a99b3b1f9b617039\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Sep 22 14:38:00 2018 -0400\n\n    * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Another tweak.\n\n    This one should be clearer. When the rounded monochrome bbox collapses\n    we add a pixel that covers most if not all original cbox.\n\ncommit f26d57753fe1a6ab61796fbd816fefd6c103720b\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Sep 21 20:34:58 2018 -0400\n\n    * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Further tweak.\n\ncommit abd997aa7cf2bc9219136782c7363d14d325199c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Sep 21 12:50:32 2018 +0200\n\n    Improve documentation of `FT_LOAD_NO_RECURSE\u0027.\n\ncommit 335528e11e690fb38042d7edcda209d500c05d3c\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Fri Sep 21 11:26:37 2018 +0200\n\n    Improve auto-hinter handling of bitmap fonts (#54681).\n\n    For bitmap fonts, `FT_Load_Glyph\u0027 should either return an error or\n    not set the format to `FT_GLYPH_FORMAT_OUTLINE\u0027.  However, in this\n    case `FT_Load_Glyph\u0027 calls into the auto-hinter which calls back\n    into `FT_Load_Glyph\u0027 with `FT_LOAD_NO_SCALE\u0027 in the flags, which\n    marks the glyph as `FT_GLYPH_FORMAT_OUTLINE\u0027 with an empty path\n    (even though it doesn\u0027t have any path).  It appears that the\n    auto-hinter should not be called when the face doesn\u0027t have\n    outlines.  The current test for using the auto-hinter in\n    `FT_Load_Glyph\u0027 checks if the driver supports scalable outlines, but\n    not if the face supports scalable outlines.\n\n    * src/base/ftobjs.c (FT_Load_Glyph): Directly check whether we have\n    scalable outlines.\n\ncommit c168cc3b1bf13e5f3ca77c238dcb204ea821c56d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Sep 21 11:09:27 2018 +0200\n\n    [raster] Fix disappearing vertical lines (#54589).\n\n    * src/raster/ftraster.c (Vertical_Sweep_Span): Handle special case\n    where both left and right outline exactly pass pixel centers.\n\ncommit 493aa68f5c4cb2e659570809931539dc1987630c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Sep 21 08:32:22 2018 +0200\n\n    [base] Some comments.\n\ncommit 2a9850c4fc2fd75021359346c9ffc7478f12d449\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Sep 20 22:40:32 2018 -0400\n\n    * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Tiny rounding tweak.\n\n    This adds pixels in case a contour goes through the center\n    and they need to be turned on in the b/w rasterizer.\n\ncommit c1b21f47b407bf5ef6ad9b346203bbd907c9f2b9\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Sep 20 22:14:46 2018 -0400\n\n    [pcf] Replace charmap implementation.\n\n    PCF comes with charmap lookup table, aka PCF encodings.  Using it\n    directly makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times\n    faster than the original BDF-like binary searches.\n\n    * src/pcf/pcf.h (PCF_EncodingRec): Removed.\n    (PCF_FaceRec): Remove `nencodings\u0027 and `encodings\u0027.\n    * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Replaced.\n    * src/pcf/pcfread.c (pcf_get_encodings): Store data differently.\n\ncommit 8e950680538b11cf3c4eb630f0b8e7bd400b6dcd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 20 06:26:34 2018 +0200\n\n    [base] Remove unused function `FT_GlyphLoader_CopyPoints\u0027.\n\n    * include/freetype/internal/ftgloadr.h, src/base/ftgloadr.c\n    (FT_GlyphLoader_CopyPoints): Do it.\n\ncommit 7f93c977e7ce2c1c8f3ac39fc5e622440a7b3a35\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Sep 19 22:45:45 2018 -0400\n\n    [pcf] Prepare to replace charmap implementation.\n\n    * src/pcf/pcf.h (PCF_Face): Updated to include...\n    (PCF_EncRec): ... this new structure to store charmap geometry.\n\n    * src/pcf/pcfread.c (pcf_get_encodings): Store charmap geometry.\n\ncommit d629c2ba2430fde8d3ff9b4a0172f917b6e5cbcd\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Sep 18 17:11:48 2018 -0400\n\n    Remove unused fields.\n\n    * src/pcf.h (PCF_FaceRec): Remove `charmap\u0027 and `charmap_handle\u0027.\n    * src/bdfdrvr.h (BDF_FaceRec): Ditto.\n    * src/winfonts/winfnt.h (FNT_FaceRec): Ditto.\n\ncommit dfddc2d97596489134d21ed6224462331cb1cd73\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Sep 17 08:03:57 2018 +0200\n\n    [pshinter] Handle numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10396\n\n    * src/pshinter/pshglob.c: Include FT_INTERNAL_CALC_H.\n    (psh_blues_snap_stems): Mask numeric overflow.\n\ncommit b8dd404d1342d435d207fb2377a7dc6e281f3b22\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Sep 16 07:22:23 2018 +0200\n\n    freetype.h: Add warning w.r.t. B/W hinting and rendering (#54589).\n\ncommit de0aabcd0d73936ce751a71b215da1d5efa4db5d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Sep 15 06:14:18 2018 +0200\n\n    [sfnt] Comment fix.\n\ncommit 10e54d04b975cf8a879b18ed0383bb4be8b1a7d5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 13 21:47:35 2018 +0200\n\n    [truetype] Some fixes for VF checks.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10317\n\n    * src/truetype/ttgxvar.c (ft_var_load_gvar): Properly exit memory\n    frame if we have invalid glyph variation data offsets.\n    (tt_face_vary_cvt): Protect against missing `tuplecoords\u0027 array.\n    Fix typo.\n\ncommit 7665914ccd2edf011cfe2834f8a058e4e68d3361\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 13 08:58:49 2018 +0200\n\n    * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Fix last commit.\n\ncommit a5818ed1e137b99e03eec2fb63f8a55dca0e624e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Sep 13 08:46:44 2018 +0200\n\n    * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Check `result\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10316\n\ncommit 6b53300b01742cb68c116539d01f9aa967e26746\nAuthor: John Tytgat \u003cJohn.Tytgat@esko.com\u003e\nDate:   Wed Sep 12 08:08:09 2018 +0200\n\n    [sfnt] Better PS name handling (#54629).\n\n    * src/sfnt/sfdriver (IS_WIN, IS_APPLE): Omit language ID checks.\n    (get_win_string, get_apple_string): Return NULL when the PostScript\n    font name characters is not according to specification.\n    (get_win_string): Make trace output work if the high byte if\n    non-zero.\n    (sfnt_get_var_ps_name, sfnt_get_ps_name): Previously we preferred\n    Win PS name (when there is also an Apple PS name); change this into\n    a fallback to Apple PS name in case the Win PS name is invalid.\n\ncommit 65681e6dc1937db57d5905c5dd89e0a306bc0634\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Sep 12 07:40:49 2018 +0200\n\n    [truetype] Improve VF check.\n\n    Triggered by\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10255\n\n    * src/truetype/ttgxvar.c (ft_var_load_gvar): Use better limit check\n    for `tupleCount\u0027.\n\ncommit 53c5e4bd87ff8035d91022204bb5f3a051e78a99\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Sep 12 07:27:30 2018 +0200\n\n    * src/truetype/ttgxvar.c (ft_var_load_gvar): Check `glyphoffsets\u0027.\n\ncommit 7b855ed9cf8c48841e72369ea3ebcbf8486e5e06\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Mon Sep 10 23:41:04 2018 +0100\n\n    * src/pshinter/pshrec.c (t2_hints_stems): Mask numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10215\n\ncommit fea435fbf855e9ac2cd3ced80175d64f1bace22c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Sep 9 09:46:29 2018 +0200\n\n    [sfnt] Comment improvement.\n\ncommit 0805c4a488bf35603d19b6951ce255efeb48b457\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Sun Sep 9 09:25:58 2018 +0200\n\n    * builds/freetype.mk (refdoc-venv): Ensure python version (#54631).\n\ncommit 7bf202825062cc39291d32423471cc70869cc7f5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Sep 7 06:43:19 2018 +0200\n\n    Typo.\n\ncommit 1c04eed76feffee0730d80c993e6dd602c335929\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Sep 7 06:40:55 2018 +0200\n\n    [truetype] Fix assertion failure.\n\n    Triggered by\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10212\n\n    * src/truetype/ttgload.c (load_truetype_glyph): Reintroduce\n    `opened_frame\u0027 (removed in a change from 2018-08-26) to handle\n    dealloation of the second frame.\n\ncommit f8af8fba78ac7180674ac05493b8afed7e055cf9\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Sep 5 12:16:56 2018 +0200\n\n    Synchronize `ftdebug.c\u0027 files.\n\n    * builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c,\n    builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c\u0027.\n\ncommit 97c7944f9ec2f1f992d0fbad45995da95f4e260a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Sep 5 11:45:05 2018 +0200\n\n    Synchronize `ftconfig\u0027 files.\n\ncommit a748ae463503d679ab88a80401d769c402a66b7a\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Wed Sep 5 11:12:01 2018 +0530\n\n    * docs/DOCGUIDE: Minor.\n\ncommit 77aa02660e87e77b788dd26a48e87aa9c2b79585\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Wed Sep 5 11:07:20 2018 +0530\n\n    Add documentation guidelines file.\n\n    * docs/DOCGUIDE: New file.\n\ncommit 48f93e648ede94232645aadc9274572e86639cd5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 4 21:19:26 2018 +0200\n\n    * devel/ftoption.h: Synchronize with master `ftoption.h\u0027.\n\ncommit c485bece6b6e90859a8efc50e32b6dc17b40ee0c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 4 21:05:06 2018 +0200\n\n    Typo (#54618).\n\ncommit 9789c75b1a6faf01cbcc34d85bf1bb3f473743b1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 4 10:37:44 2018 +0200\n\n    More \u0027...\u0027 vs. `...` fixes in API documentation.\n\ncommit 01a5d326bb320b1e1c832d6954df583ae8c0ebd2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Sep 4 08:00:58 2018 +0200\n\n    Make `/****...\u0027 comments in public headers uniformly end on column 77.\n\ncommit 6a4229c4b0b5ce9f0e6ad420e7a504c6ad99acf4\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Sep 3 22:43:39 2018 -0400\n\n    * docs/DEBUG: s/trace_//.\n\ncommit 7da5589c75457e86ca5144c297834a0c2dff6721\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Mon Sep 3 16:45:28 2018 +0530\n\n    [docwriter] Don\u0027t break code snippets accross lines.\n\n    Reported as\n\n      http://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html\n\n    * docs/reference/markdown/stylesheets/extra.css (.md-typeset code):\n    Add rule `white-space\u0027.\n\ncommit 1061748256bc35657709284ee65fd1ca8d28db71\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Sep 3 10:37:57 2018 +0200\n\n    include/freettype/config:*.*: Convert comments to Markdown syntax.\n\n    Also some minor documentation fixes.\n\ncommit 76a52465c1dbcac14b89983eba5a0ac252f59d8d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Sep 3 09:08:47 2018 +0200\n\n    */*: s/PSNames/psnames/.\n\n    Only tracing messages are affected.\n\ncommit 475f6d25cb299acc0634ec3a6112cefc469423a9\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Sep 3 09:00:58 2018 +0200\n\n    [sfnt] Fix heap buffer overflow in CPAL handling.\n\n    * src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test.\n    (tt_face_load_cpal): Updated.\n\ncommit 9be656bb0c0baa8df8c9fa30100e1cbe865346db\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Sep 1 11:01:52 2018 +0200\n\n    Remove `FT_Outline_{New,Done}_Internal\u0027.\n\n    These public API functions(!) were always undocumented and have\n    escaped all clean-up efforts until now.\n\n    * include/freetype/ftoutln.h (FT_Outline_New_Internal,\n    FT_Outline_Done_Internal): Removed.\n\n    * src/base/ftoutln.h (FT_Outline_New_Internal,\n    FT_Outline_Done_Internal): Merge into...\n    (FT_Outline_New, FT_Outline_Done): ... these functions.\n\n    * docs/README: Updated.\n\ncommit 809d5125af527dd589d303cd8ae988dad58d00d6\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Aug 31 22:49:19 2018 -0400\n\n    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format.\n\ncommit 4b49a8079f23a0c6c8c8d9b92454780a19035947\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Fri Aug 31 20:26:46 2018 +0100\n\n    [errors] Refine the macro logic surrounding `FT_Error_String\u0027.\n\n    * include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS,\n    FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS\u0027 after\n    checking it and introduce a new macro that takes proper care of\n    multiple-inclusion protection.\n\ncommit c6df41e319b9f841223365d443819805851f78ce\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 31 20:10:38 2018 +0200\n\n    Whitespace.\n\ncommit 9a323e4762917253d070f06dff380e194b2da5c3\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 31 20:09:21 2018 +0200\n\n    * src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED\u0027 calls.\n\ncommit aff04e91f630993c8cb0dd2eb758fa0d3632afd1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 31 14:57:36 2018 +0200\n\n    * src/base/ftdebug.c (FT_Throw): Reduce chattiness.\n\ncommit 83525bdd10c4b00500d8d9b5bbf5ad0419c99d21\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 31 07:37:15 2018 +0200\n\n    Minor comments.\n\ncommit d91f752b773d22679939414a014fd2934c18c5b0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 31 07:34:30 2018 +0200\n\n    Whitespace.\n\ncommit 423fce2e3ed63ee48d2142a92e588a57633ae32b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 31 06:59:44 2018 +0200\n\n    Add link to OpenType\u0027s composite glyph description.\n\ncommit 0d4ca1386575737ff26dbd0c36844572b75d69ad\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 31 06:53:52 2018 +0200\n\n    * src/autofit/afhints.c (af_glyph_hints_reload): Add initialization.\n\ncommit 1dacbd893d3c2f027b5c79f504d8899a68112c0c\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Aug 30 23:28:30 2018 -0400\n\n    Consolidate bitmap presetting and size assessment.\n\n    * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):\n    Change return type.\n    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap\n    size assessment.\n\n    * src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the\n    rendering of enourmous or far-fetched outlines.\n    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.\n\ncommit ca980b4cf11405469a5b5919dc40e73c4961c7c7\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Aug 30 21:51:18 2018 -0400\n\n    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono.\n\ncommit 35efb103fee44fcacb657e1dc5896e32ac99d295\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Thu Aug 30 14:30:46 2018 +0200\n\n    [errors] Introduce a macro to control `FT_Error_String\u0027.\n\n    * devel/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS),\n    include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS):\n    New macro.\n\ncommit d20dc3928b9d3ee075106b7684dab6111d6a5899\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Thu Aug 30 14:09:04 2018 +0200\n\n    [errors] Introduce `FT_Error_String\u0027.\n\n    * include/freetype/fterrors.h (FT_Error_String),\n    src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String\u0027.\n\n    * src/base/ftbase.c, src/base/Jamfile (_source),\n    src/base/rules.mk (BASE_SRC): Add `fterrors.c\u0027 to the build logic.\n\n    * src/base/ftdebug.c (FT_Throw): Use `FT_Error_String\u0027.\n\ncommit c0ccf7501255cad67e3a117cedb152b17d011255\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Aug 30 09:56:09 2018 +0200\n\n    [autofit] Trace `before\u0027 and `after\u0027 edges of strong points.\n\n    * src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays\n    `before\u0027 and `after\u0027.\n\n    * src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary\n    function.\n    (af_glyph_hints_dump_points): Trace `before\u0027 and `after\u0027 edges.\n    (af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set\n    `before\u0027 and `after\u0027 information.\n\ncommit 21c2b3905cb3473da3dd729190f2fb2b66ce1140\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Aug 30 09:52:08 2018 +0200\n\n    Minor.\n\ncommit 5d93a3fc8d0243cf9722501c7be62b6acbbd775d\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Aug 30 01:12:22 2018 -0400\n\n    [base] Overflow-resistant bitmap presetting.\n\n    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Implement it.\n\ncommit 19be8620ec33cdf2c451139f024301f65b147899\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 29 18:15:03 2018 +0200\n\n    Doc fix.\n\ncommit 934a6159ba940fe15f02a84deeccdb789823242e\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Wed Aug 29 15:28:21 2018 +0200\n\n    Fix numeric overflows.\n\n    * src/pshint/pshalgo.c (psh_hint_align, psh_hint_align_light,\n    psh_hint_table_find_strong_points): Fix numeric overflows.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10083\n\ncommit 14dff08f3760b9bbbb1301ea37ab88d3eb35ad61\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 29 06:56:21 2018 +0200\n\n    ftoption.h: s/precendence/precedence/ in documentation (#54586).\n\ncommit 3915a18b8c0f4e2090bf9496a49c38986ab18d70\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 29 06:53:54 2018 +0200\n\n    [cff] Fix handling of `roll\u0027 op in old engine.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10080\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) \u003ccff_op_roll\u003e\n    [CFF_CONFIG_OPTION_OLD_ENGINE]: Use modulo for loop count, as\n    documented in the specification.\n\ncommit 2c8e6279a7bfc314f3934bc8d126ecb1e5e284f1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 28 08:02:13 2018 +0200\n\n    Minor doc fix.\n\ncommit ae3afbc47184db5c7753318b36237af261c66b09\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 26 15:40:16 2018 +0200\n\n    * src/truetype/ttobjs.c (tt_size_read_bytecode): Trace CVT values.\n\ncommit 20957721447c2c96134e7488c6c1522490b92a9c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 26 15:15:56 2018 +0200\n\n    ChangeLog*: s/\\t/ /.\n\ncommit f87b711746ff1ab4f831c22d471a1fa9f63c76e1\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sun Aug 26 17:46:25 2018 +0530\n\n    * configure: Copy assets required by docwriter.\n\n    Copy directory `docs/reference/markdown\u0027 when FreeType is compiled in a\n    different directory.\n\n    Fixes `make refdoc\u0027 if builddir !\u003d srcdir.\n\n    Reported as\n\n      http://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00083.html\n\ncommit 13034e54aac631f5ca8b2dd27a64e5ac5c5f6fbc\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 26 12:22:51 2018 +0200\n\n    * src/pshint/pshalgo.c (psh_hint_overlap): Fix numeric overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10057\n\ncommit 4738dcc4df02b14dedfe4c85b2f916d4061dd1bf\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 26 12:03:33 2018 +0200\n\n    Minor tracing adjustments.\n\n    * src/base/ftstream.c (FT_Stream_EnterFrame, FT_Stream_ExitFrame):\n    Trace.\n\n    * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Remove tracing.\n\ncommit 6e339b8d8e5641f0f2d5240f992336393a983107\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 26 11:59:02 2018 +0200\n\n    [truetype] Avoid nested frames.\n\n    Triggered by\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10054\n\n    * src/truetype/ttgload.c (load_truetype_glyph): Don\u0027t use variable\n    `opened_frame\u0027 to trace whether a frame must be closed at the end of\n    function: This fails because `TT_Vary_Apply_Glyph_Deltas\u0027 (which\n    gets called for space glyphs) uses a frame by itself.  Instead,\n    close the frame after loading the header, then use another frame for\n    the remaining part of the glyph later on.\n\n    Also avoid calling `tt_get_metrics\u0027 twice under some circumstances.\n\ncommit b287c80b6a7d669a3c31aed7aeb6f8900e75a068\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 26 06:39:43 2018 +0200\n\n    Various minor clean-ups.\n\n    * src/base/ftapi.c: Remove.  Unused.\n    * src/base/Jamfile (_sources): Updated.\n\n    * src/base/ftstream.c (FT_Stream_ReleaseFrame): Remove redundant\n    code.\n\ncommit c98aa9b78ace3caa6eeeee9603e4c74c3885ffd4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 25 17:02:20 2018 +0200\n\n    Add missing ChangeLog entry for the last four commits.\n\ncommit c962db28ea59225f0105c03d907d4a9b71765687\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Aug 25 12:22:23 2018 +0530\n\n    * builds/*/*: Prepare build system for docwriter.\n\n    Add checks, rules and variables to the build system for docwriter.\n\n    * Running `make\u0027 will warn if Python/PIP/docwriter are not available.\n\n    * Running `make refdoc\u0027 will generate static documentation site on the\n    current Python environment.\n\n    * Running `make refdoc-venv\u0027 will generate static documentation site\n    using a virtual environment, using the pip package `virtualenv\u0027.\n\ncommit 195728d5ba38f34fb2c2c20807c01656f2f59b66\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Aug 25 12:17:30 2018 +0530\n\n    * src/tools/docmaker: Remove `docmaker\u0027.\n\n    `Docmaker\u0027 has now upgraded to `docwriter\u0027, a pip package available at\n\n      https://pypi.org/project/docwriter/\n\ncommit 53c69ce04faed3dcc68ca0f54cb8d703d8babf69\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Aug 25 12:06:32 2018 +0530\n\n    * docs/reference: Add resources for `docwriter\u0027.\n\n    Add the required resources (images, JS, CSS) for `docwriter\u0027.\n\n    * docs/reference/.gitignore: Update to ignore `site\u0027 folder and other\n    files generated by docwriter.\n\n    * docs/reference/README: Add docwriter usage information and\n    troubleshooting tips.\n\n    * docs/reference/markdown: New directory to hold generated markdown\n    files and other resources.\n\ncommit ae5d1a4cec37557f31aec270332cfe886a62f9a0\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Fri Aug 24 22:22:30 2018 +0530\n\n    * include/*.*: Convert comments to markdown.\n\n    This commit was created by applying scripts `markify.py\u0027 and\n    `markdown-format.bash\u0027 to all C header files, followed by minor\n    clean-up.\n\n    No change in functionality, of course.\n\n    Scripts used:\n    https://github.com/nikramakrishnan/freetype-docs.git: Commit dfce31e.\n\n    http://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00013.html:\n    With patches applied.\n\ncommit 77f0814a3162a945d6d6704f545827f883e451e5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Aug 23 17:53:54 2018 +0200\n\n    Add macros for handling\tover-/underflowing `FT_Int64\u0027 values.\n\n    * include/freetype/internal/ftcalc.h (ADD_INT64, SUB_INT64,\n    MUL_INT64, DIV_INT64) [FT_LONG64]: New macros.\n\n    * src/base/ftcalc.c (ft_corner_orientation) [FT_LONG64]: Use\n    `SUB_INT64\u0027 and `MUL_INT64\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d10028\n\ncommit c90cc6443b2dc597aac64ae4a4bc45b1d5ca45d2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Aug 23 13:13:20 2018 +0200\n\n    ftbitmap.h: Improve documentation.\n\ncommit 45524679c6798b3d8b75ab03d54a53bf46912871\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 22 10:31:05 2018 +0200\n\n    [truetype] Improve legibility of `glyf\u0027 parsing.\n\n    * src/truetype/ttgload.c (ON_CURVE_POINT, X_SHORT_VECTOR,\n    Y_SHORT_VECTOR, REPEAT_FLAG, X_POSITIVE, SAME_X, Y_POSITIVE, SAME_Y,\n    OVERLAP_SIMPLE): New macros.\n    (TT_Load_Simple_Glyph): Use new macros to make code more readable.\n    Remove useless adjustment of `outline-\u003etags\u0027 elements.\n\ncommit a3e842f9c69a3ce3bcde0ab7b0cfbeead10ed80f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 22 09:55:38 2018 +0200\n\n    Minor formatting and documentation fixes.\n\ncommit 0a33b44e6eb31b7c5bfed32cf723a0eee1e4e169\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 21 10:52:14 2018 +0200\n\n    * src/sfnt/ttcpal.c (tt_face_load_cpal): Add missing safety check.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9981\n\ncommit 4873eb1d316f7a6b0df97ccd3b3bd4b563fcd1de\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 19 07:27:21 2018 +0200\n\n    Update `CHANGES\u0027 file.\n\ncommit 4dc0d48f7bf939f893bc203239600fc56c63e39c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 18 14:39:20 2018 +0200\n\n    [psaux] Avoid slow PS font parsing in case of error.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9955\n\n    * src/psaux/psobjs.c (ps_parser_to_bytes): Set `parser-\u003ecursor\u0027 even\n    in case of error to avoid potential re-scanning.\n\ncommit 2550fc75a56f18aff2a6543a1ad07724b5f97767\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 18 13:38:48 2018 +0200\n\n    [cff] Fix heap buffer overflow in old engine.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9967\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)\n    \u003ccff_op_blend\u003e [CFF_CONFIG_OPTION_OLD_ENGINE]: `num_designs\u0027 must be\n    non-zero.\n\ncommit c94162a2200c16e9614289cf91d6bf0e0b01a01f\nAuthor: Young Xiao \u003cyangx92@hotmail.com\u003e\nDate:   Thu Aug 16 08:25:47 2018 -0400\n\n    * builds/mac/ftmac.c (parse_fond): Fix buffer overrun.\n\n    Reported as bug #54515, duplicate of #43540.\n\ncommit 33cd1eedcf4de94eee1dae5753b974f893506a9f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Aug 16 05:55:18 2018 +0200\n\n    * builds/*/ftsystem.c (FT_COMPONENT): Updated also.\n\ncommit efa2a3babffc247891279a5b200f72fc53109e89\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Aug 15 23:49:07 2018 -0400\n\n    Revert BDF copyright years.\n\ncommit af9662e60b75b93d6dbc3c7a982e2017c9d0eee1\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Aug 15 22:58:11 2018 -0400\n\n    Ouch. BDF copyright year.\n\ncommit 923fcbcdd8393dbf12b0f2b3616e71fc106bc6da\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Aug 15 22:50:06 2018 -0400\n\n    [bdf] Don\u0027t track duplicate encodings.\n\n    There is no harm except some umbiguity in broken fonts with duplicate\n    encodings.\n\n    * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove duplicate tracking.\n    (_bdf_parse_t): Remove large `have\u0027 bitfield.\n\ncommit a0dd16fb3d76e36c8ebc3edf043ddbc0d3a51b5d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 15 18:13:17 2018 +0200\n\n    Don\u0027t use `trace_\u0027 prefix for FT_COMPONENT arguments.\n\n    * include/freetype/internal/ftdebug.h (FT_TRACE_COMP,\n    FT_TRACE_COMP_): New auxiliary macros to add `trace_\u0027 prefix.\n    (FT_TRACE): Use `FT_TRACE_COMP\u0027.\n\n    */* (FT_COMPONENT): Updated.\n\ncommit 1d7b034cd87a423ed002803df5aed46ca7e8f362\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 14 15:48:17 2018 +0200\n\n    Use formatting string in FT_TRACEX calls for non-simple arguments.\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)\n    \u003ccff_op_hstem, cff_op_hintmask, cff_op_hlineto, cff_op_vhcurveto\u003e:\n    Do it.\n\n    * src/psaux/pshints.c (cf2_hintmap_build): Ditto.\n\n    * src/psaux/psintrp.c (cf2_interpT2CharString) \u003ccf2_cmdHSTEM,\n    cf2_cmdVSTEM, cf2_cmdHLINETO, cf2_cmdRRCURVETO, cf2_cmdCALLSUBR,\n    cf2_escHSTEM3, cf2_cmdHINTMASK, cf2_cmdHVCURVETO\u003e: Ditto.\n\n    * src/truetype/ttinterp.c (TT_RunIns): Ditto.\n\ncommit e001a17d734e5af20919c81dfa335bb8991359c6\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Aug 14 07:10:57 2018 -0400\n\n    [bdf] Remove unused fields.\n\n    * src/bdf/bdf.h (bdf_font_t): Remove `nmod\u0027, `umod\u0027, and `modified\u0027,\n    which were set but never used.\n    * src/bdf/bdflib.c (_bdf_parse_{glyphs,properties}, bdf_load_font):\n    Updated accordingly.\n\ncommit 44db1addd80981b1a9cbea6b8608c99592a065ea\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 14 10:01:00 2018 +0200\n\n    [cff] Fix another segv in old engine.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9872\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)\n    [CFF_CONFIG_OPTION_OLD_ENGINE]: Disallow invalid T1 opcodes in\n    dictionaries.\n\ncommit 1937b557341187eda5434a8a64da9880472c4cd4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 14 07:54:25 2018 +0200\n\n    [cff] Fix missing error handling.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9865\n\n    * src/psaux/cffparse.c (cff_parser_run)\n    [CFF_CONFIG_OPTION_OLD_ENGINE]: Don\u0027t ignore return value of\n    `parse_charstrings_old\u0027.\n\ncommit ac2ea865f3e019321f77f5c6b286ba1ddc6f6159\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Aug 13 21:33:24 2018 -0400\n\n    [bdf] Remove unused overflow storage.\n\n    * src/bdf/bdf.h (bdf_glyphlist_t): Remove this type.\n    (bdf_font_t): Remove `overflow\u0027 field.\n    * src/bdf/bdflib.c (bdf_free_font): Remove `overflow\u0027 freeing.\n\ncommit 757bdf1aef3d93a27968857ac5b4435a52fa24a0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Aug 14 02:02:26 2018 +0200\n\n    [cff] Fix segv.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9864\n\n    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)\n    \u003ccff_op_random\u003e [CFF_CONFIG_OPTION_OLD_ENGINE]: Use top dict\u0027s\n    `random\u0027 field directly if parsing dictionaries.\n\ncommit f5fe6e2f17d2326c637d8ccd18af219709d15bcd\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Aug 13 09:01:53 2018 -0400\n\n    [bdf] Use unsigned types.\n\n    * src/bdf/bdf.h (bdf_glyph_t): Unsign `encoding\u0027.\n    (bdf_font_t): Unsign `default_char\u0027.\n    * src/bdf/bdfdrivr.h (BDF_encoding_el): Unsign `enc\u0027.\n\n    * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_glyphs,\n    _bdf_parse_start): Updated accordingly.\n    * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Ditto.\n\ncommit 50486df1e6a9a66d5df287efea94b8c1c14a1084\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Aug 13 08:46:53 2018 +0200\n\n    * src/type42/t42parse.c (t42_parse_sfnts): One more format check.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9832\n\ncommit 37c7b81794fc0499f02f8a434a66d350616f308b\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Sun Aug 12 01:42:00 2018 +0200\n\n    Remove deprecated constant in documentation.\n\n    * include/freetype/ftdriver.h: Suggest using `FT_HINTING_ADOBE\u0027 since\n    `FT_CFF_HINTING_ADOBE\u0027 is deprecated.\n\ncommit 5b904409fc3ee6de45b60df722f95c6499951c2f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 11 06:41:35 2018 +0200\n\n    * src/base/ftcalc.c (FT_Matrix_Check): Fix integer overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9811\n\ncommit 88c0e12109f4059b8ce45797c71b50218c141462\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri Aug 10 21:24:40 2018 -0400\n\n    * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Follow specs.\n\ncommit 96b5e500909cfce39ff78feabefd8063a229b951\nAuthor: Ben Wagner \u003cbungeman@google.com\u003e\nDate:   Fri Aug 10 22:24:26 2018 +0200\n\n    * src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435).\n\ncommit 1a21ca7b9115178484ce0ed2f6816f3490d5d1b4\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Fri Aug 10 19:31:55 2018 +0530\n\n    Minor formatting.\n\ncommit 1aa73fa83d7649da6344280bf569e364acaef433\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 10 05:41:32 2018 +0200\n\n    * src/base/ftobjs.c (FT_Render_Glyph_Internal): Improve tracing.\n\ncommit c8ef0fd07cdaef66c8581a7269b31248e26fe3d2\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Aug 10 04:44:22 2018 +0200\n\n    Fix clang warnings.\n\n    * src/base/ftdebug.c (ft_trace_level_enabled,\n    ft_trace_level_disabled): Add `static\u0027 keyword.\n\ncommit e16bfbec4c63bff4e5218f180d822cadfd2c7f8c\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Aug 9 22:18:00 2018 -0400\n\n    [raster, smooth] Reinstate bitmap size limits.\n\n    This again moves outline and bitmap size checks one level up.\n\n    * src/base/ftoutln.c (FT_Outline_Render): Explicitly reject enormous\n    outlines.\n    * src/raster/ftrend1.c (ft_raster1_render): Reject enormous bitmaps\n    and, therefore, outlines that require them.\n    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.\n\n    * src/raster/ftraster.c (ft_black_render): Remove outline size checks.\n    * src/smooth/ftgrays.c (gray_raster_render): Ditto.\n    [STANDALONE]: Remove `FT_Outline_Get_CBox\u0027 copy.\n\ncommit 6a97c95800e8a76e9595791042d74dd3fbf02f50\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Aug 8 22:17:35 2018 -0400\n\n    [pcf] Revert massive unsigning.\n\ncommit f60c98feaf53de0ba9ea9acf4896476662d994bd\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 8 18:15:53 2018 +0200\n\n    [smooth] Improve tracing.\n\n    * src/smooth/ftgrays.c (gray_convert_glyph_inner): Only use tracing\n    if called the first time.\n    (gray_convert_glyph): Updated.\n\ncommit c9bbc2419ae7d3cf73a597afbf02cb335ede952f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 8 18:12:31 2018 +0200\n\n    Add internal functions `FT_Trace_Disable\u0027 and `FT_Trace_Enable\u0027.\n\n    It sometimes makes sense to suppress tracing informations, for\n    example, if it outputs identical messages again and again.\n\n    * include/freetype/internal/ftdebug.h: Make `ft_trace_levels\u0027 a\n    pointer.\n    (FT_Trace_Disable, FT_Trace_Enable): New declarations.\n\n    * src/base/ftdebug.c (ft_trace_levels): Rename to...\n    (ft_trace_levels_enabled): ... this.\n    (ft_trace_levels_disabled): New array.\n    (ft_trace_levels): New pointer.\n    (FT_Trace_Disable, FT_Trace_Enable): Implement.\n    (ft_debug_init): Updated.\n\ncommit 2e3dec55093d7853bf741e24a3d5d4c6c4d68ced\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Aug 8 13:51:18 2018 +0200\n\n    Debugging improvements.\n\n    * src/base/ftobjs.c (pixel_modes): Move this array to top level\n    from ...\n    (FT_Load_Glyph): ... here.\n    (FT_Render_Glyph_Internal): Use `width\u0027 x `height\u0027 in trace message.\n    Use `pixel_modes\u0027.\n\ncommit c633378a5e76064de06ffafc847adebcf49837fb\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Aug 8 01:21:54 2018 -0400\n\n    [pcf] Massive unsigning (part 2).\n\n    Treat all size related properties as unsigned values.\n\n    * src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name\u0027 and\n    `value\u0027.\n    * src/pcf/pcfread.c (pcf_get_propeerties, pcf_load_font): Updated\n    parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,\n    RESOLUTION_X and RESOLUTION_Y.\n\ncommit 3d4ab6bac14c28dcbce00dd57bb30b0bbc4937db\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed Aug 8 00:09:16 2018 -0400\n\n    [pcf] Massive unsigning (part 1).\n\n    Unofficial specifications hesitate to use unsigned 32-bit integers.\n    Negative values caused a lot of trouble in the past and it is safer\n    and easier to treat some properties as unsigned.\n\n    * src/pcf/pcf.h (PCF_AccelRec): Use unsigned values for `fontAscent\u0027,\n    `fontDescent\u0027, and `maxOverlap\u0027.\n    * src/pcf/pcfread.c (pcf_load_font, pcf_get_accel): Updated.\n    * src/pcf/pcfdrivr.c (PCF_Glyph_Load, PCF_Size_Select,\n    PCF_Size_Request): Updated.\n\ncommit 705bac50d3ade49188e05018ede2072e4d1e1788\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Aug 7 22:49:55 2018 -0400\n\n    * src/pcf/pcfread.c (pcf_get_bitmaps): Unsign `offsets\u0027 and `bitmapSizes\u0027.\n\ncommit 7ec9598f47e5e8f6e05c38508d1e59e2bb9395ee\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Aug 6 17:35:14 2018 +0200\n\n    More comment formattings.\n\n    This helps in the forthcoming transition to markdown syntax.\n\ncommit b09e77359121b911926af91b5f8a8a93ce4d9438\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Aug 6 11:02:51 2018 +0200\n\n    * devel/ftoption.h: Synchronize with main `ftoption.h\u0027.\n\ncommit f24dbb28118170bc9d7f71e73eedc00d3bc855bf\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Aug 6 04:58:18 2018 -0400\n\n    [pcf] Use unsigned types.\n\n    * src/pcf/pcf.h (PCF_Encoding): Use unsigned `enc\u0027.\n    * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Ditto.\n    * src/pcf/pcfread.c (pcf_get_encodings): Use unsigned types.\n\ncommit 86e7385342b11ac6a2a179a80585d629e97f2a1f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Aug 6 10:24:08 2018 +0200\n\n    Minor comment formatting.\n\ncommit 720ae67f35701819f6bf3fd9337dc89079a4ed27\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Aug 5 07:21:10 2018 +0200\n\n    * src/truetype/ttgload.c (compute_glyph_metrics): Fix overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/chromium/issues/detail?id\u003d777151\n\ncommit ced9c311f6915cb4d0aa248c1d70d32f44484e33\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 4 07:03:57 2018 +0200\n\n    Ditto.\n\ncommit be81acc4bf12b60476c024e98487b2d42c0d719e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 4 07:01:04 2018 +0200\n\n    * src/truetype/ttinterp.c (opcode_name): Fix typos.\n\ncommit 799d27b0b68008d427df1a55e761e3f5b42bd3f6\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Aug 4 06:39:11 2018 +0200\n\n    Fix clang warnings.\n\n    * src/base/ftoutln.c (FT_Outline_EmboldenXY): Fix type of\n    `orientation\u0027.\n\n    * src/gxvalid/gxvcommn.c (gx_lookup_value_read): Fix signature.\n\n    * src/pcf/pcfread.c (pcf_get_encodings): Fix type of some variables.\n    Add cast.\n\n    * src/type1/t1load.c (parse_weight_vector): Fix cast.\n\ncommit 1897186fb718bdda9f953c09906cb5bf36594905\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 31 10:48:07 2018 +0200\n\n    * src/cid/cidtoken.h: Handle `XUID\u0027 keyword.\n\ncommit 8e57746c4b0a381f6c3746e089cf543bac6e822f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 31 10:46:57 2018 +0200\n\n    [cid] Trace PostScript dictionaries.\n\n    * src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H\n    (cid_load_keyword, cid_parse_font_matrix, parse_fd_array,\n    parse_expansion_factor, cid_parse_dict): Add tracing calls.\n    (parse_font_name): New function to trace `/FontName\u0027 keywords in\n    /FDArray dict.\n    (cid_field_records): Register `parse_font_name\u0027.\n\ncommit 85e8bea4fdecc841b1ea6303ab7ca09813b3869b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 31 10:42:21 2018 +0200\n\n    Minor documentation improvement.\n\ncommit 578bcf103a12fb742cdb314565819011d1ac12a7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jul 30 11:28:04 2018 +0200\n\n    [cff] Fix typo.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9409\n\n    * src/cff/cffdrivr.c (cff_get_cid_from_glyph_index): Fix boundary\n    check.\n\ncommit 00968d8fd62105061d92e69b5ccd44077a5a6a9f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jul 29 10:22:59 2018 +0200\n\n    * src/pcf/pcfread.c (pcf_get_encodings): Another thinko.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9608\n\ncommit 0f8aebfd5138590fdbbea92ffdec17f6030ba7fc\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Jul 28 23:21:28 2018 -0400\n\n    * builds/unix/configure.raw: Minor.\n\ncommit 2c3e895c745fe417e501195310de973867f0d43e\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Jul 28 22:00:59 2018 -0400\n\n    [smooth] Fix Harmony memory management.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9501\n\n    * src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer\n    after each rendering in case of failure.\n\ncommit 6e44d78cc1d89f39e1086441ae4cbb2815d9f067\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jul 28 22:23:16 2018 +0200\n\n    [type1] Avoid segfaults with `FT_Get_PS_Font_Value\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9610\n\n    * src/type1/t1driver.c (t1_ps_get_font_value): Protect against NULL.\n\ncommit c9edca8ee986f283e3396c88fb50f9d2b2187b99\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jul 27 10:44:01 2018 +0200\n\n    [truetype] Make `TT_Set_MM_Blend\u0027 idempotent (#54388).\n\n    * src/truetype/ttgxvar.c (tt_set_mm_blend): Correctly set\n    `face-\u003edoblend\u0027 if the current call to the function yields the same\n    blend coordinates as the previous call.\n\ncommit d277bfc985130d897734d747ddf2649452fd3eeb\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jul 27 09:15:43 2018 +0200\n\n    [psaux, type1]: More tracing improvements.\n\n    * src/psaux/psintrp.c (cf2_interpT2CharString): Trace skipped\n    outline commands.\n\n    * src/psaux/t1decode.c (t1_decoder_parse_charstring): Fix\n    missing case.\n    (t1_decoder_parse_metrics): Make tracing output more compact.\n\n    * src/type1/t1gload.c (T1_Compute_Max_Advance): Be less verbose.\n    (T1_Get_Advances): Add tracing.\n\ncommit 6e6acdcb0ebba5d8cecacd6b649d409b7fb5248a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jul 26 07:22:18 2018 +0200\n\n    Document FT_Module_Class\u0027s `module_interface\u0027 field.\n\ncommit 8ed53468772ec0bc70d121cc1af2c77b1a15e8d0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jul 25 22:07:22 2018 +0200\n\n    [psaux, type1] Trace PostScript dictionaries and other things.\n\n    The tracing of /Encoding, /Subrs, and /Charstrings is rudimentary\n    right now.\n\n    * src/psaux/psobjs.c (ps_parser_load_field,\n    ps_parser_load_field_table): Add tracing calls.\n\n    * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make tracing\n    output more compact.\n\n    * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances): Add\n    tracing messages.\n\n    * src/type1/t1load.c (parse_blend_axis_types,\n    parse_blend_design_positions, parse_blend_design_map,\n    parse_weight_vector, t1_load_keyword, t1_parse_font_matrix,\n    parse_encoding, parse_subrs, parse_charstrings, T1_Open_Face): Add\n    tracing calls.\n\n    * src/type1/t1objs.c (T1_Face_Init): Add tracing call.\n\n    * src/sfnt/sfobjs.c (sfnt_init_face): Make tracing message more\n    verbose.\n\ncommit 580c94d8f71d08066d67bc5d8a2f2033d62f9317\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jul 25 07:03:07 2018 +0200\n\n    Fix minor ASAN run-time warnings.\n\n    * src/base/ftutil.c (ft_mem_alloc, ft_mem_realloc): Only call\n    `FT_MEM_ZERO\u0027 if we actually have a buffer.\n    (ft_mem_dup): Only call `ft_memcpy\u0027 if we actually have a buffer.\n\ncommit 4b97ab98a8e90ae5403058b73c345974247bf01e\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jul 24 23:01:34 2018 -0400\n\n    [build] Fortify dllexport/dllimport attributes (#53969,#54330).\n\n    We no longer use predefined _DLL, which can be defined for static\n    builds too with /MD. We use DLL_EXPORT and DLL_IMPORT instead,\n    following libtool convention.\n\n    * CMakeLists.txt [WIN32], builds/windows/vc2010/freetype.vcxproj:\n    Define DLL_EXPORT manually.\n\n    * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,\n    builds/vms/ftconfig.h, builds/windows/vc2010/index.html,\n    src/base/ftver.rc: /_DLL/d, s/FT2_DLLIMPORT/DLL_IMPORT/.\n\ncommit d8ea52dee53defec67cbea8f467f1ad1e971ba25\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 24 23:03:06 2018 +0200\n\n    [type1] Check relationship between number of axes and designs.\n\n    For Multiple Masters fonts We don\u0027t support intermediate designs;\n    this implies that\n\n      number_of_designs \u003d\u003d 2 ^^ number_of_axes\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9557\n\n    * src/type1/t1load.c (T1_Open_Face): Ensure above constraint.\n    (T1_Get_MM_Var): Remove now redundant test.\n\ncommit 71e29fe1c95b3a41e4df9b46e5cda5c0042d4f3d\nAuthor: Hin-Tak Leung \u003chtl10@users.sourceforge.net\u003e\nDate:   Tue Jul 24 10:04:23 2018 +0200\n\n    [truetype] Match ttdebug\u0027s naming of instruction mnemonics.\n\n    * src/truetype/ttinterp.c: The form used in ttdebug,\n    \"MDRP[G,B,W,?]\", etc., is slightly more readable than\n    \"MDRP[00,01,02,03]\".\n\ncommit ff1c28f6c01e3068903432cfa157b5a38d015517\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 24 09:59:23 2018 +0200\n\n    * src/pcf/pcfread.c (pcf_get_encodings): Thinko.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9561\n\ncommit b98133a4e9831544fec776757b2a6745d4ebc51e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jul 22 13:06:20 2018 +0200\n\n    * src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9527\n\ncommit 9be385c94d63dd4951bb578a8417cf4a944ab827\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jul 22 12:49:25 2018 +0200\n\n    * src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs.\n\n    This is an oversight of the module change 2018-07-21.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9524\n\ncommit a5acdce10076b0ad717b9b8eb455f811ed1d1f45\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jul 22 12:11:52 2018 +0200\n\n    [cid] Sanitize `BlueShift\u0027 and `BlueFuzz\u0027.\n\n    This code is taken from the type1 module.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9510\n\n    * src/cid/cidload.c (parse_fd_array): Set some private dict default\n    values.\n    (cid_face_open): Do the sanitizing.\n    Fix some tracing messages.\n\ncommit 5434faadf4e59c891f179443a822adadc48728c3\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jul 22 07:34:03 2018 +0200\n\n    Fix links.\n\n    Reported by Ankit and Nikhil.\n\ncommit 93955585339493e524c4a5c7f0d813f467e8022d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jul 21 23:46:19 2018 +0200\n\n    Minor comment improvement.\n\ncommit cba72a0b0f0256e61af8dc6cb1924b143b127dde\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jul 21 23:45:32 2018 +0200\n\n    [pcf] Fix handling of the undefined glyph.\n\n    This change makes the driver use the `defaultChar\u0027 property of PCF\n    files.\n\n    * src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar\u0027 to\n    unsigned.\n\n    * src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar\u0027 as\n    unsigned.\n    Validate `defaultChar\u0027.\n    If `defaultChar\u0027 doesn\u0027t point to glyph index zero, swap glyphs with\n    index zero and index `defaultChar\u0027 and adjust the encodings\n    accordingly.\n\n    * src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next,\n    PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced\n    the first character in the font to be the default character.\n\ncommit a2370f21b5c42dc077ee7be3d5a5d3cb0733d7d7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jul 21 07:38:13 2018 +0200\n\n    Improve stream extraction macro documentation.\n\ncommit 154832d466ecca1b473816a0c5422d526180c420\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Fri Jul 20 19:32:13 2018 +0200\n\n    Move the legacy fuzz target to the `freetype-testing\u0027 repository.\n\n    It can now be found at\n\n      https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy\n\n    * src/tools/ftfuzzer: Remove this folder and its contents from the\n    repository.\n\ncommit 14032290bf9f22afe4cb1cbbc8cfa2ee85a44aee\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri Jul 20 06:44:13 2018 +0200\n\n    [cff] Avoid left-shift of negative numbers (#54322).\n\n    * src/cff/cffgload.c (cff_slot_load): Use multiplication.\n\ncommit 8f09eb5ce0260aa17f93b2ccefb4bae347ca79fc\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 17 21:45:24 2018 +0200\n\n    Allow FT_ENCODING_NONE for `FT_Select_Charmap\u0027.\n\n    This is a valid encoding tag for BDF, PCF, and Windows FNT, and\n    there is no reason to disallow it for these formats.\n\n    * src/base/ftobjs.c (FT_Select_Charmap): Implement it.\n\ncommit 9e69987aaada5f2eeccc4fe3a9890a2b10b874ea\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jul 17 19:54:25 2018 +0200\n\n    * src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar\u0027.\n\ncommit fda356b742da3b1c0e2bf039227fa324b97b9f8b\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Mon Jul 16 18:45:23 2018 +0200\n\n    * include/freetype/internal/ftcalc.h: Add macros for handling\n    harmless over-/underflowing `FT_Int\u0027 values.\n\n    * src/sfnt/sfdriver.c (fixed2float): Fix negation of\n    `(int)(-2147483648)\u0027.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9423\n\ncommit 839cb404cf73f4410d58ebb3a99d16e08f4bdee7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jul 16 05:45:45 2018 +0200\n\n    * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9412\n\ncommit 9f15370e564eee41c83ff85bb66ead93517a641b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jul 12 07:31:26 2018 +0200\n\n    * src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox\u0027.\n\n    Taken from patch #9667, written by Steve Langasek\n    \u003cvorlon@debian.org\u003e.\n\n    This fixes a build failure (most probably a bug in gcc) on ppc64el\n    when building with -O3.\n\ncommit b532d7ce708cb5ca9bf88abaa2eb213ddcf9babb\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jul 5 23:13:35 2018 +0200\n\n    Fix typo (#54238).\n\n    * src/base/ftcolor.c (FT_Palette_Set_Foreground_Color)\n    [!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value.\n\ncommit 0767d5362fdc2d14de842b264f24a6cb91d45d55\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jul 5 23:05:53 2018 +0200\n\n    Adjust table size comparisons (#54242).\n\n    * src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it.\n\ncommit 6ceeb87f5dd1cb61aa9618bc6296ca917980b0e7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jul 5 22:31:10 2018 +0200\n\n    Fix more 32bit issues (#54208)\n\n    * src/cff/cffload.c (cff_blend_build_vector): Convert assertion into\n    run-time error.\n\n    * src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against\n    numeric overflow.\n\ncommit 29f05fd02d2ba51965f994456d41ed1e9c9f769a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jul 4 11:49:47 2018 +0200\n\n    Fix 32bit build warnings (#54239).\n\n    * src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed\n    vs. unsigned comparisons.\n\n    * srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto.\n\ncommit d9d300ab6bd8895b9247213ac87b26cc76a3fc5d\nAuthor: Jeff Carey \u003cJeff.Carey@monotype.com\u003e\nDate:   Mon Jul 2 22:27:57 2018 +0200\n\n    * src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging.\n\ncommit 396051daee490544322b6ca5964772ecbebeac52\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jul 2 15:52:36 2018 +0200\n\n    s/xxx specific foo/xxx-specific foo/.\n\ncommit 7edc937fe679d14d66f55cf6f7fa607925d38f3c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jul 2 11:50:04 2018 +0200\n\n    s/palette_types/palette_flags/.\n\n    Suggested by Behdad.\n\ncommit 4e3b2473d8ca08c9001e4605ba9844168811d2c7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jul 2 11:41:44 2018 +0200\n\n    Make `FT_Get_Color_Glyph_Layer\u0027 return FT_Bool.\n\n    * include/freetype/freetype.h, src/base/ftobjs.c\n    (FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated.\n\n    * include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func),\n    src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer):\n    Updated.\n\ncommit f6ccb524af9b7d136f32426362558525b537817c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jul 1 12:31:57 2018 +0200\n\n    * src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function.\n\n    Reported by Behdad.\n\ncommit 1fc776b5f14e2be6fa3d6573f5cd3fb88a7ae468\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Jun 28 21:42:26 2018 -0400\n\n    * src/base/fttrigon.c (FT_Tan): Improve accuracy.\n    (FT_Vector_Rotate): Simplify.\n\ncommit 4f11209f5cd4f83f185042d54ad1c892dffb5ed1\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Jun 28 21:31:35 2018 -0400\n\n    * src/base/ftobjs.c (FT_Set_Charmap): Robustify.\n\ncommit 207ca38fb5e99a638e9ea86d86b28fc895661122\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 25 18:50:00 2018 +0200\n\n    [truetype] Fix memory leak.\n\n    * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers.\n    Fix typo in `goto\u0027 destination.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9071\n\ncommit 589d1f0899343b18c3181f35451550dc1b904bef\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 25 18:38:04 2018 +0200\n\n    * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d9070\n\ncommit a632fb547e23fe129a579fabf60a992fd7d98d02\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 24 15:22:10 2018 +0200\n\n    [truetype] Increase precision while applying VF deltas.\n\n    It turned out that we incorrectly round CVT and glyph point deltas\n    before accumulation, leading to severe positioning errors if there\n    are many delta values to sum up.\n\n    Problem reported by Akiem Helmling \u003cakiem@underware.nl\u003e and analyzed\n    by Behdad.\n\n    * src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in\n    16.16 format.\n    (tt_face_var_cvt): Collect deltas in `cvt_deltas\u0027, which is a 16.16\n    format array, and add the accumulated values to the CVT at the end\n    of the function.\n    (TT_Vary_Apply_Glyph_Deltas): Store data in `points_org\u0027 and\n    `points_out\u0027 in 16.16 format.\n    Collect deltas in `point_deltas_x\u0027 and `point_deltas_y\u0027, which are\n    16.16 format arrays, and add the accumulated values to the glyph\n    coordinates at the end of the function.\n\ncommit cc3333902bbfe5d8c16cf84c4e85016533ab2ee0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 24 06:22:48 2018 +0200\n\n    New base function `FT_Matrix_Check\u0027 (#54019).\n\n    * src/base/ftcalc.c (FT_Matrix_Check): New base function to properly\n    reject degenerate font matrices.\n\n    * include/freetype/internal/ftcalc.h: Updated.\n\n    * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c\n    (cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix),\n    src/type42/t42parse.c (t42_parse_font_matrix): Use\n    `FT_Matrix_Check\u0027.\n\ncommit d7393e22ee3d7cfedbf580a7fb1e9b4db7b3626f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 23 17:25:58 2018 +0200\n\n    Fix typo.\n\n    Reported by Behdad.\n\n    * src/base/ftcolor.c (FT_Palette_Data_Get)\n    [!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/.\n\ncommit 9027233f75647fbd56f0008aa07aef1b5a9a01b4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 21 00:21:09 2018 +0200\n\n    s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.\n\n    * include/freetype/ftcolor.h, include/freetype/internal/sfnt.h,\n    src/sfnt/ttcolr.c: Do it.\n\ncommit a6b77ba2b39e379cd9295a9376fedf574a6ba15f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 19 20:09:31 2018 +0200\n\n    [sfnt] Fix CPAL heap buffer overflow.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d8968\n\n    * src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1\n    offsets.\n\ncommit 7915fd51f123d0adbe6a0b9ad19eb941e1733c87\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 19 07:15:21 2018 +0200\n\n    Doh.  Don\u0027t use CPAL or COLR data if tables are missing.\n\n    Reported by Alexei.\n\n    * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if\n    `colr\u0027 is NULL.\n\n    * src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if\n    `cpal\u0027 is NULL.\n\ncommit a56e4bf7a243f46632e4e2ccf25d2f50ca132b23\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 18 23:18:07 2018 +0200\n\n    Oops!\n\ncommit 779c8c4050c11f5afa387d4f2a27650a7cd2a7fc\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Mon Jun 18 15:17:13 2018 +0530\n\n    Some more minor doc fixes.\n\ncommit 95f7341d818ff43639f857bea03a2089289f33d8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 18 11:10:14 2018 +0200\n\n    More minor doc fixes.\n\ncommit ce8517b474a96811a67f6234752944338d0d044a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 18 10:22:42 2018 +0200\n\n    Minor documentation fixes.\n\ncommit 877d80944b00a15acfee965a55e92ee3a77a812e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 18 10:08:17 2018 +0200\n\n    Introduce `@example:\u0027 subsections.\n\ncommit fc40469a6f049343f2694d0b724db22558f0d374\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 18 09:23:18 2018 +0200\n\n    Add example for `FT_Get_Color_Glyph_Layer\u0027.\n\ncommit b1a3c59f8df2b6f1a0c1ddf10fbfc67138c32cc5\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun Jun 17 22:33:29 2018 -0400\n\n    [base] Introduce `FT_New_Glyph\u0027.\n\n    This function facilitates access to full capabilities of FreeType\n    rendering engine for custom glyphs. This can be quite useful for\n    consistent rendering of mathematical and chemical formulas, e.g.\n\n      https://bugs.chromium.org/p/chromium/issues/detail?id\u003d757078\n\n    * include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New\n    function.\n\ncommit e13599a0369cf68279b991dbab3e845d7a300399\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Mon Jun 18 00:38:36 2018 +0530\n\n    Change documentation markup tags to lowercase.\n\n    Implemented as per discussion in\n\n      http://lists.nongnu.org/archive/html/freetype-devel/2018-06/msg00073.html\n\n    No change in functionality, of course.\n\ncommit d573a46f771c956c486412ccc756efa1b283e455\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 17 23:23:36 2018 +0200\n\n    Typo.\n\ncommit 0f6be0644422f57b4874825a48c3a9852b10ae59\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Sun Jun 17 20:27:42 2018 +0200\n\n    [bdf] Fix underflow of an unsigned value.\n\n    bdflib.c:1562 could be reached with `font-\u003eglyphs_used \u003d\u003d 0\u0027.  That\n    caused an underflow of the unsigned value which results in undefined\n    behaviour.\n\n    * src/bdf/bdflib.c (src/bdf/bdflib.c): Bail out earlier than before\n    if the `ENCODING\u0027 keyword cannot be found.\n\ncommit 19d8687f0b95e51daf729d51a4e154cd1b5efc1a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 17 11:22:37 2018 +0200\n\n    Fix documentation indentation; s/@const/@enum/; harmonize doc keywords.\n\ncommit da846919141be47171e33f9a3fe4c57ba8fa7fbf\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 17 09:30:05 2018 +0200\n\n    [base] Add tracing for `FT_Bitmap_Blend\u0027.\n\n    * include/freetype/internal/fttrace.h (trace_bitmap): New\n    enumeration.\n\n    * src/base/ftbitmap.c (FT_COMPONENT): Define.\n    (FT_Bitmap_Blend): Add `FT_TRACE5\u0027 calls.\n\ncommit e361cc6a7553ee82abccec3378d208e844f311a4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 17 09:13:37 2018 +0200\n\n    s/trace_bitmap/trace_checksum/.\n\n    * include/freetype/internal/fttrace.h: s/bitmap/checksum/.\n\n    * src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/.\n    Adjust code.\n\ncommit 9960e7beabe3fa962fe5a3a020dfd97b40e93f10\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 16 22:16:03 2018 +0200\n\n    [sfnt] Fix color glyph layer loading.\n\n    * src/sfnt/ttcolr.c (Colr): Add `table_size\u0027 field.\n    (tt_face_load_colr): Set it.\n    (tt_face_get_colr_layer): Check pointer limit for layer entries.\n\ncommit 1079063701986505980f5c5183b3a92700dc1cf5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 16 21:45:13 2018 +0200\n\n    [sfnt] Fix color palette loading.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d8933\n\n    * src/sfnt/ttcpal.c (Cpal): Add `table_size\u0027 field.\n    (tt_face_load_cpal): Set it.\n    (tt_face_palette_set): Check pointer limit for color entries.\n\ncommit 8f403ab8a8bb211aff88897319a15a418f85c86e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 16 21:30:04 2018 +0200\n\n    Minor formatting.\n\ncommit a150b5ab53fe57c063924658bb0e67774fb629d1\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Sat Jun 16 15:53:15 2018 +0530\n\n    Minor formatting.\n\ncommit 9d8e6c29801c95ca170578a209ba2308dd8efa99\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 16 10:11:58 2018 +0200\n\n    * src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow.\n\ncommit 68bc56f864e3e1acd00870ca04085f387b144494\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 16 09:39:29 2018 +0200\n\n    Add `FT_Bitmap_Blend\u0027 API.\n\n    Still missing: Support for negative bitmap pitch and subpixel offset\n    of source bitmap.\n\n    * include/freetype/ftbitmap.h, src/base/ftbitmap.c\n    (FT_Bitmap_Blend): New function.\n\ncommit 9b31c44620b30d3b2e6f6c0aa1cf54409cbd1087\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 14 21:30:43 2018 +0200\n\n    Replace `FT_Get_GlyphLayers\u0027 with `FT_Get_Color_Glyph_Layer\u0027.\n\n    This avoids any additional allocation of COLR related structures in\n    a glyph slot.\n\n    * include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec,\n    FT_Get_GlyphLayers): Removed.\n\n    * include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed.\n    (FT_Slot_InternalRec): Remove `color_layers\u0027.\n\n    * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func):\n    Removed.\n    (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove\n    `load_colr_layer\u0027.\n\n    * src/base/ftobjs.c (ft_glyph_slot_done): Updated.\n    (FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer\u0027.\n    (FT_Get_GlyphLayers): Removed.\n\n    * src/sfnt/sfdriver.c (sfnt_interface): Updated.\n\n    * src/sfnt/ttcolr.c (tt_face_load_colr_layers): Removed.\n    * src/sfnt/ttcolr.h: Updated.\n\n    * src/truetype/ttgload.c (TT_Load_Glyph): Updated.\n\ncommit f9d05eb32695dfcbc5c7ae747c0c794e64cc55b8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 14 21:02:49 2018 +0200\n\n    Provide iterative API to access `COLR\u0027 data.\n\n    This solution doesn\u0027t store any data in an `FT_GlyphSlot\u0027 object.\n\n    * include/freetype/freetype.h (FT_LayerIterator): New structure.\n    (FT_Get_Color_Glyph_Layer): New function.\n\n    * include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New\n    function type.\n    (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.\n\n    * src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it.\n\n    * src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function.\n    * src/sfnt/ttcolr.h: Updated.\n\n    * src/sfnt/sfdriver.c (sfnt_interface): Updated.\n\ncommit 33ac83e37637f9980d674f60a2621f3ff2e2de64\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 14 21:00:23 2018 +0200\n\n    Add glyph index and glyph load flags to glyph slot.\n\n    * include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused\n    `reserved\u0027 field to `glyph_index\u0027.\n\n    * include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add\n    `load_flags\u0027 field.\n\n    * src/base/ftobjs.c (FT_Load_Glyph): Set new fields.\n\ncommit a44e20879cefea41663bb36ff4af908cc4146fb8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 14 11:32:47 2018 +0200\n\n    [sfnt] Move `CPAL\u0027 stuff into separate files.\n\n    * src/sfnt/sfdriver.c: Include `ttcpal.h\u0027.\n    * src/sfnt/sfnt.c: Include `ttcpal.c\u0027.\n\n    * src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ...\n    * src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files.\n\n    * src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC):\n    Updated.\n\n    * include/freetype/internal/fttrace.h: Add support for `colr\u0027 and\n    `cpal\u0027.\n    Sort entries.\n\ncommit 54b332aaf95cf581fc3a967bdf3724a69eba75f8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jun 13 08:46:27 2018 +0200\n\n    [sfnt] Separate `CPAL\u0027 and `COLR\u0027 table handling.\n\n    Later on we want to support the `SVG\u0027 table also, which needs `CPAL\u0027\n    (but not `COLR\u0027).\n\n    * include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal\u0027\n    and `free_cpal\u0027 fields.\n    (FT_DEFINE_SFNT_INTERFACE): Updated.\n\n    * include/freetype/internal/tttypes.h (TT_FaceRec): Replace\n    `colr_and_cpal\u0027 fields with `cpal\u0027 and `colr\u0027.\n\n    * src/sfnt/sfdriver.c (sfnt_interface): Updated.\n\n    * src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.\n\n    * src/sfnt/ttcolr.c (Colr, Cpal): Add `table\u0027 field.\n    (ColrCpal): Removed.\n    (tt_face_load_colr): Split off CPAL handling into...\n    (tt_face_load_cpal): ... this new function.\n    (tt_face_free_colr): Split off CPAL handling into...\n    (tt_face_free_cpal): ... this new function.\n    (tt_face_load_colr_layers, tt_face_palette_set): Updated.\n\n    * src/sfnt/ttcolr.h: Updated.\n\n    * src/truetype/ttgload.c (TT_Load_Glyph): Updated.\n\ncommit c07ca2a1b3cb5057b7cb98f5b15c0704374d7a47\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 12 11:28:55 2018 +0200\n\n    [sfnt] Fix `sizeof\u0027 thinko.\n\n    * src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don\u0027t\n    use `sizeof\u0027 for computing array limit.\n\ncommit 22d1be3f2c40bd85ef825efc3ee524d40d842589\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 12 06:07:40 2018 +0200\n\n    Finish CPAL/COLR support (4/4).\n\n    * src/sfnt/ttcolr.c (tt_face_find_color): Removed.\n    (tt_face_colr_blend_layer): Use `face-\u003epalette\u0027 instead of calling\n    `tt_face_find_color\u0027.\n    Use and set text foreground color.\n\ncommit 45145d348fd77196d6ae92a2e8f15f671725094e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 12 06:02:59 2018 +0200\n\n    Finish CPAL/COLR support (3/4).\n\n    * src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.\n    (FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement\n    functions.\n\ncommit b85d4e8f0403b245492ac8222a78e8fc9e465050\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 12 05:53:58 2018 +0200\n\n    Finish CPAL/COLR support (2/4).\n\n    * src/sfnt/ttcolr.c (tt_face_palette_set): New function.\n    (tt_face_load_colr): Allocate `face-\u003epalette\u0027 and call\n    `tt_face_palette_set\u0027.\n    Adjust return error code in case of error.\n\n    * src/sfnt/ttcolr.h: Updated.\n\n    * include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New\n    function type.\n    (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.\n\n    * src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c\n    (sfnt_done_face): Updated.\n\ncommit 7542f030ecdf61856b7bb4af9f3d918bd64c89c9\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 11 12:46:56 2018 +0200\n\n    Finish CPAL/COLR support (1/4).\n\n    * include/freetype/internal/tttypes.h (TT_FaceRec): New fields\n    `palette_index\u0027, `palette\u0027, `have_foreground_color\u0027 and\n    `foreground_color\u0027.\n\ncommit 7de877bbc6282c820fcf18262ec4c7bb7dcccc33\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue Jun 12 06:37:02 2018 +0200\n\n    [sfnt] Minor.\n\n    * src/sfnt/ttcolr.c (tt_face_load_colr_layers):\n    s/palette_index/palette_entry_index/ for consistency.\n    Adjust return error code in case of error.\n\ncommit 04338a5e52d19529e4fe77cd370d1235592ba7e1\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue Jun 12 21:59:15 2018 -0400\n\n    Doc fixes and improvements.\n\ncommit eaa5a42a12ce1f1fe005109da6841e411babe826\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Mon Jun 11 21:56:23 2018 -0400\n\n    [raster] Clean up.\n\n    * src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):\n    Clean up after 5-level gray removal (8dc8635874).\n    (Vertical_Sweep_Span): Be brief.\n\ncommit b18f5e7c62c0aa6f8d17cbb9a8fe687ed402569a\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon Jun 11 09:02:06 2018 +0200\n\n    Minor doc fixes.\n\ncommit a698dbf868326ea5eead14190a2192d6f018d23c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 10 21:43:51 2018 +0200\n\n    [sfnt] Fix compiler warnings.\n\n    * src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,\n    tt_face_colr_blend_layer): Add `NULL\u0027 initializers.\n\ncommit d8b8b6e34ea856afc6939ddc9c8fc57cf65ee40c\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 10 21:37:15 2018 +0200\n\n    s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.\n\n    * include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,\n    src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.\n\ncommit bfbde7926f2c1f6b4da058ed4cd0e91c6697096c\nAuthor: Nikolaus Waxweiler \u003cmadigens@gmail.com\u003e\nDate:   Sun Jun 10 13:19:31 2018 +0100\n\n    CMakeLists: also accept IOS_PLATFORM\u003dSIMULATOR64\n\n    This might be needed to build FreeType for the iOS simulator. See\n    https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed\n    by Steve Robinson.\n\n    * CMakeLists.txt: Accept IOS_PLATFORM\u003dSIMULATOR64\n\ncommit 6732f05593930621081092c7e2c2ec8ec043cc2d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 10 09:12:24 2018 +0200\n\n    Implement `FT_Palette_Get\u0027.\n\n    * src/base/ftcolor.c: New file.\n\n    * src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),\n    src/base/ftbase.c: Add `ftcolor.c\u0027.\n\ncommit 56be5f721b46a9cc5fc043e5ad4eca57398fb37d\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 10 06:59:39 2018 +0200\n\n    * src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks.\n\ncommit 50fda0be3f9ef5dc97f6ee958bb446f09798bee0\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Jun 9 22:52:43 2018 -0400\n\n    [raster] Deal with pitch sign earlier.\n\n    * src/raster/ftraster.c (black_TWorker): Remove unused `traceG\u0027,\n    s/bTarget/bOrigin/.\n    (Render_Glyph): Set `ras.bOrigin\u0027 at the bottom-left corner.\n    (Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):\n    Updated accordingly.\n\ncommit c412de52fb909dcdf6e60c574d1f991a4f43cb3b\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 9 23:56:21 2018 +0200\n\n    [sfnt] Read `CPAL\u0027 version 1 tables.\n\n    * include/freetype/internal.tttypes.h: Include FT_COLOR_H.\n    (TT_FaceRec): Add `palette\u0027 field.\n\n    * src/sfnt/ttcolr.c: Include FT_COLOR_H.\n    (Cpal): Remove all data covered by the new `palette\u0027 field in\n    `TT_FaceRec\u0027.\n    (tt_face_load_colr): Updated.\n    Read `CPAL\u0027 version 1 data.\n    (tt_face_load_colr_layers, tt_face_find_color): Updated.\n\n    * src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.\n\ncommit 8f1ed54877ffab4fc2cf2be329446c748a885842\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu Jun 7 02:48:48 2018 -0400\n\n    [base] API for Harmony LCD rendering.\n\n    This introduces `FT_Library_SetLcdGeometry\u0027 for setting up arbitrary\n    LCD subpixel geometry including non-striped patterns.\n\n    * src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.\n    * include/freetype/ftlcdfil.h: Document it.\n    * include/freetype/freetype.h: Minor.\n    * include/freetype/ftchapters.h: Minor.\n\ncommit 44580515d8e1bbb9077274137221603ca746ee54\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu Jun 7 06:49:44 2018 +0200\n\n    Minor.\n\ncommit f87ced9dc98c8f9178e2668b998e7a41d11406f8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jun 6 17:49:17 2018 +0200\n\n    ftcolor.h: Redesign API.\n\n    While going to implement it I noticed that I need access to most of\n    the `CPAL\u0027 elements; I thus plan to add a `cpal\u0027 field to\n    `TT_FaceRec\u0027, which makes most of the previously suggested API\n    functions obsolete because the fields will be directly accessable.\n\ncommit 7c7004d60cd5fee4675fd33bf2f5c422c802e0b8\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jun 6 17:37:51 2018 +0200\n\n    New `ftcolor.h\u0027 draft.\n\ncommit 172904ee3a3e0d14015595946d8988f847b09158\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jun 6 13:29:09 2018 +0200\n\n    Minor.\n\ncommit 89d2f42918afb8478e525b03a92795c26b4ab58c\nAuthor: Parth Wazurkar \u003cparthwazurkar@gmail.com\u003e\nDate:   Wed Jun 6 16:53:54 2018 +0530\n\n    [bdf, pcf] Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.\n\n    * src/bdf/bdfdrivr.c (BDF_Face_Init): Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.\n\n    * src/pcf/pcfread.c  (pcf_load_font): Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.\n\ncommit ca4e707aa10782a0123011a54bd8c0d7da837b39\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed Jun 6 08:18:23 2018 +0200\n\n    [smooth, raster] Limit bitmap size (#54019).\n\n    * src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add\n    function.\n    [!STANDALONE]: Include FT_OUTLINE_H.\n    (ft_black_render): Compute CBox and reject glyphs larger than\n    0xFFFF x 0xFFFF.\n\n    * src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger\n    than 0xFFFF x 0xFFFF.\n\ncommit 78d85b9c84f404025e287449695dc3e26d8c276c\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Mon Jun 4 18:42:29 2018 +0530\n\n    Restore missing comment lines and other minor fixes\n\ncommit cc6267722451af26c8f7d318429af6f6d6b6efef\nAuthor: Sender Ghost \u003clightside@gmx.com\u003e\nDate:   Mon Jun 4 10:49:23 2018 +0200\n\n    Restore accidentally removed, commented-out configuration options.\n\ncommit f999375a9a834666f82928f9ad6293d9b25213a5\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 3 22:00:42 2018 +0200\n\n    [GSoC] include/*.*, devel/*.*: Convert block comments to `light\u0027 style.\n\n    This second and final monster commit was created by applying Nikhil\u0027s\n    scripts `docconverter.py\u0027 and `markify.py\u0027 to all C header and source files,\n    followed up by minor manual clean-up.\n\n    No change in functionality, of course.\n\n    I used commit f7419907bc6044b9b7057f9789866426c804ba82 from\n    https://github.com/nikramakrishnan/freetype-docs.git.\n\ncommit dc170dea33545dbbbf18bb59b316117e73275889\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 3 21:23:04 2018 +0200\n\n    Typos.\n\ncommit 80ac36453019546b92334f2c7a58edd006eb722f\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Sun Jun 3 18:31:58 2018 +0200\n\n    * src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables.\n\ncommit 64bf5d48eb711ac13d7eda1ddae61332041a0631\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 3 09:19:54 2018 +0200\n\n    Minor formatting.\n\ncommit 02842872deb202f36cc473f790e3a555adb2c987\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 3 09:17:55 2018 +0200\n\n    * src/tools/glnames.py (main): Emit header in `light\u0027 comment style.\n\ncommit 9ac9060df00010a3eec234a8fea9cded9b8282a1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun Jun 3 09:01:17 2018 +0200\n\n    [GSoC] src/*.*: Convert block comments to `light\u0027 style.\n\n    This monster commit was created by applying Nikhil\u0027s scripts\n    `docconverter.py\u0027 and `markify.py\u0027 to all C header and source files,\n    followed up by minor manual clean-up.\n\n    No change in functionality, of course.\n\n    I used commit f7419907bc6044b9b7057f9789866426c804ba82 from\n    https://github.com/nikramakrishnan/freetype-docs.git.\n\ncommit ae248034106b600e8e3fa9ccc17f63db44b04db3\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sat Jun 2 21:42:44 2018 -0400\n\n    [smooth] Attempt to mitigate bug #54019.\n\n    The robust rendering of estra large glyphs came with unbearable cost.\n    The old way of bisecting should fail but fail faster.\n\n    * src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting\n    in y-direction.\n\ncommit 67994e8221b4ffa6bfd24075c64f8af618ca9495\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 2 19:51:03 2018 +0200\n\n    * src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d8706\n\ncommit fab10b6fc2091df6bde50e132f7b4bd7bca97c9f\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sat Jun 2 09:53:58 2018 +0200\n\n    * src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033).\n\ncommit 125b84800a3230305b7fbc8eedeee106fa78adae\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 31 10:49:05 2018 +0200\n\n    * src/raster/ftraster.c (black_TWorker_): Remove `gTarget\u0027 field.\n\n    This is no longer used.\n\ncommit 250b0c624a49ca56e221ae9778ebac747175c9bd\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Wed May 30 23:29:41 2018 -0400\n\n    Shorten LCD filtering docs.\n\ncommit 0589f6e6ee6e9bfe0c7139374fc8812e849e7bf7\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 31 00:34:38 2018 +0200\n\n    [sfnt] Get colors from `CPAL\u0027 table in right order (#54015).\n\n    * src/sfnt/ttcolr.c (tt_face_find_color): Fix it.\n\ncommit db7c4060840c1e6b657e8a0fd8b449ba0968d0a3\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed May 30 21:21:19 2018 +0200\n\n    ftcolor.h: Improve API design, fix typos (#54011, #54014).\n\n    * include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...\n    (FT_Palette_Get_Name_IDs): ... this function.\n    (FT_Palette_Get_Entry_Names): Replace with...\n    (FT_Palette_Get_Entry_Name_IDs): ... this function\n    s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.\n\ncommit d45d4b97e6a03cfe21a2952138cf6e970fc358e5\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Wed May 30 17:35:39 2018 +0200\n\n    Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.\n\n    * src/autofit/afloader.c (af_loader_load_glyph): Move the\n    initialisation and declaration of variables into the if-block.\n\ncommit a3cfed5e87232c933bdc64f43e8ebebcfd18b41b\nAuthor: Armin Hasitzka \u003cprince.cherusker@gmail.com\u003e\nDate:   Wed May 30 12:37:46 2018 +0200\n\n    Fix pointer underflow.\n\n    The declaration of `edge2\u0027 can be reached with `edge1 \u003d\u003d NULL\u0027 and\n    `axis-\u003eedges \u003d\u003d 0\u0027 which results in undefined behaviour.\n\n    * src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2\u0027\n    after checking `axis-\u003enum_edges \u003e 1\u0027.  `edge1 !\u003d NULL\u0027 can be assumed.\n\ncommit ae2cd1b74966e957a4f3724db001d65d6decc177\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed May 30 09:34:57 2018 +0200\n\n    Various minor color fixes.\n\n    * include/freetype/config/ftheader.h (FT_COLOR_H): New macro.\n\n    * include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change\n    type of `load_flags\u0027 to `FT_Int32\u0027.\n\n    * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change\n    type of `idx\u0027 to `FT_UInt\u0027.\n    (TT_Blend_Colr_Func): Change type of `color_index\u0027 to `FT_UInt\u0027.\n\n    * src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of\n    `load_flags\u0027 to `FT_Int32\u0027.\n\n    * src/sfnt/ttcolr.c (find_base_glyph_record,\n    tt_face_load_colr_layers): Change type of `glyph_id\u0027 to `FT_UInt\u0027.\n    (tt_face_find_color, tt_face_colr_blend_layer): Change type of\n    `color_index\u0027 to `FT_UInt\u0027.\n    Fix signedness and type issues.\n\n    * src/sfnt/ttcolr.h: Updated.\n\ncommit 51fee655837ef99084767873266aaddfa3a31da5\nAuthor: Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e\nDate:   Fri May 25 22:16:11 2018 +0200\n\n    [docmaker] Fix missing `Defined in (...)\u0027 under Windows/Cygwin.\n\n    This platform uses backslashes for paths, which docmaker didn\u0027t\n    understand correctly.\n\n    * src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use\n    `os.path.normpath\u0027 to normalize the path for the platform being\n    used.\n\ncommit 7b73cb0707586e7988efdd07a1dfe690c3036ca1\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Thu May 24 22:38:24 2018 -0400\n\n    [smooth] Formalize Harmony LCD rendering.\n\n    This generalizes magic outline shifts that make Harmony LCD\n    rendering work in terms of precise two-dimensional RGB subpixel\n    positions. These coordinates are now set in time of the `smooth\u0027\n    module initialization and later used to shift a glyph outline for\n    rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same\n    coordinates. The letter, however, rotates them before using.\n    The LCD bitmap padding is also calculated using these coordinates.\n\n    * include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field\n    `lcd_geometry\u0027.\n    * src/base/ftlcdfil.c (ft_lcd_padding): Reworked.\n    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.\n\n    * src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]\n    (ft_smooth_init): Initialize `lcd_geometry\u0027.\n    (ft_smooth_render_generic): Formalize outline shifts.\n\ncommit 3fcb4cfa26e697c8c643bfc7e46b03f013394fa1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 22 09:12:21 2018 +0200\n\n    Oops!\n\ncommit 3360ca5853007f1bc5a550c3837f08242fd4c651\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 22 09:06:24 2018 +0200\n\n    [truetype] Reject elements of composites with invalid glyph indices.\n\n    Reported as\n\n      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d8413\n\n    * src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it.\n\ncommit 3c99016f8fed63c2c6a10565d72bf7d8e924f57e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 22 07:53:49 2018 +0200\n\n    * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points.\n\ncommit 93363cd737a762fbc0e482eef386097b1ca04930\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun May 20 22:50:00 2018 +0200\n\n    * include/freetype/ftcolor.h: New file.\n\n    This is an interface to the `CPAL\u0027 OpenType table.  No\n    implementation yet.\n\ncommit af28249862e95771748f1b78b7bdfc7adf67cf2a\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Sun May 20 06:27:08 2018 -0400\n\n    Autoformatting.\n\ncommit 2f218a4c3abf772976bdc86226c689de5d40e86e\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Fri May 18 08:57:30 2018 -0400\n\n    * include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER\u0027.\n\n    Actually `_BitScanReverse\u0027 is available since VS2005.\n\ncommit 840b844301d9f5561627314b18fb81135abf0407\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri May 18 10:57:51 2018 +0200\n\n    * include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER\u0027 value.\n\n    Older VC versions don\u0027t provide `_BitScanReverse\u0027.  We test for VC\n    2013.\n\n    Reported by John Emmas \u003cjohn@creativepost.co.uk\u003e.\n\ncommit 3331b84fc2a2020dcf84511003172c4395a78f24\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Fri May 18 07:19:57 2018 +0200\n\n    Minor comment fixes.\n\ncommit 2cac1c3542cc250c98a3d1f3b9b8c8e62660005e\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Thu May 17 19:40:44 2018 +0200\n\n    s/inline/__inline/ for MSVC.\n\n    Reported by John Emmas \u003cjohn@creativepost.co.uk\u003e.\n\n    * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.\n\ncommit 583dabf2918cc9ca82cac0b16482d2c56de8c3fa\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed May 16 20:37:43 2018 +0200\n\n    Add function `FT_Get_GlyphLayers\u0027 to access `COLR\u0027 table data.\n\n    * include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this\n    structure to...\n    * include/freetype/freetype.h (FT_Glyph_LayerRec): ... this\n    header file.\n    (FT_Glyph_Layer): New typedef.\n    Update code to use it where appropriate.\n\n    * src/base/ftobjs.c (FT_Get_GlyphLayers): New function.\n\ncommit f1458d2e44d89e8bc7c0db068f1cbc54b74b9d98\nAuthor: Alexei Podtelezhnikov \u003capodtele@gmail.com\u003e\nDate:   Tue May 15 21:47:18 2018 -0400\n\n    [base] Fix mono bitmap presetting (#53896).\n\n    It is rather fundamental to set monochrome bitmap based on rounded\n    CBox because the b/w rasterizer turns on pixels when their centers are\n    inside the glyph outline. The dropout control is unpredictable and can\n    distort narrow glyphs if the bitmap is too wide.\n\n    Reported by Chris Liddell.\n\n    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries\n    are too close, adjust them before rounding.\n\ncommit 49c5e24a149a960b5f2736d7b1d98a4d56d7e2f0\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 15 21:55:28 2018 +0200\n\n    [psaux] Fix compiler warning (#53915).\n\n    * src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.\n\ncommit befee11296032fc8b25d87bf0f65c18bb67682bb\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 15 17:01:22 2018 +0200\n\n    [sfnt] Fix memory leak in handling `COLR\u0027 data.\n\n    * src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers\u0027 array\n    before reassigning allocated memory.\n    Only allocate `color_layers\u0027 if we don\u0027t have one already.\n\ncommit 5fd125640a7c4130486511fa4e40ac8195dc4373\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 15 11:30:49 2018 +0200\n\n    Grammar fixes.\n\ncommit 2dd20916117e36a49b52206ceb6689eae5060c58\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 15 09:05:53 2018 +0200\n\n    [sfnt] If `COLR\u0027 is present, don\u0027t assume that all glyphs use it.\n\n    * src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if\n    current glyph is not a `COLR\u0027 base glyph.\n\n    * src/truetype/ttgload.c (TT_Load_Glyph): Don\u0027t allocate\n    `color_layers\u0027 if there are no color layers.\n\ncommit 06820637e2e1b6779c0157abb11a3bb4d65e1f53\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon May 14 09:45:16 2018 +0200\n\n    * src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes\u0027.\n\ncommit c5a8a5350a572cac399643ec8cacdb3330dc79df\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon May 14 09:42:20 2018 +0200\n\n    Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES\u0027 is not set.\n\n    * src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.\n\ncommit 78db8a2570b51a7503078c228afeec90147817c4\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun May 13 11:53:01 2018 +0200\n\n    Typo.\n\ncommit 1b2abda9d23b218e08e240fc3d062661c22258d1\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Sun May 13 10:58:49 2018 +0200\n\n    * src/base/ftobjs.c (FT_Load_Glyph): Improve tracing.\n\ncommit f04d81751ac68b23c89da2edd31c43fd9fc5c75c\nAuthor: Shao Yu Zhang \u003cshaozhang@fb.com\u003e\nDate:   Sun May 13 03:25:09 2018 +0200\n\n    [sfnt] Preliminary support of coloured layer outlines.\n\n    This commit enables OpenType\u0027s COLR/CPAL table handling; a typical\n    application are color emojis that can be scaled to any size.\n\n    If the color palette does not exist or is invalid, the rendering\n    step rasterizes the outline instead.  The current implementation\n    assumes that the foreground is black.\n\n    Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.\n\n    There are still some issues with metrics; additionally, an API to\n    fetch color layers is missing.\n\n    * devel/ftoption.h, include/freetype/config/ftoption.h\n    (TT_CONFIG_OPTION_COLOR_LAYERS): New macro.\n\n    * include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,\n    FT_Colr_InternalRec): New structures.\n    (FT_Slot_InternalRec): Add `color_layers\u0027 field.\n\n    * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,\n    TT_Blend_Colr_Func): New function types.\n    (SFNT_Interface): Add `load_colr\u0027, `free_colr\u0027, `load_colr_layer\u0027,\n    and `colr_blend\u0027 fields.\n\n    * include/freetype/internal/tttypes.h (TT_FaceRec): Add\n    `colr_and_cpal\u0027 field.\n\n    * include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New\n    macros.\n\n    * src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.\n\n    * src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):\n    Handle glyph color layers.\n\n    * src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add\n    `ttcolr.c\u0027.\n\n    * src/sfnt/sfdriver.c: Include `ttcolr.h\u0027.\n    (PUT_COLOR_LAYERS): New macro.\n    Update call to `FT_DEFINE_SFNT_INTERFACE\u0027.\n\n    * src/sfnt/sfnt.c: Include `ttcolr.c\u0027.\n\n    * src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR\u0027 and `CPAL\u0027 tables.\n    (sfnt_done_face): Updated.\n\n    * src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.\n\ncommit 84eebf48021ab76c1c628bb7451b712f701e4518\nAuthor: Arkady Shapkin \u003carkady.shapkin@gmail.com\u003e\nDate:   Sat May 12 06:16:46 2018 +0200\n\n    Use MS VC++\u0027s _BitScanReverse to calculate MSB (patch #9636).\n\n    * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement\n    it.\n\ncommit fb742477b235dc1f7113790f94705423f5e0f0a1\nAuthor: Parth Wazurkar \u003cparthwazurkar@gmail.com\u003e\nDate:   Fri May 11 23:27:06 2018 +0530\n\n    [pcf]Documentation Typo.\n\ncommit 9e345c911714ed62250be13d03d72e25d91fbc77\nAuthor: Alan Coopersmith \u003calan.coopersmith@oracle.com\u003e\nDate:   Thu May 10 10:10:43 2018 +0200\n\n    Further fix to visibility flag testing with Solaris Studio compilers.\n\n    AC_COMPILE_IFELSE only tries to compile a `*.c\u0027 to a `*.o\u0027.  The\n    Solaris Studio 12.1 through 12.5 compilers see the\n    `-fvisibility\u003dhidden\u0027 flag, but ignore it with a warning of:\n\n      cc: Warning: Option -fvisibility\u003dhidden passed to ld,\n                   if ld is invoked, ignored otherwise\n\n    AC_LINK_IFELSE does the compile and then tries to link the result,\n    at which point the Solaris linker will issue an error:\n\n      ld: fatal: option \u0027-fvisibility\u003dhidden\u0027 is incompatible with\n          building a dynamic executable\n\n    If we don\u0027t use AC_LINK_IFELSE to catch the error, then configure\n    will fail further tests which attempt to link, such as those testing\n    dependencies like `libbz2\u0027.\n\n    Also, don\u0027t try adding `-fvisibility\u0027 if we have already added\n    `-xldscope\u0027, just use one of them, since Sun Studio 12 and earlier\n    compilers only issue a warning, and don\u0027t try passing through to the\n    linker to generate an error, so AC_LINK_IFELSE doesn\u0027t catch them.\n\n    Tested on Solaris 11.4 beta with compiler versions:\n\n      Sun Studio 8 (Sun C 5.5)\n      Sun Studio 10 (Sun C 5.7)\n      Sun Studio 11 (Sun C 5.8)\n      Sun Studio 12 (Sun C 5.9)\n      Sun Studio 12.1 (Sun C 5.10)\n      Oracle Solaris Studio 12.2 (Sun C 5.11)\n      Oracle Solaris Studio 12.3 (Sun C 5.12)\n      Oracle Solaris Studio 12.4 (Sun C 5.13)\n      Oracle Developer Studio 12.5 (Sun C 5.14)\n      Oracle Developer Studio 12.6 (Sun C 5.15)\n      gcc 5.5.0\n      gcc 7.3.0\n\n    and verified the libfreetype.so.6 generated by each of those\n    compilers exported the same set of symbols.\n\n    * builds/unix/configure.raw: Implement it.\n\ncommit e0015f7612cf07ff80561475321ce1f98c7c2b88\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Tue May 8 11:51:16 2018 +0200\n\n    [autofit] Avoid potential SEGV if running out of memory.\n\n    Problem reported by Shailesh Mistry \u003cshailesh.mistry@hotmail.co.uk\u003e.\n\n    * src/autofit/afshaper.c (af_shaper_buf_create,\n    af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don\u0027t\n    allocate and free a four-byte buffer.  Instead, make those functions\n    no-ops; the calling functions will provide a pointer to a buffer\n    instead.\n\n    * src/autofit/afcjk.c (af_cjk_metrics_init_widths,\n    af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),\n    src/autofit/aflatin.c (af_latin_metrics_init_widths,\n    af_latin_metrics_init_blues, af_latin_metrics_check_digits)\n    [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for\n    `shaper_buf\u0027.\n\ncommit f7b4fb3a214c15df0579979bd1bd4e7f613f0209\nAuthor: Nikolaus Waxweiler \u003cmadigens@gmail.com\u003e\nDate:   Mon May 7 23:10:36 2018 +0100\n\n    CMake: Allow using project as subfolder in other project\n\n    * CMakeLists.txt: Test for CMake build directory being diffent from\n    source directory. Provide other parts of the build system access the\n    full include directory.\n\ncommit 7702edf793ed47effbb26050d66cb2acfcde2b96\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Mon May 7 08:54:34 2018 +0200\n\n    [build] Suppress configure\u0027s `nothing to be done\u0027 message.\n\n    This is due to calling the configure script via `make\u0027 (within the\n    top-level `configure\u0027 wrapper script).  The same can happen for all\n    other secondary make targets that are used to only modify the\n    primary one, e.g., `make setup devel\u0027.\n\n    * builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),\n    builds/os2/detect (visualage, watcom, borlandc, devel),\n    builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk\n    (visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,\n    devel-gcc): Use no-op recipe.\n\ncommit 2b3e0ef6c095cf6ea920e95fc9826dc39694162a\nAuthor: suzuki toshiya \u003cmpsuzuki@hiroshima-u.ac.jp\u003e\nDate:   Fri May 4 12:55:48 2018 +0900\n\n    Support symbol visibility features of Sun / Oracle C compilers.\n    Reported by Kiyoshi Kanazawa:\n    https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html\n    Thanks to the suggestions by Alexei and Alan Coopersmith.\n\n    * builds/unix/configure.raw: Check if \"-xldscope\u003dhidden\" is\n    accepted, and if so, it is added to CFLAGS.  This is the option\n    making Sun / Oracle C compilers hide the symbols from global\n    scope.\n    * include/freetype/config/ftconfig.h: Use \"__global\" prefix\n    for FT_EXPORT() macro, if SunPro C is newer than Sun ONE\n    Studio 8 (2003).\n    * builds/unix/ftconfig.in: Ditto.\n    * builds/vms/ftconfig.h: Ditto.\n\ncommit 660afb5ce81ccf3271ec80b6475ec8b16d862a25\nAuthor: Nikolaus Waxweiler \u003cmadigens@gmail.com\u003e\nDate:   Wed May 2 23:19:55 2018 +0100\n\n    Unbreak CMake Windows installation\n\n    * CMakeLists.txt: Generate ftconfig.h on non-UNIX.\n\ncommit 9514959241dec9943a99cd1c8f0c214a5fbb0d91\nAuthor: Werner Lemberg \u003cwl@gnu.org\u003e\nDate:   Wed May 2 20:27:48 2018 +0200\n\n    Remove FT_CONFIG_OPTION_PIC and related code.\n\n    */* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this\n    preprocessor symbol.\n\n    */*: Replace `XXX_GET\u0027 macros (which could be either a function in\n    PIC mode or an array in non-PIC mode) with `xxx\u0027 arrays.\n\n    * include/freetype/internal/ftpic.h, src/autofit/afpic.c,\n    src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,\n    src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,\n    src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,\n    src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,\n    src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,\n    src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:\n    Removed.\n\nChange-Id: Ibb9451590d0faeead985c89b8fb7f3d0d60f0673\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/441576\nReviewed-by: Jason Simmons \u003cjsimmons@google.com\u003e\n"
    },
    {
      "commit": "8d194291224f4a1d2ff33d711353c6b5e1083479",
      "tree": "c5f87abbabe2c3463a5848dfe31d1212908fdb96",
      "parents": [
        "ac69ae6ff04550d54a3a7f0228ceac3718ddcd40"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Sun Sep 06 21:43:35 2020 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Mon Sep 07 04:45:00 2020 +0000"
      },
      "message": "[Wconversion] Suppress warnings\n\nUndo the previous change where I recklessly wrecked a bunch of things.\nProperly add -Wno-conversion this time around.\n\nBug: 56258\nBug: 58162\nChange-Id: I1f497f68ba77da8c24ab53533c74f72a5a60f769\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/424325\nReviewed-by: Shai Barack \u003cshayba@google.com\u003e\n"
    },
    {
      "commit": "ac69ae6ff04550d54a3a7f0228ceac3718ddcd40",
      "tree": "8ef5717b4856ee385b73f65cc8b4aefd1c350ab1",
      "parents": [
        "2a4c8437f9a52c6d469548d9e4339eb91aba2be4"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Mon Aug 31 13:36:16 2020 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Wed Sep 02 18:57:53 2020 +0000"
      },
      "message": "[Wconversion] Suppress warnings\nBug: 56258\nBug: 58162\n\nChange-Id: Id8b2eeba114652527710affe3f35483cb0d6e9b6\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/422715\nReviewed-by: Petr Hosek \u003cphosek@google.com\u003e\n"
    },
    {
      "commit": "2a4c8437f9a52c6d469548d9e4339eb91aba2be4",
      "tree": "670a0bc031cd4143f7ec64d3828247a51b8b8a65",
      "parents": [
        "b8e4daa94a0af0ed42524e76a842cd9b02eac00d"
      ],
      "author": {
        "name": "Leonard Chan",
        "email": "leonardchan@google.com",
        "time": "Mon Feb 24 16:35:19 2020 -0800"
      },
      "committer": {
        "name": "Leonard Chan",
        "email": "leonardchan@google.com",
        "time": "Mon Feb 24 16:49:56 2020 -0800"
      },
      "message": "[UBSan][freetype2] Temporarily disable UBSan\n\nUBSan was complaining about a zero-offset to nullptr. It seems that\naudio_consumer_connection_closed_ was never initialized, so default init\nit to false.\n\nBug: 46923\nChange-Id: Iccbd91ac633efc40c1c7fa1ab88d0989815ebdd0\n"
    },
    {
      "commit": "b8e4daa94a0af0ed42524e76a842cd9b02eac00d",
      "tree": "0dc40bf7db2a36c478bcc1c964d8cbe7f880132c",
      "parents": [
        "8e6772aaa54a0729cebc8437365f7e48464f98ca"
      ],
      "author": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Tue Sep 03 18:28:40 2019 -0700"
      },
      "committer": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Thu Sep 12 17:17:59 2019 -0700"
      },
      "message": "[freetype] Enable building freetype2 for Rust host targets\n\nAdd a new target that disables FT_CONFIG_OPTION_USE_PNG and uses `-fPIC`.\n\nfreetype2 and libpng fail to link when building for host, apparently due to\nfreetype2\u0027s use of private libpng symbols.\n\nBug: 8892\nBug: 36015\nBug: 36315\n\nDepends-On: I0386586e7d69f0994a28438d5a0f652c983ab648\nChange-Id: Id0e75da5176dcabc46a346ebcf81f16269f8df9a\n"
    },
    {
      "commit": "8e6772aaa54a0729cebc8437365f7e48464f98ca",
      "tree": "9ecf9eb1f7354463b521bb29db73989f433498d2",
      "parents": [
        "edab12c07ac05d1185616688f338b1ad15936796"
      ],
      "author": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Mon Sep 09 19:07:17 2019 -0700"
      },
      "committer": {
        "name": "Konstantin Pozin",
        "email": "kpozin@google.com",
        "time": "Tue Sep 10 11:55:50 2019 -0700"
      },
      "message": "[freetype] Fix duplicate definition of FT_EXPORT\n\nThe duplicate was preventing freetype2 from building at master\n(edab12c07ac05d1185616688f338b1ad15936796).\n\nBug: 36344\n\nChange-Id: I89835eeae4c9ea38dcdf313b8de7345377fb06ac\n"
    },
    {
      "commit": "edab12c07ac05d1185616688f338b1ad15936796",
      "tree": "99acdaf99873b2b9b4829d5e720864f40647d118",
      "parents": [
        "a10b062df0c8958d69377aa04ea6554a9961a111"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Wed May 15 16:12:15 2019 -0700"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Wed May 15 16:12:15 2019 -0700"
      },
      "message": "Add ftbdf.c (used by Fontconfig)\n\nChange-Id: Id9e310828a4c4a92372d9e87fe4082942b193a1a"
    },
    {
      "commit": "a10b062df0c8958d69377aa04ea6554a9961a111",
      "tree": "d8d01326a802918267f4d4a14707688fe6b1a8ae",
      "parents": [
        "312d4e9062e3d6dccffe454ae3e36d3cef91558e"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Nov 02 11:15:21 2018 -0700"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Fri Nov 02 12:00:21 2018 -0700"
      },
      "message": "Remove support for uncommon/outdated font formats\n\nThis reduces Flutter\u0027s binary size by ~127 KB uncompressed or 80 KB compressed.\n\nGoing forward, we intent to only support the following formats:\n\n* TrueType fonts (TTF) and TrueType collections (TTC)\n* CFF fonts\n* OpenType fonts (OTF, both TrueType and CFF variants) and OpenType collections (OTC)\n* SFNT-based bitmap fonts, including color Emoji\n\nSupport for all other formats (including mac dfont) has been removed.\n\nChange-Id: I5932cbfb9a450c97c911de55f505bd228e593a69\n"
    },
    {
      "commit": "312d4e9062e3d6dccffe454ae3e36d3cef91558e",
      "tree": "e132477a0d7734c6db42dc0e55e0852ac15d92c9",
      "parents": [
        "6581fd3e9c8645f01c0d51e4f53893f5391f2bf3",
        "38d69ce0df2fbae1321a951e896a5c69304e8fb8"
      ],
      "author": {
        "name": "Sergey Ulanov",
        "email": "sergeyu@google.com",
        "time": "Fri Sep 21 22:38:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 21 22:38:24 2018 +0000"
      },
      "message": "Merge \"[freetype] Build freetype2 as a shared library.\""
    },
    {
      "commit": "38d69ce0df2fbae1321a951e896a5c69304e8fb8",
      "tree": "4ed3b426852629a92b934381a776521ca18fe566",
      "parents": [
        "bd6b6b9105f69808cbe50b5cde2775759eb0802d"
      ],
      "author": {
        "name": "Sergey Ulanov",
        "email": "sergeyu@chromium.org",
        "time": "Fri Sep 21 11:35:54 2018 -0700"
      },
      "committer": {
        "name": "Sergey Ulanov",
        "email": "sergeyu@chromium.org",
        "time": "Fri Sep 21 11:35:54 2018 -0700"
      },
      "message": "[freetype] Build freetype2 as a shared library.\n\nfreetype2 will be used in font_server. Building it as a shared library\nwill allow to share it with outher binaries that need it, reducing total\nimage size.\n\nUS-409\n\nChange-Id: I446a5b71585387fc4f05231a66f4d7b496523b49\n"
    },
    {
      "commit": "6581fd3e9c8645f01c0d51e4f53893f5391f2bf3",
      "tree": "93eb4ebdf10d194c00789d4001cc76f570d2f8cc",
      "parents": [
        "3515a77bb83002b69a2957efdbcb764de4de07da"
      ],
      "author": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Sep 10 14:55:40 2018 +0200"
      },
      "committer": {
        "name": "Michael Goderbauer",
        "email": "goderbauer@google.com",
        "time": "Mon Sep 10 13:08:10 2018 +0000"
      },
      "message": "Reduce visiblity of symbols\n\nThis enables us to reduce binary sizes in Flutter further.\n\nChange-Id: I526fd70e7f5d3ca8de7da85ffe9cef7dcf31c47f\n"
    },
    {
      "commit": "3515a77bb83002b69a2957efdbcb764de4de07da",
      "tree": "b15b18109e866b93d787ce763f96fe56b2d7c060",
      "parents": [
        "1eec72214e3d0094f75d4e8c61db4f4d26509350"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Thu Aug 09 17:15:22 2018 -0700"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Thu Aug 09 17:34:34 2018 -0700"
      },
      "message": "Build rules for FreeType 2.9.1\n\nChange-Id: I26b4a399bce6bf2b35d9e6fe1c412ed47dd28f29\n"
    },
    {
      "commit": "1eec72214e3d0094f75d4e8c61db4f4d26509350",
      "tree": "1663dcab9d1e5d70a12dad80662bb286e10e0291",
      "parents": [
        "bd6b6b9105f69808cbe50b5cde2775759eb0802d",
        "86bc8a95056c97a810986434a3f268cbe67f2902"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Thu Aug 09 17:32:06 2018 -0700"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Thu Aug 09 17:32:06 2018 -0700"
      },
      "message": "Update to FreeType 2.9.1\n\nChange-Id: Id9fd666d5ee6b7ca0c5f3befa054b714d5440f5a\n"
    },
    {
      "commit": "bd6b6b9105f69808cbe50b5cde2775759eb0802d",
      "tree": "917fa3b61dcf2d68bc06dc52ad0d7aee09aac0d3",
      "parents": [
        "216cef95308ffb6602b0ed1da300df179d2e6df8"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Wed May 16 09:26:10 2018 -0700"
      },
      "committer": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Wed May 16 09:26:10 2018 -0700"
      },
      "message": "Update README.fuchsia\n\nChange-Id: Ifa2c912acc3fc63afdd85650e75eb9b8e11f114e\n"
    },
    {
      "commit": "86bc8a95056c97a810986434a3f268cbe67f2902",
      "tree": "34694611454c8e95bd398d54da805ffb4e94577b",
      "parents": [
        "ac97a29653e2a551064705891bc578c53ecf056d"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue May 01 20:27:24 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue May 01 20:37:24 2018 +0200"
      },
      "message": "* Version 2.9.1 released.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-9-1\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.9.1.\n* docs/CHANGES: Updated.\n\n* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,\nsrc/base/ftver.rc, builds/windows/vc2005/index.html,\nbuilds/windows/vc2008/freetype.vcproj,\nbuilds/windows/vc2008/index.html,\nbuilds/windows/vc2010/freetype.vcxproj,\nbuilds/windows/vc2010/index.html,\nbuilds/windows/visualc/freetype.dsp,\nbuilds/windows/visualc/freetype.vcproj,\nbuilds/windows/visualc/index.html,\nbuilds/windows/visualce/freetype.dsp,\nbuilds/windows/visualce/freetype.vcproj,\nbuilds/windows/visualce/index.html,\nbuilds/wince/vc2005-ce/freetype.vcproj,\nbuilds/wince/vc2005-ce/index.html,\nbuilds/wince/vc2008-ce/freetype.vcproj,\nbuilds/wince/vc2008-ce/index.html: s/2.9/2.9.1/, s/29/291/.\n\n* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.\n\n* builds/unix/configure.raw (version_info): Set to 22:1:16.\n* CMakeLists.txt (VERSION_PATCH): Set to 1.\n\n* include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.\n"
    },
    {
      "commit": "ac97a29653e2a551064705891bc578c53ecf056d",
      "tree": "20b2c3e010ce2d062c284c09ea543fd9464b9bbe",
      "parents": [
        "2157d8fa6f7e12063ca166476ed2223d24234db7"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Apr 26 09:04:39 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Apr 26 09:04:39 2018 +0200"
      },
      "message": "Another fix for handling invalid format 2 cmaps.\n\nSigh.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d8003\n\n* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid\nan endless loop.\n"
    },
    {
      "commit": "2157d8fa6f7e12063ca166476ed2223d24234db7",
      "tree": "a4a94df9710c34f1ad6fe22c3e19f2f7efa5713e",
      "parents": [
        "67697d0076cbd2e59ee22c665b2ee792ef5b54ae"
      ],
      "author": {
        "name": "Ben Wagner",
        "email": "bungeman@google.com",
        "time": "Tue Apr 24 10:29:19 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Apr 24 10:29:19 2018 +0200"
      },
      "message": "[base] Avoid undefined behaviour in lcd filtering code (#53727).\n\n* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):\nEnsure `height \u003e 0\u0027.\n"
    },
    {
      "commit": "67697d0076cbd2e59ee22c665b2ee792ef5b54ae",
      "tree": "41c61f3b080d815a8c8b1599059003580bf05c14",
      "parents": [
        "3b88576ba0807f5203310c22d5dbfff803c4abd9"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 21:15:10 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 21:15:10 2018 +0200"
      },
      "message": "* src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing.\n"
    },
    {
      "commit": "3b88576ba0807f5203310c22d5dbfff803c4abd9",
      "tree": "88f5b271a16bcb63e359b91dc83fe85edb120dfe",
      "parents": [
        "c2e2a8e5d9dbc1d06064b93fbdcae6737ddc2f5b"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Sun Apr 22 17:22:35 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 17:22:35 2018 +0200"
      },
      "message": "[base] Fix bitmap emboldening.\n\nBug introduced after release 2.8.\n\n* src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use\n`FT_QALLOC_MULT\u0027, which doesn\u0027t zero out the buffer.  Adjust the\nbitmap copying code to take care of this fact.\n"
    },
    {
      "commit": "c2e2a8e5d9dbc1d06064b93fbdcae6737ddc2f5b",
      "tree": "08ba013c2f3a470a1a94a339107520eb3a1d79ba",
      "parents": [
        "c0f1adedcfaad4f7d2fe912ff4b2933845d61d93"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 17:13:50 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 17:13:50 2018 +0200"
      },
      "message": "Revert \"[base] Fix bitmap copying where the new pitch is smaller.\"\n\nThis reverts commit c0f1adedcfaad4f7d2fe912ff4b2933845d61d93.\n"
    },
    {
      "commit": "c0f1adedcfaad4f7d2fe912ff4b2933845d61d93",
      "tree": "3c5a6b548273b0d6d18ed4da6758c6f042307d3d",
      "parents": [
        "38ecc949ce1bfe4ceb567df7d8c7daf1d620fd3a"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 11:44:24 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 11:44:24 2018 +0200"
      },
      "message": "[base] Fix bitmap copying where the new pitch is smaller.\n\n* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Handle it.\n"
    },
    {
      "commit": "38ecc949ce1bfe4ceb567df7d8c7daf1d620fd3a",
      "tree": "08ba013c2f3a470a1a94a339107520eb3a1d79ba",
      "parents": [
        "92e4662ba6a5f7d364f2138fb398d90b210b65e7"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 10:14:03 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 22 10:14:03 2018 +0200"
      },
      "message": "Another fix for handling invalid format 2 cmaps.\n\nThe previous commit was incomplete.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7928\n\n* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid\nan endless loop.\n"
    },
    {
      "commit": "92e4662ba6a5f7d364f2138fb398d90b210b65e7",
      "tree": "2e04e6b17aae41a39bf05e8c077343320df3cf9d",
      "parents": [
        "e4b6d8532673d0dab6138d98c33ed9ab8d23e05c"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Apr 19 17:57:42 2018 -0400"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Apr 19 17:57:42 2018 -0400"
      },
      "message": "Documentation tweaks.\n"
    },
    {
      "commit": "e4b6d8532673d0dab6138d98c33ed9ab8d23e05c",
      "tree": "ba7e1e3dd5124ea98fbfcdc8e7f723baa1c091e0",
      "parents": [
        "1655e00fced6d16187fe2b3494d562795b2addd7"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Apr 19 17:43:03 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Apr 19 17:43:03 2018 +0200"
      },
      "message": "[autofit] Add support for Georgian Mtavruli characters.\n\nThis will be part of the forthcoming Unicode 11.0.\n\n* src/autofit/afblue.dat: Add blue zone data for Mtavruli.\n* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.\n\n* src/autofit/afscript.h: Add Mtavruli standard character.\n"
    },
    {
      "commit": "1655e00fced6d16187fe2b3494d562795b2addd7",
      "tree": "f1b6d16f86f6b20915fe300f7e1e071e90d82f04",
      "parents": [
        "2a1597826a84275660e7410368200b37f85ffdaf"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Apr 19 14:45:19 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Apr 19 14:45:19 2018 +0200"
      },
      "message": "Fix handling of invalid format 2 cmaps.\n\nThe problem was introduced after the last release.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7828\n\n* src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.\n"
    },
    {
      "commit": "2a1597826a84275660e7410368200b37f85ffdaf",
      "tree": "2f6e67d4fbe40a1e40af1cbf3a75cde26361d044",
      "parents": [
        "632a11f91f0d932ac498e9e6ca022c9903ab05e9"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Apr 17 12:25:17 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Apr 17 12:25:17 2018 +0200"
      },
      "message": "[truetype] Integer overflow issues.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7739\n\n* src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.\n"
    },
    {
      "commit": "632a11f91f0d932ac498e9e6ca022c9903ab05e9",
      "tree": "5db1f5a2978232517fd5b529da0a6b6624954333",
      "parents": [
        "70ac167c47f5ca966fb578b1f215430f46915a49"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Apr 16 19:51:37 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Apr 16 19:51:37 2018 +0200"
      },
      "message": "CHANGES: Mention CVE-2018-6942.\n"
    },
    {
      "commit": "70ac167c47f5ca966fb578b1f215430f46915a49",
      "tree": "1522881f676199c75e09a35f371e3fdc4b71f2f3",
      "parents": [
        "939bbee1c007d307f80c538b2a09ee2632f16655"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Apr 16 10:39:10 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Apr 16 10:39:10 2018 +0200"
      },
      "message": "[truetype] Integer overflow issues.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7718\n\n* src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.\n"
    },
    {
      "commit": "939bbee1c007d307f80c538b2a09ee2632f16655",
      "tree": "a41f8a1385a2e51126907dc90da0b90f48a8423c",
      "parents": [
        "843193b9d51a6c1acbf48b580160220e90110561"
      ],
      "author": {
        "name": "Ankit Dhankhar",
        "email": "ankit97dhankhar@gmail.com",
        "time": "Sun Apr 15 22:35:40 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 15 22:35:40 2018 +0200"
      },
      "message": "[docmaker] Make it work with python3.\n\n* src/tools/docmaker (*.py): Use parentheses around arguments of `print\u0027.\nRemove unused imports.\n"
    },
    {
      "commit": "843193b9d51a6c1acbf48b580160220e90110561",
      "tree": "56ff39e17d619a9e6d434a67bc32dfdc63a1b2ff",
      "parents": [
        "235b1e2fe6ca325f449c5a73c75432d62d73f524"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Sun Apr 15 16:27:10 2018 -0400"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Sun Apr 15 16:27:10 2018 -0400"
      },
      "message": "[build] Use `info\u0027 function of make 3.81.\n\n* configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,\ndocs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.\n\n* builds/detect.mk (std_setup): Replace `echo\u0027 with `info\u0027.\n(dos_setup): Removed.\n* builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,\nbuilds/windows/detect.mk, builds/os2/detect.mk: Updated.\n* builds/newline: No longer needed.\n"
    },
    {
      "commit": "235b1e2fe6ca325f449c5a73c75432d62d73f524",
      "tree": "7fb6c479a7f151c49cac3b576b8b6f9de3cd42da",
      "parents": [
        "827ca3bcf25b9e4dc2edf31381c0774e1d227285"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 15 21:55:04 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 15 21:55:04 2018 +0200"
      },
      "message": "[truetype]: Limit `SLOOP\u0027 bytecode argument to 16 bits.\n\nThis fixes\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7707\n\n* src/truetype/ttinterp.c (Ins_SLOOP): Do it.\n"
    },
    {
      "commit": "827ca3bcf25b9e4dc2edf31381c0774e1d227285",
      "tree": "8370210d78c4b0f6e292c92f8c62888aabc8118c",
      "parents": [
        "576670b7794da946f35b247b314a61406c635cad"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Apr 14 07:20:31 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Apr 14 07:20:31 2018 +0200"
      },
      "message": "[truetype] Integer overflow issues.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7652\n\n* src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.\n"
    },
    {
      "commit": "576670b7794da946f35b247b314a61406c635cad",
      "tree": "9b96dbce3c40d9990cc858be41ce790017301b3f",
      "parents": [
        "029721d69c8073fa4b5c78d19f6fa051a7ae3459"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Apr 14 07:00:30 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Apr 14 07:00:30 2018 +0200"
      },
      "message": "[autofit] Update to Unicode 11.0.0.\n\nBut no support new scripts (volunteers welcomed).\n\n* src/autofit/afranges.c (af_arab_nonbase_uniranges,\naf_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,\naf_deva_nonbase_uniranges, af_geor_uniranges,\naf_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,\naf_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,\naf_hani_uniranges): Add new data.\n"
    },
    {
      "commit": "029721d69c8073fa4b5c78d19f6fa051a7ae3459",
      "tree": "795fb00b5179d4966a419da265ee95c1ba3b7739",
      "parents": [
        "bd9400bd464f6cd7c74f52ece1c1065fe2a87aab"
      ],
      "author": {
        "name": "Nikolaus Waxweiler",
        "email": "madigens@gmail.com",
        "time": "Sat Apr 07 21:34:24 2018 +0100"
      },
      "committer": {
        "name": "Nikolaus Waxweiler",
        "email": "madigens@gmail.com",
        "time": "Tue Apr 10 22:31:10 2018 +0100"
      },
      "message": "Modernize CMake build.\n\n* CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive\n  modernization measures.\n\n* .gitignore: Add build/, as that\u0027s the example directory used in\n  CMakeLists.txt.\n\nThis brings up the minimum required CMake version to 2.8.12.\n\nThe installation paths follow the GNU defaults now, e.g. installing on a\n64 bit host will place binaries into the lib64/ folder on e.g. Fedora.\n\nSymbols are hidden by default (e.g. `-fvisibility\u003dhidden\u0027 on GCC).\n\nCMake will no longer look for a C++ compiler.\n\nLibrary and .so version now match the Autotools build.\n\nComments in the build file and informational messages now use platform\nagnostic example commands.\n\nftoption.h and ftconfig.h are written directly without a redundant\n`-new\u0027 copy.\n\nExternal dependencies are expressed as option()s and will turn up as\nsuch in cmake-gui.\n\nInternal: Properties such as dependencies and include directories are\nnow privately set on the freetype library instead of globally.\n\nThe CPack definitions have been cleaned up, the `make dist\u0027 has been\nremoved. Source packages generated with CPack don\u0027t contain Autotools\nfiles and aren\u0027t used by the maintainters anyway.\n\nOn Windows, src/base/ftver.rc is compiled to decorate the library with\nversion and copyright information.\n\nA pkg-config file is now generated and installed.\n"
    },
    {
      "commit": "bd9400bd464f6cd7c74f52ece1c1065fe2a87aab",
      "tree": "43808372b68418127006c724f9767acf5768e10b",
      "parents": [
        "cdddeff02fff209e602d4dff97aa94fbbdab2904"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Apr 09 21:28:37 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Apr 09 21:28:37 2018 +0200"
      },
      "message": "[truetype] Integer overflow issues.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7453\n\n* src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use\nADD_LONG and SUB_LONG.\n"
    },
    {
      "commit": "cdddeff02fff209e602d4dff97aa94fbbdab2904",
      "tree": "deb5b28f1754704d51be5f6d9b88685382773fd4",
      "parents": [
        "3b8f16803c8a28919966e5ddb5d64ae982556d63"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Fri Apr 06 21:01:50 2018 -0400"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Fri Apr 06 21:01:50 2018 -0400"
      },
      "message": "[windows, wince] Clean up legacy project files.\n\n* builds/wince/vc2005-ce/freetype.vcproj,\nbuilds/wince/vc2008-ce/freetype.vcproj,\nbuilds/windows/vc2005/freetype.vcproj,\nbuilds/windows/vc2008/freetype.vcproj,\nbuilds/windows/visualce/freetype.vcproj,\nbuilds/windows/visualce/freetype.dsp,\nbuilds/windows/visualc/freetype.vcproj,\nbuilds/windows/visualc/freetype.dsp: Remove per-file compile flags.\n"
    },
    {
      "commit": "3b8f16803c8a28919966e5ddb5d64ae982556d63",
      "tree": "4557b4285f37a6fdd56b5b925b3d68032d515419",
      "parents": [
        "26ad1acbcb4ca9e25163bd102971c8f0e1b56d87"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Wed Apr 04 20:26:08 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Wed Apr 04 20:26:08 2018 +0200"
      },
      "message": "[cff, type1] Sanitize `BlueFuzz\u0027 and `BlueShift\u0027.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d7371\n\n* src/cff/cffload.c (cff_load_private_dict): Sanitize\n`priv-\u003eblue_shift\u0027 and `priv-\u003eblue_fuzz\u0027 to avoid overflows later\non.\n\n* src/type1/t1load.c (T1_Open_Face): Ditto.\n"
    },
    {
      "commit": "26ad1acbcb4ca9e25163bd102971c8f0e1b56d87",
      "tree": "4f022e2c9ad777c77b8219bc23590deb5b6a25ac",
      "parents": [
        "578dafd6b4932d2c541cb4e2d446082800f3cf76"
      ],
      "author": {
        "name": "suzuki toshiya",
        "email": "mpsuzuki@hiroshima-u.ac.jp",
        "time": "Wed Apr 04 16:38:58 2018 +0900"
      },
      "committer": {
        "name": "suzuki toshiya",
        "email": "mpsuzuki@hiroshima-u.ac.jp",
        "time": "Wed Apr 04 16:39:42 2018 +0900"
      },
      "message": "* src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),\n`DFHei-Md-HK-BF\u0027, `DFKaiShu-Md-HK-BF\u0027 and `DFMing-Bd-HK-BF\u0027.\n(tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts\nin above.\n"
    },
    {
      "commit": "216cef95308ffb6602b0ed1da300df179d2e6df8",
      "tree": "8e266c55ac15f418856de4f12fccbb79b7093e9d",
      "parents": [
        "978188c5f87ce4076625eb9702d994f4e4a8558f"
      ],
      "author": {
        "name": "Damien Miller",
        "email": "djm@google.com",
        "time": "Wed Apr 04 17:35:24 2018 +1000"
      },
      "committer": {
        "name": "Damien Miller",
        "email": "djm@google.com",
        "time": "Wed Apr 04 17:35:24 2018 +1000"
      },
      "message": "Update README.fuchsia\n\nChange-Id: Idff5ffe22e41300b49a6c4e85f4682f5adf18338\n"
    },
    {
      "commit": "578dafd6b4932d2c541cb4e2d446082800f3cf76",
      "tree": "688ee0b4f70e0170d872616728b8d426fba32581",
      "parents": [
        "7109495c5e6cd79f9b97d6773f4111ed0aeff99b"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Apr 03 11:31:22 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Apr 03 11:31:22 2018 +0200"
      },
      "message": "Minor comment improvement.\n"
    },
    {
      "commit": "7109495c5e6cd79f9b97d6773f4111ed0aeff99b",
      "tree": "aeeef353e4f1401a586bdb50f54e2640101a0edd",
      "parents": [
        "597cb3b44267325d6aa8ee32bf5b7712aa2b588f"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 01 13:24:59 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Apr 01 13:24:59 2018 +0200"
      },
      "message": "* builds/toplevel.mk (work): Use $(SEP).\n\nThis fixes the `make refdoc\u0027 using Cygwin: $(CAT) is `type\u0027 on this\nplatform, and this program only understands backslashes in paths.\n\nReported by Nikhil Ramakrishnan \u003cramakrishnan.nikhil@gmail.com\u003e.\n"
    },
    {
      "commit": "597cb3b44267325d6aa8ee32bf5b7712aa2b588f",
      "tree": "888bb838c073835e3443d10aefb576116a318b8f",
      "parents": [
        "fa6da7bf6dcbcfa22d2464259ad1cccee3233189"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Fri Mar 30 13:46:03 2018 +0200"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Fri Mar 30 13:46:03 2018 +0200"
      },
      "message": "[truetype] Fix memory leak (only if tracing is on).\n\n* src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix\nit.\n"
    },
    {
      "commit": "fa6da7bf6dcbcfa22d2464259ad1cccee3233189",
      "tree": "475345cab0cb4256f20130a2e128227d4b0d25ce",
      "parents": [
        "61ee69a66e73f33a955d263bcb4d40e62dfe6286"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Mon Mar 26 21:40:18 2018 -0400"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Mon Mar 26 21:40:18 2018 -0400"
      },
      "message": "Documentation improvement.\n"
    },
    {
      "commit": "61ee69a66e73f33a955d263bcb4d40e62dfe6286",
      "tree": "3605466db4a93f7228f12e9a48e264ec2cdf6ef1",
      "parents": [
        "e1122047ae72b376afc2462794ee89a4ba63b609"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Mar 24 05:51:50 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Mar 24 05:53:22 2018 +0100"
      },
      "message": "Typo.\n"
    },
    {
      "commit": "e1122047ae72b376afc2462794ee89a4ba63b609",
      "tree": "b12a09170a0bd2cbd36e9bc701dca95be0fdf3b2",
      "parents": [
        "34e467332b0b5ecb03641540e715202204616139"
      ],
      "author": {
        "name": "Kushal K S V S",
        "email": "kkushal32@gmail.com",
        "time": "Fri Mar 23 13:12:07 2018 +0530"
      },
      "committer": {
        "name": "Kushal K S V S",
        "email": "kkushal32@gmail.com",
        "time": "Fri Mar 23 13:12:07 2018 +0530"
      },
      "message": "Fixing cmake command format\n"
    },
    {
      "commit": "34e467332b0b5ecb03641540e715202204616139",
      "tree": "1285a23512a7988589792f0a7a37ddd635595f5a",
      "parents": [
        "43d4852ec6cfa1df126635ba65d65b22f12d3603"
      ],
      "author": {
        "name": "Ben Wagner",
        "email": "bungeman@google.com",
        "time": "Fri Mar 23 06:13:25 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Fri Mar 23 06:13:25 2018 +0100"
      },
      "message": "[sfnt] Correctly handle missing bitmaps in sbix format (#53404).\n\n* src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.\n"
    },
    {
      "commit": "43d4852ec6cfa1df126635ba65d65b22f12d3603",
      "tree": "545998e59cc8d24005b15fc29482588a2d32e22c",
      "parents": [
        "af89e445f8c44f133362e840553194a2144ab0d5"
      ],
      "author": {
        "name": "Ben Wagner",
        "email": "bungeman@google.com",
        "time": "Fri Mar 23 06:07:24 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Fri Mar 23 06:07:24 2018 +0100"
      },
      "message": "[truetype] Fix advance of empty glyphs in bitmap fonts (#53393).\n\n* src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics\nfor empty bitmaps.\n"
    },
    {
      "commit": "af89e445f8c44f133362e840553194a2144ab0d5",
      "tree": "c1d576b2d5b4bfebc1bedf67a8cec8f46d27f63a",
      "parents": [
        "5bd76524ef786d942b28dc52618aeda3aebfa3d6"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 22 06:00:55 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 22 06:00:55 2018 +0100"
      },
      "message": "Remove `ftlcdfil.c\u0027 and `ftfntfmt.c\u0027 from build files (#53415).\n\nbuilds/amiga/makefile, builds/amiga/makefile.os4,\nbuilds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,\nbuilds/mac/FreeType.m68k_far.make.txt,\nbuilds/mac/FreeType.ppc_carbon.make.txt,\nbuilds/mac/FreeType.ppc_classic.make.txt,\nbuilds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,\nbuilds/wince/vc2008-ce/freetype.vcproj,\nbuilds/windows/vc2005/freetype.vcproj,\nbuilds/windows/vc2008/freetype.vcproj,\nbuilds/windows/vc2010/freetype.vcxproj,\nbuilds/windows/vc2010/freetype.vcxproj.filters,\nbuilds/windows/visualc/freetype.dsp,\nbuilds/windows/visualc/freetype.vcproj,\nbuilds/windows/visualce/freetype.dsp,\nbuilds/windows/visualce/freetype.vcproj, vms_make.com: Do it.\n"
    },
    {
      "commit": "5bd76524ef786d942b28dc52618aeda3aebfa3d6",
      "tree": "56a454b5cfe27daaeb2d092915f17848e83d275e",
      "parents": [
        "78cded2c5c687d06c5b74b308fb54af7f807dc0d"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Mar 13 11:11:16 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Mar 13 11:11:16 2018 +0100"
      },
      "message": "* src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric\noverflow.\n"
    },
    {
      "commit": "78cded2c5c687d06c5b74b308fb54af7f807dc0d",
      "tree": "00f6a18faba930b0082a8390a80bbbf1fef924a4",
      "parents": [
        "098dd70cb1845b8c325ef4801c5f2e09e476b1ed"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Mar 13 11:09:44 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Mar 13 11:09:44 2018 +0100"
      },
      "message": "Fix cmap format 2 handling (#53320).\n\nThe patch introduced for #52646 was not correct.\n\n* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.\n"
    },
    {
      "commit": "098dd70cb1845b8c325ef4801c5f2e09e476b1ed",
      "tree": "0085f6f552da6232132dd2c0f25eeffc9e149a10",
      "parents": [
        "6f854692a86a778a1b88289fbad75666b6eec621"
      ],
      "author": {
        "name": "Nikolaus Waxweiler",
        "email": "madigens@gmail.com",
        "time": "Sat Mar 10 14:51:17 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Mar 10 14:51:17 2018 +0100"
      },
      "message": "* CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.\n"
    },
    {
      "commit": "6f854692a86a778a1b88289fbad75666b6eec621",
      "tree": "788c84657b1c4b74879183c1f644721ad3b2b6a1",
      "parents": [
        "e277267c5229beaa911e9fb8b16fb80530c83ead"
      ],
      "author": {
        "name": "Chun-wei Fan",
        "email": "fanchunwei@src.gnome.org",
        "time": "Mon Mar 05 12:33:34 2018 +0800"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Fri Mar 09 06:51:38 2018 +0100"
      },
      "message": "* CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).\n\nDo not limit DLL builds to MinGW, since we already have\n`__declspec(dllexport)\u0027 directives in `ftconfig.h\u0027.\nAlso suppress more warnings for POSIX functions.\n"
    },
    {
      "commit": "e277267c5229beaa911e9fb8b16fb80530c83ead",
      "tree": "b891324abf517a2ab15a5d9c5dfd2a282d41a2f4",
      "parents": [
        "b0a93839b52818abbfe9b4c8755b4aa0f5232063"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 08 11:33:31 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 08 11:33:31 2018 +0100"
      },
      "message": "Typo.\n"
    },
    {
      "commit": "b0a93839b52818abbfe9b4c8755b4aa0f5232063",
      "tree": "397057f536520c24c5e2afeca1b3e730dd3a293c",
      "parents": [
        "a7833f26c4ac45cafe1dffdcd7f7dcfd6493161c"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 08 06:36:47 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 08 06:36:47 2018 +0100"
      },
      "message": "CHANGES: Document `--enable-freetype-config\u0027.\n"
    },
    {
      "commit": "a7833f26c4ac45cafe1dffdcd7f7dcfd6493161c",
      "tree": "c64dece2c67e3ad91cacc31a0b0258254c413207",
      "parents": [
        "ccec8892291f556a44cecba6efac568a03e4ff12"
      ],
      "author": {
        "name": "Hugh McMaster",
        "email": "hugh.mcmaster@outlook.com",
        "time": "Wed Mar 07 22:23:54 2018 +1100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 08 06:25:13 2018 +0100"
      },
      "message": "Make installation of `freetype-config\u0027 optional (#53093).\n\nSigned-off-by: Hugh McMaster \u003chugh.mcmaster@outlook.com\u003e\n"
    },
    {
      "commit": "ccec8892291f556a44cecba6efac568a03e4ff12",
      "tree": "d69d4c8c4974e058cb7ad47aa1e5095f4a6ed06d",
      "parents": [
        "733a21bdbc9516ccf47b9b20d3a39d069a4cdc82"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 08 06:09:17 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 08 06:09:17 2018 +0100"
      },
      "message": "Minor: Update `CHANGES\u0027 and improve documentation in `modules.cfg\u0027.\n"
    },
    {
      "commit": "733a21bdbc9516ccf47b9b20d3a39d069a4cdc82",
      "tree": "bcc3f4acdba441b34a8ef576de5c823c8096223b",
      "parents": [
        "f4a3531655cc6f9b8c1c8b5f4dc097111d672304"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Mar 05 23:37:17 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Mar 05 23:37:17 2018 +0100"
      },
      "message": "Make `ftlcdfil.c\u0027 part of the `base\u0027 module.\n\n`ftobjs.c\u0027 needs `ft_lcd_padding\u0027.\n\nProblem reported by duhuanpeng \u003c548708880@qq.com\u003e.\n\n* modules.cfg (BASE_EXTENSIONS): Don\u0027t include `ftlcdfil.c\u0027.\n\n* src/base/ftbase.c: Include `ftlcdfil.c\u0027.\n* src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c\u0027.\n* src/base/Jamfile (_sources): Adjusted.\n\n* docs/INSTALL.ANY: Updated.\n"
    },
    {
      "commit": "f4a3531655cc6f9b8c1c8b5f4dc097111d672304",
      "tree": "e45c76418cdb32a6648c94af4c8426802189c44e",
      "parents": [
        "5955b77b1dee4363cdd047eb06a701b1cb8fd395"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Mar 05 20:45:12 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Mar 05 20:45:12 2018 +0100"
      },
      "message": "Make `ftfntfmt.c\u0027 part of the `base\u0027 module.\n\n`ftobjs.c\u0027 needs `FT_Get_Font_Format\u0027.\n\nProblem reported by duhuanpeng \u003c548708880@qq.com\u003e.\n\n* modules.cfg (BASE_EXTENSIONS): Don\u0027t include `ftfntfmt.c\u0027.\n\n* src/base/ftbase.c: Include `ftfntfmt.c\u0027.\n* src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c\u0027.\n* src/base/Jamfile (_sources): Adjusted.\n\n* docs/INSTALL.ANY: Updated.\n"
    },
    {
      "commit": "5955b77b1dee4363cdd047eb06a701b1cb8fd395",
      "tree": "390f0bdc31fa853277e52fd1370d457f98530480",
      "parents": [
        "efd13c5d1b313320a2026cf88aeded2544f3ca64"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Mar 03 09:21:59 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Mar 03 09:21:59 2018 +0100"
      },
      "message": "Minor documentation improvement.\n"
    },
    {
      "commit": "efd13c5d1b313320a2026cf88aeded2544f3ca64",
      "tree": "f0184a9b83c2fff12073ab2157f889ca43a12e3f",
      "parents": [
        "020647915829dc03a694aed629bddabe42cb6ad0"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 01 22:17:54 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 01 22:17:54 2018 +0100"
      },
      "message": "* src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments.\n"
    },
    {
      "commit": "020647915829dc03a694aed629bddabe42cb6ad0",
      "tree": "2dc4f75cc11519e1d0dc29d6c47c9ab0e83bc593",
      "parents": [
        "713d68ee9f47cc8df56e47fa2f54b191bb8c3186"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 01 21:34:57 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Thu Mar 01 21:34:57 2018 +0100"
      },
      "message": "* builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.\n\nProblem reported by Alan Coopersmith \u003calan.coopersmith@oracle.com\u003e.\n"
    },
    {
      "commit": "713d68ee9f47cc8df56e47fa2f54b191bb8c3186",
      "tree": "6af86fac3e0745fd505358c18a36fc4bacf087e4",
      "parents": [
        "9fbd0041ca1e3cd96ebd9e3ee1cf8797251198ed"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Feb 17 18:35:15 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Feb 17 18:35:15 2018 +0100"
      },
      "message": "[sfnt] Prefer `CBDT\u0027/`CBLC\u0027 over `glyf\u0027 table (#53154).\n"
    },
    {
      "commit": "9fbd0041ca1e3cd96ebd9e3ee1cf8797251198ed",
      "tree": "72847a70f6739ce588f8f0bc367205ca84c2ee33",
      "parents": [
        "63aaf89cecd752853b07a043e2a9db6a7686d558"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Feb 17 10:37:10 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Feb 17 10:37:10 2018 +0100"
      },
      "message": "Split off ChangeLog.28.\n"
    },
    {
      "commit": "63aaf89cecd752853b07a043e2a9db6a7686d558",
      "tree": "9f0e12b5083e0e41c332f084fa4e053154a25c49",
      "parents": [
        "4a03f17449ae45f0dacf4de4694ccd6e5e1b24d1"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Feb 17 10:34:47 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Feb 17 10:34:47 2018 +0100"
      },
      "message": "s/sub-pixel/subpixel/.\n"
    },
    {
      "commit": "4a03f17449ae45f0dacf4de4694ccd6e5e1b24d1",
      "tree": "3b5a250aaee0811202561befb3058bab7f3c3632",
      "parents": [
        "f4a3255d450e18e4981074ef9a42a2318f9e7cbc"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Feb 06 02:23:19 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Tue Feb 06 02:23:19 2018 +0100"
      },
      "message": "[truetype] Integer overflow issues.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d6027\n\n* src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use\nSUB_LONG; avoid FT_ABS.\n"
    },
    {
      "commit": "f4a3255d450e18e4981074ef9a42a2318f9e7cbc",
      "tree": "42a95aaf0c9c6c922f6bf15072b2e7a1214ece75",
      "parents": [
        "036bdc0c9a4fb55b4fe5a7276e97b70b95c8a260"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Sun Feb 04 00:09:02 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Sun Feb 04 00:09:02 2018 -0500"
      },
      "message": "[unix] Use -fvisibility\u003dhidden.\n\nIt is now widely recommended that ELF shared libraries hide symbols\nexcept those with explicit __attribute__((visibility(\"default\"))).\nThis is supported by all major compilers and should rather be an\noption in libtool.\n\n* builds/unix/configure.raw: Add -fvisibility\u003dhidden to CFLAGS.\n* builds/unix/ftconfig.in, builds/vms/ftconfig.h,\ninclude/freetype/config/ftconfig.h (FT_EXPORT): Use visibility\nattribute.\n"
    },
    {
      "commit": "036bdc0c9a4fb55b4fe5a7276e97b70b95c8a260",
      "tree": "ea36c6ab3ea9527f7d24d1707f30501e3b4417a5",
      "parents": [
        "68dddcdcbe18a08d778026efc01b1369e35cbf6a"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Jan 28 00:05:46 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Jan 28 00:05:46 2018 +0100"
      },
      "message": "[truetype] Minor typo.\n"
    },
    {
      "commit": "68dddcdcbe18a08d778026efc01b1369e35cbf6a",
      "tree": "5660b1a1f76f774c997c2c6ef45436d62da80097",
      "parents": [
        "29c759284e305ec428703c9a5831d0b1fc3497ef"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 23:59:30 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 23:59:30 2018 +0100"
      },
      "message": "[truetype] Better protection against invalid VF data.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d5739\n\nBug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7.\n\n* src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize\n`normalizedcoords\u0027.\n"
    },
    {
      "commit": "29c759284e305ec428703c9a5831d0b1fc3497ef",
      "tree": "81256f7ad987a6c0264c5324ed5e09143d2df121",
      "parents": [
        "f438e069723c1e7a7a226e05f677a5e17e346a67"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 14:43:43 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 14:43:43 2018 +0100"
      },
      "message": "* src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.\n\nReported as\n\n  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id\u003d5736\n"
    },
    {
      "commit": "f438e069723c1e7a7a226e05f677a5e17e346a67",
      "tree": "f33585861f438bdf590641ad38833188c899b514",
      "parents": [
        "ef48653023ea3e67bb4df3b5be1ef10089623abf"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 14:39:15 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 14:39:15 2018 +0100"
      },
      "message": "* src/truetype/ttgxvar.c (tt_set_mm_blend): Minor.\n"
    },
    {
      "commit": "ef48653023ea3e67bb4df3b5be1ef10089623abf",
      "tree": "5eba9bbaa2844977c94c54c387d0f05ef8c65896",
      "parents": [
        "5f94c90f1971b01951fa25a76ba394f30eb15ddd"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 11:16:22 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 13:58:02 2018 +0100"
      },
      "message": "[truetype] Better trace VF instances.\n\n* src/truetype/ttgxvar.c (ft_var_to_normalized): Don\u0027t emit number\nof coordinates.\n(TT_Get_MM_Var): Trace instance indices names.\n(TT_Set_Var_Design): Updated.\n"
    },
    {
      "commit": "5f94c90f1971b01951fa25a76ba394f30eb15ddd",
      "tree": "a7f7b7a4995e328aefb3336597240d8fa978635e",
      "parents": [
        "50f693a78b0da3ee03cec04f48e8a0f0ea34a34d"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 10:52:13 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 10:52:13 2018 +0100"
      },
      "message": "Fix comment.\n"
    },
    {
      "commit": "50f693a78b0da3ee03cec04f48e8a0f0ea34a34d",
      "tree": "2b565022830ebe4ece3b9b43d051b38dbf00a33c",
      "parents": [
        "994eb2b34934bc5face9f83b2d3b12cf7a9262ab"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 09:33:17 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 27 10:15:58 2018 +0100"
      },
      "message": "[truetype] Beautify tracing of VF axis records.\n\n* src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a\ntable-like manner.\n"
    },
    {
      "commit": "994eb2b34934bc5face9f83b2d3b12cf7a9262ab",
      "tree": "8d74eff7f25dcb75ba5f6c58f3a2d1f03faf05b0",
      "parents": [
        "b1e0209829d6def7b337700204e2adb75fb9282a"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Fri Jan 26 23:17:43 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Fri Jan 26 23:17:43 2018 +0100"
      },
      "message": "[truetype] Fix multiple calls of `FT_Get_MM_Var\u0027 (#52955).\n\n* src/truetype/ttgxvar.c (TT_Get_MM_Var): Set\n`face-\u003eblend-\u003enum_axis\u0027 in case we have to initialize the\n`face-\u003eblend\u0027.\n"
    },
    {
      "commit": "b1e0209829d6def7b337700204e2adb75fb9282a",
      "tree": "ad18509807e86541a0afc8b6486066b778f27af3",
      "parents": [
        "c6a965b4d312c5c034c6ae9562ee82a9ce8c8fae"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Tue Jan 23 22:29:45 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Tue Jan 23 22:29:45 2018 -0500"
      },
      "message": "[apinames] Anonymous version map for GNU linker.\n\n* src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3.\n(OutputFormat): Add `OUTPUT_GNU_VERMAP\u0027.\n(names_dump): Handle it.\n(usage): Updated.\n(main): Handle new command line flag `-wL\u0027.\n"
    },
    {
      "commit": "c6a965b4d312c5c034c6ae9562ee82a9ce8c8fae",
      "tree": "026c6aed380e7fa770cad540a65214da283b181f",
      "parents": [
        "6ce6685659bab4aca0f0da66c5a7cb6f5190dc54"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Sun Jan 21 14:29:58 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Sun Jan 21 14:29:58 2018 -0500"
      },
      "message": "[unix] Call libtool to clean up.\n\n* builds/unix/install.mk (clean_project_unix, distclean_project_unix):\nUse libtool.\n* builds/freetype.mk: Minor.\n"
    },
    {
      "commit": "6ce6685659bab4aca0f0da66c5a7cb6f5190dc54",
      "tree": "bffa8fa9d617dd3a4f3cd7d0918beb7fcd97efe5",
      "parents": [
        "4b8ccc56d8b4971a4f0434f497d74c641402222d"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Jan 18 21:29:48 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Jan 18 21:29:48 2018 -0500"
      },
      "message": "* src/base/ftver.rc: Fix mingw-w64 compilation.\n"
    },
    {
      "commit": "4b8ccc56d8b4971a4f0434f497d74c641402222d",
      "tree": "9e491425c3f692c6881d0553f0a7f6437f2e0288",
      "parents": [
        "fd8000f0402d48fd22f774170c74d585a82d7508"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Jan 18 04:32:52 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Jan 18 04:32:52 2018 -0500"
      },
      "message": "[build] Enable VERSIONINFO resource for Cygwin/MinGW.\n\n* builds/unix/configure.raw: Check for resource compiler.\n* builds/unix/unix-cc.in: Conditionally set up resource compiler.\n* builds/freetype.mk: Add conditional rule for `ftver.rc\u0027.\n* src/base/ftver.rc: Copyright notice and year update.\n"
    },
    {
      "commit": "fd8000f0402d48fd22f774170c74d585a82d7508",
      "tree": "bad17c9e5576233eb50370a0a1ed69b0d0c87043",
      "parents": [
        "d2d1750e0802c1472419da1c73992eae92777d0f"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Jan 18 03:58:34 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Thu Jan 18 03:58:34 2018 -0500"
      },
      "message": "[build] Move VERSIONINFO resource.\n\n* builds/windows/vc2010/freetype.vcxproj: Updated.\n* builds/windows/ftver.rc: Move file from here...\n* src/base/ftver.rc: ... to here.\n"
    },
    {
      "commit": "d2d1750e0802c1472419da1c73992eae92777d0f",
      "tree": "434843a22b8779861f4fc38735ef28e392b30dc0",
      "parents": [
        "e8b38f899c792565de4bbb09b14f7962d441faee"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Fri Jan 12 23:01:49 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Fri Jan 12 23:01:49 2018 -0500"
      },
      "message": "[build] Expand dllexport/dllimport to Cygwin/MinGW.\n\n* include/freetype/config/ftconfig.h: Respect DLL_EXPORT,\ns/_MSC_VER/_WIN32/.\n* builds/unix/ftconfig.in: Replicate here.\n* builds/vms/ftconfig.h: Replicate here.\n"
    },
    {
      "commit": "e8b38f899c792565de4bbb09b14f7962d441faee",
      "tree": "8b6e372b7a2b9ab41552b4223ade78e56b0836fb",
      "parents": [
        "707cd028b2b419a5491d444b128d8092afd9f201"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Fri Jan 12 08:57:08 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Fri Jan 12 08:57:08 2018 -0500"
      },
      "message": "[build] Improve and document MSVC build.\n\n* include/freetype/config/ftconfig.h: Guard dllexport/dllimport\nattributes with _DLL and FT2_DLLIMPORT.\n* builds/windows/vc2010/index.html: Update documentation.\n"
    },
    {
      "commit": "707cd028b2b419a5491d444b128d8092afd9f201",
      "tree": "59b5089eb1758fe929a71ffa24d24e129391d10b",
      "parents": [
        "cc2f3cdecff5a351e7e8961b9f2e389ab740231a"
      ],
      "author": {
        "name": "Steve Robinson",
        "email": "ssrobins@gmail.com",
        "time": "Wed Jan 10 07:48:39 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Wed Jan 10 07:49:43 2018 +0100"
      },
      "message": "* CMakeLists.txt [win32]: Suppress warnings for POSIX functions.\n"
    },
    {
      "commit": "cc2f3cdecff5a351e7e8961b9f2e389ab740231a",
      "tree": "9a3d80d9ad53feebca8f1dc7f44ef1c3d5742e6c",
      "parents": [
        "3f96c0bcc18a5d83536561d9e33604504069dd82"
      ],
      "author": {
        "name": "Ewald Hew",
        "email": "ewaldhew@gmail.com",
        "time": "Wed Jan 10 13:24:56 2018 +0800"
      },
      "committer": {
        "name": "Ewald Hew",
        "email": "ewaldhew@gmail.com",
        "time": "Wed Jan 10 13:28:36 2018 +0800"
      },
      "message": "[psaux] Correctly handle Flex features (#52846).\n\n* src/psaux/psintrp.c (cf2_interpT2CharString) \u003ccf2_cmdVMOVETO,\ncf2_cmdHMOVETO\u003e: Do not move if doing Flex.\n"
    },
    {
      "commit": "3f96c0bcc18a5d83536561d9e33604504069dd82",
      "tree": "37d74fb279a8b123f98bd9d86a7dc50ce32d0944",
      "parents": [
        "67a42aa8879697c2bd190d213f873f0e9712589f"
      ],
      "author": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Tue Jan 09 22:22:19 2018 -0500"
      },
      "committer": {
        "name": "Alexei Podtelezhnikov",
        "email": "apodtele@gmail.com",
        "time": "Tue Jan 09 22:22:19 2018 -0500"
      },
      "message": "* builds/windows/vc2010/freetype.sln: Synchronize with the project.\n"
    },
    {
      "commit": "67a42aa8879697c2bd190d213f873f0e9712589f",
      "tree": "8c186a5e0bd85c0095ac768494f20cbe1bc1bb9c",
      "parents": [
        "9e7b24f29065f416556079a84bf28600f1f14779"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Jan 08 12:15:27 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Jan 08 12:30:04 2018 +0100"
      },
      "message": "* Version 2.9 released.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nTag sources with `VER-2-9\u0027.\n\n* docs/VERSION.TXT: Add entry for version 2.9.\n\n* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,\nbuilds/windows/vc2005/index.html,\nbuilds/windows/vc2008/freetype.vcproj,\nbuilds/windows/vc2008/index.html,\nbuilds/windows/vc2010/freetype.vcxproj,\nbuilds/windows/vc2010/index.html,\nbuilds/windows/visualc/freetype.dsp,\nbuilds/windows/visualc/freetype.vcproj,\nbuilds/windows/visualc/index.html,\nbuilds/windows/visualce/freetype.dsp,\nbuilds/windows/visualce/freetype.vcproj,\nbuilds/windows/visualce/index.html,\nbuilds/windows/ftver.rc,\nbuilds/wince/vc2005-ce/freetype.vcproj,\nbuilds/wince/vc2005-ce/index.html,\nbuilds/wince/vc2008-ce/freetype.vcproj,\nbuilds/wince/vc2008-ce/index.html: s/2.8.1/2.9/, s/281/29/.\n\n* include/freetype/freetype.h (FREETYPE_MINOR): Set to 9.\n(FREETYPE_PATCH): Set to 0.\n\n* builds/unix/configure.raw (version_info): Set to 22:0:16.\n* CMakeLists.txt (VERSION_PATCH): Set to 1.\n"
    },
    {
      "commit": "9e7b24f29065f416556079a84bf28600f1f14779",
      "tree": "fb10b51f2eb8577c75f20372375bbcd3ae02d222",
      "parents": [
        "1d6773e6d999c37e7927c5d9cc48fb87d0dbf0cb"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Jan 08 11:16:11 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Mon Jan 08 11:16:11 2018 +0100"
      },
      "message": "Next release will be 2.9.\n"
    },
    {
      "commit": "1d6773e6d999c37e7927c5d9cc48fb87d0dbf0cb",
      "tree": "61e2902489755515d085e459b5c079f69423cf5c",
      "parents": [
        "21bd9c2f8ce57b20204ef505e9a64f55350edec0"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Jan 07 18:41:54 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sun Jan 07 19:06:19 2018 +0100"
      },
      "message": "Add check for librt, needed for `ftbench\u0027 (#52824).\n\n* builds/unix/configure.raw: Call AC_USE_SYSTEM_EXTENSIONS.\n(LIB_CLOCK_GETTIME): Define; this will hold `-lrt\u0027 if necessary.\n\n* builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.\n"
    },
    {
      "commit": "21bd9c2f8ce57b20204ef505e9a64f55350edec0",
      "tree": "f36a6a4623cf5820c134ba1f602ba765401f0c35",
      "parents": [
        "3758aed7605aff97d6156937efde8ec51919caab"
      ],
      "author": {
        "name": "Ewald Hew",
        "email": "ewaldhew@gmail.com",
        "time": "Sun Jan 07 16:38:54 2018 +0800"
      },
      "committer": {
        "name": "Ewald Hew",
        "email": "ewaldhew@gmail.com",
        "time": "Sun Jan 07 16:38:54 2018 +0800"
      },
      "message": "[psaux] Fix Type 1 glyphs with too many stem hints.\n\nAccording to the CFF specification, charstrings can have up to 96 stem\nhints. Due to hint replacement routines in Type 1 charstrings, some\nglyphs are rejected by the Adobe engine, which implements the above\nlimit. This fix turns off hinting for such glyphs.\n\n* src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling\n`cf2_hintmask_setAll\u0027 on a problematic Type 1 charstring and turn off\nhinting.\n"
    },
    {
      "commit": "3758aed7605aff97d6156937efde8ec51919caab",
      "tree": "66641d51d392ec19a12def886a4b8ea55faac7a3",
      "parents": [
        "b720070988ea80ca74d644cd7ab77f1f81c54a1e"
      ],
      "author": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 06 08:39:36 2018 +0100"
      },
      "committer": {
        "name": "Werner Lemberg",
        "email": "wl@gnu.org",
        "time": "Sat Jan 06 08:39:36 2018 +0100"
      },
      "message": "Add `FT_Done_MM_Var\u0027.\n\nThis is necessary in case the application\u0027s memory routines differ\nfrom FreeType.  A typical example is a Python application on Windows\nthat calls FreeType compiled as a DLL via the `ctypes\u0027 interface.\n\n* include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare\nand define.\n\n* docs/CHANGES: Updated.\n"
    }
  ],
  "next": "b720070988ea80ca74d644cd7ab77f1f81c54a1e"
}
