CHANGES BETWEEN 2.10.3 and 2.10.4

  I. IMPORTANT BUG FIXES

  - A heap buffer overflow has been found  in the handling of embedded
    PNG bitmaps, introduced in FreeType version 2.6.

      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15999

    If you  use option  FT_CONFIG_OPTION_USE_PNG  you  should  upgrade
    immediately.


======================================================================

CHANGES BETWEEN 2.10.2 and 2.10.3

  I. IMPORTANT CHANGES

  - New flag `FT_OUTLINE_OVERLAP'.  If set, make the smooth rasterizer
    do  4x4 oversampling  to  mitigate artifacts  in pixels  partially
    covered  by  overlapping  contours.    Note  that  this  at  least
    quadruples the rendering time.

    If  a  glyph  in  a  TrueType font  has  the  `OVERLAP_SIMPLE'  or
    `OVERLAP_COMPOUND'  bit set,  FreeType automatically  selects this
    rendering mode.


  II. MISCELLANEOUS

  - Using the  arcane method of  including FreeType header  files with
    macros like  `FT_FREETYPE_H' is no longer  mandatory (but retained
    as an optional feature for backward compatibility).

  - Support for  building the library  with Meson.  Building  the demo
    programs with Meson will follow in a forthcoming release.

  - Minor improvements to the B/W rasterizer.

  - Auto-hinter support for Medefaidrin script.

  - Fix various  memory leaks (mainly  for CFF) and other  issues that
    might cause crashes in rare circumstances.

  - Jam support has been removed.

  - In  `ftview', custom  LCD  filter values  are  now normalized  and
    balanced.  Unorthodox filters are still available through the `-L'
    command line option.

  - The GUI demo programs can now be resized.

  - Demo programs that accept command  line option `-k' can now handle
    function keys, too.  The  corresponding character codes start with
    0xF1.  As  an example, the  POSIX shell syntax (accepted  by bash,
    ksh, and zsh)

      -k $'\xF3q'

    emulates the pressing of function key `F3' followed by key `q'.


======================================================================

CHANGES BETWEEN 2.10.1 and 2.10.2

  I. IMPORTANT CHANGES

  - Support  of  WOFF2  fonts.   This  code  contribution  was  Nikhil
    Ramakrishnan's GSoC 2019 project.


  II. MISCELLANEOUS

  - Function  `FT_Get_Var_Axis_Flags' returned random data for  Type 1
    MM fonts.

  - Type 1 fonts with non-integer metrics are now supported by the new
    (CFF) engine introduced in FreeType 2.9.

  - Drop  support  for Python 2 in Freetype's API reference  generator
    `docwriter'  (Python >= 3.5 is required for targets  `make refdoc'
    and `make refdoc-venv').

  - Auto-hinter support for Hanifi Rohingya.

  - Document the `FT2_KEEP_ALIVE' debugging environment variable.

  - The Visual C++ (and Visual C)  project files for Windows builds no
    longer generate libraries that contain the FreeType version in its
    filenames.   Instead,  a  resource  file gets  used  to  make  the
    libraries contain the corresponding information.

  - The next release will remove Jam build support.

  - The  `ftbench'  demo  program  has  a new  test  for  testing  the
    `FT_Glyph_Stroke' functionality.


======================================================================

CHANGES BETWEEN 2.10.0 and 2.10.1

  I. IMPORTANT BUG FIXES

  - The bytecode hinting of OpenType variation fonts was flawed, since
    the data in the `CVAR' table wasn't correctly applied.


  II. MISCELLANEOUS

  - Auto-hinter support for Mongolian.

  - For distribution,  `.tar.bz2' packages are replaced with `.tar.xz'
    bundles.

  - The handling of  the default character in PCF fonts as  introduced
    in version 2.10.0 was partially broken, causing premature abortion
    of charmap iteration for many fonts.

  - If  `FT_Set_Named_Instance' was  called  with  the same  arguments
    twice in a row, the function  returned an incorrect error code the
    second time.

  - Direct   rendering   using  FT_RASTER_FLAG_DIRECT   crashed   (bug
    introduced in version 2.10.0).

  - Increased  precision  while  computing  OpenType  font   variation
    instances.

  - The  flattening  algorithm of  cubic  Bezier  curves was  slightly
    changed to make  it faster.  This can cause  very subtle rendering
    changes, which aren't noticeable by the eye, however.

  - The  auto-hinter  now  disables hinting  if there  are blue  zones
    defined for a `style' (i.e., a certain combination of a script and
    its related typographic features) but the font doesn't contain any
    characters needed to set up at least one blue zone.

  - The `ftmulti' demo program now  supports multiple hidden axes with
    the same name tag.

  - `ftview', `ftstring', and `ftgrid' got  a `-k' command line option
    to emulate a sequence of keystrokes at start-up.

  - `ftview', `ftstring', and `ftgrid' now support screen dumping to a
    PNG file.

  - The bytecode debugger, `ttdebug',  now supports variation TrueType
    fonts; a variation font instance can be selected with the new `-d'
    command line option.


