modules/freetype2/docs/CHANGES

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/modules/freetype2/docs/CHANGES	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,4093 @@
     1.4 +
     1.5 +CHANGES BETWEEN 2.5.2 and 2.5.3
     1.6 +
     1.7 +  I. IMPORTANT BUG FIXES
     1.8 +
     1.9 +    - A vulnerability was  identified and fixed in the  new CFF driver
    1.10 +      (cf. http://savannah.nongnu.org/bugs/?41697;  it doesn't  have a
    1.11 +      CVE number yet).  All users should upgrade.
    1.12 +
    1.13 +    - More  bug  fixes related  to  correct  positioning of  composite
    1.14 +      glyphs.
    1.15 +
    1.16 +    - Many fixes to better protect against malformed input.
    1.17 +
    1.18 +
    1.19 +  II. IMPORTANT CHANGES
    1.20 +
    1.21 +    - FreeType can now use the HarfBuzz library to greatly improve the
    1.22 +      auto-hinting of  fonts that  use OpenType features:  Many glyphs
    1.23 +      that are part  of such features but don't have  cmap entries are
    1.24 +      now handled  properly, for  example small caps  or superscripts.
    1.25 +      Define the configuration  macro FT_CONFIG_OPTION_USE_HARFBUZZ to
    1.26 +      activate HarfBuzz support.
    1.27 +
    1.28 +      You need HarfBuzz version 0.9.19 or newer.
    1.29 +
    1.30 +      Note that HarfBuzz depends on  FreeType; this currently causes a
    1.31 +      chicken-and-egg problem  that can be  solved as follows  in case
    1.32 +      HarfBuzz is not yet installed on your system.
    1.33 +
    1.34 +        1. Compile  and  install  FreeType without  the  configuration
    1.35 +           macro FT_CONFIG_OPTION_USE_HARFBUZZ.
    1.36 +
    1.37 +        2. Compile and install HarfBuzz.
    1.38 +
    1.39 +        3. Define  macro  FT_CONFIG_OPTION_USE_HARFBUZZ, then  compile
    1.40 +           and install FreeType again.
    1.41 +
    1.42 +      With FreeType's  `configure' script the procedure  boils down to
    1.43 +      configure, build, and install Freetype, then configure, compile,
    1.44 +      and  install  HarfBuzz,  then configure,  compile,  and  install
    1.45 +      FreeType again (after executing `make distclean').
    1.46 +
    1.47 +    - All  libraries FreeType  depends on  are now  checked using  the
    1.48 +      `pkg-config' configuration files  first, followed by alternative
    1.49 +      methods.
    1.50 +
    1.51 +    - The  new  value  `auto'  for the  various  `--with-XXX'  library
    1.52 +      options   (for   example   `--with-harfbuzz=auto')   makes   the
    1.53 +      `configure' script automatically link to the libraries it finds.
    1.54 +      This is now the default.
    1.55 +
    1.56 +    - In case FreeType's `configure' script  can't find a library, you
    1.57 +      can  pass environment  variables to  circumvent pkg-config,  and
    1.58 +      those variables  have been  harmonized as  a consequence  of the
    1.59 +      changes mentioned above:
    1.60 +
    1.61 +        LIBZ           -> removed; use LIBZ_CFLAGS and LIBZ_LIBS
    1.62 +        LIBBZ2         -> removed; use BZIP2_CFLAGS and BZIP2_LIBS
    1.63 +        LIBPNG_LDFLAGS -> LIBPNG_LIBS
    1.64 +
    1.65 +      `./configure --help' shows all available environment variables.
    1.66 +
    1.67 +    - The `freetype-config'  script now understands  option `--static'
    1.68 +      to emit static linking information.
    1.69 +
    1.70 +
    1.71 +======================================================================
    1.72 +
    1.73 +CHANGES BETWEEN 2.5.1 and 2.5.2
    1.74 +
    1.75 +  I. IMPORTANT BUG FIXES
    1.76 +
    1.77 +    - Improving the display of some broken TrueType fonts introduced a
    1.78 +      bug  that made  FreeType crash  on some  popular (but  not fully
    1.79 +      conformant) fonts like `ahronbd.ttf'.
    1.80 +
    1.81 +    - Another round of improvements to correct positioning and hinting
    1.82 +      of composite glyphs in TrueType fonts.
    1.83 +
    1.84 +
    1.85 +  II. MISCELLANEOUS
    1.86 +
    1.87 +    - Version  2.5.1  introduced a  bug  in  handling embedded  bitmap
    1.88 +      strikes of  TrueType fonts,  causing garbage display  under some
    1.89 +      circumstances.
    1.90 +
    1.91 +    - The   `ftgrid'   demo   program    couldn't   be   compiled   in
    1.92 +      non-development builds.
    1.93 +
    1.94 +
    1.95 +======================================================================
    1.96 +
    1.97 +CHANGES BETWEEN 2.5 and 2.5.1
    1.98 +
    1.99 +  I. IMPORTANT BUG FIXES
   1.100 +
   1.101 +    - For  some WinFNT  files,  the last  glyph  wasn't displayed  but
   1.102 +      incorrectly marked as invalid.
   1.103 +
   1.104 +    - The vertical size of glyphs was  incorrectly set after a call to
   1.105 +      `FT_GlyphSlot_Embolden', resulting in clipped glyphs.
   1.106 +
   1.107 +    - Many fields of the `PCLT' table in SFNT based fonts (if accessed
   1.108 +      with `FT_Get_Sfnt_Table') were computed incorrectly.
   1.109 +
   1.110 +    - In TrueType fonts,  hinting of composite glyphs  could sometimes
   1.111 +      deliver  incorrect positions  of  components or  even  distorted
   1.112 +      shapes.
   1.113 +
   1.114 +
   1.115 +  II. IMPORTANT CHANGES
   1.116 +
   1.117 +    - WOFF font format support has been added.
   1.118 +
   1.119 +    - The auto-hinter now supports Hebrew.  Greek and Cyrillic support
   1.120 +      has been improved.
   1.121 +
   1.122 +    - Support for the forthcoming `OS/2'  SFNT table version 5, as can
   1.123 +      be found e.g. in the `Sitka' font family for Windows 8.1.
   1.124 +
   1.125 +    - The header  file layout  has been changed.   After installation,
   1.126 +      all files are now located in `<prefix>/include/freetype2'.
   1.127 +
   1.128 +      Applications  that  use   (a)  `freetype-config'  or  FreeType's
   1.129 +      `pkg-config' file to get the include directory for the compiler,
   1.130 +      and (b) the documented way for header inclusion like
   1.131 +
   1.132 +        #include <ft2build.h>
   1.133 +        #include FT_FREETYPE_H
   1.134 +        ...
   1.135 +
   1.136 +      don't need any change to the source code.
   1.137 +
   1.138 +
   1.139 +  III. MISCELLANEOUS
   1.140 +
   1.141 +    - The stem  darkening feature  of the  new CFF  engine can  now be
   1.142 +      fine-tuned with the new `darkening-parameters' property.
   1.143 +
   1.144 +    - `ftgrid' has been updated to toggle various engines with the `H'
   1.145 +      key, similar to `ftview' and `ftdiff'.
   1.146 +
   1.147 +    - The functionality of `ttdebug' has been greatly enhanced.
   1.148 +
   1.149 +      . It now displays twilight, storage, and control value data; key
   1.150 +        `T' shows the twilight point  table, key `S' the storage data,
   1.151 +        and key `C' the control value table.
   1.152 +
   1.153 +      . Some  keys  have  been  reassigned  from  lowercase  to  their
   1.154 +        uppercase equivalents; for example `q'  to quit the program is
   1.155 +        now `Q'.
   1.156 +
   1.157 +      . Key `f' finishes the current function.
   1.158 +
   1.159 +      . Key `R' restarts the debugger.
   1.160 +
   1.161 +      . Keys `b' and `p' set a breakpoint.
   1.162 +
   1.163 +      . Key `B' provides a function call backtrace.
   1.164 +
   1.165 +    - Better support of ARMv7 and x86_64 processors.
   1.166 +
   1.167 +    - Apple's `sbix' color bitmap format is now supported.
   1.168 +
   1.169 +    - Improved   auto-hinter  rendering   for  many   TrueType  fonts,
   1.170 +      especially in the range 20-40ppem.
   1.171 +
   1.172 +    - A  new face  flag  `FT_FACE_FLAG_COLOR' has  been  added (to  be
   1.173 +      accessed with the macro `FT_HAS_COLOR').
   1.174 +
   1.175 +    - `FT_Gzip_Uncompress'   (modeled    after   zlib's   `uncompress'
   1.176 +      function)  has been  added; this  is a  by-product of  the newly
   1.177 +      added WOFF support.
   1.178 +
   1.179 +    - Support for  a build with  `cmake' has been contributed  by John
   1.180 +      Cary <cary@txcorp.com>.
   1.181 +
   1.182 +    - Support for x64  builds with Visual C++ has  been contributed by
   1.183 +      Kenneth Miller <kennethadammiller@yahoo.com>
   1.184 +
   1.185 +    - Manual pages for most demo programs have been added.
   1.186 +
   1.187 +    - The GETINFO bytecode instruction for TrueType fonts was buggy if
   1.188 +      used to retrieve subpixel hinting information.  It was necessary
   1.189 +      to set  selector bit 6  to get  results for selector  bits 7-10,
   1.190 +      which is wrong.
   1.191 +
   1.192 +    - Improved computation  of emulated vertical metrics  for TrueType
   1.193 +      fonts.
   1.194 +
   1.195 +    - Fixed horizontal start-up position of vertical phantom points in
   1.196 +      TrueType bytecode.
   1.197 +
   1.198 +
   1.199 +======================================================================
   1.200 +
   1.201 +CHANGES BETWEEN 2.4.12 and 2.5
   1.202 +
   1.203 +  I. IMPORTANT BUG FIXES
   1.204 +
   1.205 +    - The cache manager function `FTC_Manager_Reset'  didn't flush the
   1.206 +      cache.
   1.207 +
   1.208 +
   1.209 +  II. IMPORTANT CHANGES
   1.210 +
   1.211 +    - Behdad Esfahbod  (on behalf  of Google) contributed  support for
   1.212 +      color embedded bitmaps (eg. color emoji).
   1.213 +
   1.214 +      A  new  load  flag,  FT_LOAD_COLOR, makes  FreeType  load  color
   1.215 +      embedded-bitmaps, following this draft specification
   1.216 +
   1.217 +        https://color-emoji.googlecode.com/git/specification/v1.html
   1.218 +
   1.219 +      which defines two new SFNT  tables, `CBDT' and `CBLC' (named and
   1.220 +      modeled  after  `EBDT'  and `EBLC',  respectively).   The  color
   1.221 +      bitmaps  are  stored in  the  new  FT_PIXEL_MODE_BGRA format  to
   1.222 +      represent BGRA  pre-multiplied sRGB  images.  If PNG  support is
   1.223 +      available,  PNG color  images as  defined in  the same  proposed
   1.224 +      specification are supported also.
   1.225 +
   1.226 +      Note that  color bitmaps  are converted  to grayscale  if client
   1.227 +      didn't ask for color.
   1.228 +
   1.229 +    - As  announced in  the  previous release,  the  old FreeType  CFF
   1.230 +      engine  is now  disabled by  default.  It  can be  conditionally
   1.231 +      compiled     by     defining     the     configuration     macro
   1.232 +      CFF_CONFIG_OPTION_OLD_ENGINE.
   1.233 +
   1.234 +    - As announced in the previous release,  all code related to macro
   1.235 +      FT_CONFIG_OPTION_OLD_INTERNALS  has been removed,  thus becoming
   1.236 +      obsolete.
   1.237 +
   1.238 +
   1.239 +  III. MISCELLANEOUS
   1.240 +
   1.241 +    - The  property API  (`FT_Property_Get' and  `FT_Property_Set') is
   1.242 +      now declared as stable.
   1.243 +
   1.244 +      The  exception,   however,  are  the   experimental  auto-hinter
   1.245 +      properties `glyph-to-script-map' and `fallback-script' which are
   1.246 +      subject to change in a forthcoming release.
   1.247 +
   1.248 +    - `ftview' has been updated to  support color embedded bitmaps; it
   1.249 +      can be toggled on and off  with key `c'.  The small cache toggle
   1.250 +      is now key `K'.
   1.251 +
   1.252 +    - It  is now  possible  to  control the  version  of the  TrueType
   1.253 +      hinting engine  using the new `interpreter-version'  property of
   1.254 +      the  `truetype' module:  Versions 35  and 38  (the default)  are
   1.255 +      supported,  which  roughly  corresponds to  disable  and  enable
   1.256 +      subpixel hinting support, respectively.
   1.257 +
   1.258 +      In  both  `ftview'  and  `ftdiff',  switching  between  the  two
   1.259 +      versions  can be  done  with  key `H'.   In  the `ftbench'  demo
   1.260 +      program, command line option `-H'  has been extended to activate
   1.261 +      the non-default interpreter version.
   1.262 +
   1.263 +    - The `ttdebug' program has been further improved.  In particular,
   1.264 +      it accepts a new command line  option `-H' to select the hinting
   1.265 +      engine.
   1.266 +
   1.267 +    - Another round of TrueType subpixel hinting fixes.
   1.268 +
   1.269 +    - The `apinames' tool can now create an import file for NetWare.
   1.270 +
   1.271 +    - 64bit compilation of the new CFF engine was buggy.
   1.272 +
   1.273 +    - Some fixes to improve robustness in memory-tight situations.
   1.274 +
   1.275 +
   1.276 +======================================================================
   1.277 +
   1.278 +CHANGES BETWEEN 2.4.11 and 2.4.12
   1.279 +
   1.280 +    - We have another CFF parsing and hinting engine!  Written by Dave
   1.281 +      Arnold <darnold@adobe.com>,  this work  has been  contributed by
   1.282 +      Adobe in  collaboration with Google.   It is vastly  superior to
   1.283 +      the old CFF engine, and it  will replace it in the next release.
   1.284 +      Right  now,  it  is  still  off by  default,  and  you  have  to
   1.285 +      explicitly select it using  the new `hinting-engine' property of
   1.286 +      the cff driver:
   1.287 +
   1.288 +        ...
   1.289 +        #include FT_MODULE_H
   1.290 +        #include FT_CFF_DRIVER_H
   1.291 +
   1.292 +        FT_Library  library;
   1.293 +        int         engine = FT_CFF_HINTING_ADOBE;
   1.294 +
   1.295 +
   1.296 +        ...
   1.297 +        FT_Property_Set( library, "cff", "hinting-engine", &engine );
   1.298 +
   1.299 +      The code has  a (mature) beta status; we encourage  all users to
   1.300 +      test it and report any problems.
   1.301 +
   1.302 +      In case you want to activate the new CFF engine unconditionally,
   1.303 +      apply this patch:
   1.304 +
   1.305 +--- snip ---
   1.306 +diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
   1.307 +index ebcf189..3f2ce6b 100644
   1.308 +--- a/src/cff/cffobjs.c
   1.309 ++++ b/src/cff/cffobjs.c
   1.310 +@@ -1056,7 +1056,7 @@
   1.311 +
   1.312 +
   1.313 +     /* set default property values */
   1.314 +-    driver->hinting_engine    = FT_CFF_HINTING_FREETYPE;
   1.315 ++    driver->hinting_engine    = FT_CFF_HINTING_ADOBE;
   1.316 +     driver->no_stem_darkening = FALSE;
   1.317 +
   1.318 +     return FT_Err_Ok;
   1.319 +--- snip ---
   1.320 +
   1.321 +    - The  macro FT_CONFIG_OPTION_OLD_INTERNALS  is no  longer set  by
   1.322 +      default.  In  the next  release, we  will completely  remove the
   1.323 +      associated code.   Please update your  programs in case  you are
   1.324 +      still using this macro.
   1.325 +
   1.326 +
   1.327 +  II. MISCELLANEOUS
   1.328 +
   1.329 +    - The  (top-level)  `configure'  script   now  respects  the  MAKE
   1.330 +      environment variable to specify a `make' binary.   For backwards
   1.331 +      compatibility, GNUMAKE still overrides MAKE, though.
   1.332 +
   1.333 +    - The `ftview'  and `ftdiff'  demo programs have  been redesigned,
   1.334 +      showing  more options  permanently  on the  screen, among  other
   1.335 +      minor improvements.
   1.336 +
   1.337 +    - Using the `H'  key, it is now possible to  select the CFF engine
   1.338 +      in both `ftview' and `ftdiff'.
   1.339 +
   1.340 +    - The new command line option `-H' for `ftbench' selects the Adobe
   1.341 +      CFF engine.
   1.342 +
   1.343 +    - It is  now possible  to directly select  the LCD  rendering mode
   1.344 +      with the keys `A'-`F' in  `ftview'.  The key mapping for cycling
   1.345 +      through LCD modes  has been changed from `K' and  `L' to `k' and
   1.346 +      `l', and  toggling custom LCD  filtering is no longer  mapped to
   1.347 +      key `F' but to key `L'.
   1.348 +
   1.349 +    - In `ftdiff',  key `x' toggles  between layout modes:  Either use
   1.350 +      the  advance width  (this is  new and  now the  default) or  the
   1.351 +      bounding box information to determine line breaks.
   1.352 +
   1.353 +    - For all demo  tools, the new command line option  `-v' shows the
   1.354 +      version.
   1.355 +
   1.356 +    - For the demo tools with a GUI, the new command line options `-w'
   1.357 +      and `-h' select  the width and the height of  the output window,
   1.358 +      respectively.
   1.359 +
   1.360 +    - The `ttdebug' program was broken and has been reactivated.  Note
   1.361 +      that this program is not compiled by default.
   1.362 +
   1.363 +
   1.364 +======================================================================
   1.365 +
   1.366 +CHANGES BETWEEN 2.4.10 and 2.4.11
   1.367 +
   1.368 +  I. IMPORTANT BUG FIXES
   1.369 +
   1.370 +    - Some vulnerabilities in the  BDF implementation have been fixed.
   1.371 +      Users of this font format should upgrade.
   1.372 +
   1.373 +
   1.374 +  II. IMPORTANT CHANGES
   1.375 +
   1.376 +    - Subpixel  hinting support  has been  contributed by  Infinality,
   1.377 +      based on Greg Hitchcock's whitepaper at
   1.378 +
   1.379 +        http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
   1.380 +
   1.381 +      Originally, it was a separate patch available from
   1.382 +
   1.383 +        http://www.infinality.net/blog/
   1.384 +
   1.385 +      and which has been integrated.
   1.386 +
   1.387 +      Note that  ClearType support is not  completely implemented!  In
   1.388 +      particular,  full support  for the  options `compatible_widths',
   1.389 +      `symmetrical_smoothing,  and  `bgr'  (via the  GETINFO  bytecode
   1.390 +      instruction) is missing.
   1.391 +
   1.392 +      Activation of  subpixel hinting  support can be  controlled with
   1.393 +      the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it
   1.394 +      is switched off by default.  This feature is still experimental;
   1.395 +      we welcome test reports!
   1.396 +
   1.397 +    - Support for OpenType collections (OTC) has been added.
   1.398 +
   1.399 +    - Pure CFF fonts within an SFNT wrapper are now supported.
   1.400 +
   1.401 +
   1.402 +  III. MISCELLANEOUS
   1.403 +
   1.404 +    - Minor rendering improvements to the auto-hinter.
   1.405 +
   1.406 +    - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°.
   1.407 +
   1.408 +    - Experimental support  to handle `property modules',  for example
   1.409 +      to control the  behaviour of the auto-hinter.   The API consists
   1.410 +      of two new functions, `FT_Property_Set' and `FT_Property_Get'.
   1.411 +
   1.412 +      The code is  still subject to change and should  not be used for
   1.413 +      production.
   1.414 +
   1.415 +    - The `ftdiff' demo program now supports UTF-8 encoded input files
   1.416 +      for option `-f'.
   1.417 +
   1.418 +    - Using keys `r' and `R', you can now adjust the stroker radius in
   1.419 +      the `ftview' demo program.
   1.420 +
   1.421 +    - Other, minor fixes and improvements.
   1.422 +
   1.423 +
   1.424 +======================================================================
   1.425 +
   1.426 +CHANGES BETWEEN 2.4.9 and 2.4.10
   1.427 +
   1.428 +  I. IMPORTANT BUG FIXES
   1.429 +
   1.430 +    - Incremental glyph loading as needed by ghostscript was broken.
   1.431 +
   1.432 +
   1.433 +  II. MISCELLANEOUS
   1.434 +
   1.435 +    - A new  function `FT_Outline_EmboldenXY',  contributed by  Alexei
   1.436 +      Podtelezhnikov.
   1.437 +
   1.438 +    - In the `ftview' demo program, key `e' has been replaced with `x'
   1.439 +      and `y' to  embolden in  the horizontal and  vertical direction,
   1.440 +      respectively.
   1.441 +
   1.442 +    - The glyph  spacing computation  in `FT_GlyphSlot_Embolden'  (and
   1.443 +      similar code in `ftview') has been improved.
   1.444 +
   1.445 +    - Minor  improvements to  the TrueType  bytecode  interpreter  and
   1.446 +      glyph loader, the auto-hinter, and the B/W rasterizer.
   1.447 +
   1.448 +
   1.449 +======================================================================
   1.450 +
   1.451 +CHANGES BETWEEN 2.4.8 and 2.4.9
   1.452 +
   1.453 +  I. IMPORTANT BUG FIXES
   1.454 +
   1.455 +    - Another round of fixes to better handle invalid fonts.   Many of
   1.456 +      them are vulnerabilities  (see CVE-2012-1126 up to CVE-2012-1144
   1.457 +      and SA48320) so all users should upgrade.
   1.458 +
   1.459 +
   1.460 +  II. MISCELLANEOUS
   1.461 +
   1.462 +    - The `ENCODING -1 <n>' format of BDF fonts is now supported.
   1.463 +
   1.464 +    - For BDF fonts,  support for the whole Unicode encoding range has
   1.465 +      been added.
   1.466 +
   1.467 +    - Better TTF support for x_ppem != y_ppem.
   1.468 +
   1.469 +    - `FT_Get_Advances' sometimes returned bogus values.
   1.470 +
   1.471 +    - The  demo  programs  no  longer  recognize  and  handle  default
   1.472 +      suffixes; you now have to always specify the complete font name.
   1.473 +
   1.474 +    - Better rendering and LCD mode cycling added to `ftview'.
   1.475 +
   1.476 +
   1.477 +======================================================================
   1.478 +
   1.479 +CHANGES BETWEEN 2.4.7 and 2.4.8
   1.480 +
   1.481 +  I. IMPORTANT BUG FIXES
   1.482 +
   1.483 +    - Some vulnerabilities in handling CID-keyed PostScript fonts have
   1.484 +      been fixed; see CVE-2011-3439.
   1.485 +
   1.486 +
   1.487 +  II. MISCELLANEOUS
   1.488 +
   1.489 +    - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value',  to
   1.490 +      retrieve most of the dictionary keys in Type 1 fonts.
   1.491 +
   1.492 +
   1.493 +======================================================================
   1.494 +
   1.495 +CHANGES BETWEEN 2.4.6 and 2.4.7
   1.496 +
   1.497 +  I. IMPORTANT BUG FIXES
   1.498 +
   1.499 +    - Some  vulnerabilities in handling Type 1 fonts  have been fixed;
   1.500 +      see CVE-2011-3256.
   1.501 +
   1.502 +
   1.503 +  II. MISCELLANEOUS
   1.504 +
   1.505 +    - FreeType  now properly  handles ZapfDingbats  glyph names  while
   1.506 +      constructing a Unicode character map (for fonts which don't have
   1.507 +      one).
   1.508 +
   1.509 +
   1.510 +======================================================================
   1.511 +
   1.512 +CHANGES BETWEEN 2.4.5 and 2.4.6
   1.513 +
   1.514 +  I. IMPORTANT BUG FIXES
   1.515 +
   1.516 +    - For TrueType based fonts, the ascender and descender values were
   1.517 +      incorrect sometimes  (off by a pixel if the ppem value was not a
   1.518 +      multiple of 5).   Depending on the use you might now  experience
   1.519 +      a different  layout; the  change should  result in  better, more
   1.520 +      consistent line spacing.
   1.521 +
   1.522 +    - Fix CVE-2011-0226  which causes a  vulnerability while  handling
   1.523 +      Type 1 fonts.
   1.524 +
   1.525 +    - BDF fonts  containing  glyphs with negative values  for ENCODING
   1.526 +      were  incorrectly  rejected.  This  bug has  been introduced  in
   1.527 +      FreeType version 2.2.0.
   1.528 +
   1.529 +    - David Bevan contributed a major revision of the FreeType stroker
   1.530 +      code:
   1.531 +
   1.532 +      . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
   1.533 +
   1.534 +      . A new  line join style,  FT_STROKER_LINEJOIN_MITER_FIXED,  has
   1.535 +        been introduced to support PostScript and PDF miter joins.
   1.536 +
   1.537 +      . FT_STROKER_LINEJOIN_MITER_VARIABLE  has been introduced  as an
   1.538 +        alias for FT_STROKER_LINEJOIN_MITER.
   1.539 +
   1.540 +      . Various stroking glitches has been fixed.
   1.541 +
   1.542 +
   1.543 +  II. MISCELLANEOUS
   1.544 +
   1.545 +      - SFNT bitmap fonts which contain an outline glyph for `.notdef'
   1.546 +        only no longer set the FT_FACE_FLAG_SCALABLE flag.
   1.547 +
   1.548 +
   1.549 +======================================================================
   1.550 +
   1.551 +CHANGES BETWEEN 2.4.4 and 2.4.5
   1.552 +
   1.553 +  I. IMPORTANT BUG FIXES
   1.554 +
   1.555 +    - A rendering regression  for second-order Bézier curves  has been
   1.556 +      fixed, introduced in 2.4.3.
   1.557 +
   1.558 +
   1.559 +  II. IMPORTANT CHANGES
   1.560 +
   1.561 +    - If autohinting  is not  explicitly disabled,  FreeType now  uses
   1.562 +      the autohinter if  a TrueType based font doesn't  contain native
   1.563 +      hints.
   1.564 +
   1.565 +    - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH  has been made
   1.566 +      redundant and  is simply ignored;  this means that FreeType  now
   1.567 +      ignores the global advance width value in TrueType fonts.
   1.568 +
   1.569 +
   1.570 +  III. MISCELLANEOUS
   1.571 +
   1.572 +    - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of
   1.573 +      a font.
   1.574 +
   1.575 +    - Support for PCF files compressed with bzip2 has been contributed
   1.576 +      by Joel  Klinghed.  To  make this  work, the  OS must  provide a
   1.577 +      bzip2 library.
   1.578 +
   1.579 +    - Bradley  Grainger  contributed  project  and  solution  files in
   1.580 +      Visual Studio 2010 format.
   1.581 +
   1.582 +    - Again some fixes to better handle broken fonts.
   1.583 +
   1.584 +    - Some improvements to the B/W rasterizer.
   1.585 +
   1.586 +    - Fixes to the cache module to improve robustness.
   1.587 +
   1.588 +    - Just  Fill Bugs contributed (experimental) code to compute  blue
   1.589 +      zones for CJK Ideographs, improving the alignment of  horizontal
   1.590 +      stems at the top or bottom edges.
   1.591 +
   1.592 +    - The `ftgrid' demo program  can now display  autohinter segments,
   1.593 +      to be toggled on and off with key `s'.
   1.594 +
   1.595 +
   1.596 +======================================================================
   1.597 +
   1.598 +CHANGES BETWEEN 2.4.3 and 2.4.4
   1.599 +
   1.600 +  I. IMPORTANT BUG FIXES
   1.601 +
   1.602 +    - UVS support (TrueType/OpenType cmap format 14) support is fixed.
   1.603 +      This regression has been introduced in version 2.4.0.
   1.604 +
   1.605 +
   1.606 +  II. MISCELLANEOUS
   1.607 +
   1.608 +    - Detect tricky fonts (e.g. MingLiU)  by the lengths and checksums
   1.609 +      of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when
   1.610 +      a TrueType font without family name is given.  The previous fix,
   1.611 +      introduced in 2.4.3,  was too rigorous,  causing many  subsetted
   1.612 +      fonts (mainly  from PDF files) displayed badly  because FreeType
   1.613 +      forced  rendering with  the TrueType bytecode engine  instead of
   1.614 +      the autohinter.
   1.615 +
   1.616 +    - Better support for 64bit platforms.
   1.617 +
   1.618 +    - More fixes to improve handling of broken fonts.
   1.619 +
   1.620 +
   1.621 +======================================================================
   1.622 +
   1.623 +CHANGES BETWEEN 2.4.2 and 2.4.3
   1.624 +
   1.625 +  I. IMPORTANT BUG FIXES
   1.626 +
   1.627 +    - Fix rendering of certain cubic, S-shaped arcs.   This regression
   1.628 +      has been introduced in version 2.4.0.
   1.629 +
   1.630 +
   1.631 +  II. MISCELLANEOUS
   1.632 +
   1.633 +    - To  fix  the  above  mentioned  rendering  issue,  a  new spline
   1.634 +      flattening algorithm  has been  introduced which  speeds up both
   1.635 +      conic and cubic arcs.
   1.636 +
   1.637 +    - Handling of broken fonts has been further improved.
   1.638 +
   1.639 +
   1.640 +======================================================================
   1.641 +
   1.642 +CHANGES BETWEEN 2.4.1 and 2.4.2
   1.643 +
   1.644 +  I. IMPORTANT BUG FIXES
   1.645 +
   1.646 +    - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
   1.647 +
   1.648 +    - Handling Type 42 font deallocation was broken; additionally, the
   1.649 +      library is now more robust against malformed Type 42 fonts.
   1.650 +
   1.651 +
   1.652 +  II. MISCELLANEOUS
   1.653 +
   1.654 +    - Two new functions,  `FT_Reference_Library' (in FT_MODULE_H)  and
   1.655 +      `FT_Reference_Face'  (in  FT_FREETYPE_H),  have  been  added  to
   1.656 +      simplify life-cycle management.  A counter gets initialized to 1
   1.657 +      at the  time an  FT_Library (or  FT_Face) structure  is created.
   1.658 +      The  two  new   functions  increment  the  respective   counter.
   1.659 +      `FT_Done_Library' and `FT_Done_Face' then only destroy a library
   1.660 +      or face if the counter is 1, otherwise they simply decrement the
   1.661 +      counter.
   1.662 +
   1.663 +
   1.664 +======================================================================
   1.665 +
   1.666 +CHANGES BETWEEN 2.4.0 and 2.4.1
   1.667 +
   1.668 +  I. IMPORTANT CHANGES
   1.669 +
   1.670 +    - A serious bug in the  CFF font module prevented  display of many
   1.671 +      glyphs in CFF fonts like `MinionPro-Regular.otf'.
   1.672 +
   1.673 +
   1.674 +======================================================================
   1.675 +
   1.676 +CHANGES BETWEEN 2.3.12 and 2.4.0
   1.677 +
   1.678 +  I. IMPORTANT CHANGES
   1.679 +
   1.680 +    - Since May  2010, all  patents  regarding  the TrueType  bytecode
   1.681 +      interpreter have expired worldwide.  Consequently, we now define
   1.682 +      TT_CONFIG_OPTION_BYTECODE_INTERPRETER by  default (and  undefine
   1.683 +      TT_CONFIG_OPTION_UNPATENTED_HINTING).
   1.684 +
   1.685 +    - A new function `FT_Library_SetLcdFilterWeights' is available  to
   1.686 +      adjust the filter weights set by `FT_Library_SetLcdFilter'.
   1.687 +
   1.688 +
   1.689 +  II. MISCELLANEOUS
   1.690 +
   1.691 +    - Thanks to many reports from Robert Święcki, FreeType's stability
   1.692 +      in handling broken or damaged fonts is much improved.
   1.693 +
   1.694 +    - Support  for LCD  filter  control has  been  added to  the  demo
   1.695 +      programs `ftdiff' and `ftview'.
   1.696 +
   1.697 +
   1.698 +======================================================================
   1.699 +
   1.700 +CHANGES BETWEEN 2.3.11 and 2.3.12
   1.701 +
   1.702 +  I. IMPORTANT CHANGES
   1.703 +
   1.704 +    - For  `FT_Open_Face',  new  parameters  are  available  to ignore
   1.705 +      preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
   1.706 +      FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
   1.707 +
   1.708 +
   1.709 +  II. MISCELLANEOUS
   1.710 +
   1.711 +    - Support  for  incremental  font  loading  (controlled  with  the
   1.712 +      FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
   1.713 +
   1.714 +    - Better support for vertical metrics.
   1.715 +
   1.716 +    - Various minor bug fixes.
   1.717 +
   1.718 +
   1.719 +======================================================================
   1.720 +
   1.721 +CHANGES BETWEEN 2.3.10 and 2.3.11
   1.722 +
   1.723 +  I. IMPORTANT BUG FIXES
   1.724 +
   1.725 +    - Version 2.3.10 broke PCF support.
   1.726 +
   1.727 +
   1.728 +======================================================================
   1.729 +
   1.730 +CHANGES BETWEEN 2.3.10 and 2.3.9
   1.731 +
   1.732 +  I. IMPORTANT BUG FIXES
   1.733 +
   1.734 +    - If all  ASCII digits in a  font have the  same (unscaled) width,
   1.735 +      the autohinter respects this and won't change it.
   1.736 +
   1.737 +    - TrueType fonts  are now  rasterized correctly  if the horizontal
   1.738 +      and vertical resolution differ.
   1.739 +
   1.740 +    - Type 1 fonts are now handled with increased precision internally
   1.741 +      to avoid serious rounding issues if non-integral coordinates are
   1.742 +      encountered.
   1.743 +
   1.744 +    - Horizontally  condensed CFF  fonts (using the font  matrix) were
   1.745 +      rendered  incorrectly.   This  bug  has  been  introduced  after
   1.746 +      release 2.3.5.
   1.747 +
   1.748 +
   1.749 +  II. IMPORTANT CHANGES
   1.750 +
   1.751 +    - Support for the SFNT cmap 13 table format (as defined by the new
   1.752 +      OpenType 1.6 specification) has been added.
   1.753 +
   1.754 +    - B/W rasterization  of well-hinted TrueType  fonts at small sizes
   1.755 +      has been greatly improved.
   1.756 +
   1.757 +    - Calculation  of  vertical  metrics in  OpenType  fonts has  been
   1.758 +      improved.
   1.759 +
   1.760 +
   1.761 +  III. MISCELLANEOUS
   1.762 +
   1.763 +    - It  is now  possible to  change  the emboldening  factor in  the
   1.764 +      `ftview' demo program with keys `e' and `E'.
   1.765 +
   1.766 +    - It is  now possible  to change the  slant value in  the `ftview'
   1.767 +      demo program with keys `s' and `S'.
   1.768 +
   1.769 +    - The  5-levels  grayscale  mode of  the `ftraster'  module (which
   1.770 +      FreeType doesn't use by default) was broken since version 2.3.0.
   1.771 +
   1.772 +    - Compilation of the  `ftgrays' and `ftraster' modules  was broken
   1.773 +      in stand-alone mode.
   1.774 +
   1.775 +    - Various fixes for compilation on 64bit and 16bit architectures.
   1.776 +
   1.777 +
   1.778 +======================================================================
   1.779 +
   1.780 +CHANGES BETWEEN 2.3.9 and 2.3.8
   1.781 +
   1.782 +  I. IMPORTANT BUG FIXES
   1.783 +
   1.784 +    - Very unfortunately, FreeType 2.3.8 contained a change that broke
   1.785 +      its  official ABI.  The  end result  is  that programs  compiled
   1.786 +      against previous versions of the library, but dynamically linked
   1.787 +      to  2.3.8 can  experience  memory corruption  if  they call  the
   1.788 +      `FT_Get_PS_Font_Info' function.
   1.789 +
   1.790 +      We recommend all users to  upgrade to 2.3.9 as soon as possible,
   1.791 +      or to downgrade to a previous  release of the library if this is
   1.792 +      not an option.
   1.793 +
   1.794 +      The  origin of the  bug is  that a  new field  was added  to the
   1.795 +      publicly  defined  `PS_FontInfoRec'  structure.   Unfortunately,
   1.796 +      objects of this  type can be stack or  heap allocated by callers
   1.797 +      of   `FT_Get_PS_Font_Info',  resulting   in   a  memory   buffer
   1.798 +      overwrite with its implementation in 2.3.8.
   1.799 +
   1.800 +      If  you want to  know whether  your code  is vulnerable  to this
   1.801 +      issue,  simply  search  for  the  substrings  `PS_FontInfo'  and
   1.802 +      `PS_Font_Info' in your source code.  If none is found, your code
   1.803 +      is safe and is not affected.
   1.804 +
   1.805 +      The FreeType team apologizes for the problem.
   1.806 +
   1.807 +    - The POSIX support  of MacOS resource-fork fonts  (Suitcase fonts
   1.808 +      and LaserWriter Type1 PostScript fonts) was broken in 2.3.8.  If
   1.809 +      FreeType2 is built without Carbon framework, these fonts are not
   1.810 +      handled correctly.  Version 2.3.7 didn't have this bug.
   1.811 +
   1.812 +    - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
   1.813 +      almost all font formats except TrueType fonts.
   1.814 +
   1.815 +    - Fix a bug  in the SFNT  kerning table  loader/parser which could
   1.816 +      crash the engine if certain malformed tables were encountered.
   1.817 +
   1.818 +    - Composite SFNT bitmaps are now handled correctly.
   1.819 +
   1.820 +
   1.821 +  II. IMPORTANT CHANGES
   1.822 +
   1.823 +    - The   new  functions   `FT_Get_CID_Is_Internally_CID_keyed'  and
   1.824 +      `FT_Get_CID_From_Glyph_Index'  can be  used to  access CID-keyed
   1.825 +      CFF fonts  via CID  values.  This code  has been  contributed by
   1.826 +      Michael Toftdal.
   1.827 +
   1.828 +
   1.829 +  III. MISCELLANEOUS
   1.830 +
   1.831 +    - `FT_Outline_Get_InsideBorder'  returns   FT_STROKER_BORDER_RIGHT
   1.832 +      for empty outlines.  This was incorrectly documented.
   1.833 +
   1.834 +    - The `ftview' demo program now supports UTF-8 encoded strings.
   1.835 +
   1.836 +
   1.837 +======================================================================
   1.838 +
   1.839 +CHANGES BETWEEN 2.3.8 and 2.3.7
   1.840 +
   1.841 +  I. IMPORTANT BUG FIXES
   1.842 +
   1.843 +    - CID-keyed fonts in an SFNT wrapper were not handled correctly.
   1.844 +
   1.845 +    - The smooth renderer produced truncated images (on the right) for
   1.846 +      outline parts with negative horizontal values.  Most fonts don't
   1.847 +      contain outlines left  to the y coordinate axis, but  the effect
   1.848 +      was very noticeable for outlines processed with FT_Glyph_Stroke,
   1.849 +      using thick strokes.
   1.850 +
   1.851 +    - `FT_Get_TrueType_Engine_Type'  returned a  wrong  value if  both
   1.852 +      configuration  macros  TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
   1.853 +      TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
   1.854 +
   1.855 +    - The  `face_index'  field  in   the  `FT_Face'  structure  wasn't
   1.856 +      initialized properly after calling FT_Open_Face and friends with
   1.857 +      a positive face index for CFFs,  WinFNTs, and, most importantly,
   1.858 +      for TrueType Collections (TTCs).
   1.859 +
   1.860 +
   1.861 +  II. IMPORTANT CHANGES
   1.862 +
   1.863 +    - Rudimentary support for Type 1  fonts and CID-keyed Type 1 fonts
   1.864 +      in an SFNT wrapper has been  added -- such fonts are used on the
   1.865 +      Mac.  The core  SFNT tables `TYP1' and `CID '  are passed to the
   1.866 +      PS Type 1  and CID-keyed PS font drivers;  other tables (`ALMX',
   1.867 +      `BBOX', etc.) are not supported yet.
   1.868 +
   1.869 +    - A  new interface  to extract  advance values  of glyphs  without
   1.870 +      loading their outlines has been added.  The functions are called
   1.871 +      `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
   1.872 +      `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
   1.873 +
   1.874 +    - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
   1.875 +      contributed  by   David  Bevan  to  access   the  embedding  and
   1.876 +      subsetting restriction information of fonts.
   1.877 +
   1.878 +
   1.879 +  III. MISCELLANEOUS
   1.880 +
   1.881 +    - FT_MulFix is now an inlined function; by default, assembler code
   1.882 +      is provided for x86 and ARM.  See FT_CONFIG_OPTION_INLINE_MULFIX
   1.883 +      and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
   1.884 +
   1.885 +    - The handling of `tricky' fonts  (this is, fonts which don't work
   1.886 +      with the  autohinter, needing the font  format's hinting engine)
   1.887 +      has been generalized and changed slightly:
   1.888 +
   1.889 +      . A new  face flag  FT_FACE_FLAG_TRICKY indicates that  the font
   1.890 +        format's  hinting engine is  necessary for  correct rendering.
   1.891 +        The macro FT_IS_TRICKY can be used to check this flag.
   1.892 +
   1.893 +      . FT_LOAD_NO_HINTING is now ignored for tricky fonts.  To really
   1.894 +        force  raw  loading  of  such fonts  (without  hinting),  both
   1.895 +        FT_LOAD_NO_HINTING  and FT_LOAD_NO_AUTOHINT  must  be used  --
   1.896 +        this is something which you probably never want to do.
   1.897 +
   1.898 +      . Tricky  TrueType fonts  always use  the  bytecode interpreter,
   1.899 +        either the patented or unpatented version.
   1.900 +
   1.901 +    - The  function  `FT_GlyphSlot_Own_Bitmap'  has  been  moved  from
   1.902 +      FT_SYNTHESIS_H to FT_BITMAP_H; it  is now part of the `official'
   1.903 +      API.   (The functions  in  FT_SYNTHESIS_H are  still subject  to
   1.904 +      change, however.)
   1.905 +
   1.906 +    - In the  `ftdiff'  demo  program you  can now  toggle the  use of
   1.907 +      FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
   1.908 +
   1.909 +
   1.910 +======================================================================
   1.911 +
   1.912 +CHANGES BETWEEN 2.3.7 and 2.3.6
   1.913 +
   1.914 +  I. IMPORTANT BUG FIXES
   1.915 +
   1.916 +    - If the library  was compiled on an i386  platform using gcc, and
   1.917 +      compiler  option -O3 was  given, `FT_MulFix'  sometimes returned
   1.918 +      incorrect  results   which  could  have   caused  problems  with
   1.919 +      `FT_Request_Metrics'   and  `FT_Select_Metrics',   returning  an
   1.920 +      incorrect descender size.
   1.921 +
   1.922 +    - Pure CFFs without  subfonts were scaled incorrectly  if the font
   1.923 +      matrix  was  non-standard.  This  bug  has  been  introduced  in
   1.924 +      version 2.3.6.
   1.925 +
   1.926 +    - The  `style_name'  field  in  the  `FT_FaceRec'  structure often
   1.927 +      contained  a wrong  value for  Type 1  fonts.  This misbehaviour
   1.928 +      has been  introduced  in  version  2.3.6  while  trying  to  fix
   1.929 +      another   problem.   [Note,  however,   that   this   value   is
   1.930 +      informative only  since  the  used  algorithm to  extract  it is
   1.931 +      very simplistic.]
   1.932 +
   1.933 +
   1.934 +  II. IMPORTANT CHANGES
   1.935 +
   1.936 +    - Two      new      macros,      FT_OUTLINE_SMART_DROPOUTS     and
   1.937 +      FT_OUTLINE_EXCLUDE_STUBS,  have been introduced.   Together with
   1.938 +      FT_OUTLINE_IGNORE_DROPOUTS (which  was ignored previously) it is
   1.939 +      now possible to control the dropout mode  of the `raster' module
   1.940 +      (for B&W rasterization),   using  the   `flags'  field   in  the
   1.941 +      `FT_Outline' structure.
   1.942 +
   1.943 +    - The TrueType bytecode interpreter now passes the dropout mode to
   1.944 +      the B&W rasterizer.  This greatly increases the output for small
   1.945 +      ppem values of many fonts like `pala.ttf'.
   1.946 +
   1.947 +
   1.948 +======================================================================
   1.949 +
   1.950 +CHANGES BETWEEN 2.3.6 and 2.3.5
   1.951 +
   1.952 +  I. IMPORTANT BUG FIXES
   1.953 +
   1.954 +    - A  bunch of  potential security  problems have  been found.  All
   1.955 +      users should update.
   1.956 +
   1.957 +    - Microsoft  Unicode  cmaps  in  TrueType  fonts  are  now  always
   1.958 +      preferred over Apple cmaps.  This is not a bug per se, but there
   1.959 +      exist some buggy  fonts created for MS which  have broken  Apple
   1.960 +      cmaps.  This affects  only the automatic  selection of FreeType;
   1.961 +      it's always possible to manually select an Apple Unicode cmap if
   1.962 +      desired.
   1.963 +
   1.964 +    - Many bug fixes to the TrueType bytecode interpreter.
   1.965 +
   1.966 +    - Improved Mac support.
   1.967 +
   1.968 +    - Subsetted CID-keyed CFFs are now supported correctly.
   1.969 +
   1.970 +    - CID-keyed CFFs with subfonts which are scaled in a  non-standard
   1.971 +      way are now handled correctly.
   1.972 +
   1.973 +    - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
   1.974 +      the font was a Windows (bitmap) FNT/FON.
   1.975 +
   1.976 +
   1.977 +  II. IMPORTANT CHANGES
   1.978 +
   1.979 +    - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
   1.980 +      access to  those fields in a CID-keyed font.  The code  has been
   1.981 +      contributed by Derek Clegg.
   1.982 +
   1.983 +    - George Williams  contributed  code  to validate  the new  `MATH'
   1.984 +      OpenType  table (within  the `otvalid'  module).  The  `ftvalid'
   1.985 +      demo program has been extended accordingly.
   1.986 +
   1.987 +    - An API for cmap 14 support  (for Unicode Variant Selectors, UVS)
   1.988 +      has been contributed by George Williams.
   1.989 +
   1.990 +    - A new face flag FT_FACE_FLAG_CID_KEYED has been added,  together
   1.991 +      with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
   1.992 +      CID-keyed.
   1.993 +
   1.994 +
   1.995 +  III. MISCELLANEOUS
   1.996 +
   1.997 +    - Build support for symbian has been contributed.
   1.998 +
   1.999 +    - Better WGL4 glyph name support, contributed by Sergey Tolstov.
  1.1000 +
  1.1001 +    - Debugging output of the  various FT_TRACEX macros is now sent to
  1.1002 +      stderr.
  1.1003 +
  1.1004 +    - The `ftview' demo program now provides artificial slanting too.
  1.1005 +
  1.1006 +    - The `ftvalid' demo  program has a new  option `-f' to select the
  1.1007 +      font index.
  1.1008 +
  1.1009 +
  1.1010 +======================================================================
  1.1011 +
  1.1012 +CHANGES BETWEEN 2.3.5 and 2.3.4
  1.1013 +
  1.1014 +  I. IMPORTANT BUG FIXES
  1.1015 +
  1.1016 +    - Some subglyphs in TrueType fonts were handled incorrectly due to
  1.1017 +      a missing graphics state reinitialization.
  1.1018 +
  1.1019 +    - Large .Z files  (as distributed with some X11  packages) weren't
  1.1020 +      handled correctly, making FreeType increase the heap stack in an
  1.1021 +      endless loop.
  1.1022 +
  1.1023 +    - A large  number of  bugs have  been fixed  to avoid  crashes and
  1.1024 +      endless loops with invalid fonts.
  1.1025 +
  1.1026 +
  1.1027 +  II. IMPORTANT CHANGES
  1.1028 +
  1.1029 +    - The  two new  cache functions  `FTC_ImageCache_LookupScaler' and
  1.1030 +      `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
  1.1031 +      glyphs using an  `FTC_Scaler' object;  this makes it possible to
  1.1032 +      use fractional pixel sizes in the cache.  The demo programs have
  1.1033 +      been updated accordingly to use this feature.
  1.1034 +
  1.1035 +    - A new API  `FT_Get_CMap_Format' has been added to  get the  cmap
  1.1036 +      format  of a  TrueType font.   This  is useful  in handling  PDF
  1.1037 +      files.  The code has been contributed by Derek Clegg.
  1.1038 +
  1.1039 +    - The  auto-hinter  now  produces  better  output  by  default for
  1.1040 +      non-Latin scripts  like Indic.   This was done by  using the CJK
  1.1041 +      hinting module  as the default instead of the Latin one.  Thanks
  1.1042 +      to Rahul Bhalerao for this suggestion.
  1.1043 +
  1.1044 +    - A new API `FT_Face_CheckTrueTypePatents'  has been added to find
  1.1045 +      out  whether  a  given  TrueType  font  uses  patented  bytecode
  1.1046 +      instructions.   The  `ft2demos' bundle  contains a  new  program
  1.1047 +      called `ftpatchk' which demonstrates its usage.
  1.1048 +
  1.1049 +    - A  new  API  `FT_Face_SetUnpatentedHinting'  has  been  added to
  1.1050 +      enable or disable the unpatented hinter.
  1.1051 +
  1.1052 +    - Support for Windows FON files in PE format  has been contributed
  1.1053 +      by Dmitry Timoshkov.
  1.1054 +
  1.1055 +
  1.1056 +  III. MISCELLANEOUS
  1.1057 +
  1.1058 +    - Vincent Richomme contributed Visual C++ project files for Pocket
  1.1059 +      PCs.
  1.1060 +
  1.1061 +
  1.1062 +======================================================================
  1.1063 +
  1.1064 +CHANGES BETWEEN 2.3.4 and 2.3.3
  1.1065 +
  1.1066 +  I. IMPORTANT BUG FIXES
  1.1067 +
  1.1068 +    - A serious  bug  in  the  handling  of bitmap  fonts (and  bitmap
  1.1069 +      strikes of outline fonts) has been introduced in 2.3.3.
  1.1070 +
  1.1071 +
  1.1072 +======================================================================
  1.1073 +
  1.1074 +CHANGES BETWEEN 2.3.3 and 2.3.2
  1.1075 +
  1.1076 +  I. IMPORTANT BUG FIXES
  1.1077 +
  1.1078 +    - Remove a serious regression in the TrueType bytecode interpreter
  1.1079 +      that was introduced  in version 2.3.2.  Note that  this does not
  1.1080 +      disable  the  improvements  introduced  to  the  interpreter  in
  1.1081 +      version 2.3.2,  only some ill  cases that occurred  with certain
  1.1082 +      fonts (though a few popular ones).
  1.1083 +
  1.1084 +    - The auto-hinter now  ignores single-point contours for computing
  1.1085 +      blue zones.   This bug  created `wavy' baselines  when rendering
  1.1086 +      text  with  various  fonts  that  use these  contours  to  model
  1.1087 +      mark-attach points  (these are points that  are never rasterized
  1.1088 +      and are placed outside of the glyph's real outline).
  1.1089 +
  1.1090 +    - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
  1.1091 +      zero for mono-spaced fonts.  Otherwise code that uses them would
  1.1092 +      essentially ruin the fixed-advance property.
  1.1093 +
  1.1094 +    - Fix  CVE-2007-1351 which  can  cause an  integer overflow  while
  1.1095 +      parsing  BDF fonts,  leading to  a potentially  exploitable heap
  1.1096 +      overflow condition.
  1.1097 +
  1.1098 +
  1.1099 +  II. MISCELLANEOUS
  1.1100 +
  1.1101 +    - Fixed compilation issues on some 64-bit platforms (see ChangeLog
  1.1102 +      for details).
  1.1103 +
  1.1104 +    - A new demo  program `ftdiff' has been added  to compare TrueType
  1.1105 +      hinting, FreeType's auto  hinting, and rendering without hinting
  1.1106 +      in three columns.
  1.1107 +
  1.1108 +
  1.1109 +======================================================================
  1.1110 +
  1.1111 +CHANGES BETWEEN 2.3.2 and 2.3.1
  1.1112 +
  1.1113 +  I. IMPORTANT BUG FIXES
  1.1114 +
  1.1115 +    - FreeType  returned incorrect  kerning information  from TrueType
  1.1116 +      fonts when the bytecode  interpreter was enabled.  This happened
  1.1117 +      due to a typo introduced in version 2.3.0.
  1.1118 +
  1.1119 +    - Negative  kerning  values  from   PFM  files  are  now  reported
  1.1120 +      correctly  (they were read  as 16-bit  unsigned values  from the
  1.1121 +      file).
  1.1122 +
  1.1123 +    - Fixed  a small  memory leak  when `FT_Init_FreeType'  failed for
  1.1124 +      some reason.
  1.1125 +
  1.1126 +    - The Postscript hinter placed and sized very thin and ghost stems
  1.1127 +      incorrectly.
  1.1128 +
  1.1129 +    - The TrueType bytecode  interpreter has been fixed to  get rid of
  1.1130 +      most of the  rare differences seen in comparison  to the Windows
  1.1131 +      font loader.
  1.1132 +
  1.1133 +
  1.1134 +  II. IMPORTANT CHANGES
  1.1135 +
  1.1136 +    - The auto-hinter  now better deals  with serifs and  corner cases
  1.1137 +      (e.g.,  glyph '9'  in Arial  at 9pt,  96dpi).  It  also improves
  1.1138 +      spacing  adjustments and doesn't  change widths  for non-spacing
  1.1139 +      glyphs.
  1.1140 +
  1.1141 +    - Many   Mac-specific   functions   are  deprecated   (but   still
  1.1142 +      available);  modern replacements  have been  provided  for them.
  1.1143 +      See the documentation in file `ftmac.h'.
  1.1144 +
  1.1145 +
  1.1146 +======================================================================
  1.1147 +
  1.1148 +CHANGES BETWEEN 2.3.1 and 2.3.0
  1.1149 +
  1.1150 +  I. IMPORTANT BUG FIXES
  1.1151 +
  1.1152 +    - The TrueType interpreter sometimes returned incorrect horizontal
  1.1153 +      metrics due to a bug in the handling of the SHZ instruction.
  1.1154 +
  1.1155 +    - A typo  in  a  security  check  introduced  after  version 2.2.1
  1.1156 +      prevented FreeType to render some glyphs in CFF fonts.
  1.1157 +
  1.1158 +
  1.1159 +======================================================================
  1.1160 +
  1.1161 +CHANGES BETWEEN 2.3.0 and 2.2.1
  1.1162 +
  1.1163 +  I. IMPORTANT BUG FIXES
  1.1164 +
  1.1165 +    - The  PCF font  loader  is  now much  more  robust while  loading
  1.1166 +      malformed font files.
  1.1167 +
  1.1168 +    - Various memory leaks have been found and fixed.
  1.1169 +
  1.1170 +    - The TrueType name loader now deals properly with some fonts that
  1.1171 +      encode their  names in UTF-16 (the specification  was vague, and
  1.1172 +      the code incorrectly assumed UCS-4).
  1.1173 +
  1.1174 +    - Fixed the TrueType bytecode  loader to deal properly with subtle
  1.1175 +      monochrome/gray  issues  when   scaling  the  CVT.   Some  fonts
  1.1176 +      exhibited bad rendering artifacts otherwise.
  1.1177 +
  1.1178 +    - `FT_GlyphSlot_Embolden' now  supports vertical layouts correctly
  1.1179 +      (it mangled the vertical advance height).
  1.1180 +
  1.1181 +    - Fixed byte  endian issues  of `ftmac.c' to  support Mac OS  X on
  1.1182 +      i386.
  1.1183 +
  1.1184 +    - The  PFR  font loader  no  longer  erroneously  tags font  files
  1.1185 +      without any outlines as FT_FACE_FLAG_SCALABLE.
  1.1186 +
  1.1187 +
  1.1188 +  II. NEW API FUNCTIONS
  1.1189 +
  1.1190 +    - `FT_Library_SetLcdFilter' allows you  to select a special filter
  1.1191 +      to be  applied to the bitmaps generated  by `FT_Render_Glyph' if
  1.1192 +      one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
  1.1193 +      been  selected.  This filter  is used  to reduce  color fringes;
  1.1194 +      several  settings are  available  through the  FT_LCD_FILTER_XXX
  1.1195 +      enumeration.
  1.1196 +
  1.1197 +      Its  declaration   and  documentation  can  be   found  in  file
  1.1198 +      `include/freetype/ftlcdfil.h'   (to  be   accessed   with  macro
  1.1199 +      FT_LCD_FILTER_H).
  1.1200 +
  1.1201 +      *IMPORTANT*:     This      function     returns     an     error
  1.1202 +      (FT_Err_Unimplemented_Feature) in default  builds of the library
  1.1203 +      for patent reasons.  See below.
  1.1204 +
  1.1205 +    - `FT_Get_Gasp'  allows you  to query  the flags  of  the TrueType
  1.1206 +      `gasp' table for  a given character pixel size.   This is useful
  1.1207 +      to duplicate  the text rendering  of MS Windows when  the native
  1.1208 +      bytecode  interpreter is  enabled (which  isn't the  default for
  1.1209 +      other patent reasons).
  1.1210 +
  1.1211 +      Its  declaration   and  documentation  can  be   found  in  file
  1.1212 +      `include/freetype/ftgasp.h'   (to   be   accessed   with   macro
  1.1213 +      FT_GASP_H).
  1.1214 +
  1.1215 +
  1.1216 +  III. IMPORTANT CHANGES
  1.1217 +
  1.1218 +    - The auto-hinter has been tuned a lot to improve its results with
  1.1219 +      serif fonts, resulting in much better font rendering of many web
  1.1220 +      pages.
  1.1221 +
  1.1222 +    - The unpatented  hinter is now part  of the default  build of the
  1.1223 +      library; we  have added  code to automatically  support `tricky'
  1.1224 +      fonts that need it.
  1.1225 +
  1.1226 +      This means  that FreeType should `just work'  with certain Asian
  1.1227 +      fonts, like  MingLiU, which cannot properly be  loaded without a
  1.1228 +      bytecode interpreter,  but which fortunately  do not use  any of
  1.1229 +      the patented  bytecode opcodes.  We detect these  fonts by name,
  1.1230 +      so please  report any font file  that doesn't seem  to work with
  1.1231 +      FreeType, and  we shall do what we  can to support it  in a next
  1.1232 +      release.
  1.1233 +
  1.1234 +      Note  that  the API  hasn't  changed,  so  you can  still  force
  1.1235 +      unpatented hinting with a special parameter to `FT_Open_Face' as
  1.1236 +      well.  This  might be useful in  same cases; for  example, a PDF
  1.1237 +      reader might present  a user option to activate  it to deal with
  1.1238 +      certain  `tricky'   embedded  fonts  which   cannot  be  clearly
  1.1239 +      identified.
  1.1240 +
  1.1241 +      If you are  a developer for embedded systems,  you might want to
  1.1242 +      *disable*  the   feature  to  save  code   space  by  undefining
  1.1243 +      TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
  1.1244 +
  1.1245 +    - LCD-optimized rendering is now  *disabled* in all default builds
  1.1246 +      of  the  library,  mainly   due  to  patent  issues.   For  more
  1.1247 +      information see:
  1.1248 +
  1.1249 +      http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
  1.1250 +
  1.1251 +      A  new  configuration macro  FT_CONFIG_OPTION_SUBPIXEL_RENDERING
  1.1252 +      has been introduced in  `ftoption.h'; manually define it in this
  1.1253 +      file if you want to re-enable the feature.
  1.1254 +
  1.1255 +      The  change only  affects the  implementation, not  the FreeType
  1.1256 +      API.  This means that clients don't need to be modified, because
  1.1257 +      the library still generates  LCD decimated bitmaps, but with the
  1.1258 +      added constraint that R=G=B on each triplet.
  1.1259 +
  1.1260 +      The  displayed result  should  be equal  to normal  anti-aliased
  1.1261 +      rendering.
  1.1262 +
  1.1263 +      Additionally,  if   FT_CONFIG_OPTION_SUBPIXEL_RENDERING  is  not
  1.1264 +      defined, the new  `FT_Library_SetLcdFilter' function returns the
  1.1265 +      FT_Err_Unimplemented_Feature error code.
  1.1266 +
  1.1267 +    - Some computation bugs in  the TrueType bytecode interpreter were
  1.1268 +      found,  which  allow us  to  get rid  of  very  subtle and  rare
  1.1269 +      differences we had experienced with the Windows renderer.
  1.1270 +
  1.1271 +    - It is now possible to cross-compile the library easily.  See the
  1.1272 +      file `docs/INSTALL.CROSS' for details.
  1.1273 +
  1.1274 +    - The file `src/base/ftmac.c' now contains code for Mac OS X only;
  1.1275 +      its  deprecated function  `FT_GetFile_From_Mac_Font_Name' always
  1.1276 +      returns an  error even if the QuickDraw  framework is available.
  1.1277 +      The previous version has been moved to `builds/mac/ftmac.c'.
  1.1278 +
  1.1279 +      Selecting  configure option `--with-quickdraw-carbon'  makes the
  1.1280 +      build process use the original `ftmac.c' file instead of the Mac
  1.1281 +      OS X-only version.
  1.1282 +
  1.1283 +
  1.1284 +  IV. MISCELLANEOUS
  1.1285 +
  1.1286 +    - Various performance and memory footprint optimizations have been
  1.1287 +      performed on  the TrueType and CFF font  loaders, sometimes with
  1.1288 +      very drastic  benefits (e.g., the  TrueType loader is  now about
  1.1289 +      25% faster;  FreeType should use  less heap memory  under nearly
  1.1290 +      all conditions).
  1.1291 +
  1.1292 +    - The anti-aliased rasterizer has been optimized and is now 15% to
  1.1293 +      25%  percent  faster than  in  previous  versions, depending  on
  1.1294 +      content.
  1.1295 +
  1.1296 +    - The Type 1 loader has been improved; as an example, it now skips
  1.1297 +      top-level dictionaries properly.
  1.1298 +
  1.1299 +    - Better support for Mac  fonts on POSIX systems, plus compilation
  1.1300 +      fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
  1.1301 +
  1.1302 +    - Configuration  without `--with-old-mac-fonts'  does  not include
  1.1303 +      `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
  1.1304 +
  1.1305 +    - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
  1.1306 +      in the kern table.
  1.1307 +
  1.1308 +
  1.1309 +======================================================================
  1.1310 +
  1.1311 +CHANGES BETWEEN 2.2.1 and 2.2
  1.1312 +
  1.1313 +  I. IMPORTANT BUG FIXES
  1.1314 +
  1.1315 +    - Various integer overflows have been fixed.
  1.1316 +
  1.1317 +    - PFB fonts with MacOS resource fork weren't  handled correctly on
  1.1318 +      non-MacOS platforms.
  1.1319 +
  1.1320 +
  1.1321 +======================================================================
  1.1322 +
  1.1323 +CHANGES BETWEEN 2.2 and 2.1.10
  1.1324 +
  1.1325 +(not released officially)
  1.1326 +
  1.1327 +  I. IMPORTANT BUG FIXES
  1.1328 +
  1.1329 +    - Vertical metrics for SFNT fonts were incorrect sometimes.
  1.1330 +
  1.1331 +    - The FT_HAS_KERNING macro always returned 0.
  1.1332 +
  1.1333 +    - CFF OpenType  fonts didn't  return correct vertical  metrics for
  1.1334 +      glyphs with outlines.
  1.1335 +
  1.1336 +    - If FreeType was compiled without hinters, all font formats based
  1.1337 +      on PS outlines weren't scaled correctly.
  1.1338 +
  1.1339 +
  1.1340 +  II. IMPORTANT CHANGES
  1.1341 +
  1.1342 +    - Version 2.2 no longer exposes its internals, this is, the header
  1.1343 +      files  located in  the `include/freetype/internal'  directory of
  1.1344 +      the source package are not  copied anymore by the `make install'
  1.1345 +      command.  Consequently, a number of rogue clients which directly
  1.1346 +      access  FreeType's  internal   functions  and  structures  won't
  1.1347 +      compile without modification.
  1.1348 +
  1.1349 +      We provide  patches for  most of those  rogue clients.   See the
  1.1350 +      following page for more information:
  1.1351 +
  1.1352 +        http://www.freetype.org/freetype2/patches/rogue-patches.html
  1.1353 +
  1.1354 +      Note that, as  a convenience to our Unix  desktop users, version
  1.1355 +      2.2 is *binary* compatible with FreeType 2.1.7, which means that
  1.1356 +      installing this  release on  an existing distribution  shall not
  1.1357 +      break any working desktop.
  1.1358 +
  1.1359 +    - FreeType's build  mechanism has been redesigned.   With GNU make
  1.1360 +      it  is  now  sufficient  in   most  cases  to  edit  two  files:
  1.1361 +      `modules.cfg',  to  select   the  library  components,  and  the
  1.1362 +      configuration  file  `include/freetype/config/ftoption.h' (which
  1.1363 +      can be copied to the objects directory).  Removing unused module
  1.1364 +      directories   to    prevent   its   compilation    and   editing
  1.1365 +      `include/freetype/config/ftmodule.h' is no longer necessary.
  1.1366 +
  1.1367 +    - The  LIGHT  hinting algorithm  produces  more pleasant  results.
  1.1368 +      Also, using the  FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
  1.1369 +      always forces auto-hinting, as a special exception.  This allows
  1.1370 +      you to experiment with it  even if you have enabled the TrueType
  1.1371 +      bytecode interpreter in your build.
  1.1372 +
  1.1373 +    - The auto hinter now employs a new algorithm for CJK fonts, based
  1.1374 +      on Akito  Hirai's patch.   Note that this  only works  for fonts
  1.1375 +      with a Unicode charmap at the moment.
  1.1376 +
  1.1377 +    - The following callback function  types have changed slightly (by
  1.1378 +      adding the `const' keyword where appropriate):
  1.1379 +
  1.1380 +        FT_Outline_MoveToFunc
  1.1381 +        FT_Outline_LineToFunc
  1.1382 +        FT_Outline_ConicToFunc
  1.1383 +        FT_Outline_CubicToFunc
  1.1384 +        FT_SpanFunc
  1.1385 +        FT_Raster_RenderFunc
  1.1386 +
  1.1387 +        FT_Glyph_TransformFunc
  1.1388 +        FT_Renderer_RenderFunc
  1.1389 +        FT_Renderer_TransformFunc
  1.1390 +
  1.1391 +      Note that this doesn't affect binary backward compatibility.
  1.1392 +
  1.1393 +    - On MacOS,  new APIs have  been added as replacements  for legacy
  1.1394 +      APIs:  `FT_New_Face_From_FSRef'  for  `FT_New_Face_From_FSSpec',
  1.1395 +      and              `FT_GetFile_From_Mac_ATS_Name'              for
  1.1396 +      `FT_GetFile_From_Mac_Name'.  Legacy APIs are still available, if
  1.1397 +      FreeType is built without disabling them.
  1.1398 +
  1.1399 +    - A new  API `FT_Select_Size'  has been added  to select  a bitmap
  1.1400 +      strike  by its  index.   Code using  other  functions to  select
  1.1401 +      bitmap strikes should be updated to use this function.
  1.1402 +
  1.1403 +    - A  new API  `FT_Get_SubGlyph_Info'  has been  added to  retrieve
  1.1404 +      subglyph data.  This can be  used by rogue clients which used to
  1.1405 +      access the internal headers to get the corresponding data.
  1.1406 +
  1.1407 +    - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
  1.1408 +      BDF/PCF fonts,  and only  for them.  This  causes inconsistency.
  1.1409 +      In this release,  we undo the change.  The  intent of the change
  1.1410 +      in 2.1.10  is to allow  size selection through  real dimensions,
  1.1411 +      which can now be done through `FT_Request_Size'.
  1.1412 +
  1.1413 +    - Some security  issues were discovered  and fixed in the  CFF and
  1.1414 +      Type  1 loader, causing  crashes of  FreeType by  malformed font
  1.1415 +      files.
  1.1416 +
  1.1417 +
  1.1418 +  III. MISCELLANEOUS
  1.1419 +
  1.1420 +    - The documentation  for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
  1.1421 +      values now better reflects its usage and differences: One set is
  1.1422 +      used to specify the hinting algorithm, the other to specify  the
  1.1423 +      pixel rendering mode.
  1.1424 +
  1.1425 +    - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
  1.1426 +      changed to count supported scalable faces (sfnt, LWFN) only, and
  1.1427 +      to  return the  number of  available faces  via face->num_faces.
  1.1428 +      Unsupported bitmap faces (fbit, NFNT) are ignored.
  1.1429 +
  1.1430 +    - builds/unix/configure  has been  improved for  MacOS X.   It now
  1.1431 +      automatically checks available  functions in Carbon library, and
  1.1432 +      prepare to use newest  functions by default.  Options to specify
  1.1433 +      the  dependencies of  each Carbon  APIs (FSSpec,  FSRef, old/new
  1.1434 +      QuickDraw, ATS)  are available too.  By manual  disabling of all
  1.1435 +      QuickDraw   functionality,  FreeType   can   be  built   without
  1.1436 +      `deprecated   function'   warnings    on   MacOS   10.4.x,   but
  1.1437 +      FT_GetFile_Mac_Name  in  ftmac.c  then  is changed  to  a  dummy
  1.1438 +      function, and returns an `unimplemented' error.  For details see
  1.1439 +      builds/mac/README.
  1.1440 +
  1.1441 +    - SFNT cmap handling has been  improved, mainly to run much faster
  1.1442 +      with CJK fonts.
  1.1443 +
  1.1444 +    - A   new  function   `FT_Get_TrueType_Engine_Type   (declared  in
  1.1445 +      `FT_MODULE_H')  is  provided  to  determine the  status  of  the
  1.1446 +      TrueType   bytecode  interpreter   compiled  into   the  library
  1.1447 +      (patented, unpatented, unimplemented).
  1.1448 +
  1.1449 +    - Vertical metrics of glyphs are  synthesized if the font does not
  1.1450 +      provide such information.  You can tell whether  the metrics are
  1.1451 +      synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
  1.1452 +      the face.
  1.1453 +
  1.1454 +    - The demo programs  `ftview' and  `ftstring' have been  rewritten
  1.1455 +      for better readability.   `ftview' has a new switch `-p' to test
  1.1456 +      FT_New_Memory_Face (instead of FT_New_Face).
  1.1457 +
  1.1458 +    - FreeType now honours bit 1 in the `head' table of TrueType fonts
  1.1459 +      (meaning `left sidebearing point at x=0').  This helps with some
  1.1460 +      buggy fonts.
  1.1461 +
  1.1462 +    - Rudimentary support for Adobe's new `SING Glyphlet' format.  See
  1.1463 +
  1.1464 +        http://www.adobe.com/products/indesign/sing_gaiji.html
  1.1465 +
  1.1466 +      for more information.
  1.1467 +
  1.1468 +    - The `ftdump'  program from the `ft2demos' bundle  now shows some
  1.1469 +      information about charmaps.  It  also supports a new switch `-v'
  1.1470 +      to increase verbosity.
  1.1471 +
  1.1472 +    - Better AFM support.  This includes track kerning support.
  1.1473 +
  1.1474 +
  1.1475 +======================================================================
  1.1476 +
  1.1477 +CHANGES BETWEEN 2.1.10 and 2.1.9
  1.1478 +
  1.1479 +  I. IMPORTANT BUG FIXES
  1.1480 +
  1.1481 +    - The size comparison for BDF and PCF files could fail sometimes.
  1.1482 +
  1.1483 +    - Some  CFF files  were still not  loaded  correctly.   Patch from
  1.1484 +      Derek Noonburg.
  1.1485 +
  1.1486 +    - The stroker still had some serious bugs.
  1.1487 +
  1.1488 +    - Boris  Letocha  fixed a  bug in  the  TrueType interpreter:  The
  1.1489 +      NPUSHW instruction wasn't skipped correctly in IF clauses.  Some
  1.1490 +      fonts like `Helvetica 75 Bold' failed.
  1.1491 +
  1.1492 +    - Another  serious  bug  in  handling  TrueType hints  caused many
  1.1493 +      distortions.  It has been introduced in version 2.1.8, and it is
  1.1494 +      highly recommended to upgrade.
  1.1495 +
  1.1496 +    - FreeType didn't properly parse empty Type 1 glyphs.
  1.1497 +
  1.1498 +    - An unbound dynamic buffer growth was fixed in the PFR loader.
  1.1499 +
  1.1500 +    - Several bugs have been fixed in the cache sub-system.
  1.1501 +
  1.1502 +    - FreeType behaved incorrectly when resizing two distinct but very
  1.1503 +      close character pixel sizes through `FT_Set_Char_Size' (Savannah
  1.1504 +      bug #12263).
  1.1505 +
  1.1506 +    - The auto-hinter didn't work properly for fonts without a Unicode
  1.1507 +      charmap -- it even refused to load the glyphs.
  1.1508 +
  1.1509 +
  1.1510 +  II. IMPORTANT CHANGES
  1.1511 +
  1.1512 +    - Many fixes have been applied to drastically reduce the amount of
  1.1513 +      heap   memory   used   by   FreeType,   especially   when  using
  1.1514 +      memory-mapped font files  (which is the default on Unix  systems
  1.1515 +      which support them).
  1.1516 +
  1.1517 +    - The auto-hinter  has been replaced with a new module, called the
  1.1518 +      `auto-fitter'.  It consumes  less memory  than its  predecessor,
  1.1519 +      and it is  prepared to support non-latin scripts  better in next
  1.1520 +      releases.
  1.1521 +
  1.1522 +    - George Williams  contributed code to read  kerning data from PFM
  1.1523 +      files.
  1.1524 +
  1.1525 +    - FreeType   now   uses    the   TT_NAME_ID_PREFERRED_FAMILY   and
  1.1526 +      TT_NAME_ID_PREFERRED_SUBFAMILY   strings   (if   available)  for
  1.1527 +      setting  family  and  style in SFNT  fonts  (patch from Kornfeld
  1.1528 +      Eliyahu Peter).
  1.1529 +
  1.1530 +    - A  new  API `FT_Sfnt_Table_Info'  (in FT_TRUETYPE_TABLES_H)  has
  1.1531 +      been added to retrieve name and size information of SFNT tables.
  1.1532 +
  1.1533 +    - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
  1.1534 +      been added to validate OpenType tables  (BASE, GDEF, GPOS, GSUB,
  1.1535 +      JSTF).   After validation  it is  no longer  necessary to  check
  1.1536 +      for errors in those tables while accessing them.
  1.1537 +
  1.1538 +      Note that  this module might  be moved to another library in the
  1.1539 +      future  to avoid  a tight  dependency between  FreeType and  the
  1.1540 +      OpenType specification.
  1.1541 +
  1.1542 +    - A new API in FT_BITMAP_H  (`FT_Bitmap_New', `FT_Bitmap_Convert',
  1.1543 +      `FT_Bitmap_Copy',  `FT_Bitmap_Embolden',  `FT_Bitmap_Done')  has
  1.1544 +      been added.   Its  use is  to convert an  FT_Bitmap structure in
  1.1545 +      1bpp, 2bpp,  4bpp, or 8bpp  format into  another 8bpp FT_Bitmap,
  1.1546 +      probably using a different pitch, and to further manipulate it.
  1.1547 +
  1.1548 +    - A new  API `FT_Outline_Embolden'  (in FT_OUTLINE_H) gives  finer
  1.1549 +      control how  outlines are embolded.
  1.1550 +
  1.1551 +    - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H)  now handles bitmaps
  1.1552 +      also (code contributed  by Chia I Wu).  Note that this  function
  1.1553 +      is still experimental and may be replaced with a better API.
  1.1554 +
  1.1555 +    - The method  how BDF and PCF  bitmap fonts  are accessed has been
  1.1556 +      refined.   Formerly,   FT_Set_Pixel_Sizes  and  FT_Set_Char_Size
  1.1557 +      were  synonyms in  FreeType's  BDF and PCF interface.  This  has
  1.1558 +      changed now.  FT_Set_Pixel_Sizes  should be  used to  select the
  1.1559 +      actual  font dimensions  (the `strike',  which is the sum of the
  1.1560 +      `FONT_ASCENT'    and    `FONT_DESCENT'    properties),     while
  1.1561 +      FT_Set_Char_Size  selects  the  `nominal' size  (the `PIXELSIZE'
  1.1562 +      property).  In both functions, the width parameter is ignored.
  1.1563 +
  1.1564 +
  1.1565 +  III. MISCELLANEOUS
  1.1566 +
  1.1567 +    - The BDF driver  no longer converts  all returned bitmaps  with a
  1.1568 +      depth of 2bpp or 4bpp to a depth of 8bpp.  The documentation has
  1.1569 +      not  mentioned  this  explicitly,  but  implementors  might have
  1.1570 +      relied on this after looking into the source files.
  1.1571 +
  1.1572 +    - A new option `--ftversion' has been  added to freetype-config to
  1.1573 +      return the FreeType version.
  1.1574 +
  1.1575 +    - The  memory  debugger  has  been  updated   to  dump  allocation
  1.1576 +      statistics on  all allocation  sources in the library.   This is
  1.1577 +      useful to  spot greedy  allocations when  loading and processing
  1.1578 +      fonts.
  1.1579 +
  1.1580 +    - We removed a huge array of constant pointers to constant strings
  1.1581 +      in the `psnames' module.   The problem was that  compilations in
  1.1582 +      PIC mode (i.e.,  when generating a  Unix shared object/dll)  put
  1.1583 +      the array  into the non-shared  writable section of  the library
  1.1584 +      since absolute pointers are not relocatable by nature.
  1.1585 +
  1.1586 +      This reduces the memory consumption by approximately 16KByte per
  1.1587 +      process linked  to FreeType.   We now also store  the array in a
  1.1588 +      compressed form (as a trie) which saves about 20KByte of code as
  1.1589 +      well.
  1.1590 +
  1.1591 +    - Kirill  Smelkov provided  patches to make  src/raster/ftraster.c
  1.1592 +      compile stand-alone again.
  1.1593 +
  1.1594 +
  1.1595 +======================================================================
  1.1596 +
  1.1597 +CHANGES BETWEEN 2.1.9 and 2.1.8
  1.1598 +
  1.1599 +  I. IMPORTANT BUG FIXES
  1.1600 +
  1.1601 +    - The function  `FT_Get_CharMap_Index' was only declared,  without
  1.1602 +      any  real  code.   For  consistency,  it  has  been  renamed  to
  1.1603 +      `FT_Get_Charmap_Index'.   (This function is needed  to implement
  1.1604 +      cmap caches.)
  1.1605 +
  1.1606 +    - `FT_Outline_Get_BBox'  sometimes returned  incorrect values  for
  1.1607 +      conic outlines (e.g., for TrueType fonts).
  1.1608 +
  1.1609 +    - Handling of `bhed' table has been fixed.
  1.1610 +
  1.1611 +    - The TrueType driver with enabled byte code interpreter sometimes
  1.1612 +      returned artifacts due to incorrect rounding.  This bug has been
  1.1613 +      introduced after version 2.1.4.
  1.1614 +
  1.1615 +    - The BDF driver dropped the last glyph in the font.
  1.1616 +
  1.1617 +    - The BDF driver now uses the DEFAULT_CHAR property (if available)
  1.1618 +      to select a glyph shape for the undefined glyph.
  1.1619 +
  1.1620 +    - The stroker failed for closed outlines and single points.
  1.1621 +
  1.1622 +
  1.1623 +  II. IMPORTANT CHANGES
  1.1624 +
  1.1625 +    - George  Williams   contributed  code  to   handle  Apple's  font
  1.1626 +      distortion technology found in GX fonts (`avar', `cvar', `fvar',
  1.1627 +      and `gvar' tables;  the Multiple Masters  API has been  slightly
  1.1628 +      extended to cope with the new functionality).
  1.1629 +
  1.1630 +    - The `FT_GlyphSlotRec' structure has been extended:  The elements
  1.1631 +      `lsb_delta' and  `rsb_delta' give the difference  between hinted
  1.1632 +      and  unhinted  left and right  side bearings  if autohinting  is
  1.1633 +      active.  Using those values can improve the inter-letter spacing
  1.1634 +      considerably.   See the documentation of  `FT_GlyphSlotRec'  and
  1.1635 +      the `ftstring' demo program how to use it.
  1.1636 +
  1.1637 +    - Loading TrueType and Type 1 fonts has been made much faster.
  1.1638 +
  1.1639 +    - The stroker is  no longer experimental (but the  cache subsystem
  1.1640 +      still is).
  1.1641 +
  1.1642 +
  1.1643 +  III. MISCELLANEOUS
  1.1644 +
  1.1645 +    - A new  documentation file  `formats.txt' describes various  font
  1.1646 +      formats supported (and not supported) by FreeType.
  1.1647 +
  1.1648 +
  1.1649 +======================================================================
  1.1650 +
  1.1651 +CHANGES BETWEEN 2.1.8 and 2.1.7
  1.1652 +
  1.1653 +  I. IMPORTANT BUG FIXES
  1.1654 +
  1.1655 +    - The native  TrueType hinter contained some  bugs which prevented
  1.1656 +      some fonts to be rendered correctly, most notably Legendum.otf.
  1.1657 +
  1.1658 +    - The PostScript hinter now produces improved results.
  1.1659 +
  1.1660 +    - The  linear advance  width  and height  values were  incorrectly
  1.1661 +      rounded,  making  them virtually  unusable  if  not loaded  with
  1.1662 +      FT_LOAD_LINEAR_DESIGN.
  1.1663 +
  1.1664 +    - Indexing CID-keyed CFF fonts is  now working: The glyph index is
  1.1665 +      correctly  treated as a  CID, similar  to FreeType's  CID driver
  1.1666 +      module.  Note that CID CMap support is still missing.
  1.1667 +
  1.1668 +    - The FT_FACE_FLAGS_GLYPH_NAMES flag is now  set correctly for all
  1.1669 +      font formats.
  1.1670 +
  1.1671 +    - Some subsetted Type 1  fonts weren't parsed correctly.  This bug
  1.1672 +      has been introduced in 2.1.7.  In summary, the Type 1 parser has
  1.1673 +      become more robust.
  1.1674 +
  1.1675 +    - Non-decimal numbers weren't parsed correctly in PS fonts.
  1.1676 +
  1.1677 +    - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
  1.1678 +      but one encoding.  Use  the new FT_WinFNT_ID_XXX values together
  1.1679 +      with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
  1.1680 +
  1.1681 +    - The descender metrics (face->size->metrics.descender) for WinFNT
  1.1682 +      bitmap fonts had the wrong sign.
  1.1683 +
  1.1684 +    - The (emulated) `seac' support for CFF fonts was broken.
  1.1685 +
  1.1686 +    - The `flex' operator didn't work for CFF fonts.
  1.1687 +
  1.1688 +    - PS glyphs  which  use  the   `hintmask'  operator  haven't  been
  1.1689 +      rendered correctly in some cases.
  1.1690 +
  1.1691 +    - Metrics for BDF and PCF bitmap font formats have been fixed.
  1.1692 +
  1.1693 +    - Autohinting  is now  disabled for  glyphs  which  are vertically
  1.1694 +      distorted  or mirrored  (using a  transformation matrix).   This
  1.1695 +      fixes a bug which produced zero-height glyphs.
  1.1696 +
  1.1697 +    - The   `freetype-config'   script   now  handles   --prefix   and
  1.1698 +      --exec-prefix correctly; it also  returns the proper --rpath (or
  1.1699 +      -R) value if FreeType has been built as a shared library.
  1.1700 +
  1.1701 +
  1.1702 +  II. IMPORTANT CHANGES
  1.1703 +
  1.1704 +    - Both  PCF  and BDF  drivers  now  handle  the SETWIDTH_NAME  and
  1.1705 +      ADD_STYLE_NAME    properties.     Values    are   appended    to
  1.1706 +      face->style_name; example: `Bold SemiCondensed'.
  1.1707 +
  1.1708 +    - The PCF driver now handles bitmap  fonts compressed with the LZW
  1.1709 +      algorithm (extension .pcf.Z, compressed with `compress').
  1.1710 +
  1.1711 +    - A  new  API   function  `FT_Get_CMap_Language_ID'  (declared  in
  1.1712 +      `tttables.h')  is  available  to   get  the  language  ID  of  a
  1.1713 +      TrueType/SFNT cmap.
  1.1714 +
  1.1715 +    - The hexadecimal format of  data after the `StartData' command in
  1.1716 +      CID-keyed Type 1 fonts is now supported.  While this can't occur
  1.1717 +      in  file-based   fonts,  it  can   happen  in  document-embedded
  1.1718 +      resources of PostScript documents.
  1.1719 +
  1.1720 +    - Embedded bitmaps in SFNT-based CFF fonts are now supported.
  1.1721 +
  1.1722 +    - A simple  API is  now available  to control  FreeType's  tracing
  1.1723 +      mechanism if compiled  with FT_DEBUG_LEVEL_TRACE.   See the file
  1.1724 +      `ftdebug.h' for more details.
  1.1725 +
  1.1726 +    - YAMATO Masatake contributed improved  handling of MacOS resource
  1.1727 +      forks on non-MacOS platforms (for example, Linux can mount MacOS
  1.1728 +      file systems).
  1.1729 +
  1.1730 +    - Support for MacOS has been improved; there is now a new function
  1.1731 +      `FT_New_Face_From_FSSpec'  similar to `FT_New_Face'  except that
  1.1732 +      it accepts an FSSpec instead of a path.
  1.1733 +
  1.1734 +    - The cache sub-system has been rewritten.
  1.1735 +
  1.1736 +      - There is now support for deinstallation of faces.
  1.1737 +
  1.1738 +      - A new  API function `FTC_Manager_RemoveFaceID'  has been added
  1.1739 +        to  delete  all  `idle'  nodes  that  correspond  to  a  given
  1.1740 +        FTC_FaceID.  All `locked' nodes  (i.e., those with a reference
  1.1741 +        count > 0), will be modified to prevent them from appearing in
  1.1742 +        further  lookups (they  will  be cleaned  normally when  their
  1.1743 +        reference count reaches 0).
  1.1744 +
  1.1745 +      - There  is  now  support  for point  scaling  (i.e.,  providing
  1.1746 +        character sizes in points + dpis, instead of pixels).
  1.1747 +
  1.1748 +      - Three abstract cache classes are now available:
  1.1749 +
  1.1750 +          FTC_GCache:  Used to store  one glyph  item per  cache node,
  1.1751 +                      with the ability to group common attributes into
  1.1752 +                      `families'.      This    replaces     the    old
  1.1753 +                      FTC_GlyphCache class.
  1.1754 +
  1.1755 +          FTC_ICache: Used to store one FT_Glyph per cache node.  This
  1.1756 +                      extends  FTC_GCache.  Family  definition, family
  1.1757 +                      comparison, and  glyph loading are  however left
  1.1758 +                      to sub-classes.
  1.1759 +
  1.1760 +          FTC_SCache: Used to  store up to 16 small  bitmaps per cache
  1.1761 +                      node.    This    extends   FTC_GCache.    Family
  1.1762 +                      definition, family  comparison and glyph loading
  1.1763 +                      are however left to sub-classes.
  1.1764 +
  1.1765 +      - The file `src/cache/ftcbasic.c' implements:
  1.1766 +
  1.1767 +          FTC_ImageCache: Extends    FTC_ICache;   implements   family
  1.1768 +                          definitions and glyph loading similar to the
  1.1769 +                          old API.
  1.1770 +
  1.1771 +          FTC_SBitCache: Extends    FTC_SCache,    implements   family
  1.1772 +                         definitions and glyph  loading similar to the
  1.1773 +                         old API
  1.1774 +
  1.1775 +        Client  applications  should  be  able to  extend  FTC_GCache,
  1.1776 +        FTC_ICache, or FTC_SCache much more easily (i.e., less code to
  1.1777 +        write, and  less callbacks).  For example,  one could envision
  1.1778 +        caches  that are  capable of  storing  transformed (obliqued),
  1.1779 +        stroked,   emboldened,   or   colored   glyph   images.    Use
  1.1780 +        `ftcbasic.c' as an example.
  1.1781 +
  1.1782 +      - All public  APIs are now  in `include/freetype/ftcache.h', (to
  1.1783 +        be    accessed   as    `FT_CACHE_H').     The   contents    of
  1.1784 +        `include/freetype/cache/' is only  needed by applications that
  1.1785 +        wish to implement their own caches.
  1.1786 +
  1.1787 +      - There were some major performance improvements through the use
  1.1788 +        of  various programming  tricks.   Cache hits  are  up to  70%
  1.1789 +        faster than in the old code.
  1.1790 +
  1.1791 +      - The  FTC_CMapCache has  been simplified.  Charmaps can only be
  1.1792 +        accessed by  index right now.  There  is also a  new API named
  1.1793 +        `FT_Charmap_GetIndex' for this purpose.
  1.1794 +
  1.1795 +      - The  demo programs  have been  updated to  the new  code.  The
  1.1796 +        previous versions will not work with the current one.
  1.1797 +
  1.1798 +      - Using  an invalid face  index in FT_Open_Face and friends  now
  1.1799 +        causes an error even if the font contains a single face only.
  1.1800 +
  1.1801 +
  1.1802 +  III. MISCELLANEOUS
  1.1803 +
  1.1804 +    - Wolfgang Domröse contributed support files for building FreeType
  1.1805 +      on the Atari using the PureC compiler.  Note that the Atari is a
  1.1806 +      16bit platform.
  1.1807 +
  1.1808 +    - Vitaliy Pasternak contributed project files for VS.NET 2003.
  1.1809 +
  1.1810 +
  1.1811 +======================================================================
  1.1812 +
  1.1813 +CHANGES BETWEEN 2.1.7 and 2.1.6
  1.1814 +
  1.1815 +  I. IMPORTANT BUG FIXES
  1.1816 +
  1.1817 +    - Updated  to newest  libtool  version, fixing  build problems  on
  1.1818 +      various platforms.
  1.1819 +
  1.1820 +    - On  Unix  platforms,  `make  install' didn't  copy  the  correct
  1.1821 +      `ftconfig.h' file.
  1.1822 +
  1.1823 +  Note that version 2.1.7  contains the same library  C source code as
  1.1824 +  version 2.1.6.
  1.1825 +
  1.1826 +
  1.1827 +======================================================================
  1.1828 +
  1.1829 +CHANGES BETWEEN 2.1.6 and 2.1.5
  1.1830 +
  1.1831 +  I. IMPORTANT BUG FIXES
  1.1832 +
  1.1833 +    - The PFR  font driver didn't  load kerning tables  correctly, and
  1.1834 +      the functions in FT_PFR_H didn't work at all.
  1.1835 +
  1.1836 +    - Type 1 font  files in  binary format  (PFB) with  an end-of-file
  1.1837 +      indicator weren't accepted by the FreeType engine.
  1.1838 +
  1.1839 +    - Fonts which contain /PaintType  and /StrokeWidth no longer cause
  1.1840 +      a segfault.  This bug has been introduced in version 2.1.5.
  1.1841 +
  1.1842 +    - Fonts  loaded  with   FT_LOAD_RENDER  no  longer  cause  strange
  1.1843 +      results.  This bug has been introduced in version 2.1.5.
  1.1844 +
  1.1845 +    - Some  Windows   (bitmap)  FNT/FON  files   couldn't  be  handled
  1.1846 +      correctly.
  1.1847 +
  1.1848 +
  1.1849 +  II. IMPORTANT CHANGES
  1.1850 +
  1.1851 +    - The internal  module API  has been heavily  changed in  favor of
  1.1852 +      massive simplifications within the font engine.  This also means
  1.1853 +      that authors of third-party modules must adapt their code to the
  1.1854 +      new scheme.
  1.1855 +
  1.1856 +      NOTE:  THE NEW SCHEME IS NOT COMPLETED YET.  PLEASE WAIT UNTIL A
  1.1857 +      FINAL ANNOUNCEMENT!
  1.1858 +
  1.1859 +    - The PostScript  parser has been enhanced to  handle comments and
  1.1860 +      strings   correctly.   Additionally,   more  syntax   forms  are
  1.1861 +      recognized.
  1.1862 +
  1.1863 +    - Added the  optional unpatented hinting system  for TrueType.  It
  1.1864 +      allows  typefaces which  need hinting  to produce  correct glyph
  1.1865 +      forms (e.g., Chinese typefaces  from Dynalab) to work acceptably
  1.1866 +      without infringing Apple patents.   This system is compiled only
  1.1867 +      if  TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING  is  defined  in
  1.1868 +      ftoption.h (activated by default).
  1.1869 +
  1.1870 +
  1.1871 +  III. MISCELLANEOUS
  1.1872 +
  1.1873 +    - There  is now  a guard  in the  public header  files  to protect
  1.1874 +      against inclusion of freetype.h from FreeType 1.
  1.1875 +
  1.1876 +    - Direct inclusion of freetype.h  and other public header files no
  1.1877 +      longer works.  You have to use the documented scheme
  1.1878 +
  1.1879 +        #include <ft2build.h>
  1.1880 +        #include FT_FREETYPE_H
  1.1881 +
  1.1882 +      to load freetype.h with  a symbolic name.  This protects against
  1.1883 +      renaming  of public  header  files (which  shouldn't happen  but
  1.1884 +      actually  has, avoiding two  public header  files with  the same
  1.1885 +      name).
  1.1886 +
  1.1887 +
  1.1888 +======================================================================
  1.1889 +
  1.1890 +CHANGES BETWEEN 2.1.5 and 2.1.4
  1.1891 +
  1.1892 +  I. IMPORTANT BUG FIXES
  1.1893 +
  1.1894 +    - Parsing the /CIDFontName field  now removes the leading slash to
  1.1895 +      be in sync with other font drivers.
  1.1896 +
  1.1897 +    - gzip support was buggy.  Some fonts could not be read.
  1.1898 +
  1.1899 +    - Fonts which  have nested subglyphs  more than one level  deep no
  1.1900 +      longer cause a segfault.
  1.1901 +
  1.1902 +    - Creation of synthetic  cmaps for fonts in CFF  format was broken
  1.1903 +      partially.
  1.1904 +
  1.1905 +    - Numeric  font  dictionary entries  for  synthetic  fonts are  no
  1.1906 +      longer overwritten.
  1.1907 +
  1.1908 +    - The font matrix  wasn't applied to the advance  width for Type1,
  1.1909 +      CID, and  CFF fonts.  This caused problems  when loading certain
  1.1910 +      synthetic Type 1 fonts like `Helvetica Narrow'.
  1.1911 +
  1.1912 +    - The test  for the charset registry  in BDF and PCF  fonts is now
  1.1913 +      case-insensitive.
  1.1914 +
  1.1915 +    - FT_Vector_Rotate  sometimes  returned   strange  values  due  to
  1.1916 +      rounding errors.
  1.1917 +
  1.1918 +    - The  PCF  driver  now  returns  the  correct  number  of  glyphs
  1.1919 +      (including an artificial `notdef' glyph at index 0).
  1.1920 +
  1.1921 +    - FreeType now  supports buggy CMaps  which are contained  in many
  1.1922 +      CJK fonts from Dynalab.
  1.1923 +
  1.1924 +    - Opening  an invalid  font  on a  Mac  caused a  segfault due  to
  1.1925 +      double-freeing memory.
  1.1926 +
  1.1927 +    - BDF  fonts  with  more   than  32768  glyphs  weren't  supported
  1.1928 +      properly.
  1.1929 +
  1.1930 +
  1.1931 +  II. IMPORTANT CHANGES
  1.1932 +
  1.1933 +    - Accessing bitmap font formats has been synchronized.  To do that
  1.1934 +      the FT_Bitmap_Size  structure has  been extended to  contain new
  1.1935 +      fields `size', `x_ppem', and `y_ppem'.
  1.1936 +
  1.1937 +    - The FNT driver now returns multiple faces, not multiple strikes.
  1.1938 +
  1.1939 +    - The `psnames'  module has been  updated to the Adobe  Glyph List
  1.1940 +      version 2.0.
  1.1941 +
  1.1942 +    - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
  1.1943 +
  1.1944 +    - The algorithm for guessing the font style has been improved.
  1.1945 +
  1.1946 +    - For fonts in SFNT format, root->height is no longer increased if
  1.1947 +      the line gap  is zero.  There exist fonts  (containing e.g. form
  1.1948 +      drawing  characters) which  intentionally have  a zero  line gap
  1.1949 +      value.
  1.1950 +
  1.1951 +    - ft_glyph_bbox_xxx  flags   are  now  deprecated   in  favour  of
  1.1952 +      FT_GLYPH_BBOX_XXX.
  1.1953 +
  1.1954 +    - ft_module_xxx   flags   are   now   deprecated  in   favour   of
  1.1955 +      FT_MODULE_XXX.
  1.1956 +
  1.1957 +    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}      are     now
  1.1958 +      deprecated               in               favour              of
  1.1959 +      FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB}  -- those encodings
  1.1960 +      are not specific to Microsoft.
  1.1961 +
  1.1962 +
  1.1963 +  III. MISCELLANEOUS
  1.1964 +
  1.1965 +    - The  autohinter  has been  further  improved;  for example,  `m'
  1.1966 +      glyphs now retain its vertical symmetry.
  1.1967 +
  1.1968 +    - Partial support of Mac fonts on non-Mac platforms.
  1.1969 +
  1.1970 +    - `make   refdoc'   (after   first   `make')   builds   the   HTML
  1.1971 +      documentation.  You need Python for this.
  1.1972 +
  1.1973 +    - The make build system should  now work more reliably on DOS-like
  1.1974 +      platforms.
  1.1975 +
  1.1976 +    - Support for  EMX gcc  and Watson C/C++  compilers on  MS-DOS has
  1.1977 +      been added.
  1.1978 +
  1.1979 +    - Better VMS build support.
  1.1980 +
  1.1981 +    - Support for the pkg-config  package by providing a `freetype.pc'
  1.1982 +      file.
  1.1983 +
  1.1984 +    - New configure option --with-old-mac-fonts for Darwin.
  1.1985 +
  1.1986 +    - Some source files have been  renamed (mainly to fit into the 8.3
  1.1987 +      naming scheme).
  1.1988 +
  1.1989 +
  1.1990 +======================================================================
  1.1991 +
  1.1992 +CHANGES BETWEEN 2.1.4 and 2.1.3
  1.1993 +
  1.1994 +  I. IMPORTANT BUG FIXES
  1.1995 +
  1.1996 +    - Updated  to newest  libtool  version, fixing  build problems  on
  1.1997 +      various platforms.
  1.1998 +
  1.1999 +    - A fix  in the Gzip stream  reader: It couldn't  read certain .gz
  1.2000 +      files properly due to a  small typo.  In certain cases, FreeType
  1.2001 +      could  also loop  endlessly  when trying  to  load tiny  gzipped
  1.2002 +      files.
  1.2003 +
  1.2004 +    - The configure script now tries  to use the system-wide zlib when
  1.2005 +      it  finds one  (instead of  the  copy found  in src/gzip).   And
  1.2006 +      `freetype-config' has  been updated to return  relevant flags in
  1.2007 +      this case when invoked with `--libs' (e.g. `-lzlib').
  1.2008 +
  1.2009 +    - Certain fonts couldn't be loaded  by 2.1.3 because they lacked a
  1.2010 +      Unicode   charmap  (e.g.   SYMBOL.TTF).    FreeType  erroneously
  1.2011 +      rejected them.
  1.2012 +
  1.2013 +    - The CFF loader was modified to accept fonts which only contain a
  1.2014 +      subset of  their reference charset.  This  prevented the correct
  1.2015 +      use of PDF-embedded fonts.
  1.2016 +
  1.2017 +    - The logic to detect Unicode charmaps has been modified.  This is
  1.2018 +      required to  support fonts which include both  16-bit and 32-bit
  1.2019 +      charmaps (like very  recent asian ones) using the  new 10 and 12
  1.2020 +      SFNT formats.
  1.2021 +
  1.2022 +    - The TrueType  loader now limits  the depth of  composite glyphs.
  1.2023 +      This is necessary to prevent broken fonts to break the engine by
  1.2024 +      blowing the stack with recursive glyph definitions.
  1.2025 +
  1.2026 +    - The CMap cache is now  capable of managing UCS-4 character codes
  1.2027 +      that   are   mapped   through   extended  charmaps   in   recent
  1.2028 +      TrueType/OpenType fonts.
  1.2029 +
  1.2030 +    - The   cache  sub-system   now  properly   manages  out-of-memory
  1.2031 +      conditions  instead of  blindly  reporting them  to the  caller.
  1.2032 +      This means that it will try to empty the cache before restarting
  1.2033 +      its allocations to see if that can help.
  1.2034 +
  1.2035 +    - The  PFR driver  didn't return  the list  of  available embedded
  1.2036 +      bitmaps properly.
  1.2037 +
  1.2038 +    - There was  a nasty  memory leak when  using embedded  bitmaps in
  1.2039 +      certain font formats.
  1.2040 +
  1.2041 +
  1.2042 +  II. IMPORTANT CHANGES
  1.2043 +
  1.2044 +    - David Chester  contributed some enhancements  to the auto-hinter
  1.2045 +      that  significantly increase  the  quality of  its output.   The
  1.2046 +      Postscript hinter was also improved in several ways.
  1.2047 +
  1.2048 +    - The FT_RENDER_MODE_LIGHT render mode was implemented.
  1.2049 +
  1.2050 +    - A new  API function called `FT_Get_BDF_Property'  has been added
  1.2051 +      to FT_BDF_H to  retrieve BDF properties from BDF  _and_ PCF font
  1.2052 +      files.   THIS  IS  STILL  EXPERIMENTAL,  since  it  hasn't  been
  1.2053 +      properly tested yet.
  1.2054 +
  1.2055 +    - A Windows FNT specific API has been added, mostly to access font
  1.2056 +      headers.  This is used by Wine.
  1.2057 +
  1.2058 +    - TrueType tables  without an `hmtx' table are  now tolerated when
  1.2059 +      an  incremental interface  is  used.  This  happens for  certain
  1.2060 +      Type42 fonts passed from Ghostscript to FreeType.
  1.2061 +
  1.2062 +    - The PFR font driver is  now capable of returning the font family
  1.2063 +      and style  names when  they are available  (instead of  the sole
  1.2064 +      `FontID').   This  is  performed  by parsing  an  *undocumented*
  1.2065 +      portion of the font file!
  1.2066 +
  1.2067 +
  1.2068 +  III. MISCELLANEOUS
  1.2069 +
  1.2070 +    - The path stroker in FT_STROKER_H has entered beta stage.  It now
  1.2071 +      works very  well, but  its interface might  change a bit  in the
  1.2072 +      future.  More on this in later releases.
  1.2073 +
  1.2074 +    - The documentation for  FT_Size_Metrics didn't appear properly in
  1.2075 +      the API reference.
  1.2076 +
  1.2077 +    - The file docs/VERSION.DLL has been updated to explain versioning
  1.2078 +      with FreeType  (i.e., comparing release/libtool/so  numbers, and
  1.2079 +      how to use them in autoconf scripts).
  1.2080 +
  1.2081 +    - The  installation  documentation  has been  seriously  revamped.
  1.2082 +      Everything is now in the `docs' directory.
  1.2083 +
  1.2084 +
  1.2085 +======================================================================
  1.2086 +
  1.2087 +CHANGES BETWEEN 2.1.3 and 2.1.2
  1.2088 +
  1.2089 +  I. IMPORTANT BUG FIXES
  1.2090 +
  1.2091 +    - FT_Vector_Transform  had  been  incorrectly modified  in  2.1.2,
  1.2092 +      resulting  in  incorrect   transformations  being  applied  (for
  1.2093 +      example, rotations were processed in opposite angles).
  1.2094 +
  1.2095 +    - The format  8 and 12 TrueType charmap  enumeration routines have
  1.2096 +      been fixed (FT_Get_Next_Char returned invalid values).
  1.2097 +
  1.2098 +    - The  PFR font driver  returned incorrect  advance widths  if the
  1.2099 +      outline  and metrics resolution  defined in  the font  file were
  1.2100 +      different.
  1.2101 +
  1.2102 +    - FT_Glyph_To_Bitmap now returns  successfully when called with an
  1.2103 +      FT_BitmapGlyph argument (it previously returned an error).
  1.2104 +
  1.2105 +    - A bug  in the Type 1  loader that prevented  valid font bounding
  1.2106 +      boxes to be loaded from multiple master fonts.
  1.2107 +
  1.2108 +    - The SFNT  validation code has been rewritten.   FreeType can now
  1.2109 +      load `broken'  fonts that were  usable on Windows, but  not with
  1.2110 +      previous versions of the library.
  1.2111 +
  1.2112 +    - The computation of bearings in the BDF driver has been fixed.
  1.2113 +
  1.2114 +    - The Postscript hinter crashed when trying to hint certain glyphs
  1.2115 +      (more precisely,  when trying to  apply hints to an  empty glyph
  1.2116 +      outline).
  1.2117 +
  1.2118 +    - The  TrueType glyph  loader  now supports  composites in  `Apple
  1.2119 +      format'  (they differ slightly  from Microsoft/OpenType  ones in
  1.2120 +      the way transformation offsets are computed).
  1.2121 +
  1.2122 +    - FreeType was  very slow at opening certain  asian CID/CFF fonts,
  1.2123 +      due to  fixed increment  in dynamic array  re-allocations.  This
  1.2124 +      has  been changed  to  exponential behaviour  to get  acceptable
  1.2125 +      performance.
  1.2126 +
  1.2127 +
  1.2128 +
  1.2129 +  II. IMPORTANT CHANGES
  1.2130 +
  1.2131 +    - The PCF driver now supports gzip-compressed font files natively.
  1.2132 +      This means that  you will be able to use  all these bitmap fonts
  1.2133 +      that  come with  XFree86 with  FreeType (and  libXft/libXft2, by
  1.2134 +      extension).
  1.2135 +
  1.2136 +    - The  automatic and  postscript hinters  have both  been updated.
  1.2137 +      This  results in  a relatively  important increase  of rendering
  1.2138 +      quality since  many nasty defaults have been suppressed.  Please
  1.2139 +      visit the web page:
  1.2140 +
  1.2141 +        http://www.freetype.org/hinting/smooth-hinting.html
  1.2142 +
  1.2143 +      for additional details on this topic.
  1.2144 +
  1.2145 +    - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
  1.2146 +      (instead  of just  being  an FT_Int).   This  breaks source  and
  1.2147 +      binary  compatibility for  16bit systems  only,  while retaining
  1.2148 +      both of them for 32 and 64 bit ones.
  1.2149 +
  1.2150 +      Some new flags have been added consequently:
  1.2151 +
  1.2152 +        FT_LOAD_NO_AUTOHINT   :: Disable the use of the auto-hinter
  1.2153 +                                 (but not native format hinters).
  1.2154 +
  1.2155 +        FT_LOAD_TARGET_NORMAL :: Hint and render for normal
  1.2156 +                                 anti-aliased displays.
  1.2157 +
  1.2158 +        FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
  1.2159 +
  1.2160 +        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
  1.2161 +                                 BGR sub-pixel displays (like LCD
  1.2162 +                                 screens).  THIS IS STILL
  1.2163 +                                 EXPERIMENTAL!
  1.2164 +
  1.2165 +        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
  1.2166 +                                 vertical sub-pixel displays (like
  1.2167 +                                 rotated LCD screens).  THIS IS STILL
  1.2168 +                                 EXPERIMENTAL!
  1.2169 +
  1.2170 +      FT_LOAD_MONOCHROME   is  still   supported,  but   only  affects
  1.2171 +      rendering, not the hinting.
  1.2172 +
  1.2173 +      Note that the `ftview'  demo program available in the `ft2demos'
  1.2174 +      package  has been  updated to  support LCD-optimized  display on
  1.2175 +      non-paletted displays (under Win32 and X11).
  1.2176 +
  1.2177 +    - The  PFR  driver  now  supports embedded  bitmaps  (all  formats
  1.2178 +      supported), and returns correct kerning metrics for all glyphs.
  1.2179 +
  1.2180 +    - The TrueType charmap loader  now supports certain `broken' fonts
  1.2181 +      that load under Windows without problems.
  1.2182 +
  1.2183 +    - The cache API has been slightly modified (it's still a beta!):
  1.2184 +
  1.2185 +       - The type  FTC_ImageDesc has been removed; it  is now replaced
  1.2186 +         by  FTC_ImageTypeRec.   Note that  one  of  its  fields is  a
  1.2187 +         `load_flag' parameter for FT_Load_Glyph.
  1.2188 +
  1.2189 +       - The  field  `num_grays' of  FT_SBitRec  has  been changed  to
  1.2190 +         `max_grays'  in  order to  fit  within  a  single byte.   Its
  1.2191 +         maximum value is thus 255 (instead of 256 as previously).
  1.2192 +
  1.2193 +
  1.2194 +  III. MISCELLANEOUS
  1.2195 +
  1.2196 +    - Added support  for the  DESTDIR variable during  `make install'.
  1.2197 +      This simplifies packaging of FreeType.
  1.2198 +
  1.2199 +    - Included modified  copies of the  ZLib sources in  `src/gzip' in
  1.2200 +      order to support  gzip-compressed PCF fonts.  We do  not use the
  1.2201 +      system-provided  zlib  for  now,   though  this  is  a  probable
  1.2202 +      enhancement for future releases.
  1.2203 +
  1.2204 +    - The DocMaker tool used to generate the on-line API reference has
  1.2205 +      been   completely    rewritten.    It   is    now   located   in
  1.2206 +      `src/tools/docmaker/docmaker.py'.  Features:
  1.2207 +
  1.2208 +        - better cross-referenced output
  1.2209 +        - more polished output
  1.2210 +        - uses Python regular expressions  (though it didn't speed the
  1.2211 +          program)
  1.2212 +        - much  more  modular structure,  which  allows for  different
  1.2213 +          `backends'  in  order to  generate  HTML,  XML, or  whatever
  1.2214 +          format.
  1.2215 +
  1.2216 +      One can regenerate the API reference by calling:
  1.2217 +
  1.2218 +         python src/tools/docmaker/docmaker.py \
  1.2219 +                --prefix=ft2 \
  1.2220 +                --title=FreeType-2.1.3 \
  1.2221 +                --output=<outputdirectory>
  1.2222 +                include/freetype/*.h \
  1.2223 +                include/freetype/config/*.h \
  1.2224 +                include/freetype/cache/*.h
  1.2225 +
  1.2226 +    - A new, experimental, support for incremental font loading (i.e.,
  1.2227 +      loading  of fonts  where the  glyphs are  not in  the  font file
  1.2228 +      itself, but provided by an external component, like a Postscript
  1.2229 +      interpreter) has been added by Graham Asher.  This is still work
  1.2230 +      in progress, however.
  1.2231 +
  1.2232 +    - A new,  EXPERIMENTAL, path stroker  has been added.   It doesn't
  1.2233 +      suffer  from  severe  rounding  errors  and  treat  bezier  arcs
  1.2234 +      directly.  Still work in progress (i.e. not part of the official
  1.2235 +      API).   See  the file  <freetype/ftstroker.h>  for  some of  the
  1.2236 +      details.
  1.2237 +
  1.2238 +    - The massive  re-formatting of sources and  internal re-design is
  1.2239 +      still under-way.  Many  internal functions, constants, and types
  1.2240 +      have been renamed.
  1.2241 +
  1.2242 +
  1.2243 +======================================================================
  1.2244 +
  1.2245 +CHANGES BETWEEN 2.1.2 and 2.1.1
  1.2246 +
  1.2247 +  I. IMPORTANT BUG FIXES
  1.2248 +
  1.2249 +    - Many  font drivers didn't  select a  Unicode charmap  by default
  1.2250 +      when a new face  was opened (with the FT_CONFIG_OPTION_USE_CMAPS
  1.2251 +      options enabled),  causing many applications  to not be  able to
  1.2252 +      display text correctly with the 2.1.x releases.
  1.2253 +
  1.2254 +    - The  PFR driver had  a bug  in its  composite loading  code that
  1.2255 +      produces incorrectly placed accents with many fonts.
  1.2256 +
  1.2257 +    - The Type42 driver crashed sometimes due to a nasty bug.
  1.2258 +
  1.2259 +    - The Type 1 custom encoding  charmap didn't handle the case where
  1.2260 +      the first glyph index wasn't 0.
  1.2261 +
  1.2262 +    - A  serious  typo  in  the  TrueType  composite  loader  produced
  1.2263 +      incorrectly placed  glyphs in fonts  like `Wingdings' and  a few
  1.2264 +      others.
  1.2265 +
  1.2266 +
  1.2267 +  II. MISCELLANEOUS
  1.2268 +
  1.2269 +    - The Win32  Visual C++ project  file has been updated  to include
  1.2270 +      the PFR driver as well.
  1.2271 +
  1.2272 +    - `freetype.m4' is  now installed by default by  `make install' on
  1.2273 +      Unix systems.
  1.2274 +
  1.2275 +    - The function  FT_Get_PS_Font_Info now works with  CID and Type42
  1.2276 +      fonts as well.
  1.2277 +
  1.2278 +
  1.2279 +======================================================================
  1.2280 +
  1.2281 +CHANGES BETWEEN 2.1.1 and 2.1.0
  1.2282 +
  1.2283 +  I. IMPORTANT BUG FIXES
  1.2284 +
  1.2285 +    - The  `version_info'  returned   by  `freetype-config'  in  2.1.0
  1.2286 +      returned an invalid value.  It now returns 9:1:3 (2.0.9 returned
  1.2287 +      9:0:3).
  1.2288 +
  1.2289 +    - Version 2.1.0  couldn't be linked against  applications on Win32
  1.2290 +      and  Amiga systems  due  to  a new  debug  function that  wasn't
  1.2291 +      properly   propagated  to   the  system-specific   directory  in
  1.2292 +      `builds'.
  1.2293 +
  1.2294 +    - Various MacOS and Mac OS X specific fixes.
  1.2295 +
  1.2296 +    - Fixed  a bug in  the TrueType  charmap validation  routines that
  1.2297 +      made version  2.1.0 too restrictive  -- many popular  fonts have
  1.2298 +      been rejected.
  1.2299 +
  1.2300 +    - There was  still a very small difference  between the monochrome
  1.2301 +      glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
  1.2302 +      bytecode  interpreter enabled.   This was  caused by  an invalid
  1.2303 +      flag setting in the TrueType glyph loader, making the rasterizer
  1.2304 +      change  its  drop-out   control  mode.   Now  the results should
  1.2305 +      _really_ be completely identical.
  1.2306 +
  1.2307 +    - The TrueType name table loader has been improved to support many
  1.2308 +      popular  though buggy Asian  fonts.  It  now ignores  empty name
  1.2309 +      entries,  invalid  pointer offsets  and  a  few other  incorrect
  1.2310 +      subtleties.  Moreover,  name strings  are now loaded  on demand,
  1.2311 +      which reduces the memory load  of many faces (e.g. the ARIAL.TTF
  1.2312 +      font file contains a 10kByte name table with 70 names).
  1.2313 +
  1.2314 +    - Fixed a bug in the Postscript hinter that prevented family blues
  1.2315 +      substitution to happen correctly.
  1.2316 +
  1.2317 +
  1.2318 +  II. NEW FEATURES
  1.2319 +
  1.2320 +    - Three new font drivers in this release:
  1.2321 +
  1.2322 +      * A  BDF  font driver,  contributed  by  Franco Zappa  Nardelli,
  1.2323 +        heavily  modified   by  Werner  Lemberg.    It  also  supports
  1.2324 +        anti-aliased bitmaps (using a slightly extended BDF format).
  1.2325 +
  1.2326 +      * A Type42  font driver, contributed by Roberto  Alameda.  It is
  1.2327 +        still experimental but seems to work relatively well.
  1.2328 +
  1.2329 +      * A PFR  font driver, contributed  by David Turner  himself.  It
  1.2330 +        doesn't  support PFR  hinting --  note that  BitStream  has at
  1.2331 +        least two patents on this format!
  1.2332 +
  1.2333 +
  1.2334 +  III. MISCELLANEOUS
  1.2335 +
  1.2336 +    - The  cache  sub-system has  been  optimized  in important  ways.
  1.2337 +      Cache hits are now significantly faster.  For example, using the
  1.2338 +      CMap cache is about  twice faster than calling FT_Get_Char_Index
  1.2339 +      on most platforms.  Similarly, using an SBit cache is about five
  1.2340 +      times faster  than loading the  bitmaps from a bitmap  file, and
  1.2341 +      300 to  500 times  faster than generating  them from  a scalable
  1.2342 +      format.
  1.2343 +
  1.2344 +      Note that  you should recompile  your sources if you  designed a
  1.2345 +      custom  cache  class for  the  FT2  Cache  subsystem, since  the
  1.2346 +      changes performed are source, but not binary, compatible.
  1.2347 +
  1.2348 +
  1.2349 +======================================================================
  1.2350 +
  1.2351 +CHANGES BETWEEN 2.1.0 and 2.0.9
  1.2352 +
  1.2353 +  I. IMPORTANT BUG FIXES
  1.2354 +
  1.2355 +    - The  TrueType bytecode  interpreter  has been  fixed to  produce
  1.2356 +      _exactly_ the same output as FreeType 1.x.  Previous differences
  1.2357 +      were due  to slightly distinct  fixed-point computation routines
  1.2358 +      used to perform dot products and vector length measurements.
  1.2359 +
  1.2360 +      It seems  that native TrueType hinting  is _extremely_ sensitive
  1.2361 +      to  rounding errors.  The  required vector  computation routines
  1.2362 +      have been optimized and placed within the `ttinterp.c' file.
  1.2363 +
  1.2364 +    - Fixed the parsing of accelerator tables in the PCF font driver.
  1.2365 +
  1.2366 +    - Fixed the Type1 glyph loader  routine used to compute the font's
  1.2367 +      maximum advance width.
  1.2368 +
  1.2369 +
  1.2370 +  II. NEW FEATURES
  1.2371 +
  1.2372 +    - The `configure' script used on Unix systems has been modified to
  1.2373 +      check  that  GNU  Make  is  being used  to  build  the  library.
  1.2374 +      Otherwise,  it  will display  a  message  proposing  to use  the
  1.2375 +      GNUMAKE environment variable to name it.
  1.2376 +
  1.2377 +      The Unix-specific file README.UNX has been modified accordingly.
  1.2378 +
  1.2379 +
  1.2380 +  III. MISCELLANEOUS
  1.2381 +
  1.2382 +    - The  FreeType  License in  `docs/FTL.TXT'  has  been updated  to
  1.2383 +      include  a  proposed preferred  disclaimer.   If  you are  using
  1.2384 +      FreeType in your products, you are encouraged (but not mandated)
  1.2385 +      to use the following text in your documentation:
  1.2386 +
  1.2387 +      """
  1.2388 +        Portions of this software are copyright © 1996-2002 The
  1.2389 +        FreeType Project (www.freetype.org).  All rights reserved.
  1.2390 +      """
  1.2391 +
  1.2392 +    - The default size of the render pool has been reduced to 16kByte.
  1.2393 +      This  shouldn't result  in any  noticeable  performance penalty,
  1.2394 +      unless you are  using the engine as-is to  render very large and
  1.2395 +      complex glyphs.
  1.2396 +
  1.2397 +    - The  FreeType 2  redesign has  begun.  More  information  can be
  1.2398 +      found at this URL:
  1.2399 +
  1.2400 +        http://www.freetype.org/freetype2/redesign.html
  1.2401 +
  1.2402 +      The following  internal changes  have been performed  within the
  1.2403 +      sources of this release:
  1.2404 +
  1.2405 +        - Many   internal  types   have  been   renamed   to  increase
  1.2406 +          consistency.   The  following  should  be true,  except  for
  1.2407 +          public types:
  1.2408 +
  1.2409 +            * All structure  types have a name ending  in `Rec' (short
  1.2410 +              for `record').
  1.2411 +
  1.2412 +            * A  pointer-to-structure type  has the  same name  as the
  1.2413 +              structure, _without_ the `Rec' suffix.
  1.2414 +
  1.2415 +              Example:
  1.2416 +
  1.2417 +                typedef struct FooRec_
  1.2418 +                {
  1.2419 +                  ...
  1.2420 +
  1.2421 +                } FooRec, *Foo;
  1.2422 +
  1.2423 +        - Many   internal  macros  have   been  renamed   to  increase
  1.2424 +          consistency.  The following should be true:
  1.2425 +
  1.2426 +            * All  macros  have a  name  beginning  with `FT_'.   This
  1.2427 +              required a few changes like
  1.2428 +
  1.2429 +                ALLOC   => FT_ALLOC
  1.2430 +                FREE    => FT_FREE
  1.2431 +                REALLOC => FT_REALLOC
  1.2432 +
  1.2433 +            * All  macros are completely  UPPERCASE.  This  required a
  1.2434 +              few changes like:
  1.2435 +
  1.2436 +                READ_Short  => FT_READ_SHORT
  1.2437 +                NEXT_Short  => FT_NEXT_SHORT
  1.2438 +                GET_ULongLE => FT_GET_ULONG_LE
  1.2439 +                MEM_Set     => FT_MEM_SET
  1.2440 +                MEM_Copy    => FT_MEM_COPY
  1.2441 +                etc.
  1.2442 +
  1.2443 +            * Whenever   possible,   all   macro  names   follow   the
  1.2444 +              FT_<OBJECT>_<METHOD> pattern.  For example
  1.2445 +
  1.2446 +                ACCESS_Frame   => FT_FRAME_ENTER
  1.2447 +                FORGET_Frame   => FT_FRAME_EXIT
  1.2448 +                EXTRACT_Frame  => FT_FRAME_EXTRACT
  1.2449 +                RELEASE_Frame  => FT_FRAME_RELEASE
  1.2450 +
  1.2451 +                FILE_Pos       => FT_STREAM_POS
  1.2452 +                FILE_Seek      => FT_STREAM_SEEK
  1.2453 +                FILE_Read      => FT_STREAM_READ
  1.2454 +                FILE_ReadAt    => FT_STREAM_READ_AT
  1.2455 +                READ_Fields    => FT_STREAM_READ_FIELDS
  1.2456 +
  1.2457 +        - Many  internal functions  have  been renamed  to follow  the
  1.2458 +          FT_<Object>_<Method> pattern.  For example:
  1.2459 +
  1.2460 +            FT_Seek_Stream       => FT_Stream_Seek
  1.2461 +            FT_Read_Stream_At    => FT_Stream_ReadAt
  1.2462 +            FT_Done_Stream       => FT_Stream_Close
  1.2463 +            FT_New_Stream        => FT_Stream_Open
  1.2464 +            FT_New_Memory_Stream => FT_Stream_OpenMemory
  1.2465 +            FT_Extract_Frame     => FT_Stream_ExtractFrame
  1.2466 +
  1.2467 +          Note that method names do not contain `_'.
  1.2468 +
  1.2469 +        - The FT_ALLOC_ARRAY  and FT_REALLOC_ARRAY have  been replaced
  1.2470 +          with  FT_NEW_ARRAY and  FT_RENEW_ARRAY which  do not  take a
  1.2471 +          type  as the  fourth argument.   Instead, the  array element
  1.2472 +          type  size is computed  automatically from  the type  of the
  1.2473 +          target pointer used.
  1.2474 +
  1.2475 +        - A  new object  class, FT_CMap,  has been  introduced.  These
  1.2476 +          internal  objects are  used to  model character  maps.  This
  1.2477 +          eases  the support  of additional  charmap types  within the
  1.2478 +          engine.
  1.2479 +
  1.2480 +        - A new  configuration file named `ftstdlib.h'  has been added
  1.2481 +          to `include/freetype/config'.  It  is used to define aliases
  1.2482 +          for  _every_ routine  of the  ISO  C library  that the  font
  1.2483 +          engine   uses.    Each    aliases   has   a   `ft_'   prefix
  1.2484 +          (e.g. `ft_strlen' is an alias for `strlen').
  1.2485 +
  1.2486 +          This is  used to  ease the porting  of FreeType 2  to exotic
  1.2487 +          runtime environments where the ISO C Library isn't available
  1.2488 +          (e.g.  XFree86 extension modules).
  1.2489 +
  1.2490 +      More details are available in the `ChangeLog' file.
  1.2491 +
  1.2492 +
  1.2493 +======================================================================
  1.2494 +
  1.2495 +CHANGES BETWEEN 2.0.9 and 2.0.8
  1.2496 +
  1.2497 +  I. IMPORTANT BUG FIXES
  1.2498 +
  1.2499 +    - Certain fonts like `foxjump.ttf' contain broken name tables with
  1.2500 +      invalid entries and wild offsets.  This caused FreeType to crash
  1.2501 +      when trying to load them.
  1.2502 +
  1.2503 +      The  SFNT `name'  table  loader has  been  fixed to  be able  to
  1.2504 +      support these strange fonts.
  1.2505 +
  1.2506 +      Moreover, the code  in charge of processing this  table has been
  1.2507 +      changed  to always favour  Windows-formatted entries  over other
  1.2508 +      ones.  Hence,  a font that works  on Windows but not  on the Mac
  1.2509 +      will  load cleanly in  FreeType and  report accurate  values for
  1.2510 +      Family & PostScript names.
  1.2511 +
  1.2512 +    - The CID font driver has been fixed.  It unfortunately returned a
  1.2513 +      Postscript   Font   name   with   a   leading   slash,   as   in
  1.2514 +      `/MunhwaGothic-Regular'.
  1.2515 +
  1.2516 +    - FreeType  2 should now  compile fine  on AIX  4.3.3 as  a shared
  1.2517 +      library.
  1.2518 +
  1.2519 +    - A  bug  in the  Postscript  hinter  has  been found  and  fixed,
  1.2520 +      removing un-even stem widths at small pixel sizes (like 14-17).
  1.2521 +
  1.2522 +      This  improves the  quality of  a certain  number  of Postscript
  1.2523 +      fonts.
  1.2524 +
  1.2525 +
  1.2526 +  II. NEW FEATURES
  1.2527 +
  1.2528 +    - A  new function  named  `FT_Library_Version' has  been added  to
  1.2529 +      return  the current  library's major,  minor, and  patch version
  1.2530 +      numbers.   This is  important since  the  macros FREETYPE_MAJOR,
  1.2531 +      FREETYPE_MINOR,  and  FREETYPE_PATCH  cannot  be used  when  the
  1.2532 +      library is dynamically linked by a program.
  1.2533 +
  1.2534 +    - Two   new  APIs   have  been   added:   `FT_Get_First_Char'  and
  1.2535 +      `FT_Get_Next_Char'.
  1.2536 +
  1.2537 +      Together,  these can  be used  to iterate  efficiently  over the
  1.2538 +      currently  selected  charmap of  a  given  face.   Read the  API
  1.2539 +      reference for more details.
  1.2540 +
  1.2541 +
  1.2542 +  III. MISCELLANEOUS
  1.2543 +
  1.2544 +    - The FreeType sources are  under heavy internal re-factoring.  As
  1.2545 +      a consequence,  we have created  a branch named `STABLE'  on the
  1.2546 +      CVS to hold all future releases/fixes in the 2.0.x family.
  1.2547 +
  1.2548 +      The  HEAD  branch  now  contains  the  re-factored  sources  and
  1.2549 +      shouldn't  be used for  testing or  packaging new  releases.  In
  1.2550 +      case you  would like  to access the  2.0.9 sources from  our CVS
  1.2551 +      repository, use the tag `VER-2-0-9'.
  1.2552 +
  1.2553 +
  1.2554 +======================================================================
  1.2555 +
  1.2556 +CHANGES BETWEEN 2.0.8 and 2.0.7
  1.2557 +
  1.2558 +  I. IMPORTANT BUG FIXES
  1.2559 +
  1.2560 +    - There was  a small but  nasty bug in  `freetype-config.in' which
  1.2561 +      caused the `freetype-config' script to fail on Unix.
  1.2562 +
  1.2563 +      This didn't prevent the installation  of the library or even its
  1.2564 +      execution, but caused problems  when trying to compile many Unix
  1.2565 +      packages that depend on it.
  1.2566 +
  1.2567 +    - Some TrueType or OpenType fonts embedded in PDF documents do not
  1.2568 +      have  a  'cmap',  'post'  and  'name'  as  is  required  by  the
  1.2569 +      specification.  FreeType no longer refuses to load such fonts.
  1.2570 +
  1.2571 +    - Various fixes to the PCF font driver.
  1.2572 +
  1.2573 +
  1.2574 +======================================================================
  1.2575 +
  1.2576 +CHANGES BETWEEN 2.0.7 and 2.0.6
  1.2577 +
  1.2578 +  I. IMPORTANT BUG FIXES
  1.2579 +
  1.2580 +    - Fixed  two  bugs in  the  Type 1  font  driver.   The first  one
  1.2581 +      resulted in a memory leak in subtle cases.  The other one caused
  1.2582 +      FreeType to crash when  trying to load `.gsf' files (Ghostscript
  1.2583 +      so-called Postscript fonts).
  1.2584 +
  1.2585 +      (This  made _many_  KDE applications  crash on  certain systems.
  1.2586 +       FreeType _is_ becoming a critical system component on Linux :-)
  1.2587 +
  1.2588 +    - Fixed a memory leak in the CFF font driver.
  1.2589 +
  1.2590 +    - Fixed a memory leak in the PCF font driver.
  1.2591 +
  1.2592 +    - Fixed       the        Visual       C++       project       file
  1.2593 +      `builds/win32/visualc/freetype.dsp' since  it didn't include the
  1.2594 +      Postscript hinter component, causing errors at build time.
  1.2595 +
  1.2596 +    - Fixed a  small rendering bug  in the anti-aliased  renderer that
  1.2597 +      only  occurred when  trying to  draw  thin (less  than 1  pixel)
  1.2598 +      strokes.
  1.2599 +
  1.2600 +    - Fixed  `builds/unix/freetype2.a4' which  is used  to  generate a
  1.2601 +      valid `freetype2.m4' for use with autoconf.
  1.2602 +
  1.2603 +    - Fixed the OpenVMS Makefiles.
  1.2604 +
  1.2605 +
  1.2606 +  II. MISCELLANEOUS
  1.2607 +
  1.2608 +    - Added  `configure'  and   `install'  scripts  to  the  top-level
  1.2609 +      directory.  A GNU-style installation is thus now easily possible
  1.2610 +      with
  1.2611 +
  1.2612 +        ./configure  <options>
  1.2613 +        make
  1.2614 +        make install
  1.2615 +
  1.2616 +
  1.2617 +======================================================================
  1.2618 +
  1.2619 +CHANGES BETWEEN 2.0.6 and 2.0.5
  1.2620 +
  1.2621 +  I. IMPORTANT BUG FIXES
  1.2622 +
  1.2623 +    - It wasn't possible to load embedded bitmaps when the auto-hinter
  1.2624 +      was used.  This is now fixed.
  1.2625 +
  1.2626 +    - The TrueType  font driver  didn't load some  composites properly
  1.2627 +      (the  sub-glyphs  were  slightly  shifted,  and  this  was  only
  1.2628 +      noticeable when using monochrome rendering).
  1.2629 +
  1.2630 +    - Various  fixes  to the  auto-hinter.   They  merely improve  the
  1.2631 +      output of sans-serif fonts.   Note that there are still problems
  1.2632 +      with serifed fonts and composites (accented characters).
  1.2633 +
  1.2634 +    - All scalable  font drivers erroneously  returned un-fitted glyph
  1.2635 +      advances when hinting was  requested.  This created problems for
  1.2636 +      a number  of layout applications.  This  is a very  old bug that
  1.2637 +      got  undetected mainly  because most  test/demo  program perform
  1.2638 +      rounding explicitly or implicitly (through the cache).
  1.2639 +
  1.2640 +    - `FT_Glyph_To_Bitmap' did erroneously  modify the source glyph in
  1.2641 +      certain cases.
  1.2642 +
  1.2643 +    - `glnames.py'  still contained  a bug  that made  FreeType return
  1.2644 +      invalid names for certain glyphs.
  1.2645 +
  1.2646 +    - The  library crashed  when  loading certain  Type  1 fonts  like
  1.2647 +      `sadn.pfb'  (`Stalingrad  Normal'),   which  appear  to  contain
  1.2648 +      pathetic font info dictionaries.
  1.2649 +
  1.2650 +    - The TrueType glyph  loader is now much more  paranoid and checks
  1.2651 +      everything when loading a given glyph image.  This was necessary
  1.2652 +      to avoid problems (crashes and/or memory overwrites) with broken
  1.2653 +      fonts that came from a really buggy automatic font converter.
  1.2654 +
  1.2655 +
  1.2656 +  II. IMPORTANT UPDATES AND NEW FEATURES
  1.2657 +
  1.2658 +    - Important updates to the Mac-specific parts of the library.
  1.2659 +
  1.2660 +    - The caching sub-system has  been completely re-designed, and its
  1.2661 +      API has  evolved (the  old one is  still supported  for backward
  1.2662 +      compatibility).
  1.2663 +
  1.2664 +      The documentation for it is  not yet completed, sorry.  For now,
  1.2665 +      you are encouraged to continue  using the old API.  However, the
  1.2666 +      ftview  demo program in  the ft2demos  package has  already been
  1.2667 +      updated to use the new caching functions.
  1.2668 +
  1.2669 +    - A new charmap cache is provided too.  See `FTC_CMapCache'.  This
  1.2670 +      is useful to perform  character code -> glyph index translations
  1.2671 +      quickly, without the need for an opened FT_Face.
  1.2672 +
  1.2673 +    - A NEW POSTSCRIPT HINTER module  has been added to support native
  1.2674 +      hints in  the following  formats: PostScript Type  1, PostScript
  1.2675 +      CID, and CFF/CEF.
  1.2676 +
  1.2677 +      Please test!  Note that  the auto-hinter produces better results
  1.2678 +      for a number of  badly-hinted fonts (mostly auto-generated ones)
  1.2679 +      though.
  1.2680 +
  1.2681 +    - A memory debugger is now  part of the standard FreeType sources.
  1.2682 +      To      enable      it,      define      FT_DEBUG_MEMORY      in
  1.2683 +      <freetype/config/ftoption.h>, and recompile the library.
  1.2684 +
  1.2685 +      Additionally, define  the _environment_ variable FT_DEBUG_MEMORY
  1.2686 +      and run any program using FreeType.  When the library is exited,
  1.2687 +      a  summary  of memory  footprints  and  possible  leaks will  be
  1.2688 +      displayed.
  1.2689 +
  1.2690 +      This works transparently with  _any_ program that uses FreeType.
  1.2691 +      However, you  will need a lot  of memory to  use this (allocated
  1.2692 +      blocks are never  released to the heap to  detect double deletes
  1.2693 +      easily).
  1.2694 +
  1.2695 +
  1.2696 +  III. MISCELLANEOUS
  1.2697 +
  1.2698 +    - We  are  aware  of  subtle  differences between  the  output  of
  1.2699 +      FreeType  versions   1  and  2  when  it   comes  to  monochrome
  1.2700 +      TrueType-hinted glyphs.   These are  most probably due  to small
  1.2701 +      differences in the monochrome rasterizers and will be worked out
  1.2702 +      in an upcoming release.
  1.2703 +
  1.2704 +    - We have decided to fork the sources in a `stable' branch, and an
  1.2705 +      `unstable' one, since FreeType  is becoming a critical component
  1.2706 +      of many Unix systems.
  1.2707 +
  1.2708 +      The next  bug-fix releases of  the library will be  named 2.0.7,
  1.2709 +      2.0.8, etc.,  while the `2.1'  branch will contain a  version of
  1.2710 +      the sources where we will start major reworking of the library's
  1.2711 +      internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
  1.2712 +      more distant future.
  1.2713 +
  1.2714 +      We  also hope  that this  scheme will  allow much  more frequent
  1.2715 +      releases than in the past.
  1.2716 +
  1.2717 +
  1.2718 +======================================================================
  1.2719 +
  1.2720 +CHANGES BETWEEN 2.0.5 and 2.0.4
  1.2721 +
  1.2722 +  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE
  1.2723 +  WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
  1.2724 +
  1.2725 +  - Fixed a bug that made  certain glyphs, like `Cacute', `cacute' and
  1.2726 +    `lslash'  unavailable from Unicode  charmaps of  Postscript fonts.
  1.2727 +    This prevented the correct display of Polish text, for example.
  1.2728 +
  1.2729 +  - The kerning table of Type 1 fonts was loaded by FreeType, when its
  1.2730 +    AFM    file    was    attached    to    its    face,    but    the
  1.2731 +    FT_FACE_FLAG_HAS_KERNING   bit  flags   was  not   set  correctly,
  1.2732 +    preventing FT_Get_Kerning to return meaningful values.
  1.2733 +
  1.2734 +  - Improved  SFNT (TrueType  & OpenType)  charmap  support.  Slightly
  1.2735 +    better performance, as well as support for the new formats defined
  1.2736 +    by the OpenType 1.3 specification (8, 10, and 12)
  1.2737 +
  1.2738 +  - Fixed a  serious typo in `src/base/ftcalc.c'  which caused invalid
  1.2739 +    computations in certain rare cases, producing ugly artefacts.
  1.2740 +
  1.2741 +  - The  size  of the  EM  square is  computed  with  a more  accurate
  1.2742 +    algorithm for Postscript fonts.   The old one caused slight errors
  1.2743 +    with embedded fonts found in PDF documents.
  1.2744 +
  1.2745 +  - Fixed  a  bug in  the  cache  manager  that prevented  normal  LRU
  1.2746 +    behaviour  within the cache  manager, causing  unnecessary reloads
  1.2747 +    (for FT_Face and FT_Size objects only).
  1.2748 +
  1.2749 +  - Added  a new  function named  `FT_Get_Name_Index' to  retrieve the
  1.2750 +    glyph index of a given glyph name, when found in a face.
  1.2751 +
  1.2752 +  - Added  a new function  named `FT_Get_Postscript_Name'  to retrieve
  1.2753 +    the `unique' Postscript font name of a given face.
  1.2754 +
  1.2755 +  - Added   a   new   public   header  size   named   FT_SIZES_H   (or
  1.2756 +    <freetype/ftsizes.h>) providing  new FT_Size-management functions:
  1.2757 +    FT_New_Size, FT_Activate_Size, FT_Done_Size.
  1.2758 +
  1.2759 +  - Fixed a  reallocation bug that  generated a dangling  pointer (and
  1.2760 +    possibly    memory    leaks)    with    Postscript    fonts    (in
  1.2761 +    src/psaux/psobjs.c).
  1.2762 +
  1.2763 +  - Many fixes for 16-bit correctness.
  1.2764 +
  1.2765 +  - Removed many pedantic compiler warnings from the sources.
  1.2766 +
  1.2767 +  - Added an Amiga build directory in `builds/amiga'.
  1.2768 +
  1.2769 +
  1.2770 +======================================================================
  1.2771 +
  1.2772 +CHANGES BETWEEN 2.0.4 and 2.0.3
  1.2773 +
  1.2774 +  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely,
  1.2775 +    the font  transformation set through  FT_Set_Transform was applied
  1.2776 +    twice to auto-hinted glyphs, resulting in incorrectly rotated text
  1.2777 +    output.
  1.2778 +
  1.2779 +  - Fixed _many_  compiler warnings.   FT2 should now  compile cleanly
  1.2780 +    with Visual  C++'s most pedantic warning level  (/W4).  It already
  1.2781 +    compiled fine with GCC and a few other compilers.
  1.2782 +
  1.2783 +  - Fixed a bug  that prevented the linear advance  width of composite
  1.2784 +    TrueType glyphs to be correctly returned.
  1.2785 +
  1.2786 +  - Fixed    the    Visual    C++    project    files    located    in
  1.2787 +    `builds/win32/visualc' (previous versions  used older names of the
  1.2788 +    library).
  1.2789 +
  1.2790 +  - Many  32-bit constants  have an  `L' appended  to their  value, in
  1.2791 +    order to improve the 16-bitness  of the code.  Someone is actually
  1.2792 +    trying to use FT2 on an Atari ST machine!
  1.2793 +
  1.2794 +  - Updated  the  `builds/detect.mk' file  in  order to  automatically
  1.2795 +    build FT2  on AIX systems.   AIX uses `/usr/sbin/init'  instead of
  1.2796 +    `/sbin/init' and wasn't previously  detected as a Unix platform by
  1.2797 +    the FreeType build system.
  1.2798 +
  1.2799 +  - Updated  the  Unix-specific  portions  of the  build  system  (new
  1.2800 +    libtool version, etc.).
  1.2801 +
  1.2802 +  - The  SFNT kerning  loader now  ensures  that the  table is  sorted
  1.2803 +    (since some problem fonts do not meet this requirement).
  1.2804 +
  1.2805 +
  1.2806 +=======================================================================
  1.2807 +
  1.2808 +CHANGES BETWEEN 2.0.3 and 2.0.2
  1.2809 +
  1.2810 +  I. CHANGES TO THE MODULES / FONT DRIVERS
  1.2811 +
  1.2812 +    - THE  AUTO-HINTER HAS  BEEN SLIGHTLY  IMPROVED, in  order  to fix
  1.2813 +      several annoying artefacts, mainly:
  1.2814 +
  1.2815 +        - Blue  zone alignment  of  horizontal stems  wasn't performed
  1.2816 +          correctly, resulting in artefacts  like the `d' being placed
  1.2817 +          one pixel below the `b' in some fonts like Time New Roman.
  1.2818 +
  1.2819 +        - Overshoot thresholding  wasn't performed correctly, creating
  1.2820 +          unpleasant artefacts at large character pixel sizes.
  1.2821 +
  1.2822 +        - Composite glyph loading has  been simplified.  This gets rid
  1.2823 +          of  various artefacts  where the  components of  a composite
  1.2824 +          glyphs were not correctly spaced.
  1.2825 +
  1.2826 +      These are  the last changes to the  current auto-hinting module.
  1.2827 +      A new  hinting sub-system is currently  in the work  in order to
  1.2828 +      support native hints  in Type 1 / CFF /  OpenType fonts, as well
  1.2829 +      as globally improve rendering.
  1.2830 +
  1.2831 +    - The  PCF  driver has  been  fixed.   It  reported invalid  glyph
  1.2832 +      dimensions for the fonts available on Solaris.
  1.2833 +
  1.2834 +    - The Type  1, CID and CFF  drivers have been modified  to fix the
  1.2835 +      computation of the EM size.
  1.2836 +
  1.2837 +    - The Type 1  driver has been fixed to avoid  a dangerous bug that
  1.2838 +      crashed the library with non-conforming fonts (i.e. ones that do
  1.2839 +      not place the .notdef glyph at position 0).
  1.2840 +
  1.2841 +    - The TrueType  driver had a  rather subtle bug  (dangling pointer
  1.2842 +      when loading  composite glyphs) that could crash  the library in
  1.2843 +      rare occasions!
  1.2844 +
  1.2845 +
  1.2846 +  II. HIGH-LEVEL API CHANGES
  1.2847 +
  1.2848 +    - The error  code enumeration values have been  changed.  An error
  1.2849 +      value  is decomposed  in  a  generic error  code,  and a  module
  1.2850 +      number.  see <freetype/fterrors.h> for details.
  1.2851 +
  1.2852 +    - A   new  public   header   file  has   been  introduced,   named
  1.2853 +      FT_TRIGONOMETRY_H    (include/freetype/fttrigon.h),    providing
  1.2854 +      trigonometric functions to  compute sines, cosines, arctangents,
  1.2855 +      etc. with 16.16 fixed precision.  The implementation is based on
  1.2856 +      the CORDIC  algorithm and is very fast  while being sufficiently
  1.2857 +      accurate.
  1.2858 +
  1.2859 +
  1.2860 +  III. INTERNALS
  1.2861 +
  1.2862 +    - Added  BeOS-specific files  in the  old build  sub-system.  Note
  1.2863 +      that no changes were required to compile the library with Jam.
  1.2864 +
  1.2865 +    - The  configuration  is now  capable  of automatically  detecting
  1.2866 +      64-bit integers  on a set  of predefined compilers  (GCC, Visual
  1.2867 +      C++, Borland C++) and will use them by default.  This provides a
  1.2868 +      small performance boost.
  1.2869 +
  1.2870 +    - A  small memory leak  that happened  when opening  0-sized files
  1.2871 +      (duh!)  have been fixed.
  1.2872 +
  1.2873 +    - Fixed bezier  stack depth  bug in the  routines provided  by the
  1.2874 +      FT_BBOX_H  header   file.   Also  fixed  similar   bugs  in  the
  1.2875 +      rasterizers.
  1.2876 +
  1.2877 +    - The outline bounding  box code has been rewritten  to use direct
  1.2878 +      computations,  instead of  bezier sub-division,  to  compute the
  1.2879 +      exact bounding box of glyphs.   This is slightly slower but more
  1.2880 +      accurate.
  1.2881 +
  1.2882 +    - The build system has been  improved and fixed, mainly to support
  1.2883 +      `make'  on Windows  2000  correctly, avoid  problems with  `make
  1.2884 +      distclean' on non Unix systems, etc.
  1.2885 +
  1.2886 +    - Hexadecimal  constants  have been  suffixed  with  `U' to  avoid
  1.2887 +      problems with certain compilers on 64-bit platforms.
  1.2888 +
  1.2889 +    - A new directory named `src/tools' has been created.  It contains
  1.2890 +      Python scripts and simple unit test programs used to develop the
  1.2891 +      library.
  1.2892 +
  1.2893 +    - The DocMaker tool has been  moved from `docs' to `src/tools' and
  1.2894 +      has been updated with the following:
  1.2895 +
  1.2896 +         - Now accepts the `--title=XXXX' or `-t XXXX' option from the
  1.2897 +           command line to set the project's name in the generated API
  1.2898 +           reference.
  1.2899 +
  1.2900 +         - Now accepts the `--output=DIR'  or `-o DIR' option from the
  1.2901 +           command line to set  the output directory for all generated
  1.2902 +           HTML files.
  1.2903 +
  1.2904 +         - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
  1.2905 +           command  line  to  set  the  file prefix  to  use  for  all
  1.2906 +           generated HTML files.
  1.2907 +
  1.2908 +         - Now generates the current  time/data on each generated page
  1.2909 +           in order to distinguish between versions.
  1.2910 +
  1.2911 +      DocMaker  can be  used with  other  projects now,  not only  FT2
  1.2912 +      (e.g. MLib, FTLayout, etc.).
  1.2913 +
  1.2914 +
  1.2915 +======================================================================
  1.2916 +
  1.2917 +CHANGES BETWEEN 2.0.2 and 2.0.1
  1.2918 +
  1.2919 +  I. CHANGES TO THE MODULES / FONT DRIVERS
  1.2920 +
  1.2921 +    - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
  1.2922 +      avoid legal problems  with the Apple patents.  It  seems that we
  1.2923 +      mistakenly  turned this option  on in  previous releases  of the
  1.2924 +      build.
  1.2925 +
  1.2926 +      Note that if  you want to use the  bytecode interpreter in order
  1.2927 +      to get high-quality TrueType  rendering, you will need to toggle
  1.2928 +      by        hand        the        definition        of        the
  1.2929 +      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
  1.2930 +      `include/freetype/config/ftoption.h'.
  1.2931 +
  1.2932 +    - The CFF driver has been improved by Tom Kacvinsky and Sander van
  1.2933 +      der Wal:
  1.2934 +
  1.2935 +      * Support for `seac' emulation.
  1.2936 +      * Support for `dotsection'.
  1.2937 +      * Support for retrieving glyph names through
  1.2938 +        `FT_Get_Glyph_Name'.
  1.2939 +
  1.2940 +      The first two items are necessary to correctly a large number of
  1.2941 +      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
  1.2942 +
  1.2943 +    - The Type 1 driver was also improved by Tom & others:
  1.2944 +
  1.2945 +      * Better EM size computation.
  1.2946 +      * Better support for synthetic (transformed) fonts.
  1.2947 +      * The  Type 1  driver returns  the charstrings  corresponding to
  1.2948 +        each glyph in the  `glyph->control_data' field after a call to
  1.2949 +        `FT_Load_Glyph' (thanks Ha Shao).
  1.2950 +
  1.2951 +    - Various other bugfixes, including the following:
  1.2952 +
  1.2953 +      * Fixed a nasty memory leak in the Type 1 driver.
  1.2954 +      * The autohinter  and the pcf  driver used static  writable data
  1.2955 +        when they shouldn't.
  1.2956 +      * Many casts were added to  make the code more 64-bits safe.  It
  1.2957 +        also now compiles on Windows XP 64-bits without warnings.
  1.2958 +      * Some incorrect writable statics were removed in the `autohint'
  1.2959 +        and `pcf' drivers.  FreeType 2 now compiles on Epoc again.
  1.2960 +
  1.2961 +
  1.2962 +  II. CHANGES TO THE HIGH-LEVEL API
  1.2963 +
  1.2964 +    - The library header files inclusion scheme has been changed.  The
  1.2965 +      old scheme looked like:
  1.2966 +
  1.2967 +        #include <freetype/freetype.h>
  1.2968 +        #include <freetype/ftglyph.h>
  1.2969 +        #include <freetype/ftcache.h>
  1.2970 +        #include <freetype/cache/ftimage.h>
  1.2971 +
  1.2972 +      Now you should use:
  1.2973 +
  1.2974 +        #include <ft2build.h>
  1.2975 +        #include FT_FREETYPE_H
  1.2976 +        #include FT_GLYPH_H
  1.2977 +        #include FT_CACHE_H
  1.2978 +        #include FT_CACHE_IMAGE_H
  1.2979 +
  1.2980 +      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
  1.2981 +      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
  1.2982 +      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
  1.2983 +
  1.2984 +      The  file <ft2build.h>  is used  to define  the  header filename
  1.2985 +      macros.  The complete and  commented list of macros is available
  1.2986 +      in the API reference under the section name `Header File Macros'
  1.2987 +      in Chapter I.
  1.2988 +
  1.2989 +      For more information, see section I of the following document:
  1.2990 +
  1.2991 +        http://www.freetype.org/
  1.2992 +          freetype2/docs/tutorial/step1.html
  1.2993 +
  1.2994 +      or
  1.2995 +
  1.2996 +        http://freetype.sourceforge.net/
  1.2997 +          freetype2/docs/tutorial/step1.html
  1.2998 +
  1.2999 +    - Many, many comments have been added to the public source file in
  1.3000 +      order to  automatically generate  the API Reference  through the
  1.3001 +      `docmaker.py' Python script.
  1.3002 +
  1.3003 +      The latter has been updated  to support the grouping of sections
  1.3004 +      in chapters and better index sort.  See:
  1.3005 +
  1.3006 +        http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
  1.3007 +
  1.3008 +
  1.3009 +  III. CHANGES TO THE BUILD PROCESS
  1.3010 +
  1.3011 +    - If you  are not  building FreeType 2  with its own  build system
  1.3012 +      (but with your own Makefiles or project files), you will need to
  1.3013 +      be  aware that  the  build  process has  changed  a little  bit.
  1.3014 +
  1.3015 +      You don't  need to put the  `src' directory in  the include path
  1.3016 +      when  compiling  any FT2  component.   Instead,  simply put  the
  1.3017 +      component's directory in the current include path.
  1.3018 +
  1.3019 +      So, if you were doing something like:
  1.3020 +
  1.3021 +        cc -c -Iinclude -Isrc src/base/ftbase.c
  1.3022 +
  1.3023 +      change the line to:
  1.3024 +
  1.3025 +        cc -c -Iinclude -Isrc/base src/base/ftbase.c
  1.3026 +
  1.3027 +      If you were doing something like:
  1.3028 +
  1.3029 +        cd src/base
  1.3030 +        cc -c -I../../include -I.. ftbase.c
  1.3031 +
  1.3032 +      change it to:
  1.3033 +
  1.3034 +        cd src/base
  1.3035 +        cc -c -I../../include ftbase.c
  1.3036 +
  1.3037 +
  1.3038 +======================================================================
  1.3039 +
  1.3040 +CHANGES BETWEEN 2.0.1 and 2.0
  1.3041 +
  1.3042 +  2.0.1 introduces a few changes:
  1.3043 +
  1.3044 +    - Fixed many bugs related to  the support of CFF / OpenType fonts.
  1.3045 +      These  formats are  now much  better supported  though  there is
  1.3046 +      still work planned to  deal with charset tables and PDF-embedded
  1.3047 +      CFF files that use the old `seac' command.
  1.3048 +
  1.3049 +    - The  library could not  be compiled  in debug  mode with  a very
  1.3050 +      small  number   of  C  compilers   whose  pre-processors  didn't
  1.3051 +      implement the `##'  directive correctly (i.e. per se  the ANSI C
  1.3052 +      specification!)  An elegant fix was found.
  1.3053 +
  1.3054 +    - Added  support for  the  free Borland  command-line C++  Builder
  1.3055 +      compiler.   Use `make  setup bcc32'.   Also fixed  a  few source
  1.3056 +      lines that generated new warnings with BCC32.
  1.3057 +
  1.3058 +    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
  1.3059 +      a conic Bezier arc.
  1.3060 +
  1.3061 +    - Updated the INSTALL file to add IDE compilation.
  1.3062 +
  1.3063 +    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
  1.3064 +      correct   support   of  synthetic   (obliqued)   fonts  in   the
  1.3065 +      auto-hinter, better support for embedded bitmaps in a SFNT font.
  1.3066 +
  1.3067 +    - Fixed some problems with `freetype-config'.
  1.3068 +
  1.3069 +  Finally, the `standard' scheme for including FreeType headers is now
  1.3070 +  gradually changing,  but this will  be explained in a  later release
  1.3071 +  (probably 2.0.2).
  1.3072 +
  1.3073 +  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
  1.3074 +  for their contributions!
  1.3075 +
  1.3076 +
  1.3077 +======================================================================
  1.3078 +
  1.3079 +CHANGES BETWEEN beta8 and 2.0
  1.3080 +
  1.3081 +  - Changed  the default  installation  path for  public headers  from
  1.3082 +    `include/freetype' to `include/freetype2'.
  1.3083 +
  1.3084 +    Also added a new `freetype-config' that is automatically generated
  1.3085 +    and installed  on Unix and  Cygwin systems.  The script  itself is
  1.3086 +    used to retrieve the current  install path, C compilation flags as
  1.3087 +    well as linker flags.
  1.3088 +
  1.3089 +  - Fixed several small bugs:
  1.3090 +
  1.3091 +    * Incorrect max advance width for fixed-pitch Type 1 fonts.
  1.3092 +    * Incorrect glyph names for certain TrueType fonts.
  1.3093 +    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
  1.3094 +      called.
  1.3095 +    * The  linearHoriAdvance  and  linearVertAdvance  fields  were not
  1.3096 +      correctly returned for glyphs processed by the auto-hinter.
  1.3097 +    * `type1z'  renamed back to  `type1'; the  old `type1'  module has
  1.3098 +      been removed.
  1.3099 +
  1.3100 +  - Revamped the  build system  to make it  a lot more  generic.  This
  1.3101 +    will  allow us  to  re-use  nearly un-modified  in  lots of  other
  1.3102 +    projects (including FreeType Layout).
  1.3103 +
  1.3104 +  - Changed `cid' to use `psaux' too.
  1.3105 +
  1.3106 +  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
  1.3107 +    the sources  in `src/cache'.  Note  that it compiles but  is still
  1.3108 +    untested for now.
  1.3109 +
  1.3110 +  - Updated `docs/docmaker.py', a draft  API reference is available at
  1.3111 +    http://www.freetype.org/ft2api.html.
  1.3112 +
  1.3113 +  - Changed `type1' to use `psaux'.
  1.3114 +
  1.3115 +  - Created a  new module named  `psaux' to hold  the Type 1 &  Type 2
  1.3116 +    parsing routines.  It should be  used by `type1', `cid', and `cff'
  1.3117 +    in the future.
  1.3118 +
  1.3119 +  - Fixed an important bug in `FT_Glyph_Get_CBox'.
  1.3120 +
  1.3121 +  - Fixed  some compiler  warnings  that happened  since the  TrueType
  1.3122 +    bytecode decoder was deactivated by default.
  1.3123 +
  1.3124 +  - Fixed two memory leaks:
  1.3125 +
  1.3126 +    * The    memory   manager   (16    bytes)   isn't    released   in
  1.3127 +      FT_Done_FreeType!
  1.3128 +    * Using custom input streams, the  copy of the original stream was
  1.3129 +      never released.
  1.3130 +
  1.3131 +  - Fixed the  auto-hinter by performing automatic  computation of the
  1.3132 +    `filling direction' of each glyph.   This is done through a simple
  1.3133 +    and  fast approximation, and  seems to  work (problems  spotted by
  1.3134 +    Werner though).  The Arphic fonts are a lot nicer though there are
  1.3135 +    still a lot of things to do to handle Asian fonts correctly.
  1.3136 +
  1.3137 +
  1.3138 +======================================================================
  1.3139 +
  1.3140 +BETA-8 (RELEASE CANDIDATE) CHANGES
  1.3141 +
  1.3142 +  - Deactivated the TrueType bytecode interpreter by default.
  1.3143 +
  1.3144 +  - Deactivated the `src/type1' font driver.  Now `src/type1z' is used
  1.3145 +    by default.
  1.3146 +
  1.3147 +  - Updates to the build system.  We now compile the library correctly
  1.3148 +    under  Unix  system  through  `configure' which  is  automatically
  1.3149 +    called on the first `make' invocation.
  1.3150 +
  1.3151 +  - Added the auto-hinting module!  Fixing some bugs here and there.
  1.3152 +
  1.3153 +  - Found some bugs in the  composite loader (seac) of the Type1-based
  1.3154 +    font drivers.
  1.3155 +
  1.3156 +  - Renamed the directory `freetype2/config' to `freetype2/builds' and
  1.3157 +    updated all relevant files.
  1.3158 +
  1.3159 +  - Found a memory leak in the `type1' driver.
  1.3160 +
  1.3161 +  - Incorporated Tom's patches to  support flex operators correctly in
  1.3162 +    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
  1.3163 +    fonts to be done with this driver :-)
  1.3164 +
  1.3165 +  - Added the  Windows FNT/FON driver in `src/winfonts'.   For now, it
  1.3166 +    always  `simulates'   a  Unicode  charmap,  so   it  shouldn't  be
  1.3167 +    considered completed right now.
  1.3168 +
  1.3169 +    It  is there  to be  more a  proof of  concept than  anything else
  1.3170 +    anyway.  The driver is a single  C source file, that compiles to 3
  1.3171 +    Kb of code.
  1.3172 +
  1.3173 +    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
  1.3174 +    finish them now.
  1.3175 +
  1.3176 +  - CHANGES TO THE HIGH-LEVEL API
  1.3177 +
  1.3178 +    * FT_Get_Kerning has a new parameter that allows you to select the
  1.3179 +      coordinates of the kerning  vector (font units, scaled, scaled +
  1.3180 +      grid-fitted).
  1.3181 +    * The  outline functions are  now in <freetype/ftoutln.h>  and not
  1.3182 +      part of <freetype/freetype.h> anymore.
  1.3183 +    * <freetype/ftmodule.h>    now     contains    declarations    for
  1.3184 +       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
  1.3185 +    * The so-called convenience  functions have moved from `ftoutln.c'
  1.3186 +      to  `ftglyph.c',  and  are  thus available  with  this  optional
  1.3187 +      component    of   the   library.     They   are    declared   in
  1.3188 +      <freetype/ftglyph.h> now.
  1.3189 +    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
  1.3190 +      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
  1.3191 +      To generate a monochrome bitmap, use ft_render_mode_mono, or the
  1.3192 +      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
  1.3193 +      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
  1.3194 +    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
  1.3195 +      solving a few headaches :-)
  1.3196 +    * The type FT_GlyphSlotRec has now a `library' field.
  1.3197 +
  1.3198 +  - CHANGES TO THE `ftglyph.h' API
  1.3199 +
  1.3200 +    This API has  been severely modified in order  to make it simpler,
  1.3201 +    clearer, and more  efficient.  It certainly now looks  like a real
  1.3202 +    `glyph factory'  object, and allows client  applications to manage
  1.3203 +    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
  1.3204 +    knowing their original format.
  1.3205 +
  1.3206 +  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
  1.3207 +    support for pure CFF + CEF fonts should come in?
  1.3208 +
  1.3209 +  - Cleaned up  source code in order  to avoid two  functions with the
  1.3210 +    same name.  Also  changed the names of the  files in `type1z' from
  1.3211 +    `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
  1.3212 +
  1.3213 +    `make multi' now works well :-)
  1.3214 +
  1.3215 +    Also removed the use of `cidafm' for now, even if the source files
  1.3216 +    are  still there.  This  functionality will  certainly  go into  a
  1.3217 +    specific module.
  1.3218 +
  1.3219 +  - ADDED SUPPORT FOR THE AUTO-HINTER
  1.3220 +
  1.3221 +    It  works :-) I  have a  demo program  which simply  is a  copy of
  1.3222 +    `ftview'       that      does       a      `FT_Add_Module(library,
  1.3223 +    &autohinter_module_class)' after  library initialization, and Type
  1.3224 +    1 & OpenType/CFF fonts are now hinted.
  1.3225 +
  1.3226 +    CID  fonts are  not hinted,  as they  include no  charmap  and the
  1.3227 +    auto-hinter doesn't include  `generic' global metrics computations
  1.3228 +    yet.
  1.3229 +
  1.3230 +    Now, I need to release this thing to the FreeType 2 source.
  1.3231 +
  1.3232 +  - CHANGES TO THE RENDERER MODULES
  1.3233 +
  1.3234 +    The  monochrome  and smooth  renderers  are  now  in two  distinct
  1.3235 +    directories, namely `src/raster1' and `src/smooth'.  Note that the
  1.3236 +    old `src/renderer' is now gone.
  1.3237 +
  1.3238 +    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
  1.3239 +    simple #define toggle in 'src/raster1/ftraster.c'.
  1.3240 +
  1.3241 +    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
  1.3242 +    select the best renderer  available, depending on render mode.  If
  1.3243 +    the current renderer for a  given glyph image format isn't capable
  1.3244 +    of supporting  the render mode, another  one will be  found in the
  1.3245 +    library's list.   This means that client applications  do not need
  1.3246 +    to  switch or  set  the  renderers themselves  (as  in the  latest
  1.3247 +    change), they'll get what they want automatically.  At last.
  1.3248 +
  1.3249 +    Changed the demo programs accordingly.
  1.3250 +
  1.3251 +  - MAJOR INTERNAL REDESIGN:
  1.3252 +
  1.3253 +    A lot of internal modifications  have been performed lately on the
  1.3254 +    source in order to provide the following enhancements:
  1.3255 +
  1.3256 +    * More generic module support:
  1.3257 +
  1.3258 +      The FT_Module  type is  now defined to  represent a handle  to a
  1.3259 +      given  module.   The  file  <freetype/ftmodule.h>  contains  the
  1.3260 +      FT_Module_Class definition, as well as the module-loading public
  1.3261 +      API.
  1.3262 +
  1.3263 +      The  FT_Driver type  is still  defined, and  still  represents a
  1.3264 +      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
  1.3265 +      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
  1.3266 +
  1.3267 +    * Support for generic glyph image types:
  1.3268 +
  1.3269 +      The FT_Renderer  type is a pointer  to a module  used to perform
  1.3270 +      various operations on glyph image.
  1.3271 +
  1.3272 +      Each renderer is  capable of handling images in  a single format
  1.3273 +      (e.g. ft_glyph_format_outline).  Its functions are used to:
  1.3274 +
  1.3275 +      - transform an glyph image
  1.3276 +      - render a glyph image into a bitmap
  1.3277 +      - return the control box (dimensions) of a given glyph image
  1.3278 +
  1.3279 +      The scan converters `ftraster.c' and `ftgrays.c' have been moved
  1.3280 +      to the new directory `src/renderer', and are used to provide two
  1.3281 +      default renderer modules.
  1.3282 +
  1.3283 +      One corresponds  to the `standard' scan-converter,  the other to
  1.3284 +      the `smooth' one.
  1.3285 +
  1.3286 +      he  current  renderer  can  be  set  through  the  new  function
  1.3287 +      FT_Set_Renderer.
  1.3288 +
  1.3289 +      The old raster-related function FT_Set_Raster, FT_Get_Raster and
  1.3290 +      FT_Set_Raster_Mode have now disappeared, in favor of the new:
  1.3291 +
  1.3292 +        FT_Get_Renderer
  1.3293 +        FT_Set_Renderer
  1.3294 +
  1.3295 +      See the file <freetype/ftrender.h> for more details.
  1.3296 +
  1.3297 +      These  changes  were  necessary  to properly  support  different
  1.3298 +      scalable formats in the future, like bi-color glyphs, etc.
  1.3299 +
  1.3300 +    * Glyph loader object:
  1.3301 +
  1.3302 +      A  new  internal  object,  called  a  'glyph  loader'  has  been
  1.3303 +      introduced in the base layer.  It is used by all scalable format
  1.3304 +      font drivers to load glyphs and composites.
  1.3305 +
  1.3306 +      This object  has been  created to reduce  the code size  of each
  1.3307 +      driver,  as  each  one  of  them  basically  re-implemented  its
  1.3308 +      functionality.
  1.3309 +
  1.3310 +      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
  1.3311 +      more information.
  1.3312 +
  1.3313 +    * FT_GlyphSlot has new fields:
  1.3314 +
  1.3315 +      In  order   to  support  extended  features   (see  below),  the
  1.3316 +      FT_GlyphSlot structure has a few new fields:
  1.3317 +
  1.3318 +      linearHoriAdvance:
  1.3319 +
  1.3320 +        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
  1.3321 +        unhinted) advance  width for the  glyph, expressed as  a 16.16
  1.3322 +        fixed pixel value.  This is useful to perform WYSIWYG text.
  1.3323 +
  1.3324 +      linearVertAdvance:
  1.3325 +        This field  gives the linearly  scaled advance height  for the
  1.3326 +        glyph  (relevant in  vertical  glyph layouts  only).  This  is
  1.3327 +        useful to perform WYSIWYG text.
  1.3328 +
  1.3329 +        Note that  the two above field replace  the removed `metrics2'
  1.3330 +        field in the glyph slot.
  1.3331 +
  1.3332 +      advance:
  1.3333 +        This field is a vector  that gives the transformed advance for
  1.3334 +        the glyph.   By default, it corresponds to  the advance width,
  1.3335 +        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
  1.3336 +        FT_Load_Glyph or FT_Load_Char.
  1.3337 +
  1.3338 +      bitmap_left:
  1.3339 +        This  field gives  the  distance in  integer  pixels from  the
  1.3340 +        current pen position  to the left-most pixel of  a glyph image
  1.3341 +        IF IT IS  A BITMAP.  It is only valid  when the `format' field
  1.3342 +        is set to `ft_glyph_format_bitmap', for example, after calling
  1.3343 +        the new function FT_Render_Glyph.
  1.3344 +
  1.3345 +      bitmap_top:
  1.3346 +        This  field gives  the  distance in  integer  pixels from  the
  1.3347 +        current pen position (located on the baseline) to the top-most
  1.3348 +        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
  1.3349 +        correspond to upwards Y.
  1.3350 +
  1.3351 +      loader:
  1.3352 +        This  is a  new  private  field for  the  glyph slot.   Client
  1.3353 +        applications should not touch it.
  1.3354 +
  1.3355 +
  1.3356 +    * Support for transforms and direct rendering in FT_Load_Glyph:
  1.3357 +
  1.3358 +      Most of the functionality found in <freetype/ftglyph.h> has been
  1.3359 +      moved to the core library.  Hence, the following:
  1.3360 +
  1.3361 +      - A   transform   can   be   specified  for   a   face   through
  1.3362 +        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
  1.3363 +        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
  1.3364 +        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
  1.3365 +        was set in the load flags.
  1.3366 +
  1.3367 +      - Once  a  glyph image  has  been  loaded,  it can  be  directly
  1.3368 +        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
  1.3369 +        function.  Note that this  function takes the glyph image from
  1.3370 +        the glyph slot,  and converts it to a  bitmap whose properties
  1.3371 +        are returned  in `face.glyph.bitmap', `face.glyph.bitmap_left'
  1.3372 +        and `face.glyph.bitmap_top'.  The  original native image might
  1.3373 +        be lost after the conversion.
  1.3374 +
  1.3375 +      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
  1.3376 +        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
  1.3377 +        automatically when needed.
  1.3378 +
  1.3379 +  - Reformatted all  modules source  code in order  to get rid  of the
  1.3380 +    basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
  1.3381 +    `T1_Fixed'  instead  of  `FT_Fixed').  Hence  the  format-specific
  1.3382 +    prefixes like  `TT_', `T1_',  `T2_' and `CID_'  are only  used for
  1.3383 +    relevant structures.
  1.3384 +
  1.3385 +
  1.3386 +======================================================================
  1.3387 +
  1.3388 +OLD CHANGES FOR BETA 7
  1.3389 +
  1.3390 +  - bug-fixed the  OpenType/CFF parser.  It  now loads and displays my
  1.3391 +    two  fonts nicely,  but I'm  pretty certain  that more  testing is
  1.3392 +    needed :-)
  1.3393 +
  1.3394 +  - fixed the crummy Type 1 hinter, it now handles accented characters
  1.3395 +    correctly (well, the accent is  not always well placed, but that's
  1.3396 +    another problem..)
  1.3397 +
  1.3398 +  - added the CID-keyed Type 1 driver in `src/cid'.  Works pretty well
  1.3399 +    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
  1.3400 +    really useful CMAP files..
  1.3401 +
  1.3402 +  - fixed  two  bugs  in  the  smooth  renderer  (src/base/ftgrays.c).
  1.3403 +    Thanks to Boris Letocha for spotting them and providing a fix.
  1.3404 +
  1.3405 +  - fixed potential `divide by zero' bugs in ftcalc.c.
  1.3406 +
  1.3407 +  - added source  code for  the OpenType/CFF driver  (still incomplete
  1.3408 +    though..)
  1.3409 +
  1.3410 +  - modified the  SFNT driver slightly  to perform more  robust header
  1.3411 +    checks  in TT_Load_SFNT_Header.  This prevents certain  font files
  1.3412 +    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
  1.3413 +    `recognized' as TrueType font files..
  1.3414 +
  1.3415 +  - moved a lot of stuff from  the TrueType driver to the SFNT module,
  1.3416 +    this   allows   greater   code   re-use   between   font   drivers
  1.3417 +    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
  1.3418 +
  1.3419 +  - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
  1.3420 +    to minimally speed it up..
  1.3421 +
  1.3422 +  - added  support for  Multiple Master  fonts in  `type1z'.  There is
  1.3423 +    also a new file named <freetype/ftmm.h> which defines functions to
  1.3424 +    manage them from client applications.
  1.3425 +
  1.3426 +    The new file `src/base/ftmm.c' is also optional to the engine..
  1.3427 +
  1.3428 +  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
  1.3429 +    small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
  1.3430 +
  1.3431 +  - a minor fix to the Type 1 driver to let them apply the font matrix
  1.3432 +    correctly (used for many oblique fonts..)
  1.3433 +
  1.3434 +  - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
  1.3435 +    to use %p instead of %lx).  Thanks to Karl Robillard.
  1.3436 +
  1.3437 +  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
  1.3438 +    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
  1.3439 +    cropped when  loaded from a file  (maybe I should  move the bitmap
  1.3440 +    cropper to the base layer ??).
  1.3441 +
  1.3442 +  - changed the default  number of gray levels of  the smooth renderer
  1.3443 +    to 256  (instead of  the previous 128).  Of course, the  human eye
  1.3444 +    can't see any difference ;-)
  1.3445 +
  1.3446 +  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
  1.3447 +    of subglyphs in a TrueType font now..
  1.3448 +
  1.3449 +
  1.3450 +======================================================================
  1.3451 +
  1.3452 +OLD CHANGES 16 May 2000
  1.3453 +
  1.3454 +  - tagged `BETA-6'  in the  CVS tree.  This one is a  serious release
  1.3455 +    candidate even though it doesn't incorporate the auto-hinter yet..
  1.3456 +
  1.3457 +  - various obsolete files were removed, and copyright header updated
  1.3458 +
  1.3459 +  - finally  updated  the  standard   raster  to  fix  the  monochrome
  1.3460 +    rendering bug + re-enable  support for 5-gray levels anti-aliasing
  1.3461 +    (suck, suck..)
  1.3462 +
  1.3463 +  - created new header files, and modified sources accordingly:
  1.3464 +
  1.3465 +     <freetype/fttypes.h>
  1.3466 +       - simple FreeType types, without the API
  1.3467 +     <freetype/internal/ftmemory.h>
  1.3468 +       - definition of memory-management macros
  1.3469 +
  1.3470 +  - added   the   `DSIG'   (OpenType   Digital   Signature)   tag   to
  1.3471 +    <freetype/tttags.h>
  1.3472 +
  1.3473 +  - light update/cleaning of the build system + changes to the sources
  1.3474 +    in  order  to  get  rid  of _all_  compiler  warnings  with  three
  1.3475 +    compilers, i.e:
  1.3476 +
  1.3477 +    gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
  1.3478 +    LCC
  1.3479 +
  1.3480 +    IMPORTANT NOTE FOR WIN32-LCC USERS:
  1.3481 +    |
  1.3482 +    |  It seems the C pre-processor  that comes with LCC is broken, it
  1.3483 +    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
  1.3484 +    |  correctly   when  one  of   the  argument  is  a  macro.  Also,
  1.3485 +    |  something like:
  1.3486 +    |
  1.3487 +    |     #define F(x)  print##x
  1.3488 +    |
  1.3489 +    |     F(("hello"))
  1.3490 +    |
  1.3491 +    |  will get incorrectly translated to:
  1.3492 +    |
  1.3493 +    |     print "hello")
  1.3494 +    |
  1.3495 +    |  by its pre-processor.  For this reason, you simply cannot build
  1.3496 +    |  FreeType 2 in debug mode with this compiler..
  1.3497 +
  1.3498 +  - yet  another massive grunt work.  I've  changed the  definition of
  1.3499 +    the EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These
  1.3500 +    now take an argument, which is the function's return value type.
  1.3501 +
  1.3502 +    This  is necessary to  compile FreeType  as a  DLL on  Windows and
  1.3503 +    OS/2.  Depending on the compiler used, a compiler-specific keyword
  1.3504 +    like  __export or __system  must be  placed before  (VisualC++) or
  1.3505 +    after (BorlandC++) the type..
  1.3506 +
  1.3507 +    Of course, this needed a lot of changes throughout the source code
  1.3508 +    to make it compile again...  All cleaned up now, apparently..
  1.3509 +
  1.3510 +    Note also  that there is a  new EXPORT_VAR macro  defined to allow
  1.3511 +    the   _declaration_    of   an   exportable    public   (constant)
  1.3512 +    variable.  This  is  the   case  of  the  raster  interfaces  (see
  1.3513 +    ftraster.h and ftgrays.h), as well as each module's interface (see
  1.3514 +    sfdriver.h, psdriver.h, etc..)
  1.3515 +
  1.3516 +  - new feature: it  is now possible to pass  extra parameters to font
  1.3517 +                 drivers  when creating  a new  face object.  For now,
  1.3518 +                 this capability is unused.  It could however prove to
  1.3519 +                 be useful in a near future..
  1.3520 +
  1.3521 +      the FT_Open_Args structure was  changes, as well as the internal
  1.3522 +      driver interface  (the specific `init_face'  module function has
  1.3523 +      now a different signature).
  1.3524 +
  1.3525 +  - updated the tutorial (not finished though).
  1.3526 +
  1.3527 +  - updated the top-level BUILD  document
  1.3528 +
  1.3529 +  - fixed  a  potential memory  leak  that  could  occur when  loading
  1.3530 +    embedded bitmaps.
  1.3531 +
  1.3532 +  - added     the     declaration     of     FT_New_Memory_Face     in
  1.3533 +    <freetype/freetype.h>, as  it was  missing from the  public header
  1.3534 +    (the implementation was already in `ftobjs.c').
  1.3535 +
  1.3536 +  - the file <freetype/fterrors.h> has been seriously updated in order
  1.3537 +    to allow  the automatic generation  of error message tables.   See
  1.3538 +    the comments within it for more information.
  1.3539 +
  1.3540 +  - major directory  hierarchy re-organisation.  This was done for two
  1.3541 +    things:
  1.3542 +
  1.3543 +      * first,  to ease  the `manual'  compilation of  the  library by
  1.3544 +        requiring at lot less include paths :-)
  1.3545 +
  1.3546 +      * second,  to  allow  external  programs to  effectively  access
  1.3547 +        internal  data  fields.  For example,  this  can be  extremely
  1.3548 +        useful if  someone wants  to write a  font producer or  a font
  1.3549 +        manager on top of FreeType.
  1.3550 +
  1.3551 +    Basically, you  should now use  the 'freetype/' prefix  for header
  1.3552 +    inclusion, as in:
  1.3553 +
  1.3554 +        #include <freetype/freetype.h>
  1.3555 +        #include <freetype/ftglyph.h>
  1.3556 +
  1.3557 +    Some new include sub-directories are available:
  1.3558 +
  1.3559 +     a. the  `freetype/config' directory,  contains two files  used to
  1.3560 +        configure  the  build  of  the  library.  Client  applications
  1.3561 +        should  not need  to look  at these  normally, but they can if
  1.3562 +        they want.
  1.3563 +
  1.3564 +        #include <freetype/config/ftoption.h>
  1.3565 +        #include <freetype/config/ftconfig.h>
  1.3566 +
  1.3567 +     b. the `freetype/internal'  directory, contains header files that
  1.3568 +        describes library  internals.  These are the header files that
  1.3569 +        were  previously  found  in  the `src/base'  and  `src/shared'
  1.3570 +        directories.
  1.3571 +
  1.3572 +
  1.3573 +    As  usual, the build  system and  the demos  have been  updated to
  1.3574 +    reflect the change..
  1.3575 +
  1.3576 +    Here's a layout of the new directory hierarchy:
  1.3577 +
  1.3578 +    TOP_DIR
  1.3579 +      include/
  1.3580 +         freetype/
  1.3581 +            freetype.h
  1.3582 +            ...
  1.3583 +            config/
  1.3584 +              ftoption.h
  1.3585 +              ftconfig.h
  1.3586 +              ftmodule.h
  1.3587 +
  1.3588 +            internal/
  1.3589 +              ftobjs.h
  1.3590 +              ftstream.h
  1.3591 +              ftcalc.h
  1.3592 +              ...
  1.3593 +
  1.3594 +      src/
  1.3595 +         base/
  1.3596 +            ...
  1.3597 +
  1.3598 +         sfnt/
  1.3599 +         psnames/
  1.3600 +         truetype/
  1.3601 +         type1/
  1.3602 +         type1z/
  1.3603 +
  1.3604 +
  1.3605 +    Compiling a module is now  much easier, for example, the following
  1.3606 +    should work when in the TOP_DIR directory on an ANSI build:
  1.3607 +
  1.3608 +       gcc -c -I./include -I./src/base src/base/ftbase.c
  1.3609 +       gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
  1.3610 +       etc..
  1.3611 +
  1.3612 +    (of course, using -Iconfig/<system> if you provide system-specific
  1.3613 +     configuration files).
  1.3614 +
  1.3615 +  - updated the structure of FT_Outline_Funcs in order to allow direct
  1.3616 +    coordinate scaling within  the outline decomposition routine (this
  1.3617 +    is  important for virtual  `on' points  with TrueType  outlines) +
  1.3618 +    updates to the rasters to support this..
  1.3619 +
  1.3620 +  - updated  the OS/2  table  loading code  in `src/sfnt/ttload.c'  in
  1.3621 +    order to support version 2 of the table (see OpenType 1.2 spec)
  1.3622 +
  1.3623 +  - created  `include/tttables.h'  and  `include/t1tables.h' to  allow
  1.3624 +    client applications to access some of  the SFNT and T1 tables of a
  1.3625 +    face  with  a  procedural  interface (see  `FT_Get_Sfnt_Table')  +
  1.3626 +    updates to internal source files to reflect the change..
  1.3627 +
  1.3628 +  - some  cleanups in  the source  code to  get rid  of  warnings when
  1.3629 +    compiling with the `-Wall -W -ansi -pedantic' options in gcc.
  1.3630 +
  1.3631 +  - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
  1.3632 +    its header to `include/ftgrays.h'
  1.3633 +
  1.3634 +  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
  1.3635 +    with up to 80 sub-glyphs !! Thanks to Werner
  1.3636 +
  1.3637 +
  1.3638 +======================================================================
  1.3639 +
  1.3640 +OLD CHANGES - 14-apr-2000
  1.3641 +
  1.3642 +  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
  1.3643 +    correct loading of some CJK glyphs in mingli.ttf
  1.3644 +
  1.3645 +  - improved the standard Type 1 hinter in `src/type1'
  1.3646 +
  1.3647 +  - fixed two bugs  in the experimental Type 1  driver in `src/type1z'
  1.3648 +    to handle the new XFree86 4.0 fonts (and a few other ones..)
  1.3649 +
  1.3650 +  - the smooth  renderer is now  complete and supports  sub-banding to
  1.3651 +    render large glyphs  at high speed.  However, it is still  located
  1.3652 +    in `demos/src/ftgrays.c' and should move to the  library itself in
  1.3653 +    the next  beta.  NOTE: The  smooth  renderer  doesn't  compile  in
  1.3654 +    stand-alone mode anymore, but this should be fixed RSN..
  1.3655 +
  1.3656 +  - introduced convenience  functions to  more easily deal  with glyph
  1.3657 +    images, see  `include/ftglyph.h' for more details, as  well as the
  1.3658 +    new  demo program  named `demos/src/ftstring.c'  that demonstrates
  1.3659 +    its use
  1.3660 +
  1.3661 +  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
  1.3662 +    drivers  (this  is required  by  the  auto-hinter  to improve  its
  1.3663 +    results).
  1.3664 +
  1.3665 +  - changed   the  raster   interface,  in   order  to   allow  client
  1.3666 +    applications  to   provide  their   own  span-drawing   callbacks.
  1.3667 +    However,   only   the   smooth   renderer   supports   this.   See
  1.3668 +    `FT_Raster_Params' in the file `include/ftimage.h'.
  1.3669 +
  1.3670 +  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
  1.3671 +    computation!
  1.3672 +
  1.3673 +  - Note: The tutorial is out-of-date.
  1.3674 +
  1.3675 +
  1.3676 +======================================================================
  1.3677 +
  1.3678 +OLD CHANGES - 12-mar-2000
  1.3679 +
  1.3680 +  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
  1.3681 +    configuration         files         are         located         in
  1.3682 +    `freetype2/config'.  System-specific over-rides  can be  placed in
  1.3683 +    `freetype2/config/<system>'.
  1.3684 +
  1.3685 +  - moved all configuration macros to `config/ftoption.h'
  1.3686 +
  1.3687 +  - improvements in the Type 1 driver with AFM support
  1.3688 +
  1.3689 +  - changed the fields  in the FT_Outline structure :  the old `flags'
  1.3690 +    array is re-named `tags', while all ancient flags are encoded into
  1.3691 +    a single unsigned int named `flags'.
  1.3692 +
  1.3693 +  - introduced     new      flags     in     FT_Outline.flags     (see
  1.3694 +    ft_outline_.... enums in `ftimage.h').
  1.3695 +
  1.3696 +  - changed outline functions to `FT_Outline_<action>' syntax
  1.3697 +
  1.3698 +  - added a smooth anti-alias renderer to the demonstration programs
  1.3699 +
  1.3700 +  - added Mac graphics driver (thanks Just)
  1.3701 +
  1.3702 +  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
  1.3703 +    FT_Open_Args descriptor..
  1.3704 +
  1.3705 +  - various  cleanups,  a  few  more API  functions  implemented  (see
  1.3706 +    FT_Attach_File)
  1.3707 +
  1.3708 +  - updated some docs
  1.3709 +
  1.3710 +
  1.3711 +======================================================================
  1.3712 +
  1.3713 +OLD CHANGES - 22-feb-2000
  1.3714 +
  1.3715 +  - introduced the `psnames' module.  It is used to:
  1.3716 +
  1.3717 +      o convert  a Postscript glyph  name into the  equivalent Unicode
  1.3718 +        character code (used by the  Type 1 driver(s) to synthesize on
  1.3719 +        the fly a Unicode charmap).
  1.3720 +
  1.3721 +      o provide an  interface to retrieve the Postscript  names of the
  1.3722 +        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
  1.3723 +        (the Macintosh  names are  used by the  SFNT-module postscript
  1.3724 +        names support routines, while the other two tables are used by
  1.3725 +        the Type 1 driver(s)).
  1.3726 +
  1.3727 +  - introduced the `type1z' alternate Type 1 driver.  This is a (still
  1.3728 +    experimental) driver  for the Type  1 format that  will ultimately
  1.3729 +    replace the one  in `src/type1'.  It uses pattern matching to load
  1.3730 +    data from the font, instead of a finite  state analyzer.  It works
  1.3731 +    much better than the `old' driver with `broken' fonts.  It is also
  1.3732 +    much smaller (under 15 Kb).
  1.3733 +
  1.3734 +  - the  Type 1  drivers (both  in `src/type1'  and  `src/type1z') are
  1.3735 +    nearly  complete.  They  both  provide automatic  Unicode  charmap
  1.3736 +    synthesis through  the `psnames' module.  No re-encoding vector is
  1.3737 +    needed.  (note  that they  still  leak  memory  due to  some  code
  1.3738 +    missing, and I'm getting lazy).
  1.3739 +
  1.3740 +    Trivial AFM support has been added to read kerning information but
  1.3741 +    wasn't exactly tested as it should ;-)
  1.3742 +
  1.3743 +  - The TrueType  glyph loader has  been seriously rewritten  (see the
  1.3744 +    file  `src/truetype/ttgload.c'.  It is now  much, much  simpler as
  1.3745 +    well as  easier to read,  maintain and understand  :-) Preliminary
  1.3746 +    versions introduced a  memory leak that has been  reported by Jack
  1.3747 +    Davis, and is now fixed..
  1.3748 +
  1.3749 +  - introduced  the new  `ft_glyph_format_plotter', used  to represent
  1.3750 +    stroked outlines  like Windows `Vector' fonts, and  certain Type 1
  1.3751 +    fonts  like `Hershey'.  The corresponding  raster will  be written
  1.3752 +    soon.
  1.3753 +
  1.3754 +  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
  1.3755 +    interface that uses a structure  to describe the input stream, the
  1.3756 +    driver (if required), etc..
  1.3757 +
  1.3758 +
  1.3759 +TODO
  1.3760 +
  1.3761 +  - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
  1.3762 +
  1.3763 +  - Add a function like FT_Load_Character(face, char_code, load_flags)
  1.3764 +    that  would   really  embed  a  call   to  FT_Get_Char_Index  then
  1.3765 +    FT_Load_Glyph to ease developer's work.
  1.3766 +
  1.3767 +  - Update the tutorial!
  1.3768 +
  1.3769 +  - consider adding  support for Multiple  Master fonts in the  Type 1
  1.3770 +    drivers.
  1.3771 +
  1.3772 +  - Test the AFM routines of the  Type 1 drivers to check that kerning
  1.3773 +    information is returned correctly.
  1.3774 +
  1.3775 +  - write a decent auto-gridding component  !! We need this to release
  1.3776 +    FreeType 2.0 gold !
  1.3777 +
  1.3778 +
  1.3779 +less urgent needs:
  1.3780 +
  1.3781 +  - add a CFF/Type2 driver
  1.3782 +  - add a BDF driver
  1.3783 +  - add a FNT/PCF/HBF driver
  1.3784 +  - add a Speedo driver from the X11 sources
  1.3785 +
  1.3786 +
  1.3787 +======================================================================
  1.3788 +
  1.3789 +OLDER CHANGES - 27-jan-2000
  1.3790 +
  1.3791 +  - updated the  `sfnt' module  interface to allow  several SFNT-based
  1.3792 +    drivers to co-exist peacefully
  1.3793 +
  1.3794 +  - updated  the `T1_Face'  type  to better  separate Postscript  font
  1.3795 +    content  from the  rest of  the FT_Face  structure.  Might be used
  1.3796 +    later by the CFF/Type2 driver..
  1.3797 +
  1.3798 +  - added an experimental replacement Type 1 driver featuring advanced
  1.3799 +    (and speedy) pattern matching to retrieve the data from postscript
  1.3800 +    fonts.
  1.3801 +
  1.3802 +  - very minor  changes in the implementation  of FT_Set_Char_Size and
  1.3803 +    FT_Set_Pixel_Sizes (they now implement default to lighten the font
  1.3804 +    driver's code).
  1.3805 +
  1.3806 +
  1.3807 +======================================================================
  1.3808 +
  1.3809 +OLD MESSAGE
  1.3810 +
  1.3811 +This file summarizes the changes  that occurred  since the last `beta'
  1.3812 +of FreeType 2. Because the list is important, it has been divided into
  1.3813 +separate sections:
  1.3814 +
  1.3815 +Table Of Contents:
  1.3816 +
  1.3817 +    I   High-Level Interface (easier !)
  1.3818 +   II   Directory Structure
  1.3819 +  III   Glyph Image Formats
  1.3820 +   IV   Build System
  1.3821 +    V   Portability
  1.3822 +   VI   Font Drivers
  1.3823 +
  1.3824 +
  1.3825 +----------------------------------------------------------------------
  1.3826 +
  1.3827 +High-Level Interface:
  1.3828 +
  1.3829 +  The high-level API has been considerably simplified.  Here is how:
  1.3830 +
  1.3831 +    - resource objects have disappeared.  this means that face objects
  1.3832 +      can now be created with  a single function call (see FT_New_Face
  1.3833 +      and FT_Open_Face)
  1.3834 +
  1.3835 +    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
  1.3836 +      and a glyph slot object  are automatically created for the face,
  1.3837 +      and can  be accessed  through `face->glyph' and  `face->size' if
  1.3838 +      one really  needs to.   In most cases,  there's no need  to call
  1.3839 +      FT_New_Size or FT_New_Glyph.
  1.3840 +
  1.3841 +    - similarly,  FT_Load_Glyph  now  only  takes  a  `face'  argument
  1.3842 +      (instead  of a  glyph  slot  and a  size).  Also,  its  `result'
  1.3843 +      parameter is  gone, as the glyph  image type is  returned in the
  1.3844 +      field `face->glyph.format'
  1.3845 +
  1.3846 +    - the list  of available  charmaps is directly  accessible through
  1.3847 +      `face->charmaps', counting `face->num_charmaps'  elements.  Each
  1.3848 +      charmap  has an  'encoding'  field which  specifies which  known
  1.3849 +      encoding it deals with.  Valid values are, for example:
  1.3850 +
  1.3851 +          ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
  1.3852 +          ft_encoding_apple_roman
  1.3853 +          ft_encoding_sjis
  1.3854 +          ft_encoding_adobe_standard
  1.3855 +          ft_encoding_adobe_expert
  1.3856 +
  1.3857 +      other  values may  be added  in the  future.  Each charmap still
  1.3858 +      holds  its `platform_id'  and `encoding_id'  values in  case the
  1.3859 +      encoding is too exotic for the current library
  1.3860 +
  1.3861 +
  1.3862 +----------------------------------------------------------------------
  1.3863 +
  1.3864 +Directory Structure:
  1.3865 +
  1.3866 +  Should seem obvious to most of you:
  1.3867 +
  1.3868 +     freetype/
  1.3869 +         config/        -- configuration sub-makefiles
  1.3870 +            ansi/
  1.3871 +            unix/       -- platform-specific configuration files
  1.3872 +            win32/
  1.3873 +            os2/
  1.3874 +            msdos/
  1.3875 +
  1.3876 +         include/       -- public header  files, those to  be included
  1.3877 +                           directly by client apps
  1.3878 +
  1.3879 +         src/           -- sources of the library
  1.3880 +           base/        -- the base layer
  1.3881 +           sfnt/        -- the sfnt `driver'  (see the drivers section
  1.3882 +                           below)
  1.3883 +           truetype/    -- the truetype driver
  1.3884 +           type1/       -- the type1 driver
  1.3885 +           shared/      -- some header files shared between drivers
  1.3886 +
  1.3887 +         demos/         -- demos/tools
  1.3888 +
  1.3889 +         docs/          -- documentation (a bit empty for now)
  1.3890 +
  1.3891 +
  1.3892 +----------------------------------------------------------------------
  1.3893 +
  1.3894 +Glyph Image Formats:
  1.3895 +
  1.3896 +  Drivers are now able to  register new glyph image formats within the
  1.3897 +  library.  For  now, the  base layer supports  of course  bitmaps and
  1.3898 +  vector  outlines, but  one  could imagine  something different  like
  1.3899 +  colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
  1.3900 +  ??).
  1.3901 +
  1.3902 +  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
  1.3903 +  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
  1.3904 +  should encompass all known bitmap types.
  1.3905 +
  1.3906 +  Each new  image format  must provide at  least one `raster',  i.e. a
  1.3907 +  module capable of  transforming the glyph image into a bitmap.  It's
  1.3908 +  also possible  to change the default  raster used for  a given glyph
  1.3909 +  image format.
  1.3910 +
  1.3911 +  The default outline  scan-converter now uses 128 levels  of grays by
  1.3912 +  default,  which tends  to smooth  many  things.  Note that the  demo
  1.3913 +  programs have been updated significantly in order to display these..
  1.3914 +
  1.3915 +
  1.3916 +----------------------------------------------------------------------
  1.3917 +
  1.3918 +Build system:
  1.3919 +
  1.3920 +  You still need  GNU Make to build the library.  The build system has
  1.3921 +  been very seriously re-vamped in order to provide things like :
  1.3922 +
  1.3923 +   - automatic host platform  detection (reverting to 'config/ansi' if
  1.3924 +     it is not detected, with pseudo-standard compilation flags)
  1.3925 +
  1.3926 +   - the ability to compile from the Makefiles with very different and
  1.3927 +     exotic compilers.  Note that linking the library can be difficult
  1.3928 +     for some platforms.
  1.3929 +
  1.3930 +     For example, the file `config/win32/lcclib.bat' is invoked by the
  1.3931 +     build system to create the `.lib' file with LCC-Win32 because its
  1.3932 +     librarian  has too  many flaws  to be  invoked directly  from the
  1.3933 +     Makefile.
  1.3934 +
  1.3935 +  Here's how it works:
  1.3936 +
  1.3937 +  - the first time you type `make',  the build system runs a series of
  1.3938 +    sub-makefiles  in order  to detect  your host  platform.  It  then
  1.3939 +    dumps what it found, and creates a file called `config.mk' in  the
  1.3940 +    current  directory.  This is a  sub-Makefile used  to  define many
  1.3941 +    important Make variables used to build the library.
  1.3942 +
  1.3943 +  - the second time, the build system detects the `config.mk' then use
  1.3944 +    it  to  build the  library.  All object  files  go  into 'obj'  by
  1.3945 +    default,  as well  as the  library file,  but this  can  easily be
  1.3946 +    changed.
  1.3947 +
  1.3948 +  Note that  you can run `make  setup' to force  another host platform
  1.3949 +  detection  even   if  a  `config.mk'  is  present   in  the  current
  1.3950 +  directory.  Another solution  is  simply to  delete  the file,  then
  1.3951 +  re-run make.
  1.3952 +
  1.3953 +  Finally, the  default compiler  for all platforms  is gcc  (for now,
  1.3954 +  this will hopefully changed in the future).  You can however specify
  1.3955 +  a different  compiler by specifying  it after the 'setup'  target as
  1.3956 +  in:
  1.3957 +
  1.3958 +      gnumake setup lcc         on Win32 to use the LCC compiler
  1.3959 +      gnumake setup visualc     on Win32 to use Visual C++
  1.3960 +
  1.3961 +  See  the file  `config/<system>/detect.mk' for  a list  of supported
  1.3962 +  compilers for your platforms.
  1.3963 +
  1.3964 +  It should be relatively easy  to write new detection rules files and
  1.3965 +  config.mk..
  1.3966 +
  1.3967 +  Finally, to  build the demo programs,  go to `demos'  and launch GNU
  1.3968 +  Make, it will use the `config.mk'  in the top directory to build the
  1.3969 +  test programs..
  1.3970 +
  1.3971 +
  1.3972 +----------------------------------------------------------------------
  1.3973 +
  1.3974 +Portability:
  1.3975 +
  1.3976 +  In  the  previous  beta,  a  single FT_System  object  was  used  to
  1.3977 +  encompass  all  low-level  operations like  thread  synchronisation,
  1.3978 +  memory management and i/o access.  This has been greatly simplified:
  1.3979 +
  1.3980 +    - thread synchronisation  has been dropped, for  the simple reason
  1.3981 +      that the library  is already re-entrant, and that  if you really
  1.3982 +      need  two  threads accessing  the  same  FT_Library, you  should
  1.3983 +      really synchronize access to it yourself with a simple mutex.
  1.3984 +
  1.3985 +    - memory  management is  performed  through a  very simple  object
  1.3986 +      called `FT_Memory',  which really is a table  containing a table
  1.3987 +      of pointers to  functions like malloc, realloc and  free as well
  1.3988 +      as some user data (closure).
  1.3989 +
  1.3990 +    - resources have disappeared (they created more problems than they
  1.3991 +      solved), and  i/o management have  been simplified greatly  as a
  1.3992 +      result.  Streams are  defined through  FT_Stream objects,  which
  1.3993 +      can be either memory-based or disk-based.
  1.3994 +
  1.3995 +      Note that  each face  has its own  stream, which is  closed only
  1.3996 +      when  the  face object  is  destroyed.  Hence,  a function  like
  1.3997 +      TT_Flush_Face in 1.x cannot be directly  supported.  However, if
  1.3998 +      you really need something like  this, you can easily tailor your
  1.3999 +      own streams  to achieve the same  feature at a  lower level (and
  1.4000 +      use FT_Open_Face instead of FT_New_Face to create the face).
  1.4001 +
  1.4002 +  See the file  `include/ftsystem.h' for more details, as  well as the
  1.4003 +  implementations found in `config/unix' and `config/ansi'.
  1.4004 +
  1.4005 +
  1.4006 +----------------------------------------------------------------------
  1.4007 +
  1.4008 +Font Drivers:
  1.4009 +
  1.4010 +  The  Font Driver  interface has  been modified  in order  to support
  1.4011 +  extensions & versioning.
  1.4012 +
  1.4013 +
  1.4014 +  The  list of  the font  drivers that  are statically  linked  to the
  1.4015 +  library at compile time is  managed through a new configuration file
  1.4016 +  called `config/<platform>/ftmodule.h'.
  1.4017 +
  1.4018 +  This  file is  autogenerated  when  invoking  `make modules'.   This
  1.4019 +  target  will  parse  all  sub-directories  of  'src', looking  for a
  1.4020 +  `module.mk' rules  file, used  to describe  the driver to  the build
  1.4021 +  system.
  1.4022 +
  1.4023 +  Hence, one  should call  `make modules' each  time a font  driver is
  1.4024 +  added or removed from the `src' directory.
  1.4025 +
  1.4026 +  Finally, this  version  provides  a `pseudo-driver'  in  `src/sfnt'.
  1.4027 +  This  driver  doesn't  support  font  files  directly, but  provides
  1.4028 +  services used by all TrueType-like font drivers.  Hence, its code is
  1.4029 +  shared between  the TrueType & OpenType  font formats,  and possibly
  1.4030 +  more formats to come if we're lucky..
  1.4031 +
  1.4032 +
  1.4033 +----------------------------------------------------------------------
  1.4034 +
  1.4035 +Extensions support:
  1.4036 +
  1.4037 +  The extensions support is inspired by the one found in 1.x.
  1.4038 +
  1.4039 +  Now, each font driver has  its own `extension registry', which lists
  1.4040 +  which extensions  are available  for the font  faces managed  by the
  1.4041 +  driver.
  1.4042 +
  1.4043 +  Extension ids are  now strings, rather than 4-byte  tags, as this is
  1.4044 +  usually more readable.
  1.4045 +
  1.4046 +  Each extension has:
  1.4047 +    - some data, associated to each face object
  1.4048 +    - an interface (table of function pointers)
  1.4049 +
  1.4050 +  An extension  that is format-specific should  simply register itself
  1.4051 +  to the correct font driver.  Here is some example code:
  1.4052 +
  1.4053 +   // Registering an extensions
  1.4054 +   //
  1.4055 +   FT_Error  FT_Init_XXXX_Extension( FT_Library  library )
  1.4056 +   {
  1.4057 +     FT_DriverInterface*  tt_driver;
  1.4058 +
  1.4059 +     driver = FT_Get_Driver( library, "truetype" );
  1.4060 +     if (!driver) return FT_Err_Unimplemented_Feature;
  1.4061 +
  1.4062 +     return FT_Register_Extension( driver, &extension_class );
  1.4063 +   }
  1.4064 +
  1.4065 +
  1.4066 +   // Implementing the extensions
  1.4067 +   //
  1.4068 +   FT_Error  FT_Proceed_Extension_XXX( FT_Face  face )
  1.4069 +   {
  1.4070 +     FT_XXX_Extension            ext;
  1.4071 +     FT_XXX_Extension_Interface  ext_interface;
  1.4072 +
  1.4073 +     ext = FT_Get_Extension( face, "extensionid", &ext_interface );
  1.4074 +     if (!ext) return error;
  1.4075 +
  1.4076 +     return ext_interface->do_it(ext);
  1.4077 +   }
  1.4078 +
  1.4079 +------------------------------------------------------------------------
  1.4080 +
  1.4081 +Copyright 2000-2013 by
  1.4082 +David Turner, Robert Wilhelm, and Werner Lemberg.
  1.4083 +
  1.4084 +This  file  is  part  of the  FreeType  project, and may  only be  used,
  1.4085 +modified,  and  distributed  under  the  terms of  the FreeType  project
  1.4086 +license, LICENSE.TXT.   By continuing to use, modify, or distribute this
  1.4087 +file you  indicate that  you have  read the  license and understand  and
  1.4088 +accept it fully.
  1.4089 +
  1.4090 +
  1.4091 +Local Variables:
  1.4092 +version-control: never
  1.4093 +coding: utf-8
  1.4094 +End:
  1.4095 +
  1.4096 +--- end of CHANGES ---

mercurial