tree fa51305c777527ca666c315a9cf87ad93f87e055
parent 8d194291224f4a1d2ff33d711353c6b5e1083479
author Konstantin Pozin <kpozin@google.com> 1603228935 -0700
committer Konstantin Pozin <kpozin@google.com> 1603242419 +0000

[freetype2] Update to version 2.10.4

Custom changes in:
- BUILD.gn
- freetype-fuchsia-config/ftmodule.h

TEST: integration patch
      Id855a7fa52478dd47240eecc99522a8e772f042a

Bug: 62377

Squashed commit of the following:

commit 6a2b3e4007e794bfc6c91030d0ed987f925164a8
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Oct 20 07:10:27 2020 +0200

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

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

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

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

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

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

commit a3bab162b2ae616074c8877a04556932998aeacd
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Oct 19 23:45:28 2020 +0200

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

    This is CVE-2020-15999.

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

commit 840ce58f94bafdd24a138a9f7920becb5a30695f
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Oct 18 07:36:57 2020 -0400

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

commit a93f50b61150605745771e95e8f522c2cb714ff9
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Oct 17 21:58:50 2020 -0400

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

commit 82d331556ce73de07c16afd51a865ba1ff806a65
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Oct 11 21:56:50 2020 -0400

    Unnest markdown.

commit 337670af0a1e94df3718c6467ca544ecb0282731
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Oct 10 18:14:57 2020 +0200

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

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

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

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

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

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

commit c9f588be56a6c89c210284711417130ea53bd72e
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Oct 10 12:48:18 2020 +0200

    Document changes to last release.

commit 40479fad93fd939450f1c0efb54a99074cb1b5d3
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Sep 25 17:44:00 2020 +0200

    [autofit] Synchronize with ttfautohint.

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

      bb6842bd3bd437b7b4a7921b0376c860f5e73d18  Typo, formatting.
      d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa  Add Medefaidrin script.

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

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

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

commit e8ee98e669c25d0b8e67cdaace9a6b7e49c7a0c0
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Sep 25 07:22:08 2020 +0200

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

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

commit 4f13a43ab32ba77793d8528d4b4c057c6f76b835
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 24 09:35:24 2020 +0200

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

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

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

commit bed960d9484df1a0c9547ba6855f457d6629ffb5
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 24 09:31:56 2020 +0200

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

commit 3ce0df52e2bba8a8f788a05c705b90fd10275665
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 22 20:05:37 2020 +0200

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

    Suggested by Alexei.

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

    * meson.build: Updated.

commit d686f2ff9c40235085558fed91a57d05c7656335
Author: David Turner <david.turner.dev@gmail.com>
Date:   Tue Aug 25 20:52:32 2020 +0200

    Add python script for building tarballs.

    * scripts/make_distribution_archives.py: New file.

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

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

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

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

    As an example, the call

      scripts/make_distribution_archives.py /tmp/freetype2-dist

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

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

commit 46417607e67f89a5c9948d4deed6ad8ead51318d
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Sep 21 09:03:13 2020 +0200

    * scripts/extract_freetype_version.py: Fix regex typos.

commit 66978a58874169c6a4f2f984a7461e2901901784
Author: David Turner <david.turner.dev@gmail.com>
Date:   Sun May 17 18:45:41 2020 +0200

    Add Meson build project file.

    Example usage:

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

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

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

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

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

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

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

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

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

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

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

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

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

commit ab6a21b73314ef302299b47b1707f5b2d03826cf
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Sep 18 22:32:20 2020 -0400

    Documentation updates.

commit 20186d1be6415d1bd7cb79ac56f1b806c26b677c
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Sep 11 23:47:54 2020 -0400

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

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

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