======================================================================

CHANGES BETWEEN 2.9.1 and 2.10.0

  I. IMPORTANT CHANGES

    - A bunch  of new functions has  been added to access  and process
      COLR/CPAL data of OpenType fonts with color-layered glyphs.

        FT_Palette_Data_Get
          Retrieve color palette data.
        FT_Palette_Select
          Select and activate a color palette for color-layered
          glyphs.
        FT_Palette_Set_Foreground_Color
          Set text foreground color for palette index 0xFFFF.

        FT_Get_Color_Glyph_Layer
          Get color layers for a given glyph (using an interator
          object).

        FT_Bitmap_Blend
          Blend one bitmap onto another with a given color.

    - An   experimental  feature   is   the  new   behaviour  of   the
      `FT_LOAD_COLOR' load  flag for color-layered  glyphs: Internally
      it  sets a  flag so  that  if `FT_Render_Glyph'  is called  with
      `FT_RENDER_MODE_NORMAL'      (or       `FT_Load_Glyph'      with
      `FT_LOAD_RENDER'), a default blending  of the color glyph layers
      will happen automatically for convenience.

    - As  a   GSoC  2018   project,  Nikhil   Ramakrishnan  completely
      overhauled and modernized the API reference.


  II. MISCELLANEOUS

    - The  logic for  computing  the global  ascender, descender,  and
      height  of  OpenType  fonts   has  been  slightly  adjusted  for
      consistency.

      . If the `useTypoMetrics' flag (i.e., bit 7 in the `fsSelection'
        field) in the  `OS/2' table is set, use the  `sTypo' fields in
        `OS/2' unconditionally.
      . Otherwise use  the metrics data from the `hhea'  table (if not
        zero).
      . Otherwise use the `sTypo' fields from the `OS/2' table (if not
        zero).
      . Otherwise use the `usWin' data from the `OS/2' table as a last
        resort.

      Variable fonts will apply the `MVAR' deltas to whichever metrics
      were picked.

    - `TT_Set_MM_Blend' could  fail if  call repeatedly with  the same
      arguments.

    - The precision  of handling  deltas in  Variation Fonts  has been
      increased.  The  problem did only show  up with multidimensional
      designspaces.

    - New function `FT_Library_SetLcdGeometry' to  set up the geometry
      of LCD subpixels.

    - FreeType now uses the `defaultChar' property of PCF fonts to set
      the  glyph for  the undefined  character  at glyph  index 0  (as
      FreeType already does for all other supported font formats).  As
      a consequence,  the order of  glyphs of  a PCF font  if accessed
      with  FreeType  can  be   different  now  compared  to  previous
      versions.

      This change doesn't affect PCF font access with cmaps.

    - `FT_Select_Charmap' has  been changed  to allow  parameter value
      `FT_ENCODING_NONE', which is valid for BDF, PCF, and Windows FNT
      formats to  access built-in cmaps  that don't have  a predefined
      `FT_Encoding' value.

    - A previously  reserved field in the  `FT_GlyphSlotRec' structure
      now holds the glyph index.

    - On Win32 platforms,  the use of `_DLL' to build  the library has
      been replaced with `DLL_EXPORT' and `DLL_IMPORT'.

    - The usual round  of fuzzer bug fixes to  better reject malformed
      fonts.

    - `FT_Outline_New_Internal'  and  `FT_Outline_Done_Internal'  have
      been removed.  These two functions were public by oversight only
      and were never documented.

    - A new  function `FT_Error_String' returns descriptions  of error
      codes if  configuration macro  FT_CONFIG_OPTION_ERROR_STRINGS is
      defined.

    - `FT_Set_MM_WeightVector'  and  `FT_Get_MM_WeightVector' are  new
      functions limited to Adobe MultiMaster fonts to directly set and
      get the weight vector.

    - Support for Position Independent Code as needed by  systems that
      prohibit  automatic  address  fixups,  such  as BREW,  has  been
      removed.  [Compilation with modern compilers that use flags like
      `-fPIC' or `-fPIE' is not affected.]

    - The  `ftdump' demo  program has  new  options `-c'  and `-C'  to
      display charmaps  in compact and detailed  format, respectively.
      Option `-V' has been removed.

    - The `ftview', `ftstring',  and `ftgrid' demo programs  use a new
      command line option `-d' to  specify the program window's width,
      height, and color depth.

    - The `ftview' demo program now  displays red boxes for zero-width
      glyphs.

    - `ftglyph'   has   limited   support  to   display   fonts   with
      color-layered glyphs.  This will be improved later on.

    - `ftgrid' can now display bitmap fonts also.

    - The `ttdebug'  demo program has  a new  option `-f' to  select a
      member of a TrueType collection (TTC).

    - Other various improvements to the demo programs.


======================================================================

CHANGES BETWEEN 2.9 and 2.9.1

  I. IMPORTANT BUG FIXES

    - Type  1  fonts  containing   flex  features  were  not  rendered
      correctly (bug introduced in version 2.9).

    - CVE-2018-6942: Older  FreeType versions  can crash  with certain
      malformed variation fonts.

        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942


  II. MISCELLANEOUS

    - Bug fix: Multiple calls to `FT_Get_MM_Var' returned garbage.

    - The base  extensions `ftlcdfil' and  `ftfntfmt' are now  part of
      the  base  module  (and  thus no  longer  configurable  in  file
      `modules.cfg').

    - Emboldening of bitmaps didn't work correctly sometimes,  showing
      various artifacts (bug introduced in version 2.8.1).

    - Use  of  the `freetype-config'  script  to  get compilation  and
      linking  options   is  deprecated   since  it   doesn't  support
      cross-compiling, among other  deficiencies.  Instead, you should
      use the `pkg-config' interface.

      The `configure'  script no longer installs  `freetype-config' by
      default.  For  backward  compatibility,  a new  configure option
      `--enable-freetype-config'   is  provided   that  reverts   this
      decision.

    - The auto-hinter script ranges have  been updated for Unicode 11.
      No support  for new scripts  have been added, however,  with the
      exception of Georgian Mtavruli.

    - Support for cmake has been improved.

    - The next  release will  remove support for  Position Independent
      Code  as  needed  by  systems that  prohibit  automatic  address
      fixups, such  as BREW.  [Compilation with  modern compilers that
      use flags like `-fPIC' or `-fPIE' is not affected.]


======================================================================

CHANGES BETWEEN 2.8.1 and 2.9

  I. IMPORTANT BUG FIXES

    - Advance width values of variation fonts were often wrong.

    - More fixes for variation font support; you should update to this
      version if you want to support them.


  II. IMPORTANT CHANGES

    - As a GSoC project, Ewald Hew extended the new (Adobe) CFF engine
      to  handle  Type  1  fonts  also,  thus  greatly  improving  the
      rendering of  this format.   This is the  new default.   The old
      engine   is  still   available   if   the  configuration   macro
      `T1_CONFIG_OPTION_OLD_ENGINE'    gets    defined;   using    the
      `hinting-engine' property  of the `type1' driver  module you can
      then switch between the two engines.

    - A new function,  `FT_Set_Named_Instance', can be used  to set or
      change the current named instance.

    - Starting  with   this  FreeType  version,   resetting  variation
      coordinates  will   return  to  the  currently   selected  named
      instance.  Previously, FreeType returned to the base font (i.e.,
      no instance set).


  III. MISCELLANEOUS

    - The `face_flags' field of the `FT_Face' structure has a new bit,
      `FT_FACE_FLAG_VARIATION', which  is set if a  variation font has
      been      altered      with      `FT_Set_MM_Design_Coordinates',
      `FT_Set_Var_Design_Coordinates',                              or
      `FT_Set_Var_Blend_Coordinates'.

    - If  the  current  face  is  a  named  instance,  the  new  macro
      `FT_IS_NAMED_INSTANCE' returns true.

    - `FT_IS_VARIATION' is  a new macro  that returns true  whenever a
      face object has  been altered by `FT_Set_MM_Design_Coordinates',
      `FT_Set_Var_Design_Coordinates',                              or
      `FT_Set_Var_Blend_Coordinates'.

    - Changing  the  design  coordinates  of  a  variation  font  with
      `FT_Set_Var_Design_Coordinates'                               or
      `FT_Set_Var_Blend_Coordinates'  does  not  influence  the  named
      instance index value (only `FT_Set_Named_Instance' does that).

    - Special PostScript  names for named instances  are only returned
      if the  named instance is set  with `FT_Set_Named_Instance' (and
      the font  has corresponding  entries in  its `fvar'  table).  If
      `FT_IS_VARIATION'  returns  true,  the  algorithmically  derived
      PostScript name is provided, not  looking up special entries for
      named instances.

    - A new function  `FT_Done_MM_Var' is provided to  free the memory
      returned in a call to `FT_Get_MM_Var'.

    - On  platforms  using  the   `configure'  script,  the  installed
      `ftoption.h' file  now correctly reflects  configuration options
      like `--with-harfbuzz'.

    - Better  support to  build FreeType  as  a DLL  on Windows  using
      Visual C.

    - All data specific to driver modules is now collected in a single
      file,      `FT_DRIVER_H'.      Consequently,      the     macros
      `FT_AUTOHINTER_H',   `FT_CFF_DRIVER_H',  `FT_TRUETYPE_DRIVER_H',
      and `FT_PCF_DRIVER_H' still work but are deprecated.

    - Some fuzzer fixes to better reject malformed fonts.

    - The `ftbench' demo program has a new test for opening a new face
      and loading some glyphs.

    - The `ftbench' demo program has a  new option `-j' to specify the
      last glyph index to be used in the tests.

    - The  `ftgrid' demo  program has  a new  option `-n'  to suppress
      display of named instances of variation fonts.

    - The `ttdebug' demo program can now  show a stack trace (key `K')
      and switch  between hexadecimal and decimal  display of integers
      (key `I').


======================================================================

CHANGES BETWEEN 2.8 and 2.8.1

  I. IMPORTANT BUG FIXES

    - B/W  hinting   of  TrueType   fonts  didn't  work   properly  if
      interpreter version 38 or 40 was selected.

    - Some severe  problems within the handling  of TrueType Variation
      Fonts were found and fixed.

    - Function `FT_Set_Var_Design_Coordinates' didn't correctly handle
      the case with less input coordinates than axes.


  II. IMPORTANT CHANGES

    - By  default,  FreeType  now offers  high  quality  LCD-optimized
      output without  resorting to ClearType techniques  of resolution
      tripling and  filtering.  In  this method, called  Harmony, each
      color channel  is generated separately after  shifting the glyph
      outline, capitalizing  on the fact  that the color grids  on LCD
      panels  are shifted  by  a third  of a  pixel.   This output  is
      indistinguishable from ClearType with a light 3-tap filter.


  III. MISCELLANEOUS

    - Using the  new function `FT_Get_Var_Axis_Flags',  an application
      can access the `flags' field  of a variation axis (introduced in
      OpenType version 1.8.2)

    - More sanity checks.

    - The  internal representation  of buffers  for LCD  rendering has
      changed (to be more precise, the amount of padding gets computed
      differently).  Applications  that use  the FreeType API  are not
      affected.

    - To  reset all  design axis  values of  a variation  font to  its
      default values you can now say

        error = FT_Set_Var_Design_Coordinates( face, 0, NULL );

      This  also works  with functions  `FT_Set_MM_Design_Coordinates'
      and `FT_Set_MM_Blend_Coordinates'.

    - FreeType  now synthesizes  a  missing Unicode  cmap for  (older)
      TrueType fonts also if glyph names are available.

    - FreeType  has  improved  handling   of  BDF  fonts  without  the
      `POINT_SIZE', `RESOLUTION_X', or  `RESOLUTION_Y' properties; the
      library now  uses the values of  the `SIZE' keyword if  they are
      missing.   Previously,   `SIZE'  was  completely   ignored,  and
      FreeType used heuristic values instead.

    - Multiple calls to `FT_Bitmap_Convert' do work now as advertised.
      Previously,  they failed with an assertion error if there was an
      empty bitmap between non-empty ones.

    - The warping option  has moved  from `light'  to `normal' hinting
      where  it replaces  the original hinting algorithm.  The `light'
      mode is now always void of any hinting in x-direction.

    - 16bit  compiler  support is  now  officially  ended.  We  didn't
      provide any maintenance  since many years,  and given that there
      were no error  or problem reports either it seems  that it is no
      longer needed.

    - The `ftgrid'  demo program  can now toggle  the display  of grid
      lines with the `G' key.

    - The `ftgrid' demo  program can toggle a different  set of colors
      (suitable to color-blind people) with the `C' key.

    - The `ftgrid'  demo program  now supports  the `-e'  command line
      option to select a cmap.

    - The `ftdump' demo program has a  new command line option `-t' to
      output the SFNT table list.


======================================================================

CHANGES BETWEEN 2.7.1 and 2.8

  I. IMPORTANT CHANGES

    - Support for OpenType Variation Fonts is now complete.   The last
      missing part was handling the `VVAR' and `MVAR' tables, which is
      available with this release.

    - A new  function `FT_Face_Properties' allows the  control of some
      module  and   library  properties  per  font.    Currently,  the
      following properties can be  handled: stem darkening, LCD filter
      weights, and the random seed for the `random' CFF operator.

    - The PCF change to show more `colorful'  family names (introduced
      in version 2.7.1) was too radical; it can now be configured with
      PCF_CONFIG_OPTION_LONG_FAMILY_NAMES   at   compile   time.    If
      activated, it can  be switched off at run time  with the new pcf
      property  `no-long-family-names'.  If  the `FREETYPE_PROPERTIES'
      environment variable is available, you can say

        FREETYPE_PROPERTIES=pcf:no-long-family-names=1

    - Support  for  the  following  scripts  has  been  added  to  the
      auto-hinter.

        Adlam, Avestan, Bamum, Buhid, Carian, Chakma, Coptic, Cypriot,
        Deseret, Glagolitic, Gothic, Kayah, Lisu, N'Ko, Ol Chiki, Old
        Turkic, Osage, Osmanya, Saurashtra, Shavian, Sundanese, Tai
        Viet, Tifinagh, Unified Canadian Syllabics, Vai


  II. IMPORTANT BUG FIXES

    - `Light' auto-hinting  mode no  longer uses TrueType  metrics for
      TrueType  fonts.   This bug  was  introduced  in version  2.4.6,
      causing   horizontal  scaling   also.    Almost  all   GNU/Linux
      distributions (with Fedora as  a notable exception) disabled the
      corresponding patch for good reasons; chances are thus high that
      you won't notice a difference.

      If  optical backward  compatibility for  legacy applications  is
      necessary, you might enable the AF_CONFIG_OPTION_TT_SIZE_METRICS
      configuration option.   However, it  is strongly  recommended to
      avoid that, adjusting font sizes instead.

    - Global size  metrics values  in the  `FT_Size_Metrics' structure
      can be  different for TrueType  fonts.  Reason is that  in older
      FreeType  versions  the  metrics  were  rounded  differently  to
      integer pixels compared  to all other font  formats, yielding an
      inconsistent behaviour if you used non-native hinting.  Starting
      with this  version, global size  metrics for TrueType  fonts are
      handled the same as other  font formats: `ascender' gets rounded
      up,  `descender'  gets  rounded  down,  `height'  gets  normally
      rounded, and `max_advance' gets normally rounded, too.

      If you need more precise values of (global) ascender, descender,
      height, or  `max_advance', please take the  corresponding values
      from the `FT_Face' structure and scale them manually.

    - If a TrueType font gets loaded with FT_LOAD_NO_HINTING, FreeType
      now scales  the font linearly  again (bug introduced  in version
      2.4.6).

    - CVE-2017-8105,  CVE-2017-8287:  Older   FreeType  versions  have
      out-of-bounds  writes  caused  by  heap-based  buffer  overflows
      related to Type 1 fonts.

        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8105
        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8287


  III. MISCELLANEOUS

    - A  new function  `FT_Set_Default_Properties' has  been added  to
      parse    the    `FREETYPE_PROPERTIES'    environment    variable
      (previously, it  was internal only).   `FT_Init_FreeType' always
      call this  function, but  `FT_New_Library' does not  (similar to
      `FT_Add_Default_Modules').

    - To be in sync with OpenType version 1.7 and newer, macros

        FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
        FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY,
        TT_NAME_ID_PREFERRED_FAMILY
        TT_NAME_ID_PREFERRED_SUBFAMILY

      are renamed to

        FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
        FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY,
        TT_NAME_ID_TYPOGRAPHIC_FAMILY
        TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY

      The old macro names are deprecated (but still available).

    - Support for SFNT `name' tables has been improved.

      . Format  1 `name' tables  are now supported.  Use  new function
        `FT_Get_Sfnt_LangTag' to access associated language tags.

      . Language, encoding, and name IDs have been updated to OpenType
        version 1.8.1.

    - The new CFF  engine now handles the `random'  operator.  All CFF
      opcodes are now supported.

    - The CFF module  has a new property `random-seed'  to control the
      pseudo-random number generation for the `random' operator.

    - The `freetype-config' script is now a wrapper of `pkg-config' if
      this program is available in the path.

    - FT_LOAD_TARGET_LCD  is now  a  variant of  FT_LOAD_TARGET_LIGHT;
      this should provide better rendering results.

    - A mode to display  light auto-hinting with  subpixel positioning
      has been added to `ftdiff'.


======================================================================

CHANGES BETWEEN 2.7 and 2.7.1

  I. IMPORTANT CHANGES

    - Support for the new CFF2 font format as introduced with OpenType
      1.8 has been contributed by Dave Arnolds from Adobe.

    - Preliminary support for variation fonts as specified in OpenType
      1.8 (in addition to the  already existing support for Adobe's MM
      and Apple's  GX formats).  Dave Arnolds  contributed handling of
      advance  width change  variation;  more will  come  in the  next
      version.


  II. IMPORTANT BUG FIXES

    - Handling of  raw CID fonts was partially  broken (bug introduced
      in 2.6.4).

    - CVE-2016-10328:  Older  FreeType versions had  an  out-of-bounds
      write caused by a heap-based  buffer overflow related to the CFF
      fonts.

        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10328


  III. MISCELLANEOUS

    - Some limits for TrueType  bytecode execution have been tightened
      to  speed   up  FreeType's  handling  of   malformed  fonts,  in
      particular to quickly abort endless loops.

      - The  number of  twilight points  can no  longer be  set to  an
        arbitrarily large value.

      - The total number of jump  opcode instructions (like JMPR) with
        negative arguments  is dynamically restricted; the  same holds
        for the total number of iterations in LOOPCALL opcodes.

      The dynamic limits are based on  the number of points in a glyph
      and the number of CVT entries.  Please report if you encounter a
      font where the selected values are not adequate.

    - PCF family names are made more `colorful';  they now include the
      foundry  and information  whether they contain  wide characters.
      For example,  you no longer get `Fixed' but  rather `Sony Fixed'
      or `Misc Fixed Wide'.

    - A new  function `FT_Get_Var_Blend_Coordinates'  (with its  alias
      name  `FT_Get_MM_Blend_Coordinates') to retrieve the  normalized
      blend  coordinates of the currently  selected variation instance
      has been added to the Multiple Masters interface.

    - A new  function `FT_Get_Var_Design_Coordinates' to  retrieve the
      design coordinates of the  currently selected variation instance
      has been added to the Multiple Masters interface.

    - A new load flag `FT_LOAD_BITMAP_METRICS_ONLY' to retrieve bitmap
      information without loading the (embedded) bitmap itself.

    - Retrieving   advance   widths   from   bitmap   strikes   (using
      `FT_Get_Advance' and `FT_Get_Advances') have been sped up.

    - The  usual round  of  fuzzer fixes  to  better reject  malformed
      fonts.

    - The `ftmulti' demo program can now switch engines with key `H'.

    - The  `ftstring'  demo  program   can  now  show  some  built-in,
      non-latin sample strings (to be selected with the TAB key).

    - The  `ftview'  demo program  can  now  switch between  a  font's
      charmaps using the TAB key.


======================================================================

CHANGES BETWEEN 2.6.5 and 2.7

  I. IMPORTANT CHANGES

    - As announced earlier, the 2.7.x series now uses the new subpixel
      hinting  mode as  the  default, emulating  a  modern version  of
      ClearType.

      This change inevitably leads to different rendering results, and
      you   might   change   the   `TT_CONFIG_OPTION_SUBPIXEL_HINTING'
      configuration option to  adapt it to your taste (or  use the new
      `FREETYPE_PROPERTIES'    environment    variable).    See    the
      corresponding entry  below for  version 2.6.4, which  gives more
      information.

    - A new option  `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' has been
      introduced.   If  set (which  is  the  default), an  environment
      variable  `FREETYPE_PROPERTIES' can  be used  to control  driver
      properties.  Example:

        FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
                            cff:no-stem-darkening=1 \
                            autofitter:warping=1

      This allows to select, say, the subpixel hinting mode at runtime
      for a given application.  See file `ftoption.h' for more.


  II. IMPORTANT BUG FIXES

    - After  loading a  named instance  of  a GX  variation font,  the
      `face_index'  value  in  the returned  `FT_Face'  structure  now
      correctly holds the named instance  index in the upper 16bits as
      documented.


  III. MISCELLANEOUS

    - A new macro `FT_IS_NAMED_INSTANCE' to  test whether a given face
      is a named instance.

    - More fixes to GX font handling.

    - Apple's   `GETVARIATION'  bytecode   operator  (needed   for  GX
      variation font support) has been implemented.

    - Another round  of fuzzer fixes,  mainly to reject  invalid fonts
      faster.

    - Handling of raw CID fonts  was broken (bug introduced in version
      2.6.4).

    - The smooth rasterizer has been streamlined  to make it faster by
      approx. 20%.

    - The `ftgrid'  demo program now  understands command  line option
      `-d' to give start-up design coordinates.

    - The `ftdump' demo program has  a new command line option `-p' to
      dump TrueType bytecode instructions.