commit c3721642f1d373f363d02081a94f24984960484e
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Sep 11 23:13:02 2020 -0400

    [raster] Tune SMART macro (#58352).

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

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

commit cb4733136992265ba8b52c5f009864a0b7769949
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Sep 8 22:41:53 2020 -0400

    [raster] Introduce SMART macro.

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

commit 3594eaee595f174fc6d9f39f55e9918aa4eaa9e7
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Sep 8 22:20:11 2020 -0400

    [raster] Improve tracing.

commit fa82803f46aa27e5f173d35a3e2bffcd67dc2e5a
Author: Nikolaus Waxweiler <madigens@gmail.com>
Date:   Thu Sep 3 11:11:41 2020 +0100

    * ChangeLog: Add entry for last commit.

commit 69353a19a197b0ab89b8382966c07f072fed8453
Author: Boris Dalstein <dalboris@gmail.com>
Date:   Tue Aug 25 13:53:54 2020 +0200

    Export version info (#58935)

commit 600d59e343a0d6529a2cd714bf90b70a107b39d7
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Sep 2 15:48:03 2020 -0400

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

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

commit 51a5e3389cef401cecd0860e717a5075e715786d
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Sep 2 00:02:28 2020 -0400

    [truetype] Reduce Infinality footprint.

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

commit e6c7e4b42bc39a7cfa438b2fa628aa3198374124
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Sep 1 21:49:52 2020 -0400

    [truetype] Refactor compensation color.

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

commit 16ee2a22abb642a310dcbf08accf70b1c38e3181
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Aug 28 23:08:42 2020 -0400

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

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

commit d8228a00704d7932bd54a87dc5b69561ac7ba594
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Aug 28 22:28:47 2020 -0400

    Improve FT_Outline_Render docs.

commit 6730854c397130879c64bd766c673b9bccf9c04a
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Aug 25 23:16:27 2020 -0400

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

    Segmentation fault reported as

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

commit cdc009c24afac88846ed24e21c84e33792384665
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 22 13:30:11 2020 +0200

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

commit f9f6adb625c48ef15b5d61a3ac1709a068ea95a3
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Aug 5 08:24:15 2020 -0400

    [truetype] Retain OVERLAP_SIMPLE and OVERLAP_COMPOUND.

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

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

commit 3a1f4b7aaa30b05a363c5eac07122a1033699904
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Aug 4 22:17:05 2020 -0400

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

commit 8b3601324fde1ba49338dd6279057cd366c25919
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 4 10:48:42 2020 +0200

    Minor typos, formatting.

commit 986a340dd52825ceaa142ae19473de0ee52d57f2
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jul 28 23:20:59 2020 -0400

    Unbreak compilation.

commit f76f7fdecdb14f343beb009dcef63a01b08162df
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jul 28 23:13:51 2020 -0400

    Hide internal functions with SunPro.

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

commit 3273521f408938e0088258bda62d280d6e5967eb
Author: Anuj Verma <anujv@iitbhilai.ac.in>
Date:   Tue Jul 28 18:34:37 2020 +0200

    Fix static compilation with Visual C.

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

commit fffc303a7f397d08eee719eca351bdb55b3a1e83
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 28 18:28:10 2020 +0200

    Formatting, improving comments.

commit 53be1753dea9bd3e586f3e6f3ffc55b31080d450
Author: Priyesh Kumar <priyeshkkumar@gmail.com>
Date:   Tue Jul 28 07:33:40 2020 +0200

    Fix `-Wformat' compiler warnings.

    * src/*: Fix format specifiers.

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

commit 8cfc41ae955d99ff49214deea731527bbb8035f0
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jul 25 12:23:22 2020 +0200

    Fix `-Wformat' compiler warnings.

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

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

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

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

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

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

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

commit b6183ea369757f6f0126c9822d21eaa88903b7c5
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jul 23 13:03:22 2020 +0200

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

    Reported by Hin-Tak.

commit ee19a6cbbcb28e7aab04dd13918edd46f21ecb22
Author: David Turner <david.turner.dev@gmail.com>
Date:   Fri May 1 15:37:56 2020 +0200

    Add .clang-format file

    This file can be used to reformat FreeType sources and commits
    using one of these methods:

    - Direct formatting of a whole file:

        clang-format -i path/to/file

      For example, to reformat all sources at once:

        echo builds/unix/ftconfig.h.in $(git ls-files *.[hc]) | xargs clang-format -i

    - Only reformat the changed lines in the current work directoy:

        git clang-format

    The style settings in this file are very close to the FreeType
    formatting style, with the following exceptions which are not supported
    here:

    - Mminimal 2-space margin on each non-empty line.
      (no left margin instead).

    - 2 empty lines between variable declarations and statements in C blocks.
      (only 1 is kept).

        {
          int  x = ...;

          foo(x);
        }

      becomes

        {
          int x = ...;

          foo(x);
        }

    - Aignment of declarations uses 2 spaces to separate types and variable
      names (only 1 space is kept).

         int  x;    =>   int x;
         int  y;         int y;

    - The start used for output parameters in function signature should be
      near the variable name (always near the type).

        void foo(int* input_ptr, int *output_ptr)
          => void foo(int* input_ptr, int* output_ptr)

commit b7c467b6efa5a91945854de81632be45d6f360ff
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jul 15 09:15:25 2020 +0200

    [doc] Stem darkening is off by default for CFF driver.

    Bug reported by Ishi Tatsuyuki <ishitatsuyuki@gmail.com>.

commit 5fe7c044c25bba9dfae315ef56bacfc83976ddd0
Author: David Turner <david@freetype.org>
Date:   Tue Jul 14 16:12:29 2020 +0200

    freetype.h (FT_Set_Transform): Minor documentation update.

    In order to mention the limited accuracy of `FT_Matrix' coefficients
    and encourage client code to perform the transform themselves with
    floating point values instead.

commit 95de21ab19cc5409ea09c9347f1d9b5e2cc2d332
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 14 08:32:45 2020 +0200

    README: Add information on contributing patches.

commit c922ffa5d2fe359d5e0d788f3a0850a59da4ae20
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jul 12 07:52:55 2020 +0200

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

commit b1286b32a9f2bcba3f22c9857ba6df30733b7845
Author: Ben Wagner <bungeman@google.com>
Date:   Thu Jul 9 14:31:00 2020 -0400

    Document `FT_Face_Rec_::box' with variable fonts (#54969).

    As pointed out in the "Note:" in the section of

      https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview#variation-data-tables-and-miscellaneous-requirements

      ... the xMin, yMin, xMax, yMax, macStyle and lowestRecPPEM fields in
      the font header ('head') table are not supported by variation data and
      should only be used in relation to the default instance for the font.

    Document that `FT_Face_Rec_::box' does not vary with OpenType variable
    fonts.

commit 96fb73efd5c69c2c34ebe2a4d7096774c87da145
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 7 16:58:14 2020 +0200

    Fix clang warnings.

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

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

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

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

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

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

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

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

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

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

commit 0f35b042e02e23cc6fb29d805d25aa85679274eb
Author: David Turner <david@freetype.org>
Date:   Mon Jul 6 10:56:36 2020 +0200

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

    The following builds were still failing due to previous changes:

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

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

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

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

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

commit cb4a943bc4d24d48eeb5d1515c5acd880c4a82ab
Author: David Turner <david@freetype.org>
Date:   Mon Jul 6 10:56:36 2020 +0200

    [build] Fix multi and C++ builds.

    The following builds were failing due to previous changes:

      make multi
      make multi CC="c++"

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

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

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

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

commit 2eb8f8862669f50bf11693fb5c4f729a0ddf847f
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jul 6 09:21:03 2020 +0200

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

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

commit b0667d2d36fb134d48030b2a560eaaa37810d6ba
Author: David Turner <david@freetype.org>
Date:   Thu Jul 2 11:20:10 2020 +0200

    [build] Improve visibility support of library function names.

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

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

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

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

commit bb66c8d8cf1eb86309273d7c53c44522d35941d4
Author: David Turner <david@freetype.org>
Date:   Thu Jul 2 11:09:57 2020 +0200

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

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

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

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

commit 0322efb5e5fcd2c64f9fb433b890ff476abb696f
Author: David Turner <david@freetype.org>
Date:   Thu Jul 2 10:31:28 2020 +0200

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

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

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

commit bd7251ac97eea134873118f4d9f005c333e31953
Author: David Turner <david@freetype.org>
Date:   Thu Jul 2 10:24:20 2020 +0200

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

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

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

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

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

commit a4d9206754e6c68dc768e05b6676268149c197f1
Author: David Turner <david@freetype.org>
Date:   Thu Jul 2 10:10:25 2020 +0200

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

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

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

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

commit 3bb512bc9f621e1329927292d9ee7ba764549cae
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Jul 3 22:29:34 2020 -0400

    [smooth] Introduce direct oversampling for overlaps.

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

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

commit 19d39f43d25b375767b40b26aac7b2061d321ae2
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Jul 3 09:17:22 2020 -0400

    [smooth] Use direct rendering mode in Harmony.

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

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

commit 2d67511a142dcb772c6b75b0b3dfd416bd53e51c
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Jul 3 09:02:09 2020 -0400

    [smooth] Separate LCD paths from gray rendering.

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

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

commit a4434747558d872c55e55ce428019a8e15d222dc
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Sat Jun 20 05:31:34 2020 +0200

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

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

commit de088b1dfd0dd549005feb503efe1b41ca668b36
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Jun 19 22:46:30 2020 -0400

    Simplify unused macro.

commit f594ffdc357a4e73f739fa6c2c79f656b7d31a0b
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Fri Jun 19 18:55:49 2020 +0200

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

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

commit 2e2f3cb5baf1aed20c4eda08e043a2cf2515f275
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Fri Jun 19 16:29:07 2020 +0800

    [psaux] Fix memory leak (#58626).

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

commit 09b98060d3e0edfe78ea88ca8b851751a924ecac
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Fri Jun 19 16:21:08 2020 +0800

    Fix memory leak (#58624).

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

commit 6e722f2eaa5840e6b8c6f1eaa6a1fce9d7f90833
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Jun 19 08:39:23 2020 -0400

    [base] Rework d1180b5f9598 until further notice.

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

commit 8ed5a2477eecf27e645bbb568b66a37eea12973c
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Fri Jun 19 10:35:57 2020 +0200

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

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

commit d1180b5f9598088ab1bc9d772e5e09ece0702a38
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jun 19 08:18:26 2020 +0200

    [base] Fix UBSAN error.

    Reported as

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

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

commit 4d364b68215f1380b66164f3f0e4bdadc154d08f
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jun 19 05:41:37 2020 +0200

    [woff2] Fix segfault.

    Reported as

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

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

commit d924c5cf7e5554b22f7edfcb9e98670c4c02c3f0
Author: Stephen McDowell <svenevs.dev@gmail.com>
Date:   Fri Jun 19 04:14:39 2020 +0200

    [sfnt] Support Intel compilers.

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

commit a4429959b030e4a6e4aa41baa4306950158224f1
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Thu Jun 18 15:12:03 2020 +0800

    [base] Fix memory leak (#58611).

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

commit 575b78d9e3b9c701edb5087aa1c5f9c4031d3548
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Thu Jun 18 15:12:03 2020 +0800

    [cff] Fix memory leak (#58610).

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

commit 74cebeae1249f8ebade559a7316fe84db7a36fd2
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jun 19 03:41:12 2020 +0200

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

commit c8cd139c3025f6371974c8aecfe3a393dd5ad994
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Thu Jun 18 13:46:37 2020 +0800

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

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

commit 7438235b42e9d425888c68519d1e05dd2b69fff7
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jun 17 15:12:30 2020 +0200

    woff2tags.h: Fix copyright year.

commit 165868596783af1d296aa4fa30295b22cf7e79a2
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 13 21:15:45 2020 +0200

    Remove redundant inclusion of `ft2build.h'.

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

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

commit e13391333f501967db8823025ce8c63259b5d57e
Author: David Turner <david@freetype.org>
Date:   Mon Jun 8 13:31:55 2020 +0200

    Make macros for header file names optional.

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

    */*: Replace

       #include FOO_H

    with

       #include <freetype/foo.h>

    or something similar.  Also update the documentation.

commit 9e6e903cc4f6f2de86356d551e74eace75927c31
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 2 17:14:54 2020 +0200

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

commit 62fea391fa9993f8c1d206a50080d690178ce518
Author: David Turner <david@freetype.org>
Date:   Mon May 18 09:33:38 2020 +0200

    Remove obsolete HAVE_STDINT_H probing macro.

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

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

commit 4eee13404dca62cdaed4e26b5523f0d8f92f2a1f
Author: David Turner <david@freetype.org>
Date:   Mon May 18 09:16:12 2020 +0200

    Remove Jamfile files from the tree.

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

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

commit 3f70e6d20c82b28174096adcd0657b3c998b007b
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue May 12 00:38:46 2020 -0400

    [smooth] Turn on LCD filtering during FreeType initialization.

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

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

commit 652f88631932713309b6fa2cf12669699e3fc8e6
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon May 11 23:30:37 2020 -0400

    [smooth] Stop using dedicated LCD modules and classes.

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

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

commit 093f87bfe45160195ade7bd5174bbaaf50ebd6be
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat May 9 22:32:03 2020 -0400

    Formatting.

commit 132f19b779828b194b3fede187cee719785db4d8
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 5 20:14:14 2020 +0200

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

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

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

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

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

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

    * docs/CHANGES: Updated.

commit a45da2534960586fabea22481bd21ed5ed766022
Author: Jakub Alba <jalba@vewd.com>
Date:   Fri May 8 10:59:37 2020 +0200

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

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

commit ed62b12d6c810c1b046a53ee6b0d25c5f61944a1
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun May 3 23:22:08 2020 -0400

    Typo and comment.

commit de60e7d3f8f721445e4435e90a209656ca777352
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun May 3 17:11:20 2020 -0400

    * builds/freetype.mk: Refactor for readability.

commit 49967cb6101bc7e6593535d1c6fa293c8b26fa4a
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat May 2 13:50:33 2020 -0400

    [builds] Clean up Windows CE project files.

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

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

commit a612da0e8bb643c3a4fe562088c485fb28796558
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri May 1 22:52:52 2020 -0400

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

commit 9c850f5611a603b023d2b32a8186ea00e2092632
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri May 1 22:30:15 2020 -0400

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

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

commit d79946311bf8c72d31a8dadc8ae33e298554c61b
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Apr 30 08:37:16 2020 +0200

    Grammar fix for last commit.

commit e6ecce9ae820ab8c5425357623401e38a06822bc
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Apr 30 07:27:28 2020 +0200

    CHANGES: We are going to remove Jam.

commit 11beee855e29757a07320fd60e85de2e8da4e037
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Apr 8 09:05:32 2020 +0200

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

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

commit 7a019a63ed9753772e758beec3cad7c0b74ee2aa
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Apr 4 14:06:37 2020 +0530

    [woff2] Return if single stream operation fails.

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

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

commit 13c0df80dca59ce2ef3ec125b08c5b6ea485535c
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Mar 22 23:29:51 2020 +0530

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

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

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

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

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

commit 1fd3148713def5fe72ff6844a33e4fc896a80780
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Mar 21 20:17:17 2020 +0530

    [docwriter] Drop support for Python < 3.5.

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

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

    for more information.

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

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

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

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

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

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

commit 6a431038c9113d906d66836cd7d216a5c630be7c
Author: Moazin Khatti <moazinkhatri@gmail.com>
Date:   Mon Mar 2 18:21:27 2020 +0500

    [gzip] Support `gzip' encoded header conditionally.

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

    Problem report in

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

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

commit 11975fe9f6ed92b7630698e599b936a0186d965d
Author: Ben Wagner <bungeman@google.com>
Date:   Sat Feb 29 20:18:00 2020 +0100

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

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

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

commit 149b9055e61d9c46937d3b0cc5727e75484ed042
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Feb 29 20:28:03 2020 +0100

    ChangeLog entry for last commit.

commit 21c2311e633385e1cf77154d4880d492c19064f1
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Mar 1 00:37:31 2020 +0530

    Update docwriter stylesheet.

    This change is required to support docwriter 1.2.1.

    See

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

    for more information.

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

commit 216e077600a58346bb022d8409fd82e9d914a10a
Author: Ben Wagner <bungeman@google.com>
Date:   Fri Feb 28 07:43:00 2020 +0100

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

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

    (TT_Vary_Apply_Glyph_Deltas): Improve tracing message.

commit 141da028168efc554f6c8b70c2efe8fbe9945e4a
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Feb 27 09:49:06 2020 +0100

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

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

commit 5b1a37af563349172230842fcfdb59b5f22afcd0
Author: Dominik Röttsches <drott@chromium.org>
Date:   Tue Feb 25 11:08:11 2020 +0200

    Fix for CFF space glyph regression (#57541).

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

commit fa147af4a5255bf9017c9b004f7abd1d5e72f497
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Feb 22 18:30:46 2020 +0100

    [woff2] Fix font table access.

    Reported as

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

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

commit 6e49dff0052a73faaea13dd8bdf6f0724539db07
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Feb 21 20:57:52 2020 +0100

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

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

commit 49f3394d7a531320e96170d13be471647d505f60
Author: Nikolaus Waxweiler <nikolaus.waxweiler@daltonmaag.com>
Date:   Wed Feb 19 12:56:49 2020 +0000

    [autofit] Add support for Hanifi Rohingya script.

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

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

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

commit 84d56589f04eb1f459d865e8401e9c723fbbefb3
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Feb 19 18:13:02 2020 +0100

    Require HarfBuzz 1.8.

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

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

commit d09e8315591bb3b8767185d9abd8c3e40b8cc347
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Feb 16 15:24:27 2020 +0100

    Minor.

commit 8930cc96188c21a0ea5f7da7a6d00c4fefd86d3a
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Feb 12 18:25:03 2020 +0100

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

commit 4a19a53d5a89d13047b64c4972252e6af2e8badc
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Feb 4 13:37:19 2020 +0100

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

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

commit e5038be70414cf66da6c4d5ce4e30375884c30d8
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jan 19 17:05:19 2020 +0100

    Update all copyright notices.

commit fd03cf88167ac15a38c73cc5c51d55dfba0b5c82
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jan 4 19:28:36 2020 +0100

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

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

commit 50b013871c53f7624b5351dd4820a137303fe14b
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jan 4 18:42:27 2020 +0100

    Add reference to another oss-fuzz bug report.

commit a99a8e2863a44dcf7397e27f73655e4e0cc36704
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jan 3 18:09:12 2020 +0100

    [woff2] Fix memory leaks and a runtime warning.

    Reported as

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

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

commit 10d8de7541ab1f26f6f04b2118d13a92a7119102
Author: Dominik Röttsches <drott@chromium.org>
Date:   Mon Dec 30 11:22:04 2019 +0200

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

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

commit a4df0373c71f426711fb77e3a21d4b58b7c42e66
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Tue Dec 31 16:04:01 2019 +0100

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

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

commit 496601e5045bb9af24be4819646700a503ce103a
Author: Hugh McMaster <hugh.mcmaster@outlook.com>
Date:   Wed Dec 18 23:11:22 2019 +1100

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

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

    This patch fixes broken hyperlinks in the documentation pointing to
    and from the API Reference.  It also allows web assets to load from
    their relative paths.

    * builds/freetype.mk (DOC_DIR): Adjust.
    (refdoc, refdoc-venv): Add `--site' argument.

    * builds/toplevel.mk (do-dist): Updated.

commit 237fed6d5a75e5aff6c0cdc58d7bcc43b990bc0d
Author: Hugh McMaster <hugh.mcmaster@outlook.com>
Date:   Wed Dec 18 23:07:35 2019 +1100

    [docs] (1/2) Move static web assets (#56745).

    * docs/reference/*: Move ...
    * docs: ... one directory up.

commit 8cee1dde4e708b1d4a9f028f3ac6cca99495d729
Author: Dominik Röttsches <drott@chromium.org>
Date:   Tue Dec 17 14:12:38 2019 +0200

    Fix more UBSan warnings on adding offset to nullptr (#57432).

    * src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c
    (cf2_initLocalRegionBuffer): Use `FT_OFFSET'.

commit 7e1b39f6cd1f8e14d45592c9b192ade643d8d9de
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Dec 16 11:07:58 2019 +0100

    [truetype] Fix UBSan warnings on adding offsets to nullptr.

    Reported as

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

    * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET'.

commit 0c14a3adb08ca5aaac3188a63246361c50b069d4
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Dec 14 00:04:01 2019 +0100

    [truetype] Fix integer overflow.

    Reported as

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

    * src/truetype/ttinterp.c (Ins_MIRP): Use `ADD_LONG'.

commit 2c9a2d58ca9c8e58cae1d0b63f17e291297484eb
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Dec 13 23:56:25 2019 +0100

    Another bunch of UBSan warnings on adding offsets to nullptr.

    Reported as

      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19427
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19433
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19441
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19451
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19452
      https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19457

    * src/autofit/aflatin.c (af_latin_hints_compute_segments,
    af_latin_hints_compute_edges): Use `FT_OFFSET'.

    * src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET'.

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early
    if there is no charstring.

    * src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET'.

    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for
    zero bitmap dimensions.

commit 11d4ce23ac55a7d881bba5214c47922c05127242
Author: Dominik Röttsches <drott@chromium.org>
Date:   Mon Dec 9 12:40:42 2019 +0200

    Fix more UBSan warnings on adding offset to nullptr (#57384)

    * src/smooth/ftsmooth.c (ft_smooth_render_generic),
    src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET'.

commit dfc9a049ded53e2ca5c9b935f912a476d6f676ed
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Dec 5 08:44:30 2019 +0100

    * src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET'.

    Reported as

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

commit 551bd3a90e352fa3a66ee7644c07440939c03d81
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Dec 3 11:52:48 2019 +0100

    More nullptr offset UBSan warnings (#57331, #57347).

    * src/autofit/afcjk.c (af_cjk_hints_compute_segments),
    src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c
    (Ins_UNKNOWN): Use `FT_OFFSET'.

commit 4270e9f3243079bb90b6af618ed4d4fd31266412
Author: Dominik Röttsches <drott@chromium.org>
Date:   Wed Nov 27 11:38:45 2019 -0500

    Avoid more nullptr offset UBSan warnings (#57316).

    * src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points.
    * src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET'.
    * src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if
    `charstring_base' or `charstring_len' are null.
    * src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET'.

commit d4f9c249893a146b0c94a152f7674e288d181f95
Author: John Stracke <jstracke@Google.com>
Date:   Sat Nov 23 11:25:28 2019 +0100

    [base] Really fix #57194.

    Apply accidentally missed second part of patch.

    * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call
    `FT_GlyphLoader_CreateExtra'.

commit 9df460b632985f7d245d7669147c8c6a72724419
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Nov 23 11:09:40 2019 +0100

    [truetype] Avoid sanitizer warning (#57289).

    * src/truetype/ttpload.c (tt_face_get_device_metrics): Use
    `FT_OFFSET'.

commit c67b9a1c5b27afbb466a35222c84b1bccb81d238
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Sat Nov 23 11:01:18 2019 +0100

    [truetype] Fix integer overflow (#57287).

    * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'.

commit 3cb7b3f7cb35fe403195e5e5dd76c1a8fce2e59a
Author: Ben Wagner <bungeman@google.com>
Date:   Sat Nov 23 10:54:51 2019 +0100

    [sfnt] Avoid sanitizer warning (#57286).

    * src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +
    offset' computation.
    Tag `table' as `const'.

commit 2d1d60aac67e105e6b812aa4ed6448d277f985e2
Author: John Stracke <jstracke@Google.com>
Date:   Sat Nov 23 10:42:04 2019 +0100

    [base] Fix `NULL + offset' sanitizer warnings (#57194).

    * src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points,
    FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET'.
    (FT_GlyphLoader_CreateExtra): Add short cut if some values are zero.

commit 26d0f579c01018e2f42250ee48c0250e2e524541
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Nov 23 10:28:37 2019 +0100

    * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro.

    Use this for `base + offset' pointer calculations where `base' can
    be NULL (triggering a sanitizer warning even if the resulting
    pointer gets never dereferenced since it is undefined behaviour
    in C).

    Suggested by Ben Wagner.

commit 9b0179597e100e85d543b4e346490ed7b2bb2fff
Author: Ben Wagner <bungeman@google.com>
Date:   Sat Nov 23 10:07:48 2019 +0100

    [sfnt] Ensure OTTO fonts have tables (#57285).

    * src/sfnt/ttload.c (tt_face_load_font_dir): Add test.

commit 07c8d8bbdb0489de06f4d019a2872f4e372e1d73
Author: Behdad Esfahbod <behdad@behdad.org>
Date:   Sat Nov 23 10:00:02 2019 +0100

    Minor fixes for recent compilers.

    * src/gzip/infutil.h (inflate_mask): Add `const'.

    * src/autofit/aflatin2.c: Include `ft2build.h'.

commit 3aaae716b25bd2d3232e279bc05af65cff446dd9
Author: Nikolaus Waxweiler <madigens@gmail.com>
Date:   Thu Nov 7 23:39:41 2019 +0000

    CMakeLists.txt: minor doc additions, compile builds/unix/ftsystem.c on UNIX

commit b75031a26eed8838222ddb3a81bc1672a0e463a8
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Oct 25 21:29:13 2019 +0200

    * src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts' for TTCs.

    Reported as

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

commit 0a3d2bb99b45b72e1d45185ab054efa993d97210
Author: Filip Filmar <filmil@gmail.com>
Date:   Sun Oct 20 02:05:02 2019 -0700

    [doc] FT_Open_Args: Clarify the ownership of `pathname'.

    Don't expect the function to deallocate the buffer.  This may be obvious
    in C, but it is not so obvious in FFI bindings for FreeType 2.

commit 3b8bc65c50b6d306239d461cf96f22f50fc2aed5
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Oct 22 08:07:05 2019 +0200

    * src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift.

    Also improve tracing.

    Reported as

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

commit 90a30f154a612693641e5366ea8d1d27ea2a4a99
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Oct 10 22:04:50 2019 -0400

    * src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only.

commit 545a481a74a3c3b70af8928793a01a84f8b0ee9b
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Oct 10 13:11:06 2019 +0200

    * src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size'.

    Reported as

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

commit 1e9229f0fcb46fd4cd8e0fdc48fb4a44ddb7a8a1
Author: John Tytgat <John.Tytgat@esko.com>
Date:   Wed Oct 9 15:37:19 2019 +0200

    [cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023).

    * src/cff/cffobjs.c (cff_face_init): Don't set FT_FACE_FLAG_GLYPH_NAMES
    for CFF2 based fonts.

commit 5a1a79c0e8de8e886cc347ad22801982e8298a06
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Oct 8 11:12:18 2019 +0200

    [woff2] Fix SFNT table checks.

    Also reduce number of SFNT table lookups.

    Reported as

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

    * include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields
    `glyf_table', `loca_table', and `head_table'.

    * src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature.
    Use table pointers in `info' parameter.
    (get_x_mins): Check `maxp_table'
    Use table pointers in `info' parameter.
    (reconstruct_font):  Use and set table pointers in `info' parameter.
    Fix check for `glyf' and `loca' tables.
    Update call to `reconstruct_glyf'.
    (woff2_open_font): Updated.

commit 1167bff3e9a6302687667c6134673e4b3fd13636
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Oct 6 23:22:34 2019 +0200

    * src/sfnt/sfwoff2 (reconstruct_glyf): Fix reallocation.

    Reported as

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

commit 0fcf486e0d6f3bb1cb17b6a6f00f651e21077dda
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Oct 6 21:12:42 2019 +0200

    Improve memory debugging.

    * include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use
    `FT_DEBUG_INNER' to set source code file name and line.

    * src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of
    tracing message.

commit d355a73aa3821ae83e0e28e0888eb22dd83b2d96
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Oct 6 20:07:09 2019 +0200

    docs/DEBUG: Document environment variable `FT2_KEEP_ALIVE'.

    Also do some formatting and minor edits.

commit 1f4e5bcb19eaa9170466c8d845edfd11aba54937
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Oct 3 21:07:16 2019 +0200

    * src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation.

    Reported as

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

commit c912690d22ab16d772328396c27c47075924b012
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Sep 30 22:45:34 2019 -0400

    * src/base/ftstroke.c (ft_stroker_inside): Speed up.

commit 94815d6efa3804da0b41466716e80620014327d7
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Oct 1 00:15:25 2019 +0200

    * src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts'.

    Reported as

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

commit 839a023619b593b742f62ffab8e7e4f9da8c1593
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Sep 30 07:41:57 2019 +0200

    * src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak.

    Reported as

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

commit 12696dcf9bf614fef816bb768ed7c21b8eeee959
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Sep 30 07:27:55 2019 +0200

    [woff2] Reject fonts without `head' table.

    Also fix memory deallocation in case of error.

    `head' problem reported as

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

    * src/sfnt/sfwoff2.c (reconstruct_glyf): Don't use `stream_close'.
    Abort if `head_table' is NULL.
    Don't free `transformed_buf' in case of error.
    (woff2_open_font): Don't set `uncompressed_buf' to NULL.

commit ba06adafcdd35a34af6d9be63800c2f55dd03a75
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Sep 29 13:29:21 2019 +0200

    [woff2] Fix compiler warnings.

    Problem reported by Alexei.

    * src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min'.
    (reconstruct_font): Initialize `num_hmetrics'.
    (woff2_open_font): Initialize `info'.

commit c37a501458e2b5389ac977ed2523eed3e2d9bd61
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Sep 28 07:42:34 2019 +0200

    * src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check.

    Correct thinkos in patch from 2019-09-01.

commit 2bf603bde6f8d8ee307f16a32a986f9879639f1b
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Sep 28 07:37:24 2019 +0200

    [woff2] Fix memory leaks.

    One of them reported as

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

    * src/sfnt/sfwoff2.c (woff2_open_font): Free `info->x_mins' and
    `woff2->ttc_fonts'.

    (reconstruct_glyf): Initialize `info->x_mins'.

commit b39576f984276ef7b9d6febbea2a509b2c95d0f2
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Sep 27 19:18:49 2019 -0400

    * src/base/ftstroke.c (ft_stroker_cap): Speed up caps.

commit 432efa25b3476a6884426c0a30f6d6a624310e5d
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Sep 25 21:50:16 2019 -0400

    * src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter.
    * include/freetype/ftstroke.h: Wordsmith miter docs.

commit db4083fd7f19fd3fbd5d5a8e60d5c8e0f19778bd
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Sep 25 08:48:26 2019 +0200

    * src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes.

    Reported as

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

commit 4881f75b7ca04a35da4b467b46b28ae52b176482
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Sep 23 22:57:00 2019 -0400

    * src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations.

commit 5327092bb28b6df742386d75555ba3ccc6d05ce6
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Fri Sep 20 06:30:28 2019 +0200

    [woff2] Fix memory leaks.

    Reported as

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

    * src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling.
    Free `uncompressed_buf'.
    (reconstruct_font): Free `transformed_buf'.

commit 04ebb2a000ee40df2a9900198ec62d79af745b1f
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 17 19:46:59 2019 +0200

    * src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count'.

    Problem reported by Marc Schönefeld <marc.schoenefeld@gmx.org>.

commit 99f23d6ff2203966d210bccd49eacc62a20328f9
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 17 13:22:28 2019 +0200

    * src/sfnt/sfwoff2.c (woff2_open_font): Check table index.

    Reported as

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

commit cc17f852d575a8a66f9be51461af550d0f413891
Author: Avi Halachmi (:avih) <avihpit@yahoo.com>
Date:   Sun Sep 15 04:30:18 2019 +0300

    [cmake] Don't fail if brotli is missing (#56894).

    The libs which cmake controls are commented out at

      include/freetype/config/ftoption.h

    and cmake un-comment each enabled library, but the brotli option was
    not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained
    defined even if brotli was missing/disabled/etc.

    Comment it such that cmake can control it, which means leaving it
    undefined if brotli is missing.

    * include/freetype/config/ftoption.h: Fix typo.

commit 3de1b8d0b0983cf49a187a4227e7950395a3b08f
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 5 14:10:01 2019 +0200

    [cmake] Add brotli support.

    * CMakeLists.txt (FT_WITH_BROTLI): New option.

    * builds/cmake/FindBrotliDec.cmake: New file.

commit bbb14361dbb87e6ef30d0f35b22770c965d166b4
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 5 12:37:03 2019 +0200

    FindHarfBuzz.cmake: Change indentation to two spaces; shorten lines.

commit 87f5225256969e59dec7ea64c96067776d8a2f2d
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 5 12:14:03 2019 +0200

    Fix handling of `AF_CONFIG_OPTION_INDIC'.

    * devel/ftoption.h, include/freetype/config/ftoption.h:
    `AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'.

commit 12351eeefa677de3dee4c3a3c9c91ba3b5fb6855
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 5 12:02:59 2019 +0200

    CMakeLists.txt: Fix generation of DLL related stuff (#56852).

    Extract `version_info' variable from `builds/unix/configure.raw' and
    use the data to correctly set `LIBRARY_VERSION' and
    `LIBRARY_SOVERSION'.

    Also use the data to set `ft_version' field in `freetype2.pc'.
    Also fix the needed minimum version of HarfBuzz in `freetype2.pc'.

commit 3fa35aa420ee88856c60d3c0b7fedd43801953cc
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 3 21:10:20 2019 +0200

    * src/sfnt/sfwoff2.c (compute_ULong_sum): Fix undefined shift.

    Reported as

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

commit 543a3b939df50e02e52b948f4c9c8ba63bf38059
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Sep 1 23:03:09 2019 +0200

    * src/sfnt/sfwoff2.c (woff2_open_font): Add sanity check.

    Don't trust `totalSfntSize' unconditionally.

    Reported as

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

commit cbee985a2bc14750ff850192f9ee8c1efe2bd7c7
Author: Dominik Röttsches <drott@chromium.org>
Date:   Tue Aug 27 15:08:15 2019 +0300

    [woff2] Don't use `FT_UInt64' (#56815).

    * src/sfnt/sfwoff2.c (woff2_open_font): Use `FT_UInt32' for
    `file_offset'.  This fixes builds on platforms where `FT_LONG64' is
    not defined while still being sufficient to store a file offset.

commit 594156586b888805681a7085a780bd743fb180bd
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 27 14:07:14 2019 +0200

    [truetype] Prevent crash in `TT_Set_Named_Instance' (#56813).

    * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Fix error
    handling.

commit ed7e8194e00ce310905925f9fd10508382fecce6
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 27 14:07:05 2019 +0200

    CHANGES: Updated.

commit eef5c1dd1455208dee1a6378016f018c8a69be35
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 27 10:43:32 2019 +0200

    [woff2] Fix compiler warnings.

    * src/sfnt/sfwoff2.c (read_num_hmetrics): Remove unused argument
    `table_len'.
    Update caller.
    (triplet_decode, compute_bbox, store_loca, reconstruct_glyf): Make
    `i' variable unsigned.
    (reconstruct_glyph): Remove condition which is always false.
    (reconstruct_html): Removed unused argument `transformed_size'.
    Update caller.

    * src/sfnt/woff2tags.c (woff2_known_tags): Remove condition which is
    always false.

commit 60c52f0edbfaddcfcc87e01922fa5f7640e11cf5
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 27 10:08:01 2019 +0200

    [woff2] Formatting; some comments.

commit 86803acd2a8e274c76f7e985878258c8f16c2360
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Thu Aug 22 16:46:03 2019 +0530

    [woff2] Check whether known tag is in array bounds.

    If table tag is not 0x3f, we expect a value between 0 and 62.  If
    this is not the case, exit with errors.

    * src/sfnt/sfwoff2/c: Check whether table tag makes sense.

    * src/sfnt/woff2tags.c: Return 0 if tag is out of bounds.

commit d2681a49771228b35266d359e97b68f1a729fd6d
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Wed Aug 21 20:21:02 2019 +0530

    [woff2] More formatting and documentation.

    * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff2.c: Implement
    formatting changes suggested as

      https://lists.nongnu.org/archive/html/freetype-devel/2019-08/msg00052.html

commit 1a103015328a5897005311fa051fd57cb4b6aadb
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Aug 17 14:57:59 2019 +0530

    * src/sfnt/sfwoff2.c: Improve trace comments.

    Adjust tracing levels for comments, and more formatting.

commit 97616704aa2eb789d60d588a56ffb391acf1cdc8
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Wed Aug 14 17:39:55 2019 +0530

    [woff2] Formatting.

    * src/sfnt/sfobjs.c, src/sfnt/sfwoff2.c: Better formatting.

commit 2a23dc7fb30a46f86f625d4b7ec210bf8fe310e7
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Wed Aug 14 02:36:27 2019 +0530

    [woff2] Support `hmtx' reconstruction when `glyf' is untransformed.

    `reconstruct_hmtx' requires `info->x_mins' and `info->num_glyphs' to
    reconstruct the hmtx table.  In case glyf is not transformed, we
    call `get_x_mins' which does the necessary work.

    * src/sfnt/sfwoff2.c (get_x_mins): New function.
    (reconstruct_font): Call get_x_mins.

commit 5367e0ca016bc79096cb3b57217fc1326dc3b997
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Mon Aug 5 01:53:00 2019 +0530

    [sfnt] Support `face->num_faces' for WOFF2 fonts.

    Set correct value of `face->num_faces' for WOFF2 fonts.  This is
    being handled separately because we only load the tables for the
    requested font face in `woff2_open_font' and create a single-face
    sfnt stream.

    The full discussion is at:

      https://lists.gnu.org/archive/html/freetype-devel/2019-08/msg00000.html

    * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
    `woff2_num_faces'.
    (sfnt_init_face): Introduce variable `woff2_num_faces', and change
    `face->root.num_faces' if `woff2_num_faces' is set.

    * src/sfnt/sfwoff2.c (woff2_open_font): Validate requested face
    index and handle negative face indices.

    * src/sfnt/sfwoff2.h (woff2_open_font): Add parameter `num_faces' to
    declaration.

commit bb7668d7c30e16ef1d6442c4aa2b694fadd15295
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jul 28 19:38:05 2019 +0530

    [woff2] Improve memory and error handling.

    Free up memory after use, and improve error handling.

    * src/sfnt/sfwoff2.c (reconstruct_font, woff2_open_font): Implement
    changes.

commit 1e0207681544327f9e96c6d50231b6fbc1f6ed70
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Thu Jul 18 01:50:16 2019 +0530

    [woff2] Avoid too many calls to `FT_REALLOC'.

    We do this by using `totalSfntSize' as an initial reference, and
    extending the buffer when required.  This reduces rendering time
    considerably.

    * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add
    `totalSfntSize', rename `total_sfnt_size' to `actual_sfnt_size'.

    * src/sfnt/sfwoff2.c (write_buf): Add parameter `dst_size' to keep
    track of and update total size of stream.

    (WRITE_SFNT_BUF, WRITE_SFNT_BUF_AT): Modify macros accordingly.

    (pad4, store_loca, reconstruct_glyf, reconstruct_hmtx,
    reconstruct_font): Update parameters to accept `sfnt_size'.

    (woff2_open_font): Add variable `sfnt_size'.  Use WOFF2 header field
    `totalSfntSize' as initial reference (if value makes sense) and
    allocate `totalSfntSize' bytes for the sfnt stream.  `write_buf'
    handles reallocation if and when required.  Also resize the stream
    to `actual_sfnt_size' after reconstruction.

commit 4d9b3d1d506c2da2cc078369ed130fb2b6994bb2
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Tue Jul 16 02:45:03 2019 +0530

    [woff2] Reconstruct `loca', `hmtx', and swap out stream.

    Add necessary functions to reconstruct loca and hmtx tables (the two
    remaining tables that can have a transform).  `woff2_open_font' is
    now capable of loading a woff2 font face.  This code may still need
    more refining and better memory management.

    * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec): Add total
    (final) size of sfnt stream.

    (WOFF2_InfoRec): Add header checksum value.

    * src/sfnt/sfobjs.c (sfnt_open_font): Change `face_instance_index'
    parameter to its pointer so its value can be modified by
    `woff2_open_font'.

    * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF_AT): New macro to write into
    sfnt buffer at given position.

    (write_buf): Add parameter `extend_buf' which allows caller to
    specify whether buffer should be reallocated before copying data.

    (WRITE_SFNT_BUF): Updated.

    (pad4, store_loca, reconstruct_htmx): New functions.

    (reconstruct_glyf): Calculate loca values and store them.

    (reconstruct_font): Call `reconstruct_hmtx', write table record
    entries, and calculate table checksums.  Also calculate font
    checksum and update `checksumAdjustment' entry in head table.

    (woff2_open_font): Open stream for sfnt buffer, swap out input
    stream and return.

    * src/sfnt/sfwoff2.h (woff2_open_font): Modify parameter to accept
    pointer to `face_index'.

commit e3953e5410eaeec7ae49dbda26be6e4b1ca5d26c
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Jul 13 03:14:17 2019 +0530

    [woff2] Reconstruct transformed `glyf' table.

    Reconstruct `glyf' table if it is transformed in the uncompressed
    table stream.  Also add necessary structures, macros and functions.

    * include/freetype/internal/wofftypes.h (WOFF2_InfoRec,
    WOFF2_SubstreamRec, WOFF2_PointRec): New structures.
    (WOFF2_TableRec): s/OrigLength/dst_length/.

    * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128): Use
    `FT_SET_ERROR' to set implicit `error' variable.

    (WRITE_SHORT): New macro.

    (N_CONTOUR_STREAM, N_POINTS_STREAM, FLAG_STREAM, GLYPH_STREAM,
    COMPOSITE_STREAM, BBOX_STREAM, INSTRUCTION_STREAM): New macros to
    refer to substreams of the transformed `glyf' tables.

    (Read255UShort, ReadBase128): Return errors set by `FT_READ_XXX'
    macros.

    (with_sign, safe_int_addition): New functions to add sign to values
    based on a flag and perform safe addition respectively.

    (triplet_decode): Decode variable-length (flag, xCoordinate,
    yCoordinate) triplet for a simple glyph.   See

      https://www.w3.org/TR/WOFF2/#triplet_decoding

    (store_points, compute_bbox, composteGlyph_size, reconstruct_glyf):
    New functions.

    (reconstruct_font): Call `reconstruct_glyf'.

    * src/sfnt/sfwoff2.h: Add required constants.

    * src/sfnt/woff2tags.h: Move out constants to `sfwoff2.h'.

commit 81cf5326d59282265ccc0911050005a4b5d20a99
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Jul 6 18:05:18 2019 +0530

    [woff2] Copy un-transformed tables to sfnt stream.

    Copy un-transformed tables to the sfnt stream.

    * src/sfnt/sfwoff2.c: (WRITE_SFNT_BUF): New macro.
    (write_buf): New function.  Extend memory of `dst' buffer and copy
    bytes from `src'.
    (compute_ULong_sum): New function.  Calculate checksum of table.
    (reconstruct_font): Change `FT_Byte* sfnt' to `FT_Byte**
    sfnt_bytes'.  This has been done because we reallocate memory to
    `sfnt' multiple times, which may change the pointer value of `sfnt'.
    This new pointer must be propogated back to the caller.  Same reason
    for using a double pointer in `write_buf'.

    * src/sfnt/woff2tags.h (WOFF2_DEFAULT_MAX_SIZE): New macro used for
    overflow checking.

commit 106bacf5022e8c7c8bdcd8407efd64fb6db182b4
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Fri Jul 5 01:09:52 2019 +0530

    [woff2] Create stream for uncompressed buffer.

    Uncompressed buffer is now an `FT_Stream'.

    Perform basic checks and start iterating over tables.

    * src/sfnt/sfwoff2.c (stream_close, find_table, read_num_hmetrics):
    New functions.
    (reconstruct_font): Modify parameters and iterate over tables.
    (woff2_open_font): Updated.

commit 18f6ff11f91e377d6296bad2ece8bb2be7dbb0e2
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Mon Jul 1 01:29:30 2019 +0530

    [woff2] Handle TTCs and start reconstructing font.

    We `handle' TTCs by modifying the `indices' array to point to only
    those tables that are part of the requested `face_index'.

    Set and use `num_tables' in `WOFF2_TtcFont'.

    * src/sfnt/sfwoff2.c (reconstruct_font): New function.
    (woff2_open_font): Start reconstruction of font.

commit 7a1639bc1ee3ab8d79bfd7b58270c2f3eb908269
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jun 30 20:01:20 2019 +0530

    [woff2] Get known tags from function.

    Change `KnownTags' to a function (`woff2_known_tags').  This avoids
    introducing a global constant array.  This function returns the
    specified index without *any* checks.  The caller must ensure that
    `index' is within array limits.

    * src/sfnt/sfwoff2.c (woff2_open_font): Change `KnownTags[...]'
    notation to `woff2_known_tags( ...  )'.

    * src/sfnt/woff2tags.c: Perform changes.

    * src/sfnt/woff2tags.h: Update definitions.

commit c6c2c0b574c6a8b6f0a780516f96b1a98af8492e
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jun 30 19:32:27 2019 +0530

    [woff2] Minor.

    * src/sfnt/sfwoff2.c (woff2_uncompress): Add error message
    (woff2_open_font): Free `uncompressed_buf'.

commit fc65d45a62e1ffec6010cd17f22cfe59668e5592
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jun 30 04:31:04 2019 +0530

    [woff2] Uncompress Brotli streams and `face_index' support.

    WOFF2 compressed stream is now uncompressed if Brotli is available.
    This data is stored in a separate buffer (uncompressed_buf) because
    it does not contain direct table data.  Certain tables have
    transformations applied to them, and they must be reconstructed
    before we can write those tables to the SFNT stream.

    `face_index' is now being passed as a parameter to
    `woff2_open_font'.

    * src/sfnt/sfobjs.c (sfnt_open_font): Add parameter
    `face_instance_index'.

    * src/sfnt/sfwoff2.c (woff2_uncompress): New function.
    (woff2_open_font): Call `woff2_uncompress'.
    (compute_first_table_offset): Fix return type.

    * src/sfnt/sfwoff2.h (woff2_open_font): Modify declaration.

commit 732da8a4b7d3e28da5d89eeeafb7dbbe965f0870
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jun 30 04:15:55 2019 +0530

    * builds/unix/configure.raw: Change argument name to `brotli'.

commit 9443a1bc3e6cfa315db976ff80f6c5e91b12b387
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Fri Jun 28 01:01:17 2019 +0530

    Add Brotli dependency and required checks.

    Brotli is required for decompressing WOFF2 font directory streams.
    The library is thus being added as an optional dependency for
    FreeType.

    * builds/unix/configure.raw: Add checks for `libbrotlidec'.
    (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBSSTATIC_CONFIG): Updated.

    * devel/ftoption.h, include/freetype/config/ftoption.h
    (FT_CONFIG_OPTION_USE_BROTLI): New macro.

commit 76c64f6ba1eb66cb983f38e03f39e179ceb74487
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Mon Jun 24 01:07:18 2019 +0530

    [woff2] Write SFNT Offset table.

    * src/sfnt/sfwoff2.c (WRITE_USHORT, WRITE_ULONG): New macros.
    (compare_tags): New function.
    (woff2_open_font): Implement it.

commit e09fe4cc790086c2282313aa968dfef4a4196f91
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Tue Jun 18 19:58:55 2019 +0530

    * src/sfnt/sfwoff2.c: #undef macros.

commit e496cb2980978be5b4b7a3721135a9d6a5d68aa8
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jun 16 18:56:18 2019 +0530

    [woff2] Read table and collection directory.

    * include/freetype/internal/wofftypes.h (WOFF2_TtcFontRec): New
    structure.
    (WOFF2_HeaderRec): Add more fields.

    * src/sfnt/sfwoff2.c (READ_255USHORT, READ_BASE128, ROUND4): New
    macros.
    (Read255UShort, CollectionHeaderSize, compute_first_table_offset):
    New functions.
    (ReadBase128): Use `FT_READ_BYTE'.
    (woff2_open_font): Add functionality to read table directory and
    collection directory (if present).

commit 8c1e3fc339eeb66d2de526425ca21794161c0346
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jun 16 18:40:48 2019 +0530

    [sfnt] Include `woff2tags.c' for building.

    * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `woff2tags.c'.

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

commit b45c7dd5e2719da00a724bbb29fbc2b882060ade
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Jun 16 17:55:59 2019 +0530

    [sfnt] Add WOFF2 constants.

    Add constants required for WOFF2, and known table tags as defined in
    the specification.  See

      https://www.w3.org/TR/WOFF2/#table_dir_format

    for details.

    * src/sfnt/woff2tags.c, src/sfnt/woff2tags.h: New files.

commit 2fa573c1b038a32b7c6f5c76477f9b66a47cc425
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Wed Jun 12 00:21:20 2019 +0530

    [sfnt] Read WOFF 2 header.

    Check for WOFF2 tag, call `woff2_open_font', and implement it to read
    header according to specification.

    * include/freetype/internal/fttrace.h: Add `sfwoff2.c'.

    * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `sfwoff2.c'.

    * src/sfnt/sfnt.c: Include `sfwoff2.c'.

    * src/sfnt/sfobjs.c (sfnt_open_font): Check for `wOF2' tag and call
    `woff2_open_font'.

    * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h: New files.

commit 83dba0e9ec073d26e1a6febe62cc12e9dca2583c
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Tue Jun 11 23:40:19 2019 +0530

    Add structures for WOFF2.

    Add structures and macro for WOFF 2 header and table directory.

    * include/freetype/internal/wofftypes.h (WOFF2_HeaderRec,
    WOFF2_TableRec_): New structures.

    * include/freetype/tttags.h (TTAG_wOF2): New macro.

commit 9adc3b35f1a6909c1785c42ae7b8cf369634b225
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Aug 26 20:36:19 2019 +0200

    * src/psaux/cffdecode.c (cff_operator_seac): Fix numeric overflow.

    Reported as

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

commit 7d1d3b9a0e9310376a559ad2eac8a9dc4c60ce59
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Aug 26 09:08:56 2019 +0200

    [type1] Fix `FT_Get_Var_Axis_Flags' (#56804).

    * src/type1/t1load.c (T1_Get_MM_Var): Allocate space for axis flags.
    Also remove redundant assignment.

commit 734d60f63cfa27f9b337ddbb80adb9edd60475bf
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 6 20:38:17 2019 +0200

    Another minor documentation improvement.

commit ad3443c93121c59181fc4b46c5179d0d00bfcc4e
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Aug 5 10:00:41 2019 +0200

    Minor documentation improvement.

commit 12af46b649fdb946bacf150428e5cdfc3470a7ca
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jul 23 22:38:30 2019 -0400

    * src/base/ftbbox.c (cubic_peak): Sanitize left shift (#56586).

commit d5522ac0603a15bd87f795d36dc218681befe022
Author: Weiyi Wu <w1w2y3@gmail.com>
Date:   Mon Jul 22 09:49:22 2019 +0200

    * src/cid/cidload.c (cid_hex_to_binary): Fix typo (#56653).

commit b110acba9e6f7e40314f0da5d249cb3cb3beeab8
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jul 12 11:36:12 2019 +0200

    [sfnt, winfonts] Avoid memory leaks in case of error (#56587).

    * src/sfnt/sfwoff.c (woff_open_font): Call `FT_FRAME_EXIT' in case
    of error.

    * src/winfonts/winfnt.c (fnt_face_get_dll_font): Ditto.

commit 12e4307dc7b48c9a4a4fc3ac6c32220874ab18ec
Author: Ben Wagner <bungeman@google.com>
Date:   Fri Jul 12 10:48:10 2019 +0200

    Properly handle phantom points for variation fonts (#56601).

    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Scale phantom
    points if HVAR and/or VVAR is present.

commit 05439f5cc69eaa3deaf3db52a7999af09a2c293a
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jul 4 14:28:04 2019 +0200

    [psaux] (2/2) Handle fonts that use SEAC for ligatures (#56580).

    The same as previous commit but for the old engine.

    * src/psaux/t1decode.c (t1operator_seac): Implement it.

commit f2b64583cb2587373e126b06d8da9ac97b287681
Author: Chris Liddell <chris.liddell@artifex.com>
Date:   Thu Jul 4 14:04:52 2019 +0200

    [psaux] (1/2) Handle fonts that use SEAC for ligatures (#56580).

    As originally intended, a Type 1 SEAC charstring would be used for
    an accented glyph (like `acaron' or `uumlaut'), where the advance
    width of the SEAC glyph is the same as that of the `base' glyph
    (like `a' or `u').  In this case it is not uncommon for the SEAC
    glyph to not use an (H)SBW opcode of its own but to rely on the
    value from the base glyph.

    However, out-of-spec fonts also use SEAC glyphs for ligatures (like
    `oe' or `fi'), and in those cases the overall advance width is
    greater than that of the `base' glyph.  For this reason we have to
    allow that the SEAC glyph can have an (H)SBW value of its own, and
    if it has, retain this value, rather than the one from the base
    glyph.

    * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escSEAC>:
    Implement it.

commit 8cf046c38d4c6ada76ba070562beff0d5041f795
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jul 1 13:54:54 2019 +0200

    * Version 2.10.1 released.
    ==========================

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

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

    * README, Jamfile (RefDoc), src/base/ftver.rc,
    builds/windows/vc2010/freetype.vcxproj,
    builds/windows/vc2010/index.html,
    builds/windows/visualc/freetype.dsp,
    builds/windows/visualc/freetype.vcproj,
    builds/windows/visualc/index.html,
    builds/windows/visualce/freetype.dsp,
    builds/windows/visualce/freetype.vcproj,
    builds/windows/visualce/index.html,
    builds/wince/vc2005-ce/freetype.vcproj,
    builds/wince/vc2005-ce/index.html,
    builds/wince/vc2008-ce/freetype.vcproj,
    builds/wince/vc2008-ce/index.html: s/2.10.0/2.10.1/, s/2100/2101/.

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

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

    * include/freetype/fterrors.h (FT_Error_String): Fix C++ compilation.

commit 7b1c7585d7ab929d9b29932d6697a22149162c13
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Jun 26 20:18:00 2019 -0400

    * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Fix inequality.

    Reported by Armin Hasitzka.

commit 81445c034aca36040b6311dc71a2cbed9548b262
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Jun 22 22:54:57 2019 -0400

    Doc polishing.

commit a41e560b213d72f36c37b7b25960839de7d29fd0
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Jun 19 22:29:55 2019 -0400

    Minor.

commit 1e20a37f641d3b3e5e92b9a49d08553bc7bac5de
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jun 19 16:45:39 2019 +0200

    docs/CHANGES: Updated.

commit 983a87c6ece8d46e33bf7f6ff68f61b0d7a133d2
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 16 15:58:21 2019 +0200

    * src/tools/apinames.c: Formatting, minor edits.

commit 47ca5cb69d26b606b51292a90d025688d4dc5e4e
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 16 15:32:11 2019 +0200

    [autofit] Disable hinting if no blue zones are available (#56450).

    * src/autofit/afglobal.c (af_face_global_get_metrics): Start again
    (with dummy hinter module) if no blue zones are present.

    * src/autofit/aflatin.c (af_latin_metrics_init_blues): Change
    signature to return error code.
    If no blue zones are found, update `glyph_styles' array to hold
    AF_STYLE_NONE_DFLT instead of the current style.
    (af_latin_metrics_init): Return internal error code if no blue zones
    are found.

commit 82e4090431e07825e80add74910e5135bb1f3b90
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 16 10:09:17 2019 +0200

    Towards better VMS support.

    More to come.

    * builds/vms/LIBS.OPT_IA64, builds/vms/_LINK.OPT_IA64,
    builds/vms/vmslib.dat: New files provided by Jouk Jansen
    <joukj@hrem.nano.tudelft.nl>.

    * builds/vms/ftconfig.h: Update, also from Jouk.

commit 3736b28af9d93d74d3d4c269897a80d01dfbfe46
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 13 13:45:05 2019 +0200

    * src/autofit/aflatin.c (af_latin_metrics_init_widths): Minor.

commit 8acd9800edf581428e5a227022545b700e7ab130
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 13 11:12:26 2019 +0200

    Add memory access macro summary.

commit e7ac9288acde8ad21c96ad9c448ad2b2cfc9fe6a
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Jun 13 00:17:36 2019 -0400

    [smooth] Restore the span buffering for direct mode only.

    The buffer size FT_MAX_GRAY_SPANS is set to 10 spans, which should be
    enough to cover the entire scanline for simple glyphs in most cases:
    each slightly slanted edge needs up to two spans, plus a filling span
    in-between.  This is not new, we used to do it before cb4388783cecc.

    * src/smooth/ftgrays.c (gray_TWorker): Add `spans' and `num_spans'.
    (gray_hline, gray_sweep): Implement the span buffering.
    (gray_raster_render): Use negative `num_spans' to avoid the direct
    mode.

commit 59e0c6f92e142bb8b5c13a3303a1d7428e09a9bc
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Jun 12 22:30:21 2019 -0400

    * include/freetype/ftmodapi.h (FT_DebugHook_Func): Return error.

    Fix a warning by adding a return value as in `TT_RunIns',
    which should not be a compatibility issue.

commit bdac4cbe6fb77108a753be859fe73579c5cddc97
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Jun 12 21:58:35 2019 -0400

    Rendering considerations.

commit d1b16325e27b766c27cc9f569c0aa334f1ecb732
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jun 11 21:43:47 2019 -0400

    * src/truetype/ttobjs.c (tt_check_trickyness_family): Add `const'.

commit 6a92b1fadde26477a9179cbea988b3e04bd2decc
Author: Moazin Khatti <moazinkhatri@gmail.com>
Date:   Tue Jun 11 21:29:52 2019 +0500

    [gzip] Add support for `gzip' encoded header (#9812).

commit 78c02bc110b6a605c41487d8c26ae18960df251b
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Jun 10 23:09:49 2019 -0400

    [type1,type42] Use `const' for string literals.

    * include/freetype/internal/psaux.h (PS_Table_FuncsRec): Updated.
    * include/freetype/internal/t1types.h (T1_EncodingRec): Updated.
    * src/psaux/psobjs.[ch] (ps_table_add): Updated.
    * src/type1/t1load.c (T1_Open_Face, parse_encoding): Updated.
    * src/type42/t42objs.c (T42_Open_Face): Updated.
    * src/type42/t42parse.c (t42_parse_encoding): Updated.

    * src/cff/cffobjs.c (cff_face_init): Minor.

commit afaf3f1de925ade18d7fc2a202f28922cd5e91ff
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Jun 10 22:27:39 2019 -0400

    [bdf,pcf] Use `const' for string literals.

    * src/bdf/bdf.h (bdf_property_t): Updated `name'.
    * src/bdf/bdflib.c (_bdf_list_split,bdf_create_property,
    _bdf_add_property,_bdf_ato*): Updated.
    * src/bdf/bdfdrivr.c (bdf_interpret_style): Updated.
    * src/pcf/pcfread.c (pcf_intrpret_style): Ditto.

commit 7fde521bd918d2299cce80c306ecc2cac9f51303
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 10 15:37:33 2019 +0200

    Update CHANGES file.

commit 711b593e4b589fbd726a4962ad492fc4e416355d
Author: Philip Race <philip.race@oracle.com>
Date:   Fri Jun 7 09:15:28 2019 +0200

    * src/base/ftinit.c (FT_Set_Default_Properties): Fix crash.

    Terminate loop at end of environment.

commit c949ab0757a2514cd3a37b3e1e8390fd662a025b
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jun 4 20:17:05 2019 -0400

    Minor.

commit e13c1f46dc1afb1b2287849be5fa74ef70e0607b
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri May 31 22:31:47 2019 -0400

    Solidify VC2005 builds.

    * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Explicitly
    declare `_BitScanReverse' intrinsic.
    * builds/windows/visualc/freetype.vcproj [Debug]: Disable intrinsics.

commit 7b275a5af161c71a169dcec65f2f6998c9f2d6d5
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Thu May 30 23:57:34 2019 +0530

    [sfnt] Separate WOFF sources and headers.

    Move WOFF sources and headers to separate files.

    * include/freetype/internal/wofftypes.h, src/sfnt/sfwoff.c,
    src/sfnt/sfwoff.h: New files.

    * include/freetype/internal/fttrace.h: Register `sfwoff.c'.

    * include/freetype/internal/internal.h: Define
    FT_INTERNAL_WOFF_TYPES_H.

    * include/freetype/internal/sfnt.h: Include FT_INTERNAL_WOFF_TYPES_H.

    * include/freetype/internal/tttypes.h: Move out WOFF structures.

    * src/sfnt/rules.mk: Add `sfwoff.c'.

    * src/sfnt/sfnt.c: Include `sfwoff.c'.

    * src/sfnt/sfobjs.c: Include `sfwoff.h', move out WOFF sources.

commit f0de218cedc693f3dee62fbf045cdd39ac03d12d
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 30 08:43:45 2019 +0200

    [base] Fix `make multi'.

    Reported by Nikhil.

    * src/base/fterrors.c: Include FT_INTERNAL_DEBUG_H.

commit f37083edf0ef562fb8bae0dfc6f916b1037f71fe
Author: Ben Wagner <bungeman@google.com>
Date:   Wed May 29 08:15:38 2019 +0200

    [truetype] Fix copy-and-paste error (#56409).

    * src/truetype/ttgload.c (load_truetype_glyph): Use correct indices
    into `unrounded' array for phantom points.

commit 49079ce297c1698139456d0d3664bf32674d0ee5
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed May 29 08:08:53 2019 +0200

    [truetype] Fix 32bit builds (#56404).

    Patch suggested by Ben Wagner <bungeman@google.com>.

    * src/truetype/ttgxvar.c (FT_fixedToInt, FT_fixedToFdot6): Remove
    harmful cast to unsigned type.

commit 9159128a9297710071e28b24e3cbd29b7a475ebc
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed May 29 07:45:54 2019 +0200

    Silence gcc 7's fall-through warnings in `switch' blocks.

    Instead of an intentionally missing `break' statement there must be a
    comment line containing `fall through' (and nothing else) right before the
    next `case' statement.

    See

      https://stackoverflow.com/questions/45129741/gcc-7-wimplicit-fallthrough-warnings-and-portable-way-to-clear-them

commit 86d997e5b1c401db06114b51d44d1bef6c7fe994
Author: Ben Wagner <bungeman@google.com>
Date:   Sun May 26 09:37:41 2019 -0400

    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Improve accuracy.

commit e55f969869f4afa55259058c8ea78199abf24a59
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat May 25 20:56:54 2019 +0530

    * src/sfnt/sfobjs.h: Minor.

commit 306d2f6ccb5a05eb54c8de7ef07fc5b46f1649a1
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 23 14:41:57 2019 +0200

    [truetype] Draw glyphs without deltas in variation font (#56374).

    * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Always fill
    `unrounded' array.

commit c3be6f06b70bd6636cfdef0e3cf892151d6c7a1d
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 21 11:23:36 2019 +0200

    src/truetype/ttinterp.c: Give order of operations for some instructions.

commit 262fce445a50ee5cc50f177c61b0b4889cdfb6e7
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 21 09:58:51 2019 +0200

    * src/truetype/ttinterp.c (opcode_name): Improve mnemonics.

commit 8eafa52830713f1ae5d8dc264c293d2b2055e8a8
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 21 09:57:38 2019 +0200

    ttinterp.c: Improve documentation of engine compensation.

commit 141e3173dbddf809ee139d8775c06fac82288243
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon May 20 23:09:59 2019 -0400

    Rendering considerations.

commit b0522701f890372ff9f3d921cf212bccd1f64400
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 16 12:52:57 2019 +0200

    [truetype] Actually scale varied CVT values.

    Up to now, only the unscaled CVT values were varied; in other words,
    the `CVAR' data was never used for bytecode hinting.

    * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): New auxiliary
    function.
    (tt_face_vary_cvt): Use it to trigger rescaling of CVT values.

commit 37580053b491b69284988ed25cbbf6e884151eb0
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 16 12:15:54 2019 +0200

    [truetype] Use 26.6 format for storing unscaled CVT values.

    If `CVAR' data is applied to variation fonts, fractional values are
    possible.

    * include/freetype/internal/tttypes.h (TT_FaceRec): Change type of
    `cvt' from `FT_Short' to `FT_Int32'.

    * src/truetype/ttgxvar.c (FT_fdot6ToFixed): New macro.
    (tt_face_vary_cvt): Use it to update code to 26.6 format.

    * src/truetype/ttobjs.c (tt_size_run_prep): Update code to 26.6
    format.

    * src/truetype/ttpload.c (tt_face_load_cvt): Stora data in 26.6
    format.

commit ac335cd5865fcae031689e23c470907245aad4a0
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 16 10:15:53 2019 +0200

    * src/truetype/ttgload.c (load_truetype_glyph): Init `unrounded'.

    This fixes linear advance width values for spacing glyphs.  Bug
    introduced 2019-05-09.

commit 535b687e58960f29c2da936c486deb3065d32250
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 16 09:55:16 2019 +0200

    [truetype] Avoid code duplication.

    * src/truetype/ttobjs.c (tt_size_run_prep): Scale CVT values in this
    function.
    (tt_size_ready_bytecode): Updated.
    * src/truetype/ttgload.c (tt_loader_init): Updated.

commit 787db7c04815acf9ef25ec262be675a632cdd95e
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon May 13 22:22:57 2019 +0200

    * vms_make.com: Updated.  Handle `bzip2' directory, too.

commit 03f3f8ab9e5bab63d925c7369a78d59b831896d7
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon May 13 06:53:19 2019 +0200

    * src/psaux/psfont.c (cf2_font_setup): Fix compiler warning.

commit 94ebc248653ede802b2bfbf6219e17f487fab3ff
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun May 12 21:05:36 2019 +0200

    [truetype] Doh.  Fix last commit to make it work.

    Very embarassing :-)

    Reported as

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

    * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): Move up and add
    argument; update all callers.
    (TT_Process_Simple_Glyph): Use it.  The `unrounded' array is active
    for variation fonts only, thus also enclose related code with
    `#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT ...  #endif' where
    necessary.
    Revert commit a113e5d from 2019-05-09, and don't use `extra_points2'
    but allocate a temporary array.
    Speed up the scaling of the `unrounded' array.

    * src/truetype/ttgxvar.c (FT_fixedToInt, FT_FixedToFdot6): Fix type
    conversions and rounding.  The unsigned type must have more or equal
    bits to the signed type.

commit 1178227b39a4eeecbefad226d4a753b345a16eb1
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat May 11 09:29:19 2019 +0200

    [truetype] Increase precision of font variation (#54371).

    This patch make FreeType use font units in 26.6 format internally
    instead of integers.

    * src/truetype/ttgxvar.c (FT_fixedToFdot6): New macro.
    (TT_Vary_Apply_Glyph_Deltas): Add argument to output unrounded font
    coordinates.
    * src/truetype/ttgxvar.h: Updated.

    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Use
    `extra_points2' array to temporarily hold unrounded point
    coordinates; use them to compute scaled coordinates and linear
    advance width and height.
    (load_truetype_code): Adjust similarly.

commit a113e5df0cc31425e7bb4135cd297305db33d0ed
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 9 11:37:58 2019 +0200

    * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Minor.

commit bc3b5281ed08d1cae3a2d881d2c72d0e98e57c05
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed May 8 22:08:40 2019 -0400

    [smooth] Faster fractions.

    * src/smooth/ftgrays.c (SUBPIXELS): Replace with...
    (FRACT): A fractional coordinate macro to use in...
    (gray_render_line, gray_render_scanline): ... here.

commit 0c6f61ab12963c2a594e1b264388820599050f0e
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue May 7 19:07:11 2019 -0400

    * src/raster/ftraster.c (Draw_Sweep): Unbreak.

commit ea7e20fba62717319e088e9e0d776c3b4473eda8
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue May 7 07:00:38 2019 -0400

    * src/raster/ftraster.c: Clean-ups.

commit dc39f76cb7aecbefa3a601dd19e498eb903042fd
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 7 10:09:55 2019 +0200

    * src/truetype/ttgxvar.c: More use of `FT_fdot14ToFixed'.

commit 81725773800029731617b95cee57cd32a8b46756
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat May 4 08:11:20 2019 -0400

    * src/smooth/ftgrays.c (gray_render_line): Small shortcut.

commit 7b841047207c40b70590ab59c11be898a41504c2
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat May 4 08:13:22 2019 +0200

    Various clang 8.0 static analyzer fixes.

    Reported by Sender Ghost <lightside@gmx.com>.

    * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Catch a corner
    case where `edge->first' could be NULL.

    * src/pfr/pfrobjs.c (pfr_slot_load): Remove unnecessary test of
    `size'.

    * src/raster/ftraster.c (Draw_Sweep): Catch a corner case where
    `draw_right' might be NULL.

    * src/sfnt/ttmtx.c (tt_face_get_metrics): Fix limit test for
    `aadvance'.
    Ensure `abearing' always hold a meaningful result.

    * src/truetype/ttgload.c (load_truetype_glyph): Ensure `subglyph' is
    not NULL before accessing it.
    * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Remove unnecessary
    test of `namedstyle'.

    * src/type42/t42parse.c (t42_parser_done): Ensure
    `parser->root.funcs.done' is not NULL before accessing it.

commit 300458eb949f71a486710b69bb6b704139765b26
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri May 3 23:16:42 2019 -0400

    Miscellaneous macro updates.

    * src/base/ftoutln.c (SCALED): Updated.
    * src/smooth/ftgrays.c (SCALED): Ditto.
    (FLOOR, ROUND, CEILING): Removed.
    * src/psaux/psfixed.h (cf2_fracToFixed): Updated.

commit 65f9516bc7554c15d76ceb303ff110c84e61a55f
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu May 2 23:06:55 2019 -0400

    Tweak LCD filtering.

    * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
    Choose direction from bitmap's pixel_mode.
    * include/freetype/internal/ftobjs.c (FT_Bitmap_LcdFilterFunc):
    Updated.
    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.

commit 65e4925af4070ef80798b8d479947aec7a0fbfc6
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 2 07:21:34 2019 +0200

    * vms_make.com: Updated (#56253).

    Remove no longer existing directories (`autohint', `otlayout').
    Update used base extensions.
    Activate `autofit' module.
    Add `gxvalid' module.
    Update copyright notices.

commit 2ea511eed81770f423544525adebf7f954b8be93
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Apr 29 22:49:15 2019 -0400

    [smooth] Simplify cubic Bézier flattening.

    The previous implementation is correct but it is too complex.
    The revised algorithm is based on the fact that each split moves
    the control points closer to the trisection points on the chord.
    The corresponding distances are good surrogates for the curve
    deviation from the straight line.

    This cubic flattening algorithm is somewhat similar to the conic
    algorithm based the distance from the control point to the middle of
    the chord.  The cubic distances, however, decrease less predictably
    but are easy enough to calculate on each step.

    * src/smooth/ftgrays.c (gray_render_cubic): Replace the split
    condition.

commit 80475edead39eb3e7305ebfd43c3fb03a04d372f
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Apr 26 21:53:00 2019 -0400

    [smooth] Bithacks and cosmetics.

    * src/smooth/ftgrays.c (gray_record_cell, gray_set_cell, gray_hline,
    gray_render_conic, gray_convert_glyph_inner): Updated.

commit 7a81b63abc2b3da0d7f0950f69377d2b3f54b0fb
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Apr 25 22:06:33 2019 -0400

    Optimize Bézier bisections.

    * src/raster/ftraster.c (Split_Conic, Split_Cubic): Use shifts and
    refactor.
    * src/smooth/ftgrays.c (gray_split_conic, gray_split_cubic): Ditto.
    * src/base/ftstroke.c (ft_conic_split, ft_cubic_split): Ditto.
    * src/base/ftbbox.c (cubic_peak): Use shifts.

commit 432bb50ff539e7672723dc9161e44046710a1334
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Apr 23 21:51:42 2019 -0400

    Clarify docs.

commit 6abce2c2b04a14bd711d5d0fee3ba23e9612a747
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Apr 23 06:52:07 2019 +0200

    * src/sfnt/ttcmap.c (tt_cmap12_next): Remove dead code.

    Found by clang 8.0's static analyzer and reported by Sender Ghost
    <lightside@gmx.com>.

commit 4166c453601e856fa61e8994085f240d8771e980
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Apr 23 06:49:56 2019 +0200

    [base] Fix thinko in previous commit.

    * src/base/ftbitmap.c (FT_Bitmap_Blend): Check final width, not
    target pitch.

    Problem reported by Sender Ghost <lightside@gmx.com>.

commit 9f6ed10545b1009cce86289f793165dd7e4b7c9e
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Apr 22 08:10:56 2019 +0200

    * src/base/ftbitmap.c (FT_Bitmap_Blend): Check target pitch.

    Problem reported by Sender Ghost <lightside@gmx.com>.

commit af400438b7da3f07afadc3a5b3a6b982b2bdb84e
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Apr 22 07:41:35 2019 +0200

    Fix return value of `FT_Set_Named_Instance' (#56186).

    * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Correctly handle
    internal return value -1 of `TT_Set_Var_Design'.

commit d74106e2333fefbb015ccf2018ece01c01b554fa
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Apr 19 07:07:01 2019 +0200

    Typo.

commit c149f7397e484c97f45fb75fa1c7fdda2fc646cd
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Apr 17 07:49:17 2019 +0200

    [pcf] Fix handling of undefined glyph (#56067).

    This commit fixes the changes from 2018-07-21, which broke charmap
    iteration.  We now add the default character as a new glyph with
    index 0, thus increasing the number of glyphs by one (as before).

    * src/pcf/pcfread.c (pcf_get_metrics): Adjust to new artificial
    glyph with index 0.
    Limit number of elements to 65534.
    (pcf_get_bitmaps): Ditto.
    Unify two loops into one; this avoids allocation of an intermediate
    array.
    (pcf_get_encodings): Don't flip indices but copy glyph metrics of
    default character to index 0.
    Also handle invalid default character.

    * docs/CHANGES: Updated.

commit ebe375081289844e580242fe7956fa2082ab89b6
Author: Minmin Gong <gongminmin@msn.com>
Date:   Mon Apr 15 10:46:19 2019 +0200

    * CMakeLists.txt: Avoid rewriting of unchanged configuration files.

    Reported as

      https://savannah.nongnu.org/patch/index.php?9755

commit 8837ac26d00f5a433ec9fd8bc08446b6df4c5bd5
Author: JDG <JonathanG@iQmetrix.com>
Date:   Mon Apr 15 10:10:38 2019 +0200

    * src/tools/apinames.c (main): Fix error message.

    Reported as

      https://savannah.nongnu.org/patch/?9796

commit 01aed76c6815842631c87f43ec77b9870c4a1884
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Apr 14 09:39:28 2019 +0200

    Minor.

commit 9e9bc9dadedd1dfa4023ba2124dba5afcf4f835f
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Apr 12 06:19:25 2019 +0200

    Split off ChangeLog.29.

commit 1f271751a39e5bc9c639adc213183ed5e58a9401
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Apr 11 23:48:21 2019 -0400

    [smooth] Fix segfault in direct mode (#56092).

    * src/base/ftoutln.c (FT_Outline_Render): Set missing clip_box for
    direct mode.
    * src/smooth/ftgrays.c (gray_raster_render): Use it.

commit f0384d5fb09d6a079614ad79fadf52cce5daba83
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Apr 9 11:01:24 2019 +0200

    Minor.

commit 885b4c2475f3272afd4115c97c150266cd815406
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Apr 6 07:07:37 2019 +0200

    * src/sfnt/ttcmap.c (tt_get_glyph_name): Pacify compiler (#56061).

    This is for Visual Studio 2019 on ARM.

commit 74e9ca6d2ef5b0010d9ac8f2763dcf16163f40ce
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Apr 6 06:51:08 2019 +0200

    For distribution, replace `.tar.bz2' with `.tar.xz' bundles.

    * builds/toplevel.mk (build): Do it.

    * README, docs/CHANGES, docs/release: Updated.

commit 3ad1c93ac1b111b76dc671181b1deab252cc1f1e
Author: Antony Lee <anntzer.lee@gmail.com>
Date:   Sat Apr 6 06:37:42 2019 +0200

    Make `glyph_name' parameter to `FT_Get_Name_Index' a `const'.

    * include/freetype/freetype.h (FT_Get_Name_Index),
    include/freetype/internal/ftobjs.h (FT_Face_GetGlyphNameIndexFunc),
    include/freetype/internal/services/svgldict.h
    (FT_GlyphDict_NameIndexFunc), src/base/ftobjs.c (FT_Get_Name_Index),
    src/cff/cffdrivr.c (cff_get_name_index), src/sfnt/sfdriver.c
    (sfnt_get_name_index), src/type1/t1driver.c (t1_get_name_index),
    src/type42/t42drivr.c (t42_get_name_index): Add `const' to second
    argument.

commit 6986ddac1ece9404c9b640a512cbd99534205fda
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Sun Mar 31 11:08:49 2019 +0100

    [cff] Fix boundary checks.

    642bc7590c701c8cd35a9f60fa899cfa518b17ff introduced dynamically
    allocated memory when parsing CFF files with the "old" engine.  Bounds
    checks have never been updated, however, leading to pointless
    comparisons of pointers in some cases.  This commit presents a
    solution for bounds checks in the CFF module with an extended logic
    for the "old" engine while staying as concise as possible for the
    "new" one.

    * src/cff/cffparse.h: Introduce the struct `CFF_T2_StringRec' and
    the additional field `t2_strings' within `CFF_ParserRec'.

    * src/cff/cffparse.c (cff_parser_within_limits): Move all boundary
    checks into this new function and update the rest of `cffparse.c' to
    use it.

    Reported as

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

commit fdb10e8b50cfff7be2ec2b77cb4a695f3d77643c
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Mar 21 13:51:59 2019 +0100

    Improve link.

commit df266d3e6b657c6220ae1a13b516f03d1a307d21
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Mar 20 07:04:06 2019 +0100

    [autofit] Fix Mongolian blue zone characters.

    * src/autofit/afblue.dat: Use U+200D (ZERO-WIDTH JOINER) characters
    to get medial forms for some Mongolian characters.
    * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

commit dde03eec37579ef86ca6a9e04bf290bc85f785ad
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Mar 19 10:50:38 2019 +0100

    [autofit] Add support for Mongolian script.

    As a de-facto standard, layouts using this script are constructed
    horizontally line by line, then the lines are rotated clockwise for
    vertical display.

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

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

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

commit fbbcf50367403a6316a013b51690071198962920
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Mar 15 07:27:02 2019 +0100

    * Version 2.10.0 released.
    ==========================

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

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

    * README, Jamfile (RefDoc), src/base/ftver.rc,
    builds/windows/vc2010/freetype.vcxproj,
    builds/windows/vc2010/index.html,
    builds/windows/visualc/freetype.dsp,
    builds/windows/visualc/freetype.vcproj,
    builds/windows/visualc/index.html,
    builds/windows/visualce/freetype.dsp,
    builds/windows/visualce/freetype.vcproj,
    builds/windows/visualce/index.html,
    builds/wince/vc2005-ce/freetype.vcproj,
    builds/wince/vc2005-ce/index.html,
    builds/wince/vc2008-ce/freetype.vcproj,
    builds/wince/vc2008-ce/index.html: s/2.9.1/2.10.0/, s/291/2100/.

    * include/freetype/freetype.h (FREETYPE_MINOR): Set to 10.
    (FREETYPE_PATCH): Set to 0.

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

    * builds/toplevel.mk (version, winversion): Since the minor version
    number has two digits now, never omit the patch number.  We would
    get ambiguous zip file names otherwise.
    (dist): Remove remnants of `docmaker' tool.
    (do-dist): Remove unused intermediate files.

    * src/cff/cffparse.c (destrict_c2s_item): Guard function with
    CFF_CONFIG_OPTION_OLD_ENGINE macro.

commit 4e64d9d3daa6356da8ad30b8303402f7dd4a30d2
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Mar 8 00:13:08 2019 +0100

    CHANGES: Minor fixes.

commit 2f4b740ce435bc1ad5ef8570bb91ab7cd5682720
Author: Andrei Alexeyev <0x416b617269@gmail.com>
Date:   Thu Mar 7 09:42:25 2019 +0100

    Fix invalid function pointer casts.

    This change should allow Freetype to work on WASM/Emscripten without
    needing `-s EMULATE_FUNCTION_POINTER_CASTS=1'.

    * src/autofit/afdummy.c (af_dummy_hints_apply): Fix signature.

    * src/cid/cidload.c (cid_parse_font_matrix, parse_fd_array,
    parse_expansion_factor, parse_font_name): Return `void', not
    `FT_Error'.

    * include/freetype/internal/ftobjs.h (FT_CMap_CharVarIsDefaultFunc):
    Fix signature.

commit 31757f969fba60d75404f31e8f1168bef5011770
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Mar 5 11:35:03 2019 +0100

    [base] Handle numeric overflow (#55827).

    * src/base/ftglyph.c (FT_Glyph_Get_CBox): Use `FT_PIX_CEIL_LONG'.

commit 6a4718a3a0584c976b10d4e3a2cc58dc5f4a8242
Author: Sebastian Rasmussen <sebras@gmail.com>
Date:   Tue Mar 5 17:25:19 2019 +0800

    Fix use of uninitialized memory.

    * src/psaux/psintrp.c (cf2_interpT2CharString): The call to
    `cf2_arrstack_setCount' may fail because the allocator ran out of
    memory.  When this happens the stack is still written to before the
    error condition is checked.  This means that FreeType writes outside
    of allocated memory.  This commit moves the error check prior to the
    stack assignment, hence the function now properly returns with an
    error condition.

commit 6d65c60fca0ebce88e2bcfeac92a7a791e03bf42
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Mar 2 16:05:51 2019 +0530

    Minor formatting.

commit bf04c592490402e7f00f6c7900bac01f9bd08fc6
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Feb 25 06:32:26 2019 +0100

    Minor doc fixes.

commit 4d51f78de9b26de3d182f17b7aa47eb644a708d4
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Feb 23 11:21:48 2019 +0100

    More documentation updates.

    In particular, mark the new behaviour of `FT_LOAD_COLOR' as experimental.

commit 6ab36880ce25ad0f67661609ac9ec9a3dcd4c992
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Feb 23 11:18:39 2019 +0100

    * src/base/ftbitmap.c (FT_Bitmap_Blend): No fractional offsets.

    The function only provided a framework without an actual
    implementation, which this commits removes.

commit 7585997024b354499dfb1a0d7b2423544467c3a5
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Feb 23 10:07:09 2019 +0100

    Update all copyright notices.

commit fd8fc64efb9b355a73192dc4d01d5daa8ecd31cd
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Feb 23 10:05:37 2019 +0100

    * src/tools/update-copyright-year: Insert `(C)'.

commit b77826e139dee90d2f1f6f804971e9a355a2f8a3
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Thu Feb 21 10:23:15 2019 +0000

    Triage 8ea854bfe92443706d55656072f891ec8f2cb3c2.

commit 8ea854bfe92443706d55656072f891ec8f2cb3c2
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Thu Feb 21 10:14:57 2019 +0000

    [truetype] Mask numeric overflows.

    * src/truetype/ttinterp.c (Move_CVT, Move_CVT_Stretched, Ins_MIRP):
    Mask numeric overflows.

    Reported as

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

commit 5e3a38b194f3a68e9a5a03a1bd0c6bb2eb3dec1f
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Thu Feb 21 10:04:28 2019 +0000

    [psaux] Mask numeric overflow.

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Mask numeric
    overflow.

    Reported as

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

commit a346abc0934de411f26f8472ffbc6c4e0a8f95c7
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Feb 21 09:19:09 2019 +0100

    s/`....`/'....'/ for SFNT table tags in documentation.

commit 8de11f3def20c1e265ab0c60b7a4e81fa011ccf7
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Feb 20 16:18:40 2019 +0100

    s/NULL/`NULL`/ in documentation.

commit f92fa39341846b694864fb5e94da442c6f3fbb6e
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Feb 20 16:04:48 2019 +0100

    Minor documentation fixes.

commit de8de1ce0e498b8cc9ae39e5a7d156100bcda99b
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Feb 20 12:48:36 2019 +0100

    Minor (whitespace, spelling, doc update).

commit 0ac6921109aa78a26b874ad3a89b6ea0a209a7fc
Author: Wink Saville <wink@saville.com>
Date:   Sat Feb 16 07:05:39 2019 +0100

    * src/autofit/afwarp.h (af_warper_compute): Fix declaration.

commit 29b302ad36d527ea0c6e1c4b8e5f84bf3051a956
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Feb 16 07:05:24 2019 +0100

    Minor.

commit b66d6a91123c891978ac7cc5e28943b24b8e11d6
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Feb 6 07:38:25 2019 +0100

    CHANGES: Document recent metrics change from Nikolaus.

commit a6feefdfefd6eb8e62728f40638241bb1d8c993e
Author: Nikolaus Waxweiler <madigens@gmail.com>
Date:   Sat Feb 2 15:50:57 2019 +0000

    [truetype] Apply MVAR hasc, hdsc and hlgp metrics to current FT_Face metrics.

    Instead of setting typo or win metrics as the new FT_Face metrics
    indiscriminately, apply only typo deltas to the currently active FT_Face
    metrics. This prevents line height differences when e.g. the default
    outlines were used as the regular face and instances for everything else.

    * src/truetype/ttgxvar.c (tt_apply_mvar): Implement.

commit f72b00746c64e13625cf8371f031411fbd0d6161
Author: Nikolaus Waxweiler <madigens@gmail.com>
Date:   Sat Feb 2 15:45:31 2019 +0000

    [sfnt] Use typo metrics if OS/2 fsSelection USE_TYPO_METRICS bit is set.

    If the OS/2 table exists and fsSelection bit 7 (USE_TYPO_METRICS) is set,
    use the sTypo* set of values to compute the FT_Face's ascender, descender
    and height. Otherwise, fall back to old behavior.

    * src/sfnt/sfobjs.c (sfnt_load_face): Implement.

commit f686ad46a3a9801ffa78063202250c68276330cb
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jan 22 20:31:44 2019 +0100

    Update copyright years.

commit f61f49fef7a958830be54ffbed801c1bfd18a0be
Author: John Tytgat <John.Tytgat@esko.com>
Date:   Fri Jan 18 13:25:23 2019 +0100

    [sfnt] Handle TT fonts having two PostScript font names (#55471).

    * src/sfnt/sfdriver.c (sfnt_get_name_id): Prefer English over any
    other language found for PostScript font names.

commit 1e7a8f30c231bace001c617099e78f78743dd3b4
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jan 8 20:54:13 2019 -0500

    [psaux, type1] Align tracing.

commit b75abeb5e6561024d182ccdc0eb36a7d2630310e
Author: Chris Liddell <chris.liddell@artifex.com>
Date:   Tue Jan 8 20:51:39 2019 -0500

    [psaux] Fix closepath (#55414).

    All of the Type 1 path building is done with code common to the
    revised CFF engine, with the exception of closepath, which was still
    calling ps_builder_close_contour(), thus previously cached segments
    were not always written to the path, and glyph corruption, or even
    invalid outlines were possible.

    * src/psauc/psinterp.c (cf2_interpT2CharString) <cf2_cmdCLOSEPATH>:
    Switch to calling `cf2_glyphpath_closeOpenPath'.

commit 2875ada19766f9559feab3c643026fac57ac2a81
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Dec 30 20:02:08 2018 +0530

    Minor documentation fix.

commit b89166cc4daea4562c86e009b3db203b3afe77ff
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Dec 29 08:55:01 2018 +0100

    * src/autofit/aflatin2.c: Some fixes from `aflatin.c' (#55310).

commit 0238237508a985956bc4baa4fc29fe7396c55434
Author: suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Date:   Wed Dec 26 12:02:10 2018 +0900

    * builds/mac/README: Fix a hyperlink to defunct www.gyve.org.

commit afa043de9cf2329ce697714a1e7eadba3055dead
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Dec 25 22:44:05 2018 +0100

    Fix links (mostly http -> https).

commit 5e02965905e64e543a92d8d29fba32c86b350104
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Dec 25 19:24:06 2018 +0100

    * src/psaux/cffdecode.c (cff_operaor_seac): Fix numeric overflow.

    Reported as

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

commit ec439711b1d32ea8182fa98df73166120b7b0cb0
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Dec 12 19:59:42 2018 +0100

    [gxvalid] Fix compiler warnings.

    * src/gxvalid/gxvjust.c (gxv_just_check_max_gid),
    src/gxvalid/gxvmort.c (gxv_mort_coverage_validate): Use `FT_UNUSED'.

commit e8bbef85c0027cb5ade84dbcc0bb12c1eb080e06
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Dec 12 14:05:03 2018 +0100

    Fix documentation of TrueType bytecode interpreter debug hook.

commit 2b4e61e4d61dab168cef572e40368c6d2e687f8b
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Dec 12 09:36:39 2018 +0100

    Minor documentation fixes.

commit 3e8a2283f5119376098a0ec66f876866ff5cea4d
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Dec 11 23:54:17 2018 +0100

    * src/truetype/ttgload.c (TT_Hint_Glyph): Remove useless test.

    `control_len' only gets its value from `n_ins' (and vice versa),
    which is always read as `unsigned short' and thus can't be larger
    than 0xFFFF.

commit 0c83ba6d61e686ca55c3cc763d48a38cb4d7ca67
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Dec 10 12:11:54 2018 +0100

    Minor documentation updates and fixes.

commit d01e28f41f8810c8ea422b854f8722659589fa99
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Dec 6 08:12:27 2018 -0500

    Important doc fix.

commit f1b6183f36d4a28a874bd25fd89363dc8ac32574
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Dec 4 11:51:15 2018 +0100

    [bdf] Ignore data after `ENDFONT'.

    Reported as

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

    * src/bdf/bdflib.c (_bdf_parse_end): New function.
    (_bdf_parse_glyphs): Switch to `_bdf_parse_end' after `ENDFONT' has
    been encountered.

commit 456e9c8fcefa000518f114c1dffd38cfce66420f
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Dec 2 23:40:55 2018 -0500

    * builds/windows/visualc/freetype.dsp: Dust off.

commit c1e58b4d93886ac1f985a31fac61b251f1c77fc7
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Thu Nov 29 12:57:35 2018 +0530

    * include/freetype/ftmm.h: Minor.

commit 3dd4e76b19f3cd4f706c3455d6ae01765d07eee5
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Nov 27 23:22:52 2018 -0500

    * builds/windows/vc2010/freetype.vcxproj: Simplify.

commit 78a1e69517ca067224d6e33beffd25e2ec8361d2
Author: Chris Liddell <chris.liddell@artifex.com>
Date:   Tue Nov 27 22:24:06 2018 +0100

    [type1,cff] Add FT_{Set,Get}_MM_WeightVector API calls.

    For multiple master fonts, common usage (in Postscript) is to modify
    the WeightVector of an existing font instance, this addition
    supports that use.

    * include/freetype/ftmm.h, src/base/ftmm.c (FT_Set_MM_WeightVector,
    FT_Get_MM_WeightVector): New API functions.

    * include/freetype/internalservices/svmm.h
    (FT_Set_MM_WeightVector_Func, FT_Get_MM_WeightVector_Func): New
    function types.
    (MultiMasters): Add `set_mm_weightvector' and `get_mm_weightvector'
    members.
    (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.

    * src/cffcffdrivr.c (cff_set_mm_weightvector,
    cff_get_mm_weightvector): New functions.
    (cff_service_multi_masters): Register them.

    * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
    This driver doesn't use the new interface.

    * src/type1/t1load.c (T1_Set_MM_WeightVector,
    T1_Get_MM_WeightVector): New functions.
    * src/type1/t1driver.c (t1_service_multi_masters): Register them.
    * src/type1/t1load.h: Updated.

commit 1fc6937f7fa3bd80edbadc1e3c69d21dd9929e74
Author: Ben Wagner <bungeman@google.com>
Date:   Tue Nov 27 18:02:44 2018 +0100

    [cff] Fix compiler warning (#55105).

    * src/cff/cffparse.c (cff_parser_run): Guard label only used if
    CFF_CONFIG_OPTION_OLD_ENGINE is active.

commit 74cdd75f6fb5c6df74f12e4724ecd84edab0dddd
Author: Ben Wagner <bungeman@google.com>
Date:   Tue Nov 27 17:55:40 2018 +0100

    [truetype] Fix numeric overflow (#55103).

    * src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'.

commit 1c4004bb345080fb5356402f30af83e648d0b503
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Nov 25 23:19:39 2018 -0500

    [builds] Belated DLL support with vc2002-vc2008.

    The solution and project files should be automatically upgraded for
    the approriate Visual C++ version.

    * builds/windows/visualc/freetype.{sln,vcproj}: Major upgrades.
    * builds/windows/visualc/index.html: Document the change.
    * builds/windows/vc2005, builds/windows/vc2008: Removed as redundant.

commit 55b35cd61168269a1064f3651d998d9c190c57ed
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Thu Nov 22 11:43:48 2018 +0000

    * src/cff/cffparse.c: Please the compiler.

commit 642bc7590c701c8cd35a9f60fa899cfa518b17ff
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Thu Nov 22 10:29:35 2018 +0000

    [cff] Fix memory overflow.

    Reported as

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

    * src/cff/cffparse.c (destruct_t2s_item, cff_parser_run): Store
    evaluated T2 charstrings in separately allocated memory.

commit 81f43a9d36c977beadc8ece0b28ba13ba86484ba
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Nov 18 14:47:32 2018 -0500

    * builds/windows/{visualc,vc2005,vc2008}/freetype.vcproj: Fix it.

commit 8d517e679b65a9f4b85abf995045cf76cb8b5354
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Nov 10 15:47:48 2018 -0500

    Clarification.

commit 78db9eecff412608bcfb56af281a4cd3b51b2cd4
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Nov 10 15:39:19 2018 -0500

    [smooth] Placeholder only for library-enabled LCD filtering.

    * src/smooth/ftsmooth.c (ft_smooth_init): Add disabled
    `FT_Library_SetLcdFilter' call.

commit 58e48e92877f873248b84435e0c2350dab208bfa
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Nov 9 12:14:35 2018 +0100

    [psaux] Add safety guard (#54985).

    * src/psaux/psobjs.c (cff_builder_close_contour): Do it.

commit 3b6e65f7bf674601b9419d02ce0aa633e2e882fb
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Nov 8 23:36:37 2018 -0500

    * builds/unix/configure.raw: Require `windows.h' for windres.

commit 181033d396acac847e1dbcb766a1df8e5dc9d711
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Nov 8 21:04:56 2018 -0500

    [ftstroke] Fix unpredictable failures (#54986).

    * src/base/ftstroke.c (ft_sroke_border_lineto): Fix lineto check.

commit 81c31f62cb30bb5526ffa3f19fb06b14ca593b00
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Nov 8 07:54:47 2018 -0500

    [ftstroke] Fix unpredictable failures (#54976).

    * src/base/ftstroke.c (ft_sroke_border_close): Set the start tags.

commit fb0d66d04c4dd8d7f9604af1a6001b2737cb5098
Author: Ben Wagner <bungeman@google.com>
Date:   Wed Nov 7 00:47:44 2018 +0100

    [truetype] Fix VF check from 2018-09-12 (#54973).

    * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use correct
    offsets for estimates.

commit fbd24523461d57d38bd040d842f9fba2690545cd
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Nov 6 11:15:31 2018 +0100

    [pshinter] Fix numeric overflow.

    Reported as

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

    * src/pshinter/pshrec.c (ps_dimension_add_t1stem): Implement it.

commit 5b86f53dd60c7545dcea75684561199ac3d3e90f
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Nov 6 11:08:41 2018 +0100

    [psaux] Fix timeout in old CFF engine.

    Reported as

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
    <cff_op_sqrt> [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix potential endless
    loop.

commit cc288e383bbb95442f3ed72539917323bd1dabbf
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Nov 4 22:09:16 2018 -0500

    Minor.

commit 1f43affc0907382e9620951501d47bd21b529b84
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Nov 4 13:11:16 2018 -0500

    * src/truetype/ttgxvar.c: Use enum definitions.

commit d95a12b88ddfaa531dfe69675ac1004a4758736f
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Nov 3 23:02:58 2018 -0400

    * src/truetype/ttgxvar.c (ft_var_apply_tuple): Adjust condition.

commit 547f82f20eb52e4421675e1f41c839091f16fd95
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Nov 3 23:00:36 2018 -0400

    * src/truetype/ttgxvar.c (ft_var_apply_tuple): Tracing tweaks.

commit ce3feb0b9d71680cc6aec032ca304585958237d1
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Nov 3 22:43:21 2018 -0400

    Revert due to specs: [truetype] Speed up variation IUP.

    This reverts commit 1e4496c54c010843c1bac56e5d344115d1a49620.

commit dfa86d65e5b8f4f4c62f37160a2475b705e14c56
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Nov 3 22:36:52 2018 -0400

    Revert "[truetype] Speed up variation IUP."

    This reverts commit 1e4496c54c010843c1bac56e5d344115d1a49620.

commit 61d50756b6ddc6cce459f64445abf19f09d18253
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Nov 2 20:42:25 2018 -0400

    * src/truetype/ttgxvar.c (ft_var_get_item_delta): Fixed logic.

    Reported and tested by Behdad.

commit 339c451ad0e8a743b59fb2bd0589fe9362b45024
Author: Shailesh Mistry <shailesh.mistry@hotmail.co.uk>
Date:   Fri Nov 2 10:10:10 2018 +0100

    [autofit] Prevent SEGV.

    See

      https://bugs.ghostscript.com/show_bug.cgi?id=697545

    for more details on how the bug was found.

    * src/autofit/afloader.c (af_loader_load_glyph): Propagate error
    code.

commit 1e4496c54c010843c1bac56e5d344115d1a49620
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Oct 31 23:17:33 2018 -0400

    [truetype] Speed up variation IUP.

    * src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial
    snapping to the same position from true interpolation.

commit ba03310b5aa6a8b752f892c32f2354aff9a73f78
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Oct 31 22:01:36 2018 -0400

    * src/type1/t1load.c (t1_set_mm_blend): Optimized.

commit 300da33d61512fe98dc6f34e68fbc330120600ba
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Oct 31 21:55:40 2018 -0400

    * src/truetype/ttgxvar.c (ft_var_get_item_delta): Optimized.

commit c13635ee4bf34e621816cd09d7f2baf918e20af8
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Oct 29 21:25:10 2018 +0100

    [base] Fix numeric overflow.

    Reported as

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

    * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use `MUL_LONG'.

commit ba62f9d8f5f85c6dda93b481271de37fb1f09e77
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Oct 29 21:11:36 2018 +0100

    [cff] Fix numeric overflow.

    Reported as

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

    * src/cff/cffparse.c (cff_parser_run)
    [CFF_CONFIG_OPTION_OLD_ENGINE]: Use `NEG_LONG'.

commit acb19ed4e9c0cf1339e240069a252b9080dcb31e
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Oct 28 14:19:33 2018 -0400

    Comment on timestamp storage.

commit 3e8ec291ffcfa03c8ecba1cdbfaa55f5577f5612
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Oct 26 23:23:48 2018 -0400

    [sfnt] Make `head' timestamps unsigned.

    It's been more than 2^31 seconds since 1904.

    * include/freetype/tttables.h (TT_Header): Change field types.
    * src/sfnt/ttload.c (tt_face_load_generic_header): Updated.

commit d71f2bc1593200a8f763841c0a083ba91f7dad01
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Oct 26 22:52:25 2018 -0400

    Revert "Align FreeType with standard C memory management."

    This reverts commit 877aa1b2cc662978aae61ed4d5c6ea8ba56b2fe7.

commit bfe53294757b03873b1432b7c1cd3e027802c634
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Oct 27 00:07:53 2018 +0200

    [psaux] Fix numeric overflow.

    Triggered by

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_blend>
    [CFF_CONFIG_OPTION_OLD_ENGINE]: Fix integer overflow.

commit f56830ed406f90f6f53ee6367f2068a0f27bf90b
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Oct 20 07:27:47 2018 +0200

    Avoid endless loop while tracing (#54858).

    * src/type1/t1load.c (parse_buildchar): Guard tracing stuff with
    FT_DEBUG_LEVEL_TRACE.

commit 0c4feb72cf976f63d4bf62436bc48f190d0e0c28
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Oct 17 11:25:32 2018 +0200

    * CMakeLists.txt: Specify `RUNTIME DESTINATION'.

    This is needed for DLL builds.

commit 428854931e683b405da20d2f404073f51c5a183d
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Oct 10 12:21:10 2018 +0200

    Minor.

commit 912e174c662043672f18d52bbec09fa80a1f2d42
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Oct 7 09:28:52 2018 +0200

    A missing Unicode cmap is not a fatal error.

    This is a follow-up to the previous commit.

    * src/cff/cffobjs.c (cff_face_init), src/sfnt/sfobjs.c
    (sfnt_load_face), src/type1/t1objs.c (T1_Face_Init),
    src/type42/t42objs.c (T42_Face_Init): Implement it.

commit 885f5b0b4edb0c00a48af3eabe98507cf4f94430
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Oct 7 09:03:05 2018 +0200

    Fix handling of FT_CONFIG_OPTION_ADOBE_GLYPH_LIST (#54794).

    * src/cff/cffcmap.c (cff_cmap_unicode_init), src/psaux/t1cmap.c
    (t1_cmap_unicode_init), src/sfnt/ttcmap.c (tt_cmap_unicode_init):
    Check `unicodes_init' field.

commit 0a178144e85594e15cd83e3ae55e441c26f42985
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Oct 7 08:59:56 2018 +0200

    Whitespace.

commit f262d15d0a4732e7b6b516f2e9ce37e83fcc604c
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Oct 7 07:40:37 2018 +0200

    Minor comment improvement.

commit 9817571cc96d3afa3faf553627ec1874648a6650
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Oct 3 08:04:55 2018 +0200

    [ftgrays] Fix typo in stand-alone mode (#54771).

    * src/smooth/ftgrays.c (FT_THROW) [STANDALONE_ &&
    FT_DEBUG_LEVEL_TRACE]: Fix call to `FT_ERR_CAT'.

commit d280ae1e8c707d2478a8f4ac2059f762cf58e6d8
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Oct 2 20:45:16 2018 +0200

    [psaux] Fix segfault.

    Reported as

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
    <cff_op_callothersubr> [CFF_CONFIG_OPTION_OLD_ENGINE]: Check
    argument.

commit 6b660f12151c7f333f8be6d84df916db210d3742
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Oct 2 16:48:59 2018 +0200

    [psaux] Fix numeric overflow.

    Reported as

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
    [CFF_CONFIG_OPTION_OLD_ENGINE]: Use NEG_INT.

commit 83fc524dfc93bfabee681ea2484b93ad1f66ca15
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Oct 2 16:36:49 2018 +0200

    [pshinter] Handle numeric overflow.

    Reported as

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

    * src/pshinter/pshglob.c (psh_blues_snap_stem): Mask numeric
    overflow.

commit 877aa1b2cc662978aae61ed4d5c6ea8ba56b2fe7
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Sep 27 21:17:36 2018 -0400

    Align FreeType with standard C memory management.

    * include/freetype/ftsystem.h: Include FT_TYPES_H.
    (*FT_Alloc_Func, *FT_Realloc_Func): Use size_t for the size arguments.
    * src/raster/ftmisc.h: Ditto.

    * builds/amiga/src/base/ftsystem.c, builds/unix/ftsystem.c,
    * builds/vms/ftsystem.c, src/base/ftsystem.c (ft_alloc, ft_realloc):
    Use size_t for the size arguments.

    * src/base/ftdbgmem.c (ft_mem_debug_alloc, ft_mem_debug_realloc): Use
    FT_Offset, aka size_t, for the size arguments.

commit 4500c701c29f154eb0acd44552590d0dc315ac5f
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Sep 26 22:04:50 2018 -0400

    Typo.

commit efe7f6489858bbe84933c76f7b0bdefd37cdd0e2
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 25 09:16:45 2018 +0200

    Typo.

commit a9af69148173f64e39ed6b1be1944a014ffb0d6c
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 25 09:10:09 2018 +0200

    Fix handing of `FT_Bool'.

    Before this commit we had code like

      (FT_Bool)( globals->glyph_styles[gindex] & 0x8000)

    Since `FT_Bool' is defined to be an `unsigned char', the code
    evaluated to something like

      (unsigned char)( 0x8532 & 0x8000)

    which in turn expanded to

      (unsigned char)( 0x8000)

    and finally yielded 0x00 – i.e., false – not as expected.

    Problem reported and analyzed by Tony Smith <tony.smith@macro4.com>.

    * include/freetype/fttypes.h (FT_BOOL): Add a comparison against
    zero so that we always have a Boolean expression.

    */*: Replace castings to `FT_Bool' with calls to `FT_BOOL' where
    possible.

commit 0f122fef346af27ce469fa3e521bbde747fb741c
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Sep 23 21:46:26 2018 -0400

    [bdf] Speed up charmap access.

    This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.

    * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search
    with continuous prediction.

commit 793a9ff9f5de353e4e3f7cf0a99b3b1f9b617039
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Sep 22 14:38:00 2018 -0400

    * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Another tweak.

    This one should be clearer. When the rounded monochrome bbox collapses
    we add a pixel that covers most if not all original cbox.

commit f26d57753fe1a6ab61796fbd816fefd6c103720b
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Sep 21 20:34:58 2018 -0400

    * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Further tweak.

commit abd997aa7cf2bc9219136782c7363d14d325199c
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Sep 21 12:50:32 2018 +0200

    Improve documentation of `FT_LOAD_NO_RECURSE'.

commit 335528e11e690fb38042d7edcda209d500c05d3c
Author: Ben Wagner <bungeman@google.com>
Date:   Fri Sep 21 11:26:37 2018 +0200

    Improve auto-hinter handling of bitmap fonts (#54681).

    For bitmap fonts, `FT_Load_Glyph' should either return an error or
    not set the format to `FT_GLYPH_FORMAT_OUTLINE'.  However, in this
    case `FT_Load_Glyph' calls into the auto-hinter which calls back
    into `FT_Load_Glyph' with `FT_LOAD_NO_SCALE' in the flags, which
    marks the glyph as `FT_GLYPH_FORMAT_OUTLINE' with an empty path
    (even though it doesn't have any path).  It appears that the
    auto-hinter should not be called when the face doesn't have
    outlines.  The current test for using the auto-hinter in
    `FT_Load_Glyph' checks if the driver supports scalable outlines, but
    not if the face supports scalable outlines.

    * src/base/ftobjs.c (FT_Load_Glyph): Directly check whether we have
    scalable outlines.

commit c168cc3b1bf13e5f3ca77c238dcb204ea821c56d
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Sep 21 11:09:27 2018 +0200

    [raster] Fix disappearing vertical lines (#54589).

    * src/raster/ftraster.c (Vertical_Sweep_Span): Handle special case
    where both left and right outline exactly pass pixel centers.

commit 493aa68f5c4cb2e659570809931539dc1987630c
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Sep 21 08:32:22 2018 +0200

    [base] Some comments.

commit 2a9850c4fc2fd75021359346c9ffc7478f12d449
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Sep 20 22:40:32 2018 -0400

    * src/base/ftobjs.c (ft_glyphslot_reset_bimap): Tiny rounding tweak.

    This adds pixels in case a contour goes through the center
    and they need to be turned on in the b/w rasterizer.

commit c1b21f47b407bf5ef6ad9b346203bbd907c9f2b9
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Sep 20 22:14:46 2018 -0400

    [pcf] Replace charmap implementation.

    PCF comes with charmap lookup table, aka PCF encodings.  Using it
    directly makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times
    faster than the original BDF-like binary searches.

    * src/pcf/pcf.h (PCF_EncodingRec): Removed.
    (PCF_FaceRec): Remove `nencodings' and `encodings'.
    * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Replaced.
    * src/pcf/pcfread.c (pcf_get_encodings): Store data differently.

commit 8e950680538b11cf3c4eb630f0b8e7bd400b6dcd
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 20 06:26:34 2018 +0200

    [base] Remove unused function `FT_GlyphLoader_CopyPoints'.

    * include/freetype/internal/ftgloadr.h, src/base/ftgloadr.c
    (FT_GlyphLoader_CopyPoints): Do it.

commit 7f93c977e7ce2c1c8f3ac39fc5e622440a7b3a35
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Sep 19 22:45:45 2018 -0400

    [pcf] Prepare to replace charmap implementation.

    * src/pcf/pcf.h (PCF_Face): Updated to include...
    (PCF_EncRec): ... this new structure to store charmap geometry.

    * src/pcf/pcfread.c (pcf_get_encodings): Store charmap geometry.

commit d629c2ba2430fde8d3ff9b4a0172f917b6e5cbcd
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Sep 18 17:11:48 2018 -0400

    Remove unused fields.

    * src/pcf.h (PCF_FaceRec): Remove `charmap' and `charmap_handle'.
    * src/bdfdrvr.h (BDF_FaceRec): Ditto.
    * src/winfonts/winfnt.h (FNT_FaceRec): Ditto.

commit dfddc2d97596489134d21ed6224462331cb1cd73
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Sep 17 08:03:57 2018 +0200

    [pshinter] Handle numeric overflow.

    Reported as

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

    * src/pshinter/pshglob.c: Include FT_INTERNAL_CALC_H.
    (psh_blues_snap_stems): Mask numeric overflow.

commit b8dd404d1342d435d207fb2377a7dc6e281f3b22
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Sep 16 07:22:23 2018 +0200

    freetype.h: Add warning w.r.t. B/W hinting and rendering (#54589).

commit de0aabcd0d73936ce751a71b215da1d5efa4db5d
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Sep 15 06:14:18 2018 +0200

    [sfnt] Comment fix.

commit 10e54d04b975cf8a879b18ed0383bb4be8b1a7d5
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 13 21:47:35 2018 +0200

    [truetype] Some fixes for VF checks.

    Reported as

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

    * src/truetype/ttgxvar.c (ft_var_load_gvar): Properly exit memory
    frame if we have invalid glyph variation data offsets.
    (tt_face_vary_cvt): Protect against missing `tuplecoords' array.
    Fix typo.

commit 7665914ccd2edf011cfe2834f8a058e4e68d3361
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 13 08:58:49 2018 +0200

    * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Fix last commit.

commit a5818ed1e137b99e03eec2fb63f8a55dca0e624e
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Sep 13 08:46:44 2018 +0200

    * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Check `result'.

    Reported as

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

commit 6b53300b01742cb68c116539d01f9aa967e26746
Author: John Tytgat <John.Tytgat@esko.com>
Date:   Wed Sep 12 08:08:09 2018 +0200

    [sfnt] Better PS name handling (#54629).

    * src/sfnt/sfdriver (IS_WIN, IS_APPLE): Omit language ID checks.
    (get_win_string, get_apple_string): Return NULL when the PostScript
    font name characters is not according to specification.
    (get_win_string): Make trace output work if the high byte if
    non-zero.
    (sfnt_get_var_ps_name, sfnt_get_ps_name): Previously we preferred
    Win PS name (when there is also an Apple PS name); change this into
    a fallback to Apple PS name in case the Win PS name is invalid.

commit 65681e6dc1937db57d5905c5dd89e0a306bc0634
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Sep 12 07:40:49 2018 +0200

    [truetype] Improve VF check.

    Triggered by

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

    * src/truetype/ttgxvar.c (ft_var_load_gvar): Use better limit check
    for `tupleCount'.

commit 53c5e4bd87ff8035d91022204bb5f3a051e78a99
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Sep 12 07:27:30 2018 +0200

    * src/truetype/ttgxvar.c (ft_var_load_gvar): Check `glyphoffsets'.

commit 7b855ed9cf8c48841e72369ea3ebcbf8486e5e06
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Mon Sep 10 23:41:04 2018 +0100

    * src/pshinter/pshrec.c (t2_hints_stems): Mask numeric overflow.

    Reported as

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

commit fea435fbf855e9ac2cd3ced80175d64f1bace22c
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Sep 9 09:46:29 2018 +0200

    [sfnt] Comment improvement.

commit 0805c4a488bf35603d19b6951ce255efeb48b457
Author: Ben Wagner <bungeman@google.com>
Date:   Sun Sep 9 09:25:58 2018 +0200

    * builds/freetype.mk (refdoc-venv): Ensure python version (#54631).

commit 7bf202825062cc39291d32423471cc70869cc7f5
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Sep 7 06:43:19 2018 +0200

    Typo.

commit 1c04eed76feffee0730d80c993e6dd602c335929
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Sep 7 06:40:55 2018 +0200

    [truetype] Fix assertion failure.

    Triggered by

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

    * src/truetype/ttgload.c (load_truetype_glyph): Reintroduce
    `opened_frame' (removed in a change from 2018-08-26) to handle
    dealloation of the second frame.

commit f8af8fba78ac7180674ac05493b8afed7e055cf9
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Sep 5 12:16:56 2018 +0200

    Synchronize `ftdebug.c' files.

    * builds/amiga/src/base/ftdebug.c, builds/wince/ftdebug.c,
    builds/windows/ftdebug.c: Synchronize with `src/base/ftdebug.c'.

commit 97c7944f9ec2f1f992d0fbad45995da95f4e260a
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Sep 5 11:45:05 2018 +0200

    Synchronize `ftconfig' files.

commit a748ae463503d679ab88a80401d769c402a66b7a
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Wed Sep 5 11:12:01 2018 +0530

    * docs/DOCGUIDE: Minor.

commit 77aa02660e87e77b788dd26a48e87aa9c2b79585
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Wed Sep 5 11:07:20 2018 +0530

    Add documentation guidelines file.

    * docs/DOCGUIDE: New file.

commit 48f93e648ede94232645aadc9274572e86639cd5
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 4 21:19:26 2018 +0200

    * devel/ftoption.h: Synchronize with master `ftoption.h'.

commit c485bece6b6e90859a8efc50e32b6dc17b40ee0c
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 4 21:05:06 2018 +0200

    Typo (#54618).

commit 9789c75b1a6faf01cbcc34d85bf1bb3f473743b1
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 4 10:37:44 2018 +0200

    More '...' vs. `...` fixes in API documentation.

commit 01a5d326bb320b1e1c832d6954df583ae8c0ebd2
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Sep 4 08:00:58 2018 +0200

    Make `/****...' comments in public headers uniformly end on column 77.

commit 6a4229c4b0b5ce9f0e6ad420e7a504c6ad99acf4
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Sep 3 22:43:39 2018 -0400

    * docs/DEBUG: s/trace_//.

commit 7da5589c75457e86ca5144c297834a0c2dff6721
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Mon Sep 3 16:45:28 2018 +0530

    [docwriter] Don't break code snippets accross lines.

    Reported as

      http://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00124.html

    * docs/reference/markdown/stylesheets/extra.css (.md-typeset code):
    Add rule `white-space'.

commit 1061748256bc35657709284ee65fd1ca8d28db71
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Sep 3 10:37:57 2018 +0200

    include/freettype/config:*.*: Convert comments to Markdown syntax.

    Also some minor documentation fixes.

commit 76a52465c1dbcac14b89983eba5a0ac252f59d8d
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Sep 3 09:08:47 2018 +0200

    */*: s/PSNames/psnames/.

    Only tracing messages are affected.

commit 475f6d25cb299acc0634ec3a6112cefc469423a9
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Sep 3 09:00:58 2018 +0200

    [sfnt] Fix heap buffer overflow in CPAL handling.

    * src/sfnt/ttcpal.c (tt_face_palette_set): Fix boundary test.
    (tt_face_load_cpal): Updated.

commit 9be656bb0c0baa8df8c9fa30100e1cbe865346db
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Sep 1 11:01:52 2018 +0200

    Remove `FT_Outline_{New,Done}_Internal'.

    These public API functions(!) were always undocumented and have
    escaped all clean-up efforts until now.

    * include/freetype/ftoutln.h (FT_Outline_New_Internal,
    FT_Outline_Done_Internal): Removed.

    * src/base/ftoutln.h (FT_Outline_New_Internal,
    FT_Outline_Done_Internal): Merge into...
    (FT_Outline_New, FT_Outline_Done): ... these functions.

    * docs/README: Updated.

commit 809d5125af527dd589d303cd8ae988dad58d00d6
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Aug 31 22:49:19 2018 -0400

    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check glyph format.

commit 4b49a8079f23a0c6c8c8d9b92454780a19035947
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Fri Aug 31 20:26:46 2018 +0100

    [errors] Refine the macro logic surrounding `FT_Error_String'.

    * include/freetype/fterrors.h (FT_INCLUDE_ERR_PROTOS,
    FT_ERR_PROTOS_DEFINED): Undefine `FT_INCLUDE_ERR_PROTOS' after
    checking it and introduce a new macro that takes proper care of
    multiple-inclusion protection.

commit c6df41e319b9f841223365d443819805851f78ce
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 31 20:10:38 2018 +0200

    Whitespace.

commit 9a323e4762917253d070f06dff380e194b2da5c3
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 31 20:09:21 2018 +0200

    * src/base/ftdebug.c (FT_Throw): Restore missing `FT_UNUSED' calls.

commit aff04e91f630993c8cb0dd2eb758fa0d3632afd1
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 31 14:57:36 2018 +0200

    * src/base/ftdebug.c (FT_Throw): Reduce chattiness.

commit 83525bdd10c4b00500d8d9b5bbf5ad0419c99d21
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 31 07:37:15 2018 +0200

    Minor comments.

commit d91f752b773d22679939414a014fd2934c18c5b0
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 31 07:34:30 2018 +0200

    Whitespace.

commit 423fce2e3ed63ee48d2142a92e588a57633ae32b
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 31 06:59:44 2018 +0200

    Add link to OpenType's composite glyph description.

commit 0d4ca1386575737ff26dbd0c36844572b75d69ad
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 31 06:53:52 2018 +0200

    * src/autofit/afhints.c (af_glyph_hints_reload): Add initialization.

commit 1dacbd893d3c2f027b5c79f504d8899a68112c0c
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Aug 30 23:28:30 2018 -0400

    Consolidate bitmap presetting and size assessment.

    * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
    Change return type.
    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Return the bitmap
    size assessment.

    * src/raster/ftrend1.c (ft_raster1_render): Use it to refuse the
    rendering of enourmous or far-fetched outlines.
    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

commit ca980b4cf11405469a5b5919dc40e73c4961c7c7
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Aug 30 21:51:18 2018 -0400

    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Correct mono.

commit 35efb103fee44fcacb657e1dc5896e32ac99d295
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Thu Aug 30 14:30:46 2018 +0200

    [errors] Introduce a macro to control `FT_Error_String'.

    * devel/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS),
    include/freetype/config/ftoption.h (FT_CONFIG_OPTION_ERROR_STRINGS):
    New macro.

commit d20dc3928b9d3ee075106b7684dab6111d6a5899
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Thu Aug 30 14:09:04 2018 +0200

    [errors] Introduce `FT_Error_String'.

    * include/freetype/fterrors.h (FT_Error_String),
    src/base/fterrors.c (FT_Error_String): Implement `FT_Error_String'.

    * src/base/ftbase.c, src/base/Jamfile (_source),
    src/base/rules.mk (BASE_SRC): Add `fterrors.c' to the build logic.

    * src/base/ftdebug.c (FT_Throw): Use `FT_Error_String'.

commit c0ccf7501255cad67e3a117cedb152b17d011255
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Aug 30 09:56:09 2018 +0200

    [autofit] Trace `before' and `after' edges of strong points.

    * src/autofit/afhints.h (AF_PointRec) [FT_DEBUG_AUTOFIT]: New arrays
    `before' and `after'.

    * src/autofit/afhints.c (af_get_strong_edge_index): New auxiliary
    function.
    (af_glyph_hints_dump_points): Trace `before' and `after' edges.
    (af_glyph_hints_align_strong_points) [FT_DEBUG_AUTOFIT]: Set
    `before' and `after' information.

commit 21c2b3905cb3473da3dd729190f2fb2b66ce1140
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Aug 30 09:52:08 2018 +0200

    Minor.

commit 5d93a3fc8d0243cf9722501c7be62b6acbbd775d
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Aug 30 01:12:22 2018 -0400

    [base] Overflow-resistant bitmap presetting.

    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Implement it.

commit 19be8620ec33cdf2c451139f024301f65b147899
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 29 18:15:03 2018 +0200

    Doc fix.

commit 934a6159ba940fe15f02a84deeccdb789823242e
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Wed Aug 29 15:28:21 2018 +0200

    Fix numeric overflows.

    * src/pshint/pshalgo.c (psh_hint_align, psh_hint_align_light,
    psh_hint_table_find_strong_points): Fix numeric overflows.

    Reported as

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

commit 14dff08f3760b9bbbb1301ea37ab88d3eb35ad61
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 29 06:56:21 2018 +0200

    ftoption.h: s/precendence/precedence/ in documentation (#54586).

commit 3915a18b8c0f4e2090bf9496a49c38986ab18d70
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 29 06:53:54 2018 +0200

    [cff] Fix handling of `roll' op in old engine.

    Reported as

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings) <cff_op_roll>
    [CFF_CONFIG_OPTION_OLD_ENGINE]: Use modulo for loop count, as
    documented in the specification.

commit 2c8e6279a7bfc314f3934bc8d126ecb1e5e284f1
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 28 08:02:13 2018 +0200

    Minor doc fix.

commit ae3afbc47184db5c7753318b36237af261c66b09
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 26 15:40:16 2018 +0200

    * src/truetype/ttobjs.c (tt_size_read_bytecode): Trace CVT values.

commit 20957721447c2c96134e7488c6c1522490b92a9c
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 26 15:15:56 2018 +0200

    ChangeLog*: s/\t/ /.

commit f87b711746ff1ab4f831c22d471a1fa9f63c76e1
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sun Aug 26 17:46:25 2018 +0530

    * configure: Copy assets required by docwriter.

    Copy directory `docs/reference/markdown' when FreeType is compiled in a
    different directory.

    Fixes `make refdoc' if builddir != srcdir.

    Reported as

      http://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00083.html

commit 13034e54aac631f5ca8b2dd27a64e5ac5c5f6fbc
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 26 12:22:51 2018 +0200

    * src/pshint/pshalgo.c (psh_hint_overlap): Fix numeric overflow.

    Reported as

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

commit 4738dcc4df02b14dedfe4c85b2f916d4061dd1bf
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 26 12:03:33 2018 +0200

    Minor tracing adjustments.

    * src/base/ftstream.c (FT_Stream_EnterFrame, FT_Stream_ExitFrame):
    Trace.

    * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Remove tracing.

commit 6e339b8d8e5641f0f2d5240f992336393a983107
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 26 11:59:02 2018 +0200

    [truetype] Avoid nested frames.

    Triggered by

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

    * src/truetype/ttgload.c (load_truetype_glyph): Don't use variable
    `opened_frame' to trace whether a frame must be closed at the end of
    function: This fails because `TT_Vary_Apply_Glyph_Deltas' (which
    gets called for space glyphs) uses a frame by itself.  Instead,
    close the frame after loading the header, then use another frame for
    the remaining part of the glyph later on.

    Also avoid calling `tt_get_metrics' twice under some circumstances.

commit b287c80b6a7d669a3c31aed7aeb6f8900e75a068
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 26 06:39:43 2018 +0200

    Various minor clean-ups.

    * src/base/ftapi.c: Remove.  Unused.
    * src/base/Jamfile (_sources): Updated.

    * src/base/ftstream.c (FT_Stream_ReleaseFrame): Remove redundant
    code.

commit c98aa9b78ace3caa6eeeee9603e4c74c3885ffd4
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 25 17:02:20 2018 +0200

    Add missing ChangeLog entry for the last four commits.

commit c962db28ea59225f0105c03d907d4a9b71765687
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Aug 25 12:22:23 2018 +0530

    * builds/*/*: Prepare build system for docwriter.

    Add checks, rules and variables to the build system for docwriter.

    * Running `make' will warn if Python/PIP/docwriter are not available.

    * Running `make refdoc' will generate static documentation site on the
    current Python environment.

    * Running `make refdoc-venv' will generate static documentation site
    using a virtual environment, using the pip package `virtualenv'.

commit 195728d5ba38f34fb2c2c20807c01656f2f59b66
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Aug 25 12:17:30 2018 +0530

    * src/tools/docmaker: Remove `docmaker'.

    `Docmaker' has now upgraded to `docwriter', a pip package available at

      https://pypi.org/project/docwriter/

commit 53c69ce04faed3dcc68ca0f54cb8d703d8babf69
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Aug 25 12:06:32 2018 +0530

    * docs/reference: Add resources for `docwriter'.

    Add the required resources (images, JS, CSS) for `docwriter'.

    * docs/reference/.gitignore: Update to ignore `site' folder and other
    files generated by docwriter.

    * docs/reference/README: Add docwriter usage information and
    troubleshooting tips.

    * docs/reference/markdown: New directory to hold generated markdown
    files and other resources.

commit ae5d1a4cec37557f31aec270332cfe886a62f9a0
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Fri Aug 24 22:22:30 2018 +0530

    * include/*.*: Convert comments to markdown.

    This commit was created by applying scripts `markify.py' and
    `markdown-format.bash' to all C header files, followed by minor
    clean-up.

    No change in functionality, of course.

    Scripts used:
    https://github.com/nikramakrishnan/freetype-docs.git: Commit dfce31e.

    http://lists.nongnu.org/archive/html/freetype-devel/2018-08/msg00013.html:
    With patches applied.

commit 77f0814a3162a945d6d6704f545827f883e451e5
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Aug 23 17:53:54 2018 +0200

    Add macros for handling	over-/underflowing `FT_Int64' values.

    * include/freetype/internal/ftcalc.h (ADD_INT64, SUB_INT64,
    MUL_INT64, DIV_INT64) [FT_LONG64]: New macros.

    * src/base/ftcalc.c (ft_corner_orientation) [FT_LONG64]: Use
    `SUB_INT64' and `MUL_INT64'.

    Reported as

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

commit c90cc6443b2dc597aac64ae4a4bc45b1d5ca45d2
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Aug 23 13:13:20 2018 +0200

    ftbitmap.h: Improve documentation.

commit 45524679c6798b3d8b75ab03d54a53bf46912871
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 22 10:31:05 2018 +0200

    [truetype] Improve legibility of `glyf' parsing.

    * src/truetype/ttgload.c (ON_CURVE_POINT, X_SHORT_VECTOR,
    Y_SHORT_VECTOR, REPEAT_FLAG, X_POSITIVE, SAME_X, Y_POSITIVE, SAME_Y,
    OVERLAP_SIMPLE): New macros.
    (TT_Load_Simple_Glyph): Use new macros to make code more readable.
    Remove useless adjustment of `outline->tags' elements.

commit a3e842f9c69a3ce3bcde0ab7b0cfbeead10ed80f
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 22 09:55:38 2018 +0200

    Minor formatting and documentation fixes.

commit 0a33b44e6eb31b7c5bfed32cf723a0eee1e4e169
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 21 10:52:14 2018 +0200

    * src/sfnt/ttcpal.c (tt_face_load_cpal): Add missing safety check.

    Reported as

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

commit 4873eb1d316f7a6b0df97ccd3b3bd4b563fcd1de
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 19 07:27:21 2018 +0200

    Update `CHANGES' file.

commit 4dc0d48f7bf939f893bc203239600fc56c63e39c
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 18 14:39:20 2018 +0200

    [psaux] Avoid slow PS font parsing in case of error.

    Reported as

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

    * src/psaux/psobjs.c (ps_parser_to_bytes): Set `parser->cursor' even
    in case of error to avoid potential re-scanning.

commit 2550fc75a56f18aff2a6543a1ad07724b5f97767
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 18 13:38:48 2018 +0200

    [cff] Fix heap buffer overflow in old engine.

    Reported as

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
    <cff_op_blend> [CFF_CONFIG_OPTION_OLD_ENGINE]: `num_designs' must be
    non-zero.

commit c94162a2200c16e9614289cf91d6bf0e0b01a01f
Author: Young Xiao <yangx92@hotmail.com>
Date:   Thu Aug 16 08:25:47 2018 -0400

    * builds/mac/ftmac.c (parse_fond): Fix buffer overrun.

    Reported as bug #54515, duplicate of #43540.

commit 33cd1eedcf4de94eee1dae5753b974f893506a9f
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Aug 16 05:55:18 2018 +0200

    * builds/*/ftsystem.c (FT_COMPONENT): Updated also.

commit efa2a3babffc247891279a5b200f72fc53109e89
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Aug 15 23:49:07 2018 -0400

    Revert BDF copyright years.

commit af9662e60b75b93d6dbc3c7a982e2017c9d0eee1
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Aug 15 22:58:11 2018 -0400

    Ouch. BDF copyright year.

commit 923fcbcdd8393dbf12b0f2b3616e71fc106bc6da
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Aug 15 22:50:06 2018 -0400

    [bdf] Don't track duplicate encodings.

    There is no harm except some umbiguity in broken fonts with duplicate
    encodings.

    * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove duplicate tracking.
    (_bdf_parse_t): Remove large `have' bitfield.

commit a0dd16fb3d76e36c8ebc3edf043ddbc0d3a51b5d
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 15 18:13:17 2018 +0200

    Don't use `trace_' prefix for FT_COMPONENT arguments.

    * include/freetype/internal/ftdebug.h (FT_TRACE_COMP,
    FT_TRACE_COMP_): New auxiliary macros to add `trace_' prefix.
    (FT_TRACE): Use `FT_TRACE_COMP'.

    */* (FT_COMPONENT): Updated.

commit 1d7b034cd87a423ed002803df5aed46ca7e8f362
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 14 15:48:17 2018 +0200

    Use formatting string in FT_TRACEX calls for non-simple arguments.

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
    <cff_op_hstem, cff_op_hintmask, cff_op_hlineto, cff_op_vhcurveto>:
    Do it.

    * src/psaux/pshints.c (cf2_hintmap_build): Ditto.

    * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
    cf2_cmdVSTEM, cf2_cmdHLINETO, cf2_cmdRRCURVETO, cf2_cmdCALLSUBR,
    cf2_escHSTEM3, cf2_cmdHINTMASK, cf2_cmdHVCURVETO>: Ditto.

    * src/truetype/ttinterp.c (TT_RunIns): Ditto.

commit e001a17d734e5af20919c81dfa335bb8991359c6
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Aug 14 07:10:57 2018 -0400

    [bdf] Remove unused fields.

    * src/bdf/bdf.h (bdf_font_t): Remove `nmod', `umod', and `modified',
    which were set but never used.
    * src/bdf/bdflib.c (_bdf_parse_{glyphs,properties}, bdf_load_font):
    Updated accordingly.

commit 44db1addd80981b1a9cbea6b8608c99592a065ea
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 14 10:01:00 2018 +0200

    [cff] Fix another segv in old engine.

    Reported as

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
    [CFF_CONFIG_OPTION_OLD_ENGINE]: Disallow invalid T1 opcodes in
    dictionaries.

commit 1937b557341187eda5434a8a64da9880472c4cd4
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 14 07:54:25 2018 +0200

    [cff] Fix missing error handling.

    Reported as

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

    * src/psaux/cffparse.c (cff_parser_run)
    [CFF_CONFIG_OPTION_OLD_ENGINE]: Don't ignore return value of
    `parse_charstrings_old'.

commit ac2ea865f3e019321f77f5c6b286ba1ddc6f6159
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Aug 13 21:33:24 2018 -0400

    [bdf] Remove unused overflow storage.

    * src/bdf/bdf.h (bdf_glyphlist_t): Remove this type.
    (bdf_font_t): Remove `overflow' field.
    * src/bdf/bdflib.c (bdf_free_font): Remove `overflow' freeing.

commit 757bdf1aef3d93a27968857ac5b4435a52fa24a0
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Aug 14 02:02:26 2018 +0200

    [cff] Fix segv.

    Reported as

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

    * src/psaux/cffdecode.c (cff_decoder_parse_charstrings)
    <cff_op_random> [CFF_CONFIG_OPTION_OLD_ENGINE]: Use top dict's
    `random' field directly if parsing dictionaries.

commit f5fe6e2f17d2326c637d8ccd18af219709d15bcd
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Aug 13 09:01:53 2018 -0400

    [bdf] Use unsigned types.

    * src/bdf/bdf.h (bdf_glyph_t): Unsign `encoding'.
    (bdf_font_t): Unsign `default_char'.
    * src/bdf/bdfdrivr.h (BDF_encoding_el): Unsign `enc'.

    * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_glyphs,
    _bdf_parse_start): Updated accordingly.
    * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Ditto.

commit 50486df1e6a9a66d5df287efea94b8c1c14a1084
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Aug 13 08:46:53 2018 +0200

    * src/type42/t42parse.c (t42_parse_sfnts): One more format check.

    Reported as

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

commit 37c7b81794fc0499f02f8a434a66d350616f308b
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Sun Aug 12 01:42:00 2018 +0200

    Remove deprecated constant in documentation.

    * include/freetype/ftdriver.h: Suggest using `FT_HINTING_ADOBE' since
    `FT_CFF_HINTING_ADOBE' is deprecated.

commit 5b904409fc3ee6de45b60df722f95c6499951c2f
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 11 06:41:35 2018 +0200

    * src/base/ftcalc.c (FT_Matrix_Check): Fix integer overflow.

    Reported as

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

commit 88c0e12109f4059b8ce45797c71b50218c141462
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri Aug 10 21:24:40 2018 -0400

    * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Follow specs.

commit 96b5e500909cfce39ff78feabefd8063a229b951
Author: Ben Wagner <bungeman@google.com>
Date:   Fri Aug 10 22:24:26 2018 +0200

    * src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435).

commit 1a21ca7b9115178484ce0ed2f6816f3490d5d1b4
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Fri Aug 10 19:31:55 2018 +0530

    Minor formatting.

commit 1aa73fa83d7649da6344280bf569e364acaef433
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 10 05:41:32 2018 +0200

    * src/base/ftobjs.c (FT_Render_Glyph_Internal): Improve tracing.

commit c8ef0fd07cdaef66c8581a7269b31248e26fe3d2
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Aug 10 04:44:22 2018 +0200

    Fix clang warnings.

    * src/base/ftdebug.c (ft_trace_level_enabled,
    ft_trace_level_disabled): Add `static' keyword.

commit e16bfbec4c63bff4e5218f180d822cadfd2c7f8c
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Aug 9 22:18:00 2018 -0400

    [raster, smooth] Reinstate bitmap size limits.

    This again moves outline and bitmap size checks one level up.

    * src/base/ftoutln.c (FT_Outline_Render): Explicitly reject enormous
    outlines.
    * src/raster/ftrend1.c (ft_raster1_render): Reject enormous bitmaps
    and, therefore, outlines that require them.
    * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.

    * src/raster/ftraster.c (ft_black_render): Remove outline size checks.
    * src/smooth/ftgrays.c (gray_raster_render): Ditto.
    [STANDALONE]: Remove `FT_Outline_Get_CBox' copy.

commit 6a97c95800e8a76e9595791042d74dd3fbf02f50
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Aug 8 22:17:35 2018 -0400

    [pcf] Revert massive unsigning.

commit f60c98feaf53de0ba9ea9acf4896476662d994bd
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 8 18:15:53 2018 +0200

    [smooth] Improve tracing.

    * src/smooth/ftgrays.c (gray_convert_glyph_inner): Only use tracing
    if called the first time.
    (gray_convert_glyph): Updated.

commit c9bbc2419ae7d3cf73a597afbf02cb335ede952f
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 8 18:12:31 2018 +0200

    Add internal functions `FT_Trace_Disable' and `FT_Trace_Enable'.

    It sometimes makes sense to suppress tracing informations, for
    example, if it outputs identical messages again and again.

    * include/freetype/internal/ftdebug.h: Make `ft_trace_levels' a
    pointer.
    (FT_Trace_Disable, FT_Trace_Enable): New declarations.

    * src/base/ftdebug.c (ft_trace_levels): Rename to...
    (ft_trace_levels_enabled): ... this.
    (ft_trace_levels_disabled): New array.
    (ft_trace_levels): New pointer.
    (FT_Trace_Disable, FT_Trace_Enable): Implement.
    (ft_debug_init): Updated.

commit 2e3dec55093d7853bf741e24a3d5d4c6c4d68ced
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Aug 8 13:51:18 2018 +0200

    Debugging improvements.

    * src/base/ftobjs.c (pixel_modes): Move this array to top level
    from ...
    (FT_Load_Glyph): ... here.
    (FT_Render_Glyph_Internal): Use `width' x `height' in trace message.
    Use `pixel_modes'.

commit c633378a5e76064de06ffafc847adebcf49837fb
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Aug 8 01:21:54 2018 -0400

    [pcf] Massive unsigning (part 2).

    Treat all size related properties as unsigned values.

    * src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name' and
    `value'.
    * src/pcf/pcfread.c (pcf_get_propeerties, pcf_load_font): Updated
    parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
    RESOLUTION_X and RESOLUTION_Y.

commit 3d4ab6bac14c28dcbce00dd57bb30b0bbc4937db
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed Aug 8 00:09:16 2018 -0400

    [pcf] Massive unsigning (part 1).

    Unofficial specifications hesitate to use unsigned 32-bit integers.
    Negative values caused a lot of trouble in the past and it is safer
    and easier to treat some properties as unsigned.

    * src/pcf/pcf.h (PCF_AccelRec): Use unsigned values for `fontAscent',
    `fontDescent', and `maxOverlap'.
    * src/pcf/pcfread.c (pcf_load_font, pcf_get_accel): Updated.
    * src/pcf/pcfdrivr.c (PCF_Glyph_Load, PCF_Size_Select,
    PCF_Size_Request): Updated.

commit 705bac50d3ade49188e05018ede2072e4d1e1788
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Aug 7 22:49:55 2018 -0400

    * src/pcf/pcfread.c (pcf_get_bitmaps): Unsign `offsets' and `bitmapSizes'.

commit 7ec9598f47e5e8f6e05c38508d1e59e2bb9395ee
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Aug 6 17:35:14 2018 +0200

    More comment formattings.

    This helps in the forthcoming transition to markdown syntax.

commit b09e77359121b911926af91b5f8a8a93ce4d9438
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Aug 6 11:02:51 2018 +0200

    * devel/ftoption.h: Synchronize with main `ftoption.h'.

commit f24dbb28118170bc9d7f71e73eedc00d3bc855bf
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Aug 6 04:58:18 2018 -0400

    [pcf] Use unsigned types.

    * src/pcf/pcf.h (PCF_Encoding): Use unsigned `enc'.
    * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Ditto.
    * src/pcf/pcfread.c (pcf_get_encodings): Use unsigned types.

commit 86e7385342b11ac6a2a179a80585d629e97f2a1f
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Aug 6 10:24:08 2018 +0200

    Minor comment formatting.

commit 720ae67f35701819f6bf3fd9337dc89079a4ed27
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Aug 5 07:21:10 2018 +0200

    * src/truetype/ttgload.c (compute_glyph_metrics): Fix overflow.

    Reported as

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

commit ced9c311f6915cb4d0aa248c1d70d32f44484e33
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 4 07:03:57 2018 +0200

    Ditto.

commit be81acc4bf12b60476c024e98487b2d42c0d719e
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 4 07:01:04 2018 +0200

    * src/truetype/ttinterp.c (opcode_name): Fix typos.

commit 799d27b0b68008d427df1a55e761e3f5b42bd3f6
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Aug 4 06:39:11 2018 +0200

    Fix clang warnings.

    * src/base/ftoutln.c (FT_Outline_EmboldenXY): Fix type of
    `orientation'.

    * src/gxvalid/gxvcommn.c (gx_lookup_value_read): Fix signature.

    * src/pcf/pcfread.c (pcf_get_encodings): Fix type of some variables.
    Add cast.

    * src/type1/t1load.c (parse_weight_vector): Fix cast.

commit 1897186fb718bdda9f953c09906cb5bf36594905
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 31 10:48:07 2018 +0200

    * src/cid/cidtoken.h: Handle `XUID' keyword.

commit 8e57746c4b0a381f6c3746e089cf543bac6e822f
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 31 10:46:57 2018 +0200

    [cid] Trace PostScript dictionaries.

    * src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H
    (cid_load_keyword, cid_parse_font_matrix, parse_fd_array,
    parse_expansion_factor, cid_parse_dict): Add tracing calls.
    (parse_font_name): New function to trace `/FontName' keywords in
    /FDArray dict.
    (cid_field_records): Register `parse_font_name'.

commit 85e8bea4fdecc841b1ea6303ab7ca09813b3869b
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 31 10:42:21 2018 +0200

    Minor documentation improvement.

commit 578bcf103a12fb742cdb314565819011d1ac12a7
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jul 30 11:28:04 2018 +0200

    [cff] Fix typo.

    Reported as

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

    * src/cff/cffdrivr.c (cff_get_cid_from_glyph_index): Fix boundary
    check.

commit 00968d8fd62105061d92e69b5ccd44077a5a6a9f
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jul 29 10:22:59 2018 +0200

    * src/pcf/pcfread.c (pcf_get_encodings): Another thinko.

    Reported as

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

commit 0f8aebfd5138590fdbbea92ffdec17f6030ba7fc
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Jul 28 23:21:28 2018 -0400

    * builds/unix/configure.raw: Minor.

commit 2c3e895c745fe417e501195310de973867f0d43e
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Jul 28 22:00:59 2018 -0400

    [smooth] Fix Harmony memory management.

    Reported as

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

    * src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer
    after each rendering in case of failure.

commit 6e44d78cc1d89f39e1086441ae4cbb2815d9f067
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jul 28 22:23:16 2018 +0200

    [type1] Avoid segfaults with `FT_Get_PS_Font_Value'.

    Reported as

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

    * src/type1/t1driver.c (t1_ps_get_font_value): Protect against NULL.

commit c9edca8ee986f283e3396c88fb50f9d2b2187b99
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jul 27 10:44:01 2018 +0200

    [truetype] Make `TT_Set_MM_Blend' idempotent (#54388).

    * src/truetype/ttgxvar.c (tt_set_mm_blend): Correctly set
    `face->doblend' if the current call to the function yields the same
    blend coordinates as the previous call.

commit d277bfc985130d897734d747ddf2649452fd3eeb
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jul 27 09:15:43 2018 +0200

    [psaux, type1]: More tracing improvements.

    * src/psaux/psintrp.c (cf2_interpT2CharString): Trace skipped
    outline commands.

    * src/psaux/t1decode.c (t1_decoder_parse_charstring): Fix
    missing case.
    (t1_decoder_parse_metrics): Make tracing output more compact.

    * src/type1/t1gload.c (T1_Compute_Max_Advance): Be less verbose.
    (T1_Get_Advances): Add tracing.

commit 6e6acdcb0ebba5d8cecacd6b649d409b7fb5248a
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jul 26 07:22:18 2018 +0200

    Document FT_Module_Class's `module_interface' field.

commit 8ed53468772ec0bc70d121cc1af2c77b1a15e8d0
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jul 25 22:07:22 2018 +0200

    [psaux, type1] Trace PostScript dictionaries and other things.

    The tracing of /Encoding, /Subrs, and /Charstrings is rudimentary
    right now.

    * src/psaux/psobjs.c (ps_parser_load_field,
    ps_parser_load_field_table): Add tracing calls.

    * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make tracing
    output more compact.

    * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances): Add
    tracing messages.

    * src/type1/t1load.c (parse_blend_axis_types,
    parse_blend_design_positions, parse_blend_design_map,
    parse_weight_vector, t1_load_keyword, t1_parse_font_matrix,
    parse_encoding, parse_subrs, parse_charstrings, T1_Open_Face): Add
    tracing calls.

    * src/type1/t1objs.c (T1_Face_Init): Add tracing call.

    * src/sfnt/sfobjs.c (sfnt_init_face): Make tracing message more
    verbose.

commit 580c94d8f71d08066d67bc5d8a2f2033d62f9317
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jul 25 07:03:07 2018 +0200

    Fix minor ASAN run-time warnings.

    * src/base/ftutil.c (ft_mem_alloc, ft_mem_realloc): Only call
    `FT_MEM_ZERO' if we actually have a buffer.
    (ft_mem_dup): Only call `ft_memcpy' if we actually have a buffer.

commit 4b97ab98a8e90ae5403058b73c345974247bf01e
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jul 24 23:01:34 2018 -0400

    [build] Fortify dllexport/dllimport attributes (#53969,#54330).

    We no longer use predefined _DLL, which can be defined for static
    builds too with /MD. We use DLL_EXPORT and DLL_IMPORT instead,
    following libtool convention.

    * CMakeLists.txt [WIN32], builds/windows/vc2010/freetype.vcxproj:
    Define DLL_EXPORT manually.

    * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
    builds/vms/ftconfig.h, builds/windows/vc2010/index.html,
    src/base/ftver.rc: /_DLL/d, s/FT2_DLLIMPORT/DLL_IMPORT/.

commit d8ea52dee53defec67cbea8f467f1ad1e971ba25
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 24 23:03:06 2018 +0200

    [type1] Check relationship between number of axes and designs.

    For Multiple Masters fonts We don't support intermediate designs;
    this implies that

      number_of_designs == 2 ^^ number_of_axes

    Reported as

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

    * src/type1/t1load.c (T1_Open_Face): Ensure above constraint.
    (T1_Get_MM_Var): Remove now redundant test.

commit 71e29fe1c95b3a41e4df9b46e5cda5c0042d4f3d
Author: Hin-Tak Leung <htl10@users.sourceforge.net>
Date:   Tue Jul 24 10:04:23 2018 +0200

    [truetype] Match ttdebug's naming of instruction mnemonics.

    * src/truetype/ttinterp.c: The form used in ttdebug,
    "MDRP[G,B,W,?]", etc., is slightly more readable than
    "MDRP[00,01,02,03]".

commit ff1c28f6c01e3068903432cfa157b5a38d015517
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 24 09:59:23 2018 +0200

    * src/pcf/pcfread.c (pcf_get_encodings): Thinko.

    Reported as

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

commit b98133a4e9831544fec776757b2a6745d4ebc51e
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jul 22 13:06:20 2018 +0200

    * src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar.

    Reported as

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

commit 9be385c94d63dd4951bb578a8417cf4a944ab827
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jul 22 12:49:25 2018 +0200

    * src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs.

    This is an oversight of the module change 2018-07-21.

    Reported as

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

commit a5acdce10076b0ad717b9b8eb455f811ed1d1f45
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jul 22 12:11:52 2018 +0200

    [cid] Sanitize `BlueShift' and `BlueFuzz'.

    This code is taken from the type1 module.

    Reported as

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

    * src/cid/cidload.c (parse_fd_array): Set some private dict default
    values.
    (cid_face_open): Do the sanitizing.
    Fix some tracing messages.

commit 5434faadf4e59c891f179443a822adadc48728c3
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jul 22 07:34:03 2018 +0200

    Fix links.

    Reported by Ankit and Nikhil.

commit 93955585339493e524c4a5c7f0d813f467e8022d
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jul 21 23:46:19 2018 +0200

    Minor comment improvement.

commit cba72a0b0f0256e61af8dc6cb1924b143b127dde
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jul 21 23:45:32 2018 +0200

    [pcf] Fix handling of the undefined glyph.

    This change makes the driver use the `defaultChar' property of PCF
    files.

    * src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar' to
    unsigned.

    * src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar' as
    unsigned.
    Validate `defaultChar'.
    If `defaultChar' doesn't point to glyph index zero, swap glyphs with
    index zero and index `defaultChar' and adjust the encodings
    accordingly.

    * src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next,
    PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced
    the first character in the font to be the default character.

commit a2370f21b5c42dc077ee7be3d5a5d3cb0733d7d7
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jul 21 07:38:13 2018 +0200

    Improve stream extraction macro documentation.

commit 154832d466ecca1b473816a0c5422d526180c420
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Fri Jul 20 19:32:13 2018 +0200

    Move the legacy fuzz target to the `freetype-testing' repository.

    It can now be found at

      https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy

    * src/tools/ftfuzzer: Remove this folder and its contents from the
    repository.

commit 14032290bf9f22afe4cb1cbbc8cfa2ee85a44aee
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri Jul 20 06:44:13 2018 +0200

    [cff] Avoid left-shift of negative numbers (#54322).

    * src/cff/cffgload.c (cff_slot_load): Use multiplication.

commit 8f09eb5ce0260aa17f93b2ccefb4bae347ca79fc
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 17 21:45:24 2018 +0200

    Allow FT_ENCODING_NONE for `FT_Select_Charmap'.

    This is a valid encoding tag for BDF, PCF, and Windows FNT, and
    there is no reason to disallow it for these formats.

    * src/base/ftobjs.c (FT_Select_Charmap): Implement it.

commit 9e69987aaada5f2eeccc4fe3a9890a2b10b874ea
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jul 17 19:54:25 2018 +0200

    * src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'.

commit fda356b742da3b1c0e2bf039227fa324b97b9f8b
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Mon Jul 16 18:45:23 2018 +0200

    * include/freetype/internal/ftcalc.h: Add macros for handling
    harmless over-/underflowing `FT_Int' values.

    * src/sfnt/sfdriver.c (fixed2float): Fix negation of
    `(int)(-2147483648)'.

    Reported as

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

commit 839cb404cf73f4410d58ebb3a99d16e08f4bdee7
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jul 16 05:45:45 2018 +0200

    * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.

    Reported as

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

commit 9f15370e564eee41c83ff85bb66ead93517a641b
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jul 12 07:31:26 2018 +0200

    * src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox'.

    Taken from patch #9667, written by Steve Langasek
    <vorlon@debian.org>.

    This fixes a build failure (most probably a bug in gcc) on ppc64el
    when building with -O3.

commit b532d7ce708cb5ca9bf88abaa2eb213ddcf9babb
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jul 5 23:13:35 2018 +0200

    Fix typo (#54238).

    * src/base/ftcolor.c (FT_Palette_Set_Foreground_Color)
    [!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value.

commit 0767d5362fdc2d14de842b264f24a6cb91d45d55
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jul 5 23:05:53 2018 +0200

    Adjust table size comparisons (#54242).

    * src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it.

commit 6ceeb87f5dd1cb61aa9618bc6296ca917980b0e7
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jul 5 22:31:10 2018 +0200

    Fix more 32bit issues (#54208)

    * src/cff/cffload.c (cff_blend_build_vector): Convert assertion into
    run-time error.

    * src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against
    numeric overflow.

commit 29f05fd02d2ba51965f994456d41ed1e9c9f769a
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jul 4 11:49:47 2018 +0200

    Fix 32bit build warnings (#54239).

    * src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed
    vs. unsigned comparisons.

    * srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto.

commit d9d300ab6bd8895b9247213ac87b26cc76a3fc5d
Author: Jeff Carey <Jeff.Carey@monotype.com>
Date:   Mon Jul 2 22:27:57 2018 +0200

    * src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging.

commit 396051daee490544322b6ca5964772ecbebeac52
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jul 2 15:52:36 2018 +0200

    s/xxx specific foo/xxx-specific foo/.

commit 7edc937fe679d14d66f55cf6f7fa607925d38f3c
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jul 2 11:50:04 2018 +0200

    s/palette_types/palette_flags/.

    Suggested by Behdad.

commit 4e3b2473d8ca08c9001e4605ba9844168811d2c7
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jul 2 11:41:44 2018 +0200

    Make `FT_Get_Color_Glyph_Layer' return FT_Bool.

    * include/freetype/freetype.h, src/base/ftobjs.c
    (FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated.

    * include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func),
    src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer):
    Updated.

commit f6ccb524af9b7d136f32426362558525b537817c
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jul 1 12:31:57 2018 +0200

    * src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function.

    Reported by Behdad.

commit 1fc776b5f14e2be6fa3d6573f5cd3fb88a7ae468
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Jun 28 21:42:26 2018 -0400

    * src/base/fttrigon.c (FT_Tan): Improve accuracy.
    (FT_Vector_Rotate): Simplify.

commit 4f11209f5cd4f83f185042d54ad1c892dffb5ed1
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Jun 28 21:31:35 2018 -0400

    * src/base/ftobjs.c (FT_Set_Charmap): Robustify.

commit 207ca38fb5e99a638e9ea86d86b28fc895661122
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 25 18:50:00 2018 +0200

    [truetype] Fix memory leak.

    * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers.
    Fix typo in `goto' destination.

    Reported as

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

commit 589d1f0899343b18c3181f35451550dc1b904bef
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 25 18:38:04 2018 +0200

    * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers.

    Reported as

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

commit a632fb547e23fe129a579fabf60a992fd7d98d02
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 24 15:22:10 2018 +0200

    [truetype] Increase precision while applying VF deltas.

    It turned out that we incorrectly round CVT and glyph point deltas
    before accumulation, leading to severe positioning errors if there
    are many delta values to sum up.

    Problem reported by Akiem Helmling <akiem@underware.nl> and analyzed
    by Behdad.

    * src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in
    16.16 format.
    (tt_face_var_cvt): Collect deltas in `cvt_deltas', which is a 16.16
    format array, and add the accumulated values to the CVT at the end
    of the function.
    (TT_Vary_Apply_Glyph_Deltas): Store data in `points_org' and
    `points_out' in 16.16 format.
    Collect deltas in `point_deltas_x' and `point_deltas_y', which are
    16.16 format arrays, and add the accumulated values to the glyph
    coordinates at the end of the function.

commit cc3333902bbfe5d8c16cf84c4e85016533ab2ee0
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 24 06:22:48 2018 +0200

    New base function `FT_Matrix_Check' (#54019).

    * src/base/ftcalc.c (FT_Matrix_Check): New base function to properly
    reject degenerate font matrices.

    * include/freetype/internal/ftcalc.h: Updated.

    * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c
    (cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix),
    src/type42/t42parse.c (t42_parse_font_matrix): Use
    `FT_Matrix_Check'.

commit d7393e22ee3d7cfedbf580a7fb1e9b4db7b3626f
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 23 17:25:58 2018 +0200

    Fix typo.

    Reported by Behdad.

    * src/base/ftcolor.c (FT_Palette_Data_Get)
    [!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/.

commit 9027233f75647fbd56f0008aa07aef1b5a9a01b4
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 21 00:21:09 2018 +0200

    s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.

    * include/freetype/ftcolor.h, include/freetype/internal/sfnt.h,
    src/sfnt/ttcolr.c: Do it.

commit a6b77ba2b39e379cd9295a9376fedf574a6ba15f
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 19 20:09:31 2018 +0200

    [sfnt] Fix CPAL heap buffer overflow.

    Reported as

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

    * src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1
    offsets.

commit 7915fd51f123d0adbe6a0b9ad19eb941e1733c87
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 19 07:15:21 2018 +0200

    Doh.  Don't use CPAL or COLR data if tables are missing.

    Reported by Alexei.

    * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if
    `colr' is NULL.

    * src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if
    `cpal' is NULL.

commit a56e4bf7a243f46632e4e2ccf25d2f50ca132b23
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 18 23:18:07 2018 +0200

    Oops!

commit 779c8c4050c11f5afa387d4f2a27650a7cd2a7fc
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Mon Jun 18 15:17:13 2018 +0530

    Some more minor doc fixes.

commit 95f7341d818ff43639f857bea03a2089289f33d8
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 18 11:10:14 2018 +0200

    More minor doc fixes.

commit ce8517b474a96811a67f6234752944338d0d044a
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 18 10:22:42 2018 +0200

    Minor documentation fixes.

commit 877d80944b00a15acfee965a55e92ee3a77a812e
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 18 10:08:17 2018 +0200

    Introduce `@example:' subsections.

commit fc40469a6f049343f2694d0b724db22558f0d374
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 18 09:23:18 2018 +0200

    Add example for `FT_Get_Color_Glyph_Layer'.

commit b1a3c59f8df2b6f1a0c1ddf10fbfc67138c32cc5
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun Jun 17 22:33:29 2018 -0400

    [base] Introduce `FT_New_Glyph'.

    This function facilitates access to full capabilities of FreeType
    rendering engine for custom glyphs. This can be quite useful for
    consistent rendering of mathematical and chemical formulas, e.g.

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

    * include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New
    function.

commit e13599a0369cf68279b991dbab3e845d7a300399
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Mon Jun 18 00:38:36 2018 +0530

    Change documentation markup tags to lowercase.

    Implemented as per discussion in

      http://lists.nongnu.org/archive/html/freetype-devel/2018-06/msg00073.html

    No change in functionality, of course.

commit d573a46f771c956c486412ccc756efa1b283e455
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 17 23:23:36 2018 +0200

    Typo.

commit 0f6be0644422f57b4874825a48c3a9852b10ae59
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Sun Jun 17 20:27:42 2018 +0200

    [bdf] Fix underflow of an unsigned value.

    bdflib.c:1562 could be reached with `font->glyphs_used == 0'.  That
    caused an underflow of the unsigned value which results in undefined
    behaviour.

    * src/bdf/bdflib.c (src/bdf/bdflib.c): Bail out earlier than before
    if the `ENCODING' keyword cannot be found.

commit 19d8687f0b95e51daf729d51a4e154cd1b5efc1a
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 17 11:22:37 2018 +0200

    Fix documentation indentation; s/@const/@enum/; harmonize doc keywords.

commit da846919141be47171e33f9a3fe4c57ba8fa7fbf
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 17 09:30:05 2018 +0200

    [base] Add tracing for `FT_Bitmap_Blend'.

    * include/freetype/internal/fttrace.h (trace_bitmap): New
    enumeration.

    * src/base/ftbitmap.c (FT_COMPONENT): Define.
    (FT_Bitmap_Blend): Add `FT_TRACE5' calls.

commit e361cc6a7553ee82abccec3378d208e844f311a4
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 17 09:13:37 2018 +0200

    s/trace_bitmap/trace_checksum/.

    * include/freetype/internal/fttrace.h: s/bitmap/checksum/.

    * src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/.
    Adjust code.

commit 9960e7beabe3fa962fe5a3a020dfd97b40e93f10
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 16 22:16:03 2018 +0200

    [sfnt] Fix color glyph layer loading.

    * src/sfnt/ttcolr.c (Colr): Add `table_size' field.
    (tt_face_load_colr): Set it.
    (tt_face_get_colr_layer): Check pointer limit for layer entries.

commit 1079063701986505980f5c5183b3a92700dc1cf5
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 16 21:45:13 2018 +0200

    [sfnt] Fix color palette loading.

    Reported as

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

    * src/sfnt/ttcpal.c (Cpal): Add `table_size' field.
    (tt_face_load_cpal): Set it.
    (tt_face_palette_set): Check pointer limit for color entries.

commit 8f403ab8a8bb211aff88897319a15a418f85c86e
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 16 21:30:04 2018 +0200

    Minor formatting.

commit a150b5ab53fe57c063924658bb0e67774fb629d1
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Sat Jun 16 15:53:15 2018 +0530

    Minor formatting.

commit 9d8e6c29801c95ca170578a209ba2308dd8efa99
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 16 10:11:58 2018 +0200

    * src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow.

commit 68bc56f864e3e1acd00870ca04085f387b144494
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 16 09:39:29 2018 +0200

    Add `FT_Bitmap_Blend' API.

    Still missing: Support for negative bitmap pitch and subpixel offset
    of source bitmap.

    * include/freetype/ftbitmap.h, src/base/ftbitmap.c
    (FT_Bitmap_Blend): New function.

commit 9b31c44620b30d3b2e6f6c0aa1cf54409cbd1087
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 14 21:30:43 2018 +0200

    Replace `FT_Get_GlyphLayers' with `FT_Get_Color_Glyph_Layer'.

    This avoids any additional allocation of COLR related structures in
    a glyph slot.

    * include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec,
    FT_Get_GlyphLayers): Removed.

    * include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed.
    (FT_Slot_InternalRec): Remove `color_layers'.

    * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func):
    Removed.
    (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove
    `load_colr_layer'.

    * src/base/ftobjs.c (ft_glyph_slot_done): Updated.
    (FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer'.
    (FT_Get_GlyphLayers): Removed.

    * src/sfnt/sfdriver.c (sfnt_interface): Updated.

    * src/sfnt/ttcolr.c (tt_face_load_colr_layers): Removed.
    * src/sfnt/ttcolr.h: Updated.

    * src/truetype/ttgload.c (TT_Load_Glyph): Updated.

commit f9d05eb32695dfcbc5c7ae747c0c794e64cc55b8
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 14 21:02:49 2018 +0200

    Provide iterative API to access `COLR' data.

    This solution doesn't store any data in an `FT_GlyphSlot' object.

    * include/freetype/freetype.h (FT_LayerIterator): New structure.
    (FT_Get_Color_Glyph_Layer): New function.

    * include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New
    function type.
    (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

    * src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it.

    * src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function.
    * src/sfnt/ttcolr.h: Updated.

    * src/sfnt/sfdriver.c (sfnt_interface): Updated.

commit 33ac83e37637f9980d674f60a2621f3ff2e2de64
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 14 21:00:23 2018 +0200

    Add glyph index and glyph load flags to glyph slot.

    * include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused
    `reserved' field to `glyph_index'.

    * include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add
    `load_flags' field.

    * src/base/ftobjs.c (FT_Load_Glyph): Set new fields.

commit a44e20879cefea41663bb36ff4af908cc4146fb8
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 14 11:32:47 2018 +0200

    [sfnt] Move `CPAL' stuff into separate files.

    * src/sfnt/sfdriver.c: Include `ttcpal.h'.
    * src/sfnt/sfnt.c: Include `ttcpal.c'.

    * src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ...
    * src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files.

    * src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC):
    Updated.

    * include/freetype/internal/fttrace.h: Add support for `colr' and
    `cpal'.
    Sort entries.

commit 54b332aaf95cf581fc3a967bdf3724a69eba75f8
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jun 13 08:46:27 2018 +0200

    [sfnt] Separate `CPAL' and `COLR' table handling.

    Later on we want to support the `SVG' table also, which needs `CPAL'
    (but not `COLR').

    * include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal'
    and `free_cpal' fields.
    (FT_DEFINE_SFNT_INTERFACE): Updated.

    * include/freetype/internal/tttypes.h (TT_FaceRec): Replace
    `colr_and_cpal' fields with `cpal' and `colr'.

    * src/sfnt/sfdriver.c (sfnt_interface): Updated.

    * src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.

    * src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field.
    (ColrCpal): Removed.
    (tt_face_load_colr): Split off CPAL handling into...
    (tt_face_load_cpal): ... this new function.
    (tt_face_free_colr): Split off CPAL handling into...
    (tt_face_free_cpal): ... this new function.
    (tt_face_load_colr_layers, tt_face_palette_set): Updated.

    * src/sfnt/ttcolr.h: Updated.

    * src/truetype/ttgload.c (TT_Load_Glyph): Updated.

commit c07ca2a1b3cb5057b7cb98f5b15c0704374d7a47
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 12 11:28:55 2018 +0200

    [sfnt] Fix `sizeof' thinko.

    * src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't
    use `sizeof' for computing array limit.

commit 22d1be3f2c40bd85ef825efc3ee524d40d842589
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 12 06:07:40 2018 +0200

    Finish CPAL/COLR support (4/4).

    * src/sfnt/ttcolr.c (tt_face_find_color): Removed.
    (tt_face_colr_blend_layer): Use `face->palette' instead of calling
    `tt_face_find_color'.
    Use and set text foreground color.

commit 45145d348fd77196d6ae92a2e8f15f671725094e
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 12 06:02:59 2018 +0200

    Finish CPAL/COLR support (3/4).

    * src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
    (FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
    functions.

commit b85d4e8f0403b245492ac8222a78e8fc9e465050
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 12 05:53:58 2018 +0200

    Finish CPAL/COLR support (2/4).

    * src/sfnt/ttcolr.c (tt_face_palette_set): New function.
    (tt_face_load_colr): Allocate `face->palette' and call
    `tt_face_palette_set'.
    Adjust return error code in case of error.

    * src/sfnt/ttcolr.h: Updated.

    * include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New
    function type.
    (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.

    * src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c
    (sfnt_done_face): Updated.

commit 7542f030ecdf61856b7bb4af9f3d918bd64c89c9
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 11 12:46:56 2018 +0200

    Finish CPAL/COLR support (1/4).

    * include/freetype/internal/tttypes.h (TT_FaceRec): New fields
    `palette_index', `palette', `have_foreground_color' and
    `foreground_color'.

commit 7de877bbc6282c820fcf18262ec4c7bb7dcccc33
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue Jun 12 06:37:02 2018 +0200

    [sfnt] Minor.

    * src/sfnt/ttcolr.c (tt_face_load_colr_layers):
    s/palette_index/palette_entry_index/ for consistency.
    Adjust return error code in case of error.

commit 04338a5e52d19529e4fe77cd370d1235592ba7e1
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue Jun 12 21:59:15 2018 -0400

    Doc fixes and improvements.

commit eaa5a42a12ce1f1fe005109da6841e411babe826
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Mon Jun 11 21:56:23 2018 -0400

    [raster] Clean up.

    * src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):
    Clean up after 5-level gray removal (8dc8635874).
    (Vertical_Sweep_Span): Be brief.

commit b18f5e7c62c0aa6f8d17cbb9a8fe687ed402569a
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon Jun 11 09:02:06 2018 +0200

    Minor doc fixes.

commit a698dbf868326ea5eead14190a2192d6f018d23c
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 10 21:43:51 2018 +0200

    [sfnt] Fix compiler warnings.

    * src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,
    tt_face_colr_blend_layer): Add `NULL' initializers.

commit d8b8b6e34ea856afc6939ddc9c8fc57cf65ee40c
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 10 21:37:15 2018 +0200

    s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.

    * include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,
    src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.

commit bfbde7926f2c1f6b4da058ed4cd0e91c6697096c
Author: Nikolaus Waxweiler <madigens@gmail.com>
Date:   Sun Jun 10 13:19:31 2018 +0100

    CMakeLists: also accept IOS_PLATFORM=SIMULATOR64

    This might be needed to build FreeType for the iOS simulator. See
    https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed
    by Steve Robinson.

    * CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64

commit 6732f05593930621081092c7e2c2ec8ec043cc2d
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 10 09:12:24 2018 +0200

    Implement `FT_Palette_Get'.

    * src/base/ftcolor.c: New file.

    * src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),
    src/base/ftbase.c: Add `ftcolor.c'.

commit 56be5f721b46a9cc5fc043e5ad4eca57398fb37d
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 10 06:59:39 2018 +0200

    * src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks.

commit 50fda0be3f9ef5dc97f6ee958bb446f09798bee0
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Jun 9 22:52:43 2018 -0400

    [raster] Deal with pitch sign earlier.

    * src/raster/ftraster.c (black_TWorker): Remove unused `traceG',
    s/bTarget/bOrigin/.
    (Render_Glyph): Set `ras.bOrigin' at the bottom-left corner.
    (Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):
    Updated accordingly.

commit c412de52fb909dcdf6e60c574d1f991a4f43cb3b
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 9 23:56:21 2018 +0200

    [sfnt] Read `CPAL' version 1 tables.

    * include/freetype/internal.tttypes.h: Include FT_COLOR_H.
    (TT_FaceRec): Add `palette' field.

    * src/sfnt/ttcolr.c: Include FT_COLOR_H.
    (Cpal): Remove all data covered by the new `palette' field in
    `TT_FaceRec'.
    (tt_face_load_colr): Updated.
    Read `CPAL' version 1 data.
    (tt_face_load_colr_layers, tt_face_find_color): Updated.

    * src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.

commit 8f1ed54877ffab4fc2cf2be329446c748a885842
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu Jun 7 02:48:48 2018 -0400

    [base] API for Harmony LCD rendering.

    This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
    LCD subpixel geometry including non-striped patterns.

    * src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.
    * include/freetype/ftlcdfil.h: Document it.
    * include/freetype/freetype.h: Minor.
    * include/freetype/ftchapters.h: Minor.

commit 44580515d8e1bbb9077274137221603ca746ee54
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu Jun 7 06:49:44 2018 +0200

    Minor.

commit f87ced9dc98c8f9178e2668b998e7a41d11406f8
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jun 6 17:49:17 2018 +0200

    ftcolor.h: Redesign API.

    While going to implement it I noticed that I need access to most of
    the `CPAL' elements; I thus plan to add a `cpal' field to
    `TT_FaceRec', which makes most of the previously suggested API
    functions obsolete because the fields will be directly accessable.

commit 7c7004d60cd5fee4675fd33bf2f5c422c802e0b8
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jun 6 17:37:51 2018 +0200

    New `ftcolor.h' draft.

commit 172904ee3a3e0d14015595946d8988f847b09158
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jun 6 13:29:09 2018 +0200

    Minor.

commit 89d2f42918afb8478e525b03a92795c26b4ab58c
Author: Parth Wazurkar <parthwazurkar@gmail.com>
Date:   Wed Jun 6 16:53:54 2018 +0530

    [bdf, pcf] Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

    * src/bdf/bdfdrivr.c (BDF_Face_Init): Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

    * src/pcf/pcfread.c  (pcf_load_font): Removed deprecated FT_FACE_FLAG_FAST_GLYPHS flag.

commit ca4e707aa10782a0123011a54bd8c0d7da837b39
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed Jun 6 08:18:23 2018 +0200

    [smooth, raster] Limit bitmap size (#54019).

    * src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add
    function.
    [!STANDALONE]: Include FT_OUTLINE_H.
    (ft_black_render): Compute CBox and reject glyphs larger than
    0xFFFF x 0xFFFF.

    * src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger
    than 0xFFFF x 0xFFFF.

commit 78d85b9c84f404025e287449695dc3e26d8c276c
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Mon Jun 4 18:42:29 2018 +0530

    Restore missing comment lines and other minor fixes

commit cc6267722451af26c8f7d318429af6f6d6b6efef
Author: Sender Ghost <lightside@gmx.com>
Date:   Mon Jun 4 10:49:23 2018 +0200

    Restore accidentally removed, commented-out configuration options.

commit f999375a9a834666f82928f9ad6293d9b25213a5
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 3 22:00:42 2018 +0200

    [GSoC] include/*.*, devel/*.*: Convert block comments to `light' style.

    This second and final monster commit was created by applying Nikhil's
    scripts `docconverter.py' and `markify.py' to all C header and source files,
    followed up by minor manual clean-up.

    No change in functionality, of course.

    I used commit f7419907bc6044b9b7057f9789866426c804ba82 from
    https://github.com/nikramakrishnan/freetype-docs.git.

commit dc170dea33545dbbbf18bb59b316117e73275889
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 3 21:23:04 2018 +0200

    Typos.

commit 80ac36453019546b92334f2c7a58edd006eb722f
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Sun Jun 3 18:31:58 2018 +0200

    * src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables.

commit 64bf5d48eb711ac13d7eda1ddae61332041a0631
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 3 09:19:54 2018 +0200

    Minor formatting.

commit 02842872deb202f36cc473f790e3a555adb2c987
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 3 09:17:55 2018 +0200

    * src/tools/glnames.py (main): Emit header in `light' comment style.

commit 9ac9060df00010a3eec234a8fea9cded9b8282a1
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun Jun 3 09:01:17 2018 +0200

    [GSoC] src/*.*: Convert block comments to `light' style.

    This monster commit was created by applying Nikhil's scripts
    `docconverter.py' and `markify.py' to all C header and source files,
    followed up by minor manual clean-up.

    No change in functionality, of course.

    I used commit f7419907bc6044b9b7057f9789866426c804ba82 from
    https://github.com/nikramakrishnan/freetype-docs.git.

commit ae248034106b600e8e3fa9ccc17f63db44b04db3
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sat Jun 2 21:42:44 2018 -0400

    [smooth] Attempt to mitigate bug #54019.

    The robust rendering of estra large glyphs came with unbearable cost.
    The old way of bisecting should fail but fail faster.

    * src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting
    in y-direction.

commit 67994e8221b4ffa6bfd24075c64f8af618ca9495
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 2 19:51:03 2018 +0200

    * src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.

    Reported as

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

commit fab10b6fc2091df6bde50e132f7b4bd7bca97c9f
Author: Werner Lemberg <wl@gnu.org>
Date:   Sat Jun 2 09:53:58 2018 +0200

    * src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033).

commit 125b84800a3230305b7fbc8eedeee106fa78adae
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 31 10:49:05 2018 +0200

    * src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field.

    This is no longer used.

commit 250b0c624a49ca56e221ae9778ebac747175c9bd
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Wed May 30 23:29:41 2018 -0400

    Shorten LCD filtering docs.

commit 0589f6e6ee6e9bfe0c7139374fc8812e849e7bf7
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 31 00:34:38 2018 +0200

    [sfnt] Get colors from `CPAL' table in right order (#54015).

    * src/sfnt/ttcolr.c (tt_face_find_color): Fix it.

commit db7c4060840c1e6b657e8a0fd8b449ba0968d0a3
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed May 30 21:21:19 2018 +0200

    ftcolor.h: Improve API design, fix typos (#54011, #54014).

    * include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...
    (FT_Palette_Get_Name_IDs): ... this function.
    (FT_Palette_Get_Entry_Names): Replace with...
    (FT_Palette_Get_Entry_Name_IDs): ... this function
    s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.

commit d45d4b97e6a03cfe21a2952138cf6e970fc358e5
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Wed May 30 17:35:39 2018 +0200

    Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.

    * src/autofit/afloader.c (af_loader_load_glyph): Move the
    initialisation and declaration of variables into the if-block.

commit a3cfed5e87232c933bdc64f43e8ebebcfd18b41b
Author: Armin Hasitzka <prince.cherusker@gmail.com>
Date:   Wed May 30 12:37:46 2018 +0200

    Fix pointer underflow.

    The declaration of `edge2' can be reached with `edge1 == NULL' and
    `axis->edges == 0' which results in undefined behaviour.

    * src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2'
    after checking `axis->num_edges > 1'.  `edge1 != NULL' can be assumed.

commit ae2cd1b74966e957a4f3724db001d65d6decc177
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed May 30 09:34:57 2018 +0200

    Various minor color fixes.

    * include/freetype/config/ftheader.h (FT_COLOR_H): New macro.

    * include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change
    type of `load_flags' to `FT_Int32'.

    * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change
    type of `idx' to `FT_UInt'.
    (TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'.

    * src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of
    `load_flags' to `FT_Int32'.

    * src/sfnt/ttcolr.c (find_base_glyph_record,
    tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'.
    (tt_face_find_color, tt_face_colr_blend_layer): Change type of
    `color_index' to `FT_UInt'.
    Fix signedness and type issues.

    * src/sfnt/ttcolr.h: Updated.

commit 51fee655837ef99084767873266aaddfa3a31da5
Author: Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>
Date:   Fri May 25 22:16:11 2018 +0200

    [docmaker] Fix missing `Defined in (...)' under Windows/Cygwin.

    This platform uses backslashes for paths, which docmaker didn't
    understand correctly.

    * src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use
    `os.path.normpath' to normalize the path for the platform being
    used.

commit 7b73cb0707586e7988efdd07a1dfe690c3036ca1
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Thu May 24 22:38:24 2018 -0400

    [smooth] Formalize Harmony LCD rendering.

    This generalizes magic outline shifts that make Harmony LCD
    rendering work in terms of precise two-dimensional RGB subpixel
    positions. These coordinates are now set in time of the `smooth'
    module initialization and later used to shift a glyph outline for
    rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
    coordinates. The letter, however, rotates them before using.
    The LCD bitmap padding is also calculated using these coordinates.

    * include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field
    `lcd_geometry'.
    * src/base/ftlcdfil.c (ft_lcd_padding): Reworked.
    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.

    * src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]
    (ft_smooth_init): Initialize `lcd_geometry'.
    (ft_smooth_render_generic): Formalize outline shifts.

commit 3fcb4cfa26e697c8c643bfc7e46b03f013394fa1
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 22 09:12:21 2018 +0200

    Oops!

commit 3360ca5853007f1bc5a550c3837f08242fd4c651
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 22 09:06:24 2018 +0200

    [truetype] Reject elements of composites with invalid glyph indices.

    Reported as

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

    * src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it.

commit 3c99016f8fed63c2c6a10565d72bf7d8e924f57e
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 22 07:53:49 2018 +0200

    * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points.

commit 93363cd737a762fbc0e482eef386097b1ca04930
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun May 20 22:50:00 2018 +0200

    * include/freetype/ftcolor.h: New file.

    This is an interface to the `CPAL' OpenType table.  No
    implementation yet.

commit af28249862e95771748f1b78b7bdfc7adf67cf2a
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Sun May 20 06:27:08 2018 -0400

    Autoformatting.

commit 2f218a4c3abf772976bdc86226c689de5d40e86e
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Fri May 18 08:57:30 2018 -0400

    * include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'.

    Actually `_BitScanReverse' is available since VS2005.

commit 840b844301d9f5561627314b18fb81135abf0407
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri May 18 10:57:51 2018 +0200

    * include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value.

    Older VC versions don't provide `_BitScanReverse'.  We test for VC
    2013.

    Reported by John Emmas <john@creativepost.co.uk>.

commit 3331b84fc2a2020dcf84511003172c4395a78f24
Author: Werner Lemberg <wl@gnu.org>
Date:   Fri May 18 07:19:57 2018 +0200

    Minor comment fixes.

commit 2cac1c3542cc250c98a3d1f3b9b8c8e62660005e
Author: Werner Lemberg <wl@gnu.org>
Date:   Thu May 17 19:40:44 2018 +0200

    s/inline/__inline/ for MSVC.

    Reported by John Emmas <john@creativepost.co.uk>.

    * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.

commit 583dabf2918cc9ca82cac0b16482d2c56de8c3fa
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed May 16 20:37:43 2018 +0200

    Add function `FT_Get_GlyphLayers' to access `COLR' table data.

    * include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this
    structure to...
    * include/freetype/freetype.h (FT_Glyph_LayerRec): ... this
    header file.
    (FT_Glyph_Layer): New typedef.
    Update code to use it where appropriate.

    * src/base/ftobjs.c (FT_Get_GlyphLayers): New function.

commit f1458d2e44d89e8bc7c0db068f1cbc54b74b9d98
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Date:   Tue May 15 21:47:18 2018 -0400

    [base] Fix mono bitmap presetting (#53896).

    It is rather fundamental to set monochrome bitmap based on rounded
    CBox because the b/w rasterizer turns on pixels when their centers are
    inside the glyph outline. The dropout control is unpredictable and can
    distort narrow glyphs if the bitmap is too wide.

    Reported by Chris Liddell.

    * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries
    are too close, adjust them before rounding.

commit 49c5e24a149a960b5f2736d7b1d98a4d56d7e2f0
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 15 21:55:28 2018 +0200

    [psaux] Fix compiler warning (#53915).

    * src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.

commit befee11296032fc8b25d87bf0f65c18bb67682bb
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 15 17:01:22 2018 +0200

    [sfnt] Fix memory leak in handling `COLR' data.

    * src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array
    before reassigning allocated memory.
    Only allocate `color_layers' if we don't have one already.

commit 5fd125640a7c4130486511fa4e40ac8195dc4373
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 15 11:30:49 2018 +0200

    Grammar fixes.

commit 2dd20916117e36a49b52206ceb6689eae5060c58
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 15 09:05:53 2018 +0200

    [sfnt] If `COLR' is present, don't assume that all glyphs use it.

    * src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if
    current glyph is not a `COLR' base glyph.

    * src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate
    `color_layers' if there are no color layers.

commit 06820637e2e1b6779c0157abb11a3bb4d65e1f53
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon May 14 09:45:16 2018 +0200

    * src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'.

commit c5a8a5350a572cac399643ec8cacdb3330dc79df
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon May 14 09:42:20 2018 +0200

    Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set.

    * src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.

commit 78db8a2570b51a7503078c228afeec90147817c4
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun May 13 11:53:01 2018 +0200

    Typo.

commit 1b2abda9d23b218e08e240fc3d062661c22258d1
Author: Werner Lemberg <wl@gnu.org>
Date:   Sun May 13 10:58:49 2018 +0200

    * src/base/ftobjs.c (FT_Load_Glyph): Improve tracing.

commit f04d81751ac68b23c89da2edd31c43fd9fc5c75c
Author: Shao Yu Zhang <shaozhang@fb.com>
Date:   Sun May 13 03:25:09 2018 +0200

    [sfnt] Preliminary support of coloured layer outlines.

    This commit enables OpenType's COLR/CPAL table handling; a typical
    application are color emojis that can be scaled to any size.

    If the color palette does not exist or is invalid, the rendering
    step rasterizes the outline instead.  The current implementation
    assumes that the foreground is black.

    Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.

    There are still some issues with metrics; additionally, an API to
    fetch color layers is missing.

    * devel/ftoption.h, include/freetype/config/ftoption.h
    (TT_CONFIG_OPTION_COLOR_LAYERS): New macro.

    * include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,
    FT_Colr_InternalRec): New structures.
    (FT_Slot_InternalRec): Add `color_layers' field.

    * include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,
    TT_Blend_Colr_Func): New function types.
    (SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer',
    and `colr_blend' fields.

    * include/freetype/internal/tttypes.h (TT_FaceRec): Add
    `colr_and_cpal' field.

    * include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New
    macros.

    * src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.

    * src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):
    Handle glyph color layers.

    * src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add
    `ttcolr.c'.

    * src/sfnt/sfdriver.c: Include `ttcolr.h'.
    (PUT_COLOR_LAYERS): New macro.
    Update call to `FT_DEFINE_SFNT_INTERFACE'.

    * src/sfnt/sfnt.c: Include `ttcolr.c'.

    * src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables.
    (sfnt_done_face): Updated.

    * src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.

commit 84eebf48021ab76c1c628bb7451b712f701e4518
Author: Arkady Shapkin <arkady.shapkin@gmail.com>
Date:   Sat May 12 06:16:46 2018 +0200

    Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).

    * include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
    it.

commit fb742477b235dc1f7113790f94705423f5e0f0a1
Author: Parth Wazurkar <parthwazurkar@gmail.com>
Date:   Fri May 11 23:27:06 2018 +0530

    [pcf]Documentation Typo.

commit 9e345c911714ed62250be13d03d72e25d91fbc77
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Thu May 10 10:10:43 2018 +0200

    Further fix to visibility flag testing with Solaris Studio compilers.

    AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'.  The
    Solaris Studio 12.1 through 12.5 compilers see the
    `-fvisibility=hidden' flag, but ignore it with a warning of:

      cc: Warning: Option -fvisibility=hidden passed to ld,
                   if ld is invoked, ignored otherwise

    AC_LINK_IFELSE does the compile and then tries to link the result,
    at which point the Solaris linker will issue an error:

      ld: fatal: option '-fvisibility=hidden' is incompatible with
          building a dynamic executable

    If we don't use AC_LINK_IFELSE to catch the error, then configure
    will fail further tests which attempt to link, such as those testing
    dependencies like `libbz2'.

    Also, don't try adding `-fvisibility' if we have already added
    `-xldscope', just use one of them, since Sun Studio 12 and earlier
    compilers only issue a warning, and don't try passing through to the
    linker to generate an error, so AC_LINK_IFELSE doesn't catch them.

    Tested on Solaris 11.4 beta with compiler versions:

      Sun Studio 8 (Sun C 5.5)
      Sun Studio 10 (Sun C 5.7)
      Sun Studio 11 (Sun C 5.8)
      Sun Studio 12 (Sun C 5.9)
      Sun Studio 12.1 (Sun C 5.10)
      Oracle Solaris Studio 12.2 (Sun C 5.11)
      Oracle Solaris Studio 12.3 (Sun C 5.12)
      Oracle Solaris Studio 12.4 (Sun C 5.13)
      Oracle Developer Studio 12.5 (Sun C 5.14)
      Oracle Developer Studio 12.6 (Sun C 5.15)
      gcc 5.5.0
      gcc 7.3.0

    and verified the libfreetype.so.6 generated by each of those
    compilers exported the same set of symbols.

    * builds/unix/configure.raw: Implement it.

commit e0015f7612cf07ff80561475321ce1f98c7c2b88
Author: Werner Lemberg <wl@gnu.org>
Date:   Tue May 8 11:51:16 2018 +0200

    [autofit] Avoid potential SEGV if running out of memory.

    Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>.

    * src/autofit/afshaper.c (af_shaper_buf_create,
    af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't
    allocate and free a four-byte buffer.  Instead, make those functions
    no-ops; the calling functions will provide a pointer to a buffer
    instead.

    * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
    af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),
    src/autofit/aflatin.c (af_latin_metrics_init_widths,
    af_latin_metrics_init_blues, af_latin_metrics_check_digits)
    [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for
    `shaper_buf'.

commit f7b4fb3a214c15df0579979bd1bd4e7f613f0209
Author: Nikolaus Waxweiler <madigens@gmail.com>
Date:   Mon May 7 23:10:36 2018 +0100

    CMake: Allow using project as subfolder in other project

    * CMakeLists.txt: Test for CMake build directory being diffent from
    source directory. Provide other parts of the build system access the
    full include directory.

commit 7702edf793ed47effbb26050d66cb2acfcde2b96
Author: Werner Lemberg <wl@gnu.org>
Date:   Mon May 7 08:54:34 2018 +0200

    [build] Suppress configure's `nothing to be done' message.

    This is due to calling the configure script via `make' (within the
    top-level `configure' wrapper script).  The same can happen for all
    other secondary make targets that are used to only modify the
    primary one, e.g., `make setup devel'.

    * builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),
    builds/os2/detect (visualage, watcom, borlandc, devel),
    builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk
    (visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,
    devel-gcc): Use no-op recipe.

commit 2b3e0ef6c095cf6ea920e95fc9826dc39694162a
Author: suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
Date:   Fri May 4 12:55:48 2018 +0900

    Support symbol visibility features of Sun / Oracle C compilers.
    Reported by Kiyoshi Kanazawa:
    https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html
    Thanks to the suggestions by Alexei and Alan Coopersmith.

    * builds/unix/configure.raw: Check if "-xldscope=hidden" is
    accepted, and if so, it is added to CFLAGS.  This is the option
    making Sun / Oracle C compilers hide the symbols from global
    scope.
    * include/freetype/config/ftconfig.h: Use "__global" prefix
    for FT_EXPORT() macro, if SunPro C is newer than Sun ONE
    Studio 8 (2003).
    * builds/unix/ftconfig.in: Ditto.
    * builds/vms/ftconfig.h: Ditto.

commit 660afb5ce81ccf3271ec80b6475ec8b16d862a25
Author: Nikolaus Waxweiler <madigens@gmail.com>
Date:   Wed May 2 23:19:55 2018 +0100

    Unbreak CMake Windows installation

    * CMakeLists.txt: Generate ftconfig.h on non-UNIX.

commit 9514959241dec9943a99cd1c8f0c214a5fbb0d91
Author: Werner Lemberg <wl@gnu.org>
Date:   Wed May 2 20:27:48 2018 +0200

    Remove FT_CONFIG_OPTION_PIC and related code.

    */* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this
    preprocessor symbol.

    */*: Replace `XXX_GET' macros (which could be either a function in
    PIC mode or an array in non-PIC mode) with `xxx' arrays.

    * include/freetype/internal/ftpic.h, src/autofit/afpic.c,
    src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,
    src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,
    src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,
    src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,
    src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,
    src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
    Removed.

Change-Id: Ibb9451590d0faeead985c89b8fb7f3d0d60f0673
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/freetype2/+/441576
Reviewed-by: Jason Simmons <jsimmons@google.com>