======================================================================

CHANGES BETWEEN 2.6.4 and 2.6.5

  I. IMPORTANT BUG FIXES

    - Compilation works again  on Mac OS X (bug introduced  in version
      2.6.4).


  II. IMPORTANT CHANGES

    - The new  subpixel hinting  mode is now  disabled by  default; it
      will  be enabled  by default  in the  forthcoming 2.7.x  series.
      Main reason for reverting this feature is the principle of least
      surprise: a  sudden change in  appearance of all fonts  (even if
      the rendering improves  for almost all recent  fonts) should not
      be expected in a new micro version of a series.


======================================================================

CHANGES BETWEEN 2.6.3 and 2.6.4

  I. IMPORTANT CHANGES

    - A new  subpixel hinting  mode has  been contributed  by Nikolaus
      Waxweiler, which is now the  default rendering mode for TrueType
      fonts.  It implements  (almost everything of) version  40 of the
      bytecode engine.

      The existing code  base in FreeType (the  `Infinality code') was
      stripped to the bare minimum  and all configurability removed in
      the  name  of speed  and  simplicity.   The configurability  was
      mainly aimed  at legacy  fonts like Arial,  Times New  Roman, or
      Courier.  [Legacy fonts are fonts  that modify vertical stems to
      achieve clean black-and-white bitmaps.]  The new mode focuses on
      applying a minimal set of rules to all fonts indiscriminately so
      that modern and web fonts  render well while legacy fonts render
      okay.

      Activation  of the  subpixel hinting  support can  be controlled
      with   the   `TT_CONFIG_OPTION_SUBPIXEL_HINTING'   configuration
      option  at compile  time: If  set to  value 1,  you get  the old
      Infinality  mode  (which  was  never  the  default  due  to  its
      slowness).  Value 2 activates the new subpixel hinting mode, and
      value 3 activates both.  The default is value 2.

      At run time,  you can select the subpixel hinting  mode with the
      `interpreter-version'  property (provided  you have  compiled in
      the corresponding hinting mode); see `ftttdrv.h' for more.

    - Support  for  the  following  scripts  has  been  added  to  the
      auto-hinter.

        Armenian, Cherokee, Ethiopic, Georgian, Gujarati, Gurmukhi,
        Malayalam, Sinhala, Tamil


  II. MISCELLANEOUS

    - Type 42 fonts as created by LilyPond are now supported.

    - Minor rendering improvements in the auto-hinter.

    - For experimental  reasons, the old  CFF engine now  supports all
      CFF operators except `random', including the deprecated Multiple
      Masters  instructions.  This  allows the  display of  fonts like
      `ITCGaramondMM-It.otf' (without font variations, though).

    - Another round of fixes to improve handling of invalid fonts.

    - The `ftgrid' demo program now displays the rendered pixels also;
      this can be switched off with the `b' key.  Selection of various
      LCD filtering modes can be done with the `L' key.

    - The demo programs  have been extended to allow  selection of all
      available TrueType bytecode engines.

    - A very early beta version of a new, Qt based demo program called
      `ftinspect'  is  part  of  the   source  code  bundle;  it  will
      eventually supersede  the other  demo programs.   Currently, you
      have to compile  it manually with `qmake; make';  note that many
      features are still missing.


======================================================================

CHANGES BETWEEN 2.6.2 and 2.6.3

  I. IMPORTANT CHANGES

    - Khmer,  Myanmar, Bengali,  and Kannada  script support  has been
      added to the auto-hinter.


  II. MISCELLANEOUS

    - Better  support of  Indic  scripts like  Devanagari  by using  a
      top-to-bottom hinting flow.

    - All  FreeType macros  starting  with two  underscores have  been
      renamed to  avoid a violation of  both the C and  C++ standards.
      Example: Header  macros of the  form `__FOO_H__' are  now called
      `FOO_H_'.  In most cases,  this should be completely transparent
      to the user.   The exception to this  is `__FTERRORS_H__', which
      must be  sometimes undefined by  the user to get  FreeType error
      strings:  Both this  form and  the new  `FTERRORS_H_' macro  are
      accepted for backward compatibility.

    - Minor improvements mainly to the Type 1 driver.

    - The  new CFF  engine now  supports all  Type 2  operators except
      `random'.

    - The macro `_STANDALONE_', used for  compiling the B/W and smooth
      rasterizers  as   stand-alone  modules,  has  been   renamed  to
      `STANDALONE_', since macro names starting with an underscore and
      followed by an uppercase letter are reserved in both C and C++.

    - Function  `FT_Library_SetLcdFilterWeights'  now  also  activates
      custom LCD filter weights (instead of just adjusting them).

    - Support for  `unpatented hinting'  has been  completely removed:
      Consequently,  the two  functions `FT_Face_CheckTrueTypePatents'
      and  `FT_Face_SetUnpatentedHinting'  now  return  always  false,
      doing nothing.

    - The `ftgamma' demo  program has been modernized;  the gamma grid
      display has been moved from `ftview' to this program.

    - In `ftview',  it is now possible to cycle through  the available
      LCD filtering modes.


======================================================================

CHANGES BETWEEN 2.6.1 and 2.6.2

  I. IMPORTANT CHANGES

    - The auto-hinter now supports stem darkening, to be controlled by
      the    new   `no-stem-darkening'    and   `darkening-parameters'
      properties.   This is  an  experimental  feature contributed  by
      Nikolaus Waxweiler, and  the interface might change  in a future
      release.

    - By default, stem darkening is now switched off (for both the CFF
      engine and the  auto-hinter).  The main reason is  that you need
      linear  alpha  blending  and  gamma correction  to  get  correct
      rendering results, and  the latter is not yet  available in most
      freely  available  rendering  stacks like  X11.   Applying  stem
      darkening without proper gamma correction  leads to far too dark
      rendering results.

    - The   meaning  of   `FT_RENDER_MODE_LIGHT'  has   been  slightly
      modified.   It  now  essentially  means `no  hinting  along  the
      horizontal  axis'; in  particular,  no change  of glyph  advance
      widths.  Consequently, the auto-hinter  is used for all scalable
      font  formats  except  for  CFF.    It  is  planned  that  other
      font-specific rendering engines (TrueType, Type 1) will follow.


  II. MISCELLANEOUS

    - The default  LCD filter  has been changed  to be  normalized and
      color-balanced.

    - For    better    compatibility   with    FontConfig,    function
      `FT_Library_SetLcdFilter'  accepts   a  new   enumeration  value
      `FT_LCD_FILTER_LEGACY1'   (which  has   the   same  meaning   as
      `FT_LCD_FILTER_LEGACY').

    - A large number of bugs have been detected by using the libFuzzer
      framework,  which should  further  improve  handling of  invalid
      fonts.  Thanks again to Kostya Serebryany and Bungeman!

    - `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES',  a   new  configuration
      option, controls the maximum number of executed opcodes within a
      bytecode program.  You don't want to change this except for very
      special  situations (e.g.,  making a  library fuzzer  spend less
      time to handle broken fonts).

    - The smooth renderer has been made faster.

    - The `ftstring' demo program now supports subpixel rendering; use
      key `l' to cycle through the LCD modes.

    - The `ftstring'  demo program now supports  color rendering;  use
      the `space' key to cycle through various color combinations.

    - The graphical demo programs now use a default gamma value of 1.8
      (instead of 1.2).


======================================================================

CHANGES BETWEEN 2.6 and 2.6.1

  I. IMPORTANT BUG FIXES

    - It turned  out that for CFFs  only the advance widths  should be
      taken from the  `htmx' table, not the side  bearings.  This bug,
      introduced in  version 2.6.0, makes  it necessary to  upgrade if
      you are using  CFFs; otherwise, you get cropped  glyphs with GUI
      interfaces like GTK or Qt.

    - Accessing Type 42 fonts returned  incorrect results if the glyph
      order of the embedded TrueType font differs from the glyph order
      of the Type 42 charstrings table.


  II. IMPORTANT CHANGES

    - The header  file layout  has been  changed (again),  moving  all
      header files except `ft2build.h' into a subdirectory tree.

      Doing so  reduces the  possibility of  header file  name clashes
      (e.g., FTGL's  `FTGlyph.h' with FreeType's `ftglyph.h')  on case
      insensitive file systems like Mac OS X or Windows.

      Applications  that  use  (a)  the  `freetype-config'  script  or
      FreeType's `freetype2.pc' file for pkg-config to get the include
      directory  for the  compiler,  and (b)  the  documented way  for
      header inclusion like

        #include <ft2build.h>
        #include FT_FREETYPE_H
        ...

      don't need any change to the source code.

    - Simple access  to named instances  in GX variation fonts  is now
      available (in addition to the  previous method via FreeType's MM
      interface).   In  the `FT_Face'  structure,  bits  16-30 of  the
      `face_index' field hold the current named instance index for the
      given face  index, and bits  16-30 of `style_flags'  contain the
